Linux内核开发框架学习

Linux内核开发框架学习

ID:40752853

大小:570.08 KB

页数:39页

时间:2019-08-07

Linux内核开发框架学习_第1页
Linux内核开发框架学习_第2页
Linux内核开发框架学习_第3页
Linux内核开发框架学习_第4页
Linux内核开发框架学习_第5页
资源描述:

《Linux内核开发框架学习》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Linux内核开发框架学习一、常见linux内核文件的区别1、vmlinux编译出来的最原始的内核文件,未压缩。2、zImagevmlinux经过gzip压缩后的文件。3、bzImagebz表示“bigzImage”,不是用bzip2压缩的。两者的不同之处在于,zImage解压缩内核到低端内存(第一个640K),bzImage解压缩内核到高端内存(1M以上)。如果内核比较小,那么采用zImage或bzImage都行,如果比较大应该用bzImage。4、uImageU-boot专用的映像文件,它是在zImage之前加上一个长度为0x40的tag。5、vml

2、inuzbzImage/zImage文件的拷贝或指向bzImage/zImage的链接。6、initrd“initialramdisk”的简写。一般被用来临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态。二、linux内核源码目录结构1、arch目录包括了所有和体系结构相关的核心代码。它下面的每一个子目录都代表一种Linux支持的体系结构,例如i386就是IntelCPU及与之相兼容体系结构的子目录。PC机一般都基于此目录。2、include目录包括编译核心所需要的大部分头文件,例如与平台无关的头文件在include/linux子目录下。3

3、、init目录包含核心的初始化代码(不是系统的引导代码),有main.c和Version.c两个文件。这是研究核心如何工作的好起点。4、mm目录包含了所有的内存管理代码。与具体硬件体系结构相关的内存管理代码位于arch/*/mm目录下。5、drivers目录是系统中所有的设备驱动程序。它又进一步划分成几类设备驱动,每一种有对应的子目录,如声卡的驱动对应于drivers/sound。6、ipc目录包含了核心进程间的通信代码。7、modules目录存放了已建好的、可动态加载的模块。8、fs目录存放Linux支持的文件系统代码。不同的文件系统有不同的子目录对应

4、,如ext3文件系统对应的就是ext3子目录。1、Kernel内核管理的核心代码放在这里。同时与处理器结构相关代码都放在arch/*/kernel目录下。2、net目录里面是核心的网络部分代码,其每个子目录对应于网络的一个方面。3、lib目录包含了核心的库代码,不过与处理器结构相关的库代码被放在arch/*/lib/目录下。4、scripts目录包含用于配置核心的脚本文件。5、documentation目录该目录是对其它每个目录作用的具体说明。一、Uboot加载内核的流程uboot通过执行bootm0x81000000指令来启动linux。intdo_b

5、ootm(cmd_tbl_t*cmdtp,intflag,intargc,char*argv[]){bootm_start(cmdtp,flag,argc,argv);ret=bootm_load_os(images.os,&load_end,1);boot_fn=boot_os[images.os.os];//选择启动函数,即do_bootm_linuxboot_fn(0,argc,argv,&images);//执行do_bootm_linux}intdo_bootm_linux(intflag,intargc,char*argv[],bootm_h

6、eaders_t*images){intmachid=bd->bi_arch_number;void(*theKernel)(intzero,intarch,uintparams);//theKernel指向内核入口地址theKernel=(void(*)(int,int,uint))images->ep;//在启动内核之前做一些清理工作cleanup_before_linux();//启动内核theKernel(0,machid,bd->bi_boot_params);}在启动内核之前,uboot必须为uImage准备以下准备: 1.CPU寄存器的设置

7、:R0=0;R1=MachineID(即MachineTypeNumber,定义在linux/arch/arm/tools/mach-types);R2=内核启动参数在RAM中起始基地址; 2.CPU模式:必须禁止中断(IRQs和FIQs);CPU必须SVC模式; 3.Cache和MMU的设置:MMU必须关闭;指令Cache可以打开也可以关闭;数据Cache必须关闭;uImage中64字节的头信息结构体如下:#defineIH_NMLEN32/*ImageNameLength*/typedefstructimage_header{uint32_tih_m

8、agic;/*ImageHeaderMagicNumber*/uint32_ti

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。