Linux
文章平均质量分 91
心静,心境,心镜。
BabyMelvin
勤能补拙,孰能生巧。 -----华罗庚
展开
-
Linux编译系统之主Makefile(二)
内核Makefile分析Makefile:找到第一个目标文件和链接文件。第一个目标文件(一路跟踪启动过程)链接文件:它表示内核应该放在哪里,里面的代码是如何排布的。Linux内核Makefile文件分类顶层Makefile:是所有Makefile文件的核心,从总体上控制着内核的编译,链接config:配置文件,在配置内核时生成所有Makefile文件(包含顶层目录及子目录)都是根据config来决定使用哪些文件arch/$(ARCH)/Makefile:对应体系结构的Makefile,它原创 2021-10-19 22:36:45 · 478 阅读 · 0 评论 -
linux-编译系统介绍之kbuild(一)
Linux编译系统1.概述从Linux内核2.6开始,Linux内核的编译采用Kbuild系统,这同过去的编译系统有很大的不同,尤其对于Linux内核模块的编译。在新的系统下,Linux编译系统会两次扫描Linux的Makefile:首先编译系统会读取Linux内核顶层的 Makefile,然后根据读到的内容第二次读取Kbuild的Makefile来编译Linux内核。Makefile由五个部分组成:Makefile:根目录Makefile,它读取.config文件,并负责创建vmlinux(内核原创 2021-10-19 22:24:01 · 3912 阅读 · 0 评论 -
Linux 内核链表(使用)
介绍需要头文件:<linux/list.h>当使用链表接口时, 你应当一直记住列表函数不做加锁. 本文将介绍内核链表简单添、删、改、查操作。并附使用示例1.链表初始化初始化在list.h中struct list_head { struct list_head *next, *prev; }; 自己申请链表struct my_list{ struct l...原创 2020-03-22 21:17:49 · 900 阅读 · 0 评论 -
Linux内核同步和异步使用(速览)
介绍kernel有很多的同步和异步机制,做简单整理,力求能够熟练使用。1.同步机制并发:多个执行单元同时被执行竞态:并发的执行单元对共享资源(硬件资源和软件上的全局变量等)的访问导致竞争状态。并发与竞态。假设有2个进程试图同时向一个设备的相同位置写入数据,就会造成数据混乱。处理并发常用的技术:加锁或者互斥,即确保在任何时间只有一个执行单元可以操作共享资源。在Linux内核中主要通过...原创 2020-03-22 12:03:11 · 556 阅读 · 0 评论 -
Linux 服用I/O详解
1.IO复用简介I/O 多路复用技术是为了解决进程或线程阻塞到某个 I/O 系统调用而出现的技术,使进程不阻塞于某个特定的 I/O 系统调用。select(),poll(),epoll()都是I/O多路复用的机制。I/O多路复用通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪,就是这个文件描述符进行读写操作之前),能够通知程序进行相应的读写操作。但select(),...原创 2020-03-22 11:47:15 · 359 阅读 · 0 评论 -
内核kernel以及根文件系统rootfs是如何映射到对应的nand flash的地址的?
我用的是ramdisk.image.gz,烧写在flash的0x10140000处我不太明白内核在启动过程中式如何将这个文件映射成/目录及各子目录的?如果ramdisk.image.gz在flash中的位置发生了变化,应该如何修改内核啊?【解答】没理解错的话,ramdisk.image.gz应该是你的内核的压缩镜像。你的问题,要分2方面和你解释:1.将这个文件映射成/目录及各子目录的不...原创 2019-12-03 10:14:51 · 410 阅读 · 0 评论 -
c 预处理
C程序涉及很多步骤,第一个步骤预处理阶段。任务是删除注释、插入被#include的文件、定义和替换由#define指令定义的符号以及确定代码是否根据一些条件编译指令进行编译。1.预定义符号__FILE__和__LINE__用于调试,__DATE__和__TIME__版本信息等。 符号 样式值 含义 FILE “name.c” 进行编译的源文件名 ...原创 2018-04-10 16:27:08 · 197 阅读 · 0 评论 -
linux 内核基础(1)
在linux内核中,有一种通用的双向循环链表,构成了各种队列的基础。链表的结构定义和相关函数均在include/linux/list.h中,下面就来全面的介绍这一链表的各种API。1.链表初始化循环链表,表头和表中节点都是下面元素结构。有prev,next两个指针分指向链表中前一个节点和后一个节点。struct list_head{ struct list_head...原创 2018-03-13 23:07:27 · 272 阅读 · 0 评论 -
存储知识、mount挂载理解
嵌入式系统存储知识Android中mount命令可以得到/dev/block/mtdblock3 /system yaffs2 rw,relatime 0 0/dev/block/mtdblock4 /cache yaffs2 rw,nosuid,nodev,relatime 0 0/dev/block/mmcblk0p3 /mnt/asec/extdata ext4 rw,nosuid,nod原创 2017-12-05 16:56:58 · 2094 阅读 · 0 评论 -
linux设备驱动模型--class
设备驱动模型中的bus、device、driver,这三种都是有迹可循的。其中bus代表实际的总线,device代表实际的设备和接口,而driver则对应存在的驱动。但本节要介绍的class,是设备类,完全是抽象出来的概念,没有对应的实体。所谓设备类,是指提供的用户接口相似的一类设备的集合,常见的设备类的有block、tty、input、usb等等。class对应的代码在drivers/base/原创 2017-09-03 11:26:31 · 1714 阅读 · 0 评论 -
linux内核驱动---创建设备节点文件
Linux下生成驱动设备节点文件的方法有3个:1、手动mknod;2、利用devfs;3、利用udev在刚开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点。在2.6.17以前,在/dev目录下生成设备文件很容易devfs_mk_bdev转载 2017-09-15 23:22:44 · 3935 阅读 · 1 评论 -
内核kernel以及根文件系统rootfs是如何映射到对应的nand flash的地址的
我用的是ramdisk.image.gz,烧写在flash的0x10140000处我不太明白内核在启动过程中式如何将这个文件映射成/目录及各子目录的?如果ramdisk.image.gz在flash中的位置发生了变化,应该如何修改内核啊?【解答】没理解错的话,ramdisk.image.gz应该是你的内核的压缩镜像。你的问题,要分2方面和你解释:1.将这个文件映射成/目录及各子目...转载 2016-10-25 11:15:48 · 1344 阅读 · 0 评论 -
Linux内核学习路线
Linux kernel 内核学习路线看了下各位大神的推荐路线,总结如下: 0. 跟着项目走;1. 学会用、熟练用linux系统;2. Linux Kernel Development.3. Understanding the Linux Kernel.4. Linux Device Driver.5. 找一个感兴趣的子系统研究,认真研究代码,这里的建议是可以看转载 2016-09-18 17:16:48 · 817 阅读 · 0 评论