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

时间:2012-04-20来源:网络

加载uClinux内核镜像

加载uClinux内核工作实际上是完成将Flash中uClinux内核代码拷贝到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

关键词: 引导 过程 分析 内核 uClinux S3C44B0 芯片 基于

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版