草庐IT

内核栈

全部标签

RK3399驱动开发 | 21 -Marvell交换机芯片88E6390X调试(基于linux主线5.4.32内核)

一、88E6390X1.芯片框图88E6390X芯片是Marvell的一款11端口交换器芯片,有1个CPU端口、8个10/100/1000Mbsp以太网端口、两个XAUI/RXAUI/2500光口。2.RK3399连接框图RK3399只有一个MAC控制器,所以只能外接一个PHY芯片作为网口,但有了外部的交换机芯片后,连接架构如下:二、设备树描述&gmac{ phy-supply=&vcc3v3_sys>; phy-mode

[架构之路-221]:鸿蒙系统和安卓系统的比较:微内核VS宏内核, 分布式VS单体式

目录一、鸿蒙系统和安卓系统的系统架构1.1 鸿蒙系统的分层架构1.2 安卓系统的分层架构1.3 鸿蒙系统和安卓系统是操作系统吗?二、鸿蒙系统和安卓系统的系统架构比较2.1它们与Linux操作系统的关系2.2架构比较三、操作系统基础3.1微内核架构3.2宏内核架构3.3传统的Linux是微内核还是宏内核3.4 微内核还是宏内核的比较一、鸿蒙系统和安卓系统的系统架构1.1 鸿蒙系统的分层架构鸿蒙系统(HarmonyOS)采用了一种分层架构,以实现系统的模块化、可复用和可扩展性。它的分层架构包括以下几个主要层:应用框架层(ApplicationFrameworkLayer):这是鸿蒙系统的最高层,提

Linux内核定时器

目录一、时钟中断二、延时机制1.短延迟:忙等待2.长延迟:忙等待3.睡眠延迟----阻塞类三、定时器(1)定义定时器结构体(2)初始化定时器(3)增加定时器------定时器开始计时(4)删除定时器-------定时器停止工作(5)修改定时器四、小练习—秒设备一、时钟中断硬件有一个时钟装置,该装置每隔一定时间发出一个时钟中断(称为一次时钟嘀嗒-tick),对应的中断处理程序就将全局变量jiffies_64加1jiffies_64 是一个全局64位整型,jiffies全局变量为其低32位的全局变量,程序中一般用jiffiesHZ:可配置的宏,表示1秒钟产生的时钟中断次数,一般设为100或200 

【Linux内核】内存管理——Buddy、Slab分配器

转载请注明出处:https://www.cnblogs.com/Ethan-Code/p/16651217.htmlBuddy分配器前面提到,Linux用内存分页的形式将物理内存组织起来,相比分段的优点就是分页的颗粒度更小,可以减少外部内存碎片,但是却不能完全消除内存碎片。内存分页机制把4K为单位的物理内存页框组织起来,使其在虚拟内存上连续。但是当需要申请连续物理内存页框的时候,随着进程的对内存的申请和释放,系统的内存会不断的区域碎片化,分页机制就不一定能保证有足够的连续物理内存页了。因此需要有引入一种机制来管理物理内存页,Linux使用buddy分配器来组织物理内存页框,对物理内存页进行合理

中兴新支点国产操作系统半年新增用户10万+,将发布自主内核

  继鸿蒙后,国产操作系统再传出喜讯,近日2022开放原子全球开源峰会在北京举办,在7月29日OpenCloudOS分论坛上,中兴新支点操作系统产品总经理崔黎明出席OpenCloudOS分论坛对话环节,揭开了OpenCloudOSL1项目的计划,L1版本即Linux发行版最上游的发行版本,OpenCloudOSStream将于2022年底发布alpha版本,首个正式版本将于2023年发布。界时,国产操作系统将会真正拥有自主内核维护版本,真正摆脱对国外发行版的外部依赖。OpenCloudOS是由腾讯发起,中兴新支点操作系统深度参与的一个以发展国产操作系统为目的的开源社区。  同时,中兴新支点操作

Linux内核TCP参数调优全面解读

Linux内核TCP参数调优全面解读前言TCP性能的提升不仅考察TCP的理论知识,还考察了对于操心系统提供的内核参数的理解与应用。TCP协议是由操作系统实现,所以操作系统提供了不少调节TCP的参数。如何正确有效的使用这些参数,来提高TCP性能是一个不那么简单事情。我们需要针对TCP每个阶段的问题来对症下药,而不是病急乱投医。接下来,将以三个角度来阐述提升TCP的策略,分别是:TCP三次握手的性能提升;TCP四次挥手的性能提升;TCP数据传输的性能提升;正文01TCP三次握手的性能提升TCP是面向连接的、可靠的、双向传输的传输层通信协议,所以在传输数据之前需要经过三次握手才能建立连接。那么,三次

Printk打印内核日志

一、背景Linux内核中提供了内核日志打印的工具printk。它的使用方式C语言中的printf是类似的。接下来我们介绍一下printk的使用方式。本文以打印Binder中的日志为例,进行演示。printk的方法声明和日志级别binder驱动中增加打印代码android系统中查看日志信息二、printk方法声明printk官方链接2.1方法声明printk(KERN_INFO"Message:%s\n",arg);KERN_INFO的位置代表的是要打印的消息级别printk的第一个参数KERN_INFO"Message:%s\n"整体是一个,格式化字符串arg参数的位置,对应占位的值具体的消息

Linux驱动实践:带你一步一步编译内核驱动程序

学习的困惑记得以前我在开始学习驱动开发的时候,找来很多文章、资料来学习,但是总是觉得缺少了点全局视角。就好像:我想看清一座山的全貌,但总是被困在一个、又一个山谷中一样。主要的困惑有 3 点:每一篇文章的介绍都是正确的,但是如果把很多文章放在一起看,就会发现怎么说的都不一样啊?有些文章注重函数的介绍,但是缺乏一个全局的视角,从整体上来观察驱动程序的结构;对于一个新手来说,能够边学习、边实践,这是最好的学习方式,但是很多文章不会注意这方面。虽然文章内容很漂亮,但是不知道怎么去实践、验证。因此,这几篇文章我们就从最简单的驱动模块编译开始,然后介绍字符设备驱动程序。在这部分,会以 GPIO 为例子,重

Anaconda虚拟环境+jupyter内核配置(详解)

1.Anaconda虚拟环境查看安装好anaconda环境后,有两种方式可以查看虚拟环境:第一种:打开anaconda,如图所示即可查看。第二种:打开AnacondaPrompt,输入condaenvlist如图所示,base环境即是当前的环境,TensorEMG是我创建的环境,base环境是下载好anaconda后自带的环境。2.为什么要装虚拟环境base环境是anaconda中自带的环境,其中有许多默认的库,具体可以通过在base环境下输入condalist查看。condalist那么为什么需要创建虚拟环境呢?我的理解是,比如我们要做深度学习,需要安装tensorflow、pytorch等

我的第一个Linux内核贡献,被剥夺了!

撰稿 |言征ArielMiculas,是一位开源贡献者,目前在思科任职软件工程师,最近他在自己的博客上开喷Linux内核:“为什么我贡献了问题和补丁代码,最后贡献者的名单里却没有我?”1、自封的Linux内核“贡献者”翻开Ariel的博客,他这样介绍自己:“我是一位充满激情的软件工程师,拥有网络安全硕士学位。我感兴趣的领域是系统编程,包括管理程序、操作系统,以及最近的Linux文件系统。我也是一个开源贡献者,以下是我贡献的一些项目:Linux内核、capnproto-rust、squashfuse。”可以看出,Ariel认为自己是对Linux内核有贡献的。然而让他气愤地是,他的第一个内核贡献却