扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:tinker 来源:赛迪网技术社区 2007年11月2日
关键字: Linux
2.5 调用Kernel
Bootloader调用uClinux 内核的方法是直接跳转到Kernel的第一条指令处。
采用C语句:((void (*)(void))ram_addr)();
2.6 工具
ARMSYS的Bootloader在人机界面上提供了8个功能项目,其中包括支持从主机通过USB口下载文件到目标板的SDRAM和Nandflash上;用SDRAM中的数据烧写Flash Memory。由于USB口下载速度快,利用这些功能项能够轻松地调试uClinux的内核(具体使用方法参考《uClinux移植包在ARMSYS上的使用说明》一文)。
对uClinux专用Bootloader的介绍到此,下面开始对uClinux的内核部分的移植进行说明。
3. uClinux2.4.24内核组成
◎arch:arch目录下有多个子目录,它的每一个子目录都代表内核支持的一种CPU体系结构,每个子目录中又进一步分解为boot、mm、 kernel等子目录,分别包含与系统引导、内存管理、系统调用的进入和返回、终端处理以及其它内核中依赖于CPU和系统结构的底层代码。与ARM处理器(不带有MMU)相关的代码放在目录arch/armnommu下,与S3C44B0X相关的代码则放在目录arch/armnommu/match- S3C44B0X。
◎ include:include子目录包括编译核心所需要的大部分头文件。与平台无关的头文件在 include/linux子目录下,与ARM处理器(不带MMU)相关的头文件在include/asm-armnommu子目录下,与 S3C44B0X相关的代码在include/asm-armnommu/arch-S3C44B0X目录下;
◎ init:这个目录包含核心的初始化代码(注意:不是系统的引导代码),包含两个文件main.c和Version.c,这是研究核心如何工作的一个非常好的起点。
◎ kernel:主要的核心代码,此目录下的文件实现了大多数linux系统的内核函数,其中最重要的文件当属sched.c;同样,和体系结构相关的代码在arch/*/kernel中;
◎ drivers: 放置系统所有的设备驱动程序;每种驱动程序又各占用一个子目录:如,/block 下为块设备驱动程序,比如ide(ide.c)。
◎其他:例如mm ,这个目录包括所有独立于处理器体系结构的内存管理代码,如页式存储管理内存的分配和释放等;lib放置核心的库代码;net,核心与网络相关的代码; ipc,这个目录包含核心的进程间通讯的代码;fs,所有的文件系统代码和各种类型的文件操作代码,它的每一个子目录支持一个文件系统,例如fat和 ext2;Scripts,此目录包含用于配置核心的脚本文件等。
一般在每个目录下,都有一个.depend 文件和一个 Makefile 文件,这两个文件都是编译时使用的辅助文件,仔细阅读这两个文件对弄清各个文件这间的联系和依托关系很有帮助;而且,在有的目录下还有Readme 文件,它是对该目录下的文件的一些说明,同样有利于我们对内核源码的理解。
uClinux-dist-20040408发行包中的内核对S3C44B0X处理器的支持是不完整的,因此,我们不能够希望在make config配置选项中选中44B0X目标板后,直接编译它来得到一个很好地支持44B0X开发板的内核映像,我们必须为内核打上补丁。下一节我们就对这个补丁中的主要修改项目进行介绍和分析,从中了解uClinux移植中的要点。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者