新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 2440啟動代碼分析心得體會

2440啟動代碼分析心得體會

作者: 時間:2016-11-26 來源:網(wǎng)絡 收藏
通過研究2440啟動代碼,發(fā)現(xiàn)這個啟動代碼壓根就沒有從nandflash復制代碼的功能,怪不得下載到nandflash沒現(xiàn)象呢!

用偽C代碼來描述2440的正常的啟動過程。

本文引用地址:http://butianyuan.cn/article/201611/321602.htm

2440啟動函數(shù)()

{

復位函數(shù)();

未定義模式函數(shù)()//這個是死循環(huán)

SWI函數(shù)();//這個函數(shù)在其他文件中存在

PAbt_Addr函數(shù)();//又是個死循環(huán)函數(shù)

DAbt_Addr函數(shù)();//還是個死循環(huán)函數(shù)
......

}

復位函數(shù)()

{

if(關掉看門狗==1)

關掉看門狗;

Else

不關;

if(設置時鐘==1)

設置好時鐘;

Else

不設置時鐘;

If(初始化儲存控制器==1)

初始化內(nèi)存控制器;

Else

不初始化儲存控制器;

If(初始化I/O控制寄存器==1)

初始化I/O控制寄存器;

Else不初始化I/O控制寄存器

If(異常中斷向量復制到IRAM==1)

異常中斷向量到IRAM;//IRAM為0x40000000;

Else不復制;

配置相應模式堆棧的大小;//最后配置的是用戶模式堆棧的大小,在用戶模式下進入main函數(shù)

main();//調(diào)用main函數(shù),這就是為什么單片機裸奔的時候需要死循環(huán)了。

}

其實在2440中main函數(shù)中不用死循環(huán),在執(zhí)行main函數(shù)完畢之后,相當于復位函數(shù)()已經(jīng)執(zhí)行完畢,接下來執(zhí)行的是未定義函數(shù)(),由于剛才分析未定義函數(shù)是個死循環(huán),相當于最壞的情況是,2440一直在未定義函數(shù)中停留著。當然并不希望看到這樣的情況,所以2440裸奔時,最好在main函數(shù)中構成死循環(huán)!對于51單片機來說,沒有死循環(huán)的話,這個51單片機程序會跑飛?。?!

如果想從nandflash啟動,并啟動一個系統(tǒng)的話,需要在C函數(shù)之前加入初始化nandflash函數(shù)以及從nandflash代碼復制到sdram的函數(shù)。如果再加一點其他的東西的話,一個小的bootloader就完成啦!




評論


技術專區(qū)

關閉