新闻中心

EEPW首页>嵌入式系统>设计应用> PXA272启动引导程序的实现和功能扩展

PXA272启动引导程序的实现和功能扩展

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

加载内核、文件系统映像,设置参数:读取映像大小和格式,将映像从Flash定向到RAM。定向后,就可Linux 内核。内核前,要作些准备工作:设置启动参数。Linux 2.4.x 以后的内核以标记列表(tagged list)形式传递启动参数。由Boot Loader设置常见启动参数:ATAG_CORE、ATAG_MEM、ATAG_CMDLINE、ATAG_RAMDISK、ATAG_INITRD 等。启动参数列表以标记 ATAG_CORE 开始,以标记 ATAG_NONE 结束。
……
tags = (struct tag *)BOOT_PARAMS;
tags->hdr.tag = ATAG_CORE; //以CORE开始
tags->hdr.size = tag_size(tag_core);
……
tags = tag_next(tags);
tags->hdr.tag = ATAG_NONE; //以NONE结束
tags->hdr.size = 0;
……

Boot Loader 调用 Linux 内核的方法是直接跳转到内核的第一条指令处:
theKernel = (void *)mp->dramb;//Linux内核基址
theKernel (0, ARCH_URANIUM, 0xa0008000);

至此,Bootloader完成该作的工作,跳转到内核入口点,内核接管控制权,开始启动Linux。

4.3 启动

在开发板的硬件测试阶段,命令接口,以协助硬件测试工作。

1.内存测试(MEM_TEST)[5]

测试存储器有3个部分:数据总线测试、地址总线测试和器件测试;优化通用的测试,能测试出错误,还对错误进行分析诊断,给出错误原因,并定位错误。

数据线测试(走1法):选择有代表性的写入值(0x01(单位),0x03(两个相邻位), 0x07(三个相连位),0x0F(四个相连位))。分别将值写入内存地址,写入后立刻读出与写入前的值比较,相等则将写入值逻辑左移一位作为下一次写入值。如此。直到所有值被测试完。如有不等,则报错将写入前后的值显示出来。

地址线测试:取测试值0xaaaaaaaa,选择测试地址,分别写入测试值,比较写入前后值。然后取其反值为测试值写入测试地址。改换测试地址,按从低向高的顺序依次写入1的递增值,比较写入前后的值;再按上一步的地址顺序写入1递增值反值,比较写入前后值;在每步写入前后值的比较中如果不一致,就输出出错的地址和写入前后的值。

器件测试:用来测试器件完成性,确定器件每一位正确。选择一组随地址变化的值写入内存,再读出比较。然后取这些值的反写入内存验证。

如测试内存代码放在SDRAM上,测试时会修改内存,这样会造成系统崩溃。所以测试内存时,把代码放在片载SRAM上。

2.液晶屏测试(LCD_TEST):启动没用到LCD,为确定目标板的LCD正常工作,提供LCD_TEST命令测试LCD。点亮LCD前,初始化 LCD控制器寄存器,划出一块内存作为LCD显示缓冲区。通过参数来控制写入显示缓冲区中的数据以显示不同图形。



评论


相关推荐

技术专区

关闭