05 2021 档案

摘要:在xxx_open函数中注册中断函数: request_irq的最后参数是dev_id,我的理解是他可以像次设备号一样,可以由我们自己定义他是什么含义。 写真正的中断处理函数: 当中断发生时会调用这个函数,传入的参数是 相应的中断号 和 注册中断时传入的dev_id 按键驱动程序中,为了描述一个引脚 阅读全文
posted @ 2021-05-30 21:21 Feiiiiii 阅读(491) 评论(0) 推荐(0)
摘要:request_irq函数做的工作: 1、分配一个irqaciton结构体 2、把自己的中断程序赋值给aciton 3、把这个结构体放入irq_desc[irq]的aciton链表里 把aciton放入链表之前,还需要判断这个中断的标志,如果是IRQF_SHARED,表示可以多个action共享中断 阅读全文
posted @ 2021-05-30 00:17 Feiiiiii 阅读(149) 评论(0) 推荐(0)
摘要:以中断产生的异常为例,产生中断异常以后,最终会调用asm_do_irq函数。 asm_do_irq函数是中断处理流程的入口。 内核里定义了一个irq_desc结构体数组,用来描述各个中断源的状态和行为: asm_do_irq函数会做这些事: 1、定义一个irq_desc结构体类型的指针,指向产生的中 阅读全文
posted @ 2021-05-29 23:32 Feiiiiii 阅读(317) 评论(0) 推荐(0)
摘要:由early_trap_init()函数构造异常向量基址为0xffff0000的异常向量表: 发生某种异常时,会跳转到相应的处理函数,比如如果发生中断,则会跳到vector_irq: 在vector_irq中保存现场后又会跳到__irq_usr或者__irq_svc(用户模式进中断会跳到__irq_ 阅读全文
posted @ 2021-05-29 20:28 Feiiiiii 阅读(398) 评论(0) 推荐(0)
摘要:主设备号对应一个驱动程序 在创建设备文件时,可以指定一个设备文件的次设备号 可以为每个led灯创建不同名字的设备文件,这些不同的设备文件有相同的主设备号,不同的次设备号 当打开某个设备文件时,会根据文件的主设备号找到相应的驱动程序,执行xxx_open、xxx_write驱动函数,在驱动函数中获取自 阅读全文
posted @ 2021-05-28 23:18 Feiiiiii 阅读(88) 评论(0) 推荐(0)
摘要:先看/etc/init.d/rcS文件的内容 echo /sbin/mdev > /proc/sys/kernel/hotplug的意思就是当内核出现热插拔事件时,就调用mdev这个应用程序,去根据系统信息创建设备节点。 系统信息怎么来? 驱动程序中定义了一个类和类设备 在first_drv_ini 阅读全文
posted @ 2021-05-26 22:22 Feiiiiii 阅读(221) 评论(0) 推荐(0)
摘要:在编译模块之前首先要:配置并编译内核 板子中烧写的内核是打过补丁的linux-2.6.22.6,在编译驱动程序时,要在Makefile里指定使用的linux源码路径,也就是说驱动程序的编译依赖于内核源码,具体为啥不是很懂。 现在暂时理解为:既然驱动程序要编译为内核的一个可加载的模块,那模块总得知道它 阅读全文
posted @ 2021-05-24 23:25 Feiiiiii 阅读(71) 评论(0) 推荐(0)
摘要:ifconfig eth0 up 启动单板网卡设备 ifconfig eth0 192.168.x.x设置单板ip ping 服务器看看能不能ping通 挂接NFS需要: 服务器允许某个目录可被挂接 ①服务器的etc/exports这个文件里配置,加入可被挂载的目录的路径(最后一行是新加入的) ② 阅读全文
posted @ 2021-05-23 16:38 Feiiiiii 阅读(149) 评论(0) 推荐(0)
摘要:完善proc文件系统 构建完最小根文件系统之后,可以用ls命令,但不能用ps命令看当前运行的进程信息,因为还没挂载proc文件系统 在内核中,当前有哪些应用程序在跑,这些信息如何收集。是内核提供了一个虚拟的文件系统,叫 proc 文件系统。 0、 挂载proc文件系统之前需要在根目录下创建一个pro 阅读全文
posted @ 2021-05-23 09:50 Feiiiiii 阅读(221) 评论(0) 推荐(0)
摘要:构建最小根文件系统需要: ①/dev/console ②/dev/null(如果不设置initab里的id,标准输入输出的内容就会到dev/null这个文件里) ③/etc/inittab ④配置文件里指定的应用程序 ⑤c库 构建①和②: 1)用ls /dev/console /dev/null - 阅读全文
posted @ 2021-05-22 00:12 Feiiiiii 阅读(119) 评论(0) 推荐(0)
摘要:所谓创建根文件系统,就是创建各种目录,并在里面创建各种目录。 为什么要用busybox这个工具构建根文件系统?因为单单有一个linux内核是没意义的,还需要有应用程序,像ls ps cp等命令其实都是应用程序,如果要用到这些命令,就需要实现这些命令的源码,而busybox就集合了这些源码。 配置、安 阅读全文
posted @ 2021-05-20 23:28 Feiiiiii 阅读(133) 评论(0) 推荐(0)
摘要:应用程序在根文件系统中,没有根文件系统就跑不了程序。 烧写了根文件系统后可以用ps命令看有哪些应用程序在运行。 像ls等命令都是一个个应用程序,成千上百个应用程序如果要自己找源码编译非常麻烦,所以用busybox工具。 busybox是ls.cp.cd命令的组合,这些命令都是到busybox的链接, 阅读全文
posted @ 2021-05-20 21:42 Feiiiiii 阅读(63) 评论(0) 推荐(0)