新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于ARM9上linux系统的bootloader设计

基于ARM9上linux系统的bootloader设计

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

映射关系代码如下:
void mem_mapping_linear(void)
{ unsigned long descriptor_index, section_base, sdram_base, sdram_size;
sdram_base=0x30000000;
sdram_size=0x 4000000;
for(section_base=sdram_base,descriptor_index=section_base>>
20;Ssection_basesdram_base+sdram_size; rdescriptor_index+=1;section_base +=0x100000)
{*(mmu_tlb_base+(descriptor_index))=(section_base>>20)| MMU_OTHER_SECDESC;}
}

4.3.装载内核映像和根文件映像

像ARM这样的嵌入式CPU通常都是在统一的内存地址空间中寻址 Flash 等固态存储设备的,因此从Flash上读取数据与从 RAM单元中读取数据用一个简单的循环就可以完成从Flash 设备上拷贝映像的工作:

其中count为根文件映像的大小或内核映像的大小。
While(count){
*dest++=*src++;//src为fash中的地址,dest为RAM中的地址
count-=4;}

4.4.置内核的启动参数

内核启动可以从Nand Flash或Nor Flash中启动运行,需要修改启动命令如下:
#ifdef CONFIG_S3C2410_NAND_BOOT
Char Linux_cmd[]=“noinit root=/dev/bon/2 init =/Linuxrc console=tty0 console=ttys0”;
#else
CharLinux_cmd[]=“CharLinux_cmd[]=”noinit root=/dev/bon/3 init =/Linuxrc console=tty0 console=ttys0”;

其中noinitrd不使用ramdisk。
root根文件所在MTD分区。
Init内核运行入口命令文件。
console 内核信息控制台,ttyS0表示串行口0。
ttys0表示虚拟终端LCD启动参数一般都包括root、init和console。

5.结论

是一项很复杂的工作,需要对硬件资源和所用的操作系统有很深的理解,在实际开发中可以根据需要简化,去除不必要的系统功能,这样可以大大提高程序执行的效率和稳定性。

本文作者创新点:随硬件不同也尽相同,但本质的原理是一样的,本文给出了一种层次分明设计简练较之通用的设计方法,使嵌入式工作者可以快速的了解的实现从而写出符合需要的启动程序。

参考文献
[1] 万永波 张根宝 田泽 杨峰,ARM的嵌入式系统Bootloader启动流程分析, 微计算机信息, 2005年,第21卷11-2期,90页.
[2] 嵌入式设计与应用.邹思轶. 北京:清华大学出版社 2002.
[3] SUMSUANG ELECTRONICS. S3C2410X User’s Manual[Z].Republic of Korea: Sumsang,2003.
[4] 马学文, 朱明日, 程小辉.嵌入式系统中 Bootloader的设计与实现.计算机工程,2005年,第31卷7期,96页.

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭