新闻中心

EEPW首页>嵌入式系统>设计应用> 基于S3C44B0芯片的uClinux内核引导过程分析

基于S3C44B0芯片的uClinux内核引导过程分析

作者: 时间:2012-04-20 来源:网络 收藏

加载镜像

加载工作实际上是完成将Flash中代码拷贝到RAM指定地址单元的工作,在拷贝前必须在第二阶段RAM启动代码和该部分代码之间预留一定的空间,用来存放uClinux的全局结构变量,如: 启动参数、内核页表、ARM的页目录等信息。全地址空间的分配情况可参看本开发板地址空间分配示意图1。

45.jpg
图1 地址空间分配示意图

配置内核启动参数

uClinux 内核启动中,支持参数传入。在嵌入式系统中,启动参数的传入主要靠bootloader程序向标记列表( tagged list)的相关域中填写对应的值来完成,常见的参数如有ATAG_CORE、ATAG_MEM、ATAG_CMDL INE、ATAG_RAMD ISK、ATAG_ IN ITRD等。

uClinux内核

在初始化阶段完成uClinux启动参数设置后,控制权交由uClinux内核接管,并调用解压内核函数( decomp ress_kernel) ,对拷贝到SDRAM的内核映像文件进行解压缩,然后跳转到内核调用函数( call_ kernel) ,该函数实际上是执行start_kernel ( ) ,其中包括了处理器结构的初始化、中断的初始化、进程相关的初始化以及内存初始化等重要工作。最后,将控制权交给解压后的uClinux系统,进而完成整个uClinux内核,参看以下伪码: If (启动参数配置正确)调用decomp ress_kernel ( )调用call_kernel ( )else提示启动失败decomp ress_kernel( ){解压内核镜像文件}call_kernel ( ){ start_kernel( ) ;}

小 结

对于嵌入式系统开发人员来说,针对某一特定的嵌入式硬件平台,移植开发uClinux操作系统的应用产品时,往往需要自己动手编写或修改已有的启动代码,而为uClinux内核启动准备合适的工作环境,占据了大部分工作量。至于uClinux,在设置好启动参数后则是由编译好的内核镜像自动完成,对于系统开发人员来说基本上是透明的。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭