“Linux内核分析”实验报告

赵连讯 + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 


按照实验要求,设置第一个断点,让程序停止在start_kernel的入口函数中 保存图片 进入linux内核的源代码目录下,查看目录结构 arch是各种架构的芯片的总目录,进入ls后,可以进一步的看到,我们常见的芯片架构。比如我们正在学习的x86的芯片架构,常见的嵌入式的控制芯片arm架构的芯片,mips的架构芯片。 任意进入一个查看目录结构。 在x86目录下,看到一些目录。boot目录是用来生成可执行文件的目录。我们编译x86架构的内核后,生成的镜像文件bzImage就是在这个目录下。boot下的early-serial_console.c是用来控制早期输出打印的,在调试内核的时候比较有用。 include文件夹下是编译过程中使用的头文件,同样在我们基于内核编译驱动文件时也要使用到这些头文件,才能保持一致性。在include/asm/下就能看到很多头文件。以gpio.h为例子。内部其实包含了linux/gpio.h而已。说明我们以后基于x86的平台编译gpio相关的程序时,并不需要包含此处asm/gpio.h而是使用通用的linux/gpio.h即可。 x86/kernel目录介绍。都是与芯片内部控制有关。在setup.c中就定义了setup_arch这个函数的实现。这是与架构启动有关的代码。在启动过程中被调用。 mm文件夹有内存管理有关。mmap与内存的映射有关。 再查看arm目录下的机构。arm下的目录结构x86的架构下的目录更多。在arm下能够看到多出了不同的mach。个人理解,由相同的arm架构形成了不同的芯片类型。比如TI的芯片归类mach-omap2,比如三星的mach-s3c24xx。这里的omap2并不单指一个芯片而是一类芯片。在此目录下再细分。此外还有平台相关代码。plat-omap是针对omap类型的芯片的公共性代码。i2c.c完成了平台下的总线注册和设备添加功能。 arch目录分析到此结束。 drivers管理linux下所有驱动实现,fs是文件系统的管理,包括虚拟文件系统,include是常用的包含文件目录,ipc进程间通信,mm内存管理。此处的kernel目录和上文中讲到的arch目录下的kernnel目录文件做一个简单对比。比如西目录下没有setup.c,不和具体的架构相关。但是都有signal.c。而且都被编译到内核中,至于两者是不是有相同的函数,如何调用的,以后再研究,本报告中不查看了。 init目录是linux的启动目录,第一个函数在main.c中start_kernel函数。此外还有各种mount的文件,这些文件是linux 内核启动成功之后,去mount到文件系统的。现在最主要关系的是main.c文件。也是我们跟踪的文件。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值