在A(yíng)RM上電的情況下,流程如下:1、 關(guān)閉看門(mén)狗,關(guān)閉所有中斷。
本文引用地址:http://dyxdggzs.com/article/201611/321544.htm2、 設置系統工作頻率,FCLK,HCLK,PCLK,UCLK。
3、 初始化內存控制寄存器,初始化參數在段SMRDATA里定義。SDRAM初始化在這里處理。
4、 在開(kāi)發(fā)板上電時(shí),按住接在EINT0腳上的按鍵會(huì )清零64MSDRAM。
5、 初始化堆棧
6、 讀OM0,OM1引腳狀態(tài),判斷是從NAND FLASH啟動(dòng)還是從NOR FLASH啟動(dòng)。
如果是從NAND FLASH啟動(dòng),把NAND FLASH的代碼拷貝到SDRAM中,接著(zhù)程序開(kāi)始在SDARM中運行。然后初始化數據段,最后跳轉到main()函數開(kāi)始運行。
如果是從NOR FLASH啟動(dòng),判斷ResetEntry值和BaseOfROM值是否相等,BaseOfROM值是在A(yíng)DS里定義的RO BASE,如果定義為0X30000000,因為ARM上電ResetEntry值為0,所以接下來(lái)程序會(huì )把NOR FLASH里的程序拷貝到SDRAM中。如果RO BASE定義為0,將直接在NOR FLASH里運行。然后初始化數據段,最后跳轉到main()函數開(kāi)始運行。
1: 從NAND FLASH啟動(dòng)時(shí),在A(yíng)RM上電時(shí),ARM會(huì )自動(dòng)把NAND FLASH前4K的內容拷貝到S3C2440內部SRAM中,同時(shí)把SRAM的地址映射到0X00000000。ARM上電后會(huì )從SRAM處開(kāi)始運行。
2:從NOR FLASH啟動(dòng)時(shí),因為NOR FLASH接在bank0。地址映射是0X00000000。所以ARM上電后直接運行NOR FLASH里的程序。此時(shí)S3C2440內部SRAM地址為0X40000000。
3:ARM上電啟動(dòng)都是從0X00000000開(kāi)始運行。但是對于復位程序入口,ResetEntry的值在A(yíng)RM上電運行時(shí)是0X00000000,在JTAG仿真時(shí)是0X30000000。這個(gè)值很關(guān)鍵,在拷貝程序時(shí)會(huì )用到。
評論