首页 > 其他分享 >jz2440-2023-10-25

jz2440-2023-10-25

时间:2023-10-25 20:45:38浏览次数:37  
标签:10 busybox 25 创建 xxx jz2440 源码 应用层 设备

1、一般提到分析kernel的启动流程就要从strart.s入手,这是为什么?线索在哪里?因为烧录kernel时会使用到uImage,所以接下来去找uImage是如何生成的,通过源码顶层Makefile可以找到uImage是从vmlinux得到的,还是在该Makefile,可以找到vmlinux依赖于start.s。

2、根据uboot的bootargs命令行参数传递的“root=”字符在start.s中进行追踪时,可能会遇到一些标号名(或变量名)在整个内核源码source insight工程中都搜索不到的情况,因为这些标号是由带#连接符的宏定义经过展开才能得到,所以遇到这种时一般需要到编译后生成的链接文件中查找并反推在哪个函数中被使用(或者被哪个宏所展开得到)。

3、编译busybox所根据的步骤和命令一般在其源码包底下的README文件或者INSTALL文件(多数在后者)。

4、编译完毕要安装busybox时,如果使用默认安装命令则将会其安装到PC的ubuntu中,这将破坏掉ubuntu原有的根文件系统,所以安装命令要附带上创建好的、指定的空目录。

5、需要开机自动执行的挂载命令,如果数量少可以使用rcS,数量多时可以使用fstab。

6、用mdev自动创建/dev目录节点可以避免大量节点需要创建时通过手工创建的麻烦,创建步骤在busybox源码包目录的mdev文件中查看。

7、jffs2一般用在norflash上,配置过程所用参数--share指生成动态库,--prefix=/usr指定配置到/usr目录下;如果烧录后jffs2不能成功启动需要查看启动信息打印内容,看开发板根文件系统默认启动类型是否为yaffs,若是就还需要修改uboot所传递的命令行bootargs参数,添加fstype来直接指定。

8、如果要配置uboot命令行bootargs的rootfs参数为nfs,其完整格式需要到内核源码包的doc目录下找nfs.txt查看;格式选项用中括号[]括起的一般可以省略,尖括号<>括起的一般都需要填写。

9、应用层(C库函数:open、read、write),VFS(virtual file system:介于应用层与驱动层之间),驱动层(xxx_drv_open、xxx_drv_read、xxx_drv_write)。

10、应用层要打开的设备其文件名(/dev/xxx)可以和驱动层设备对应的文件名不一致,因为从应用层调用到驱动层时是通过设备类型(即字符设备、块设备、网络设备)和设备号(主设备号和子设备号)来找到对应设备的。

11、由于在用busybox构建最小根文件系统时可以在fstab中配置好mdev自动创建设备(hotplug),即系统已创建设备列表已知(因此这时哪些设备号已被占用系统是知道的),所以在驱动程序中借助class_create()和class_device_create()可以返回得到系统为本设备所分配的主、子设备号(register_chrdev的第一个参数需要设为0,代表由系统自动分配设备号)。

12、在编写一个驱动程序时遇到陌生函数不知道如何调用,这时可以在内核源码的source insight工程底下搜索该函数名看一下别的板卡设备厂商对于该接口函数的传入参数、调用和使用情况以作参考。

13、在开发板使用insmod装载驱动模块后,可以使用top命令查看资源占用百分比情况(相当于在windows下调出资源管理器)。

标签:10,busybox,25,创建,xxx,jz2440,源码,应用层,设备
From: https://www.cnblogs.com/weizhunie/p/17773716.html

相关文章

  • 10 25
    分页思路SELECT*fromsys_userlimit0,2;--第一页--(2-1)*2=2SELECT*fromsys_userlimit2,2;--第二页--(3-1)*2=4SELECT*fromsys_userlimit4,2;--第三页--结论:limit第一个参数=(pageNum-1)*pageSize//分页查询//接口路径:/use......
  • 10月25每日打卡
    下载commons-csv-1.8.jar网址:commons-csv-1.8.jar下载及Maven、Gradle引入代码,pom文件及包内class-时代Java(nowjava.com) importjava.io.*;importjava.util.ArrayList;importjava.util.List;importjava.util.Random;publicclassMathExercisesCSV{publicsta......
  • 2023.10.25——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.java断言,代码区域等明日计划:学习......
  • 10.25每日总结
    今天做了软考的题和大型数据库的作业在做作业过程中配置maven时发现spark安装有错误,没做做出了,明天继续做,并且做软考的题: ......
  • 《动手学深度学习 Pytorch版》 10.5 多头注意力
    多头注意力(multiheadattention):用独立学习得到的h组不同的线性投影(linearprojections)来变换查询、键和值,然后并行地送到注意力汇聚中。最后,将这h个注意力汇聚的输出拼接在一起,并且通过另一个可以学习的线性投影进行变换,以产生最终输出。对于h个注意力汇聚输出,每一个注意......
  • 10.25读书笔记-《掌握需求过程·》01
    今天读了《掌握需求过程·》这本书,理解了什么是需求,为什么要掌握需求,在开发软件时,身为一个程序员就要明白,开发软件的前前后后需要知道的东西,将尽可能多的可以预知的内容,做到心知肚明。目前的我们在开发软件的时候还是做的还是比较小的项目,偶尔也会遇到一些数据库设计出错导致,编写......
  • P6109 [Ynoi2009] rprmq1 题解-猫树+Segment Tree Beats
    20231025P6109[Ynoi2009]rprmq1题解-猫树+SegmentTreeBeats不愧是学长出的题。。。让我更深刻地理解了猫树。Statement传送门有一个\(n\timesn\)的矩阵\(a\),初始全是\(0\),有\(m\)次修改操作和\(q\)次查询操作,先进行所有修改操作,然后进行所有查询操作。一次修......
  • 76th 2023/10/10 Atcoder 10/8-ARC-T3
    这道题题目很有意思,看上去是很简单明显的计数,但一思考会发现要死很多重复状态因为标记的线很容易让人从一个方框开始思考起,所以很容易带入关于重复考虑的误区观察到线是斜着的,思考影响到的范围若涂上一个格子或左一个格子的右下,则该格子不能填涂左上观察到影响范围是一个个斜......
  • 75th 2023/10/6 k-D Tree
    附上一图:按维度分级,每次轮换用哪个维度即可oi中大多为2维这就是我对它的全部理解了结构与线段树几乎相同分左右结点时取当前区间段的中位数因而每一个节点都不同于线段树的表示范围它表示的是一个确确实实的节点的值访问前可以维护一个节点及它的子树的维度上下界以减少询......
  • 74th 2023/10/5 模拟赛总结56
    T1看完题目,看到n<=9的限制,心头一紧一个词汇浮现于心:BruceForces暴力+记忆化,\(O(能过)\)但赛时并没有这样打,而是选择了往DP方面思考因为真的没想到能过然后DP呢,又不清楚该如何存一列的状态就匆匆暴力后离去考虑状压DP保留有用状态关键点:\(k=\min(k,n-k)\)可以参考\(C^k......