![](https://img-blog.csdnimg.cn/20190927151132530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux内核
文章平均质量分 65
个人学习笔记
清欢_小铭
手机厂从事嵌入式软件开发,985小硕。
嵌入式Linux、围绕C/C++、单片机裸机、RTOS。
展开
-
of_get_named_gpio()函数解析
of_parse_phandle_with_args函数中,gpio1的cells长度为2,即后面跟的两个一起是一个整体。根据注释例子:list节点下的信息形成一个表,第一个元素中,#list-cells表示其后面跟着多少个元素是一个整体。引用的文章讲解的很清晰了,这里不再展开。继续调用of_get_named_gpiod_flags,返回一个struct gpio_desc。今天做试验,发现节点中的信息读不到,就想看一下,这函数是否递归搜索。继续调用of_get_named_gpiod_flags。原创 2024-03-31 22:34:18 · 1218 阅读 · 0 评论 -
Linux共享内存
共享内存,允许两个不相关的进程访问同一个逻辑内存,不同进程之间共享的内存通常为同一段物理内存。进程可以将同一段物理内存连接到他们自己的地址空间中,而后该进程都可以访问共享内存中的地址。共享内存是两个运行的进程之间数据交换最有效的方法。但共享内存本身没有同步机制,访问其中数据需要配合异步机制。几个进程将自己的虚拟地址映射到同一物理地址上面,访问这段虚拟地址,都将会访问同一物理地址。int shmget(key_t key, size_t size, int shmflg);用于创建共享内存,key原创 2021-08-25 09:54:58 · 130 阅读 · 0 评论 -
ioremap()
ioremap() 函数基础概念几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种:I/O 映射方式(I/O-mapped)典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令(如X86的IN和OUT指令)来访问这一空间中的地址单元。内存映射方式(Memory-mapped)RISC转载 2021-07-30 22:06:21 · 758 阅读 · 0 评论 -
Linux内核调度——《奔跑吧Linux内核》学习笔记
init进程在内核启动时,会有一个init_task进程,他是所有进程的鼻祖,又称0号进程。当系统没有进程需要调度时候,会执行idle进程。进程控制块PCBhttps://www.cnblogs.com/yungyu16/p/13024626.html内核栈通常内核栈大小为8KB,即两个物理页面的大小。他存在于内核映像文件的.data段中,由编译时分配好。ARM32处理器从汇编跳转到startkernel前,设置好SP指针指向栈顶。进程创建最终都是调用内核里的do_fork()函数。进程原创 2021-07-30 21:47:44 · 392 阅读 · 0 评论 -
ARM的七种工作模式
未定义模式用于支持硬件协处理器的软件仿真,CPU在指令的译码阶段不能识别该指令操作时,会进入未定义模式。原创 2023-05-27 19:09:34 · 1619 阅读 · 0 评论