原创 S3C2450 Bootloader调试总结之四

2010-5-23 20:35 2194 5 5 分类: MCU/ 嵌入式

从以上程序可以看出,整个BootloaderMain()函数由五大函数组成,分别是:


1):KernelRelocate (pTOC)


用于将全局变量在DRAM中声明。


2):OEMDebugInit ()


用于初始化串口,给后续代码提供串口打印信息,便于调试。


3):OEMPlatformInit ()


用于初始化硬件平台,如时钟,驱动等。


该函数通过如下子函数完成各硬件平台的初始化:


Amemset()


初始化BSP args结构;


BInitUSB();


初始化USB接口;


CIsr_Init();


初始化中断;


DBP_Init();


初始化Nand Flash;


EInitDisplay();


初始化显示设备;


FShowLogo();


显示logo;


GFMD_GetInfo();


Flash信息;


HTOC_Read();


TOC信息;


IOEMEthGetSecs();


读取当前时间,进行5秒倒计时;同时在这5秒的时间内检测是否有回车或空格键按下,如果回车,则运行NK。如果空格,则进入USB下载的菜单。


Jbacklight_open();


亮背光。


以上是OEMPlatformInit ()函数的作用,具体每一句如何执行,每个函数是如何工作的,限于篇幅,这里就不详细介绍了。


 


4):OEMPreDownload ()


该函数用于判断程序是下载映像还是引导映像。执行完该函数后,将根据函数的返回值选择。程序通过一个switch语句完成。


5):DownloadImage()OEMLaunch() 函数;


在步骤4中,如果返回值是BL_DOWNLOAD,则执行DownloadImage()函数,用于下载映像。如果返回值是BL_JUMP,则执行OEMLaunch() 函数,用于引导映像,最终启动系统。程序执行到OEMLaunch()后,整个bootloader也就完成任务了。


 

文章评论0条评论)

登录后参与讨论
我要评论
0
5
关闭 站长推荐上一条 /2 下一条