u-boot-2014.10移植第16天----Nor flash啟動
第15天時將u-boot.bin檔案燒錄到Norflash上沒有正常啟動,考慮到tq2440.h檔案中的CONFIG_SYS_TEXT_BASE 值時0x33FC0000,我們將其修改為0,畢竟這個是絕對地址。
#define CONFIG_SYS_TEXT_BASE 0
修改、編譯、燒錄後執行:
結果還是不能執行,這是什麼原因呢?
將bootstrap.bin檔案重新燒錄到Norflash中,將u-boot.bin燒錄到SDRAM的0x33fc0000位置,執行也不成功。
將CONFIG_SYS_TEXT_BASE 恢復為0x33fc0000
#define CONFIG_SYS_TEXT_BASE 0x33FC0000
修改、編譯、燒錄後執行是可以的。這就很奇怪了,為什麼講u-boot.bin燒錄到Norflash上為什麼不能執行呢?原來是前面定義了CONFIG_SKIP_LOWLEVEL_INIT巨集,跳過了cpu_init_crit,在arch/arm/cpu/arm920t/start.S 檔案中如下部分,註釋說明僅僅是在reboot是才會進行sys-critical初始化,當從RAM中啟動時,不進行sys-critical初始化。
/*
* we do sys-critical inits only at reboot,
* not when booting from ram!
*/
#ifndef CONFIG_SKIP_LOWLEVEL_INIT
bl cpu_init_crit
#endif
所以,這裡我們將tq2440.h檔案中CONFIG_SKIP_LOWLEVEL_INIT巨集註釋掉。問題來了我們註釋掉這個巨集之後,編譯出現了這樣的問題:
arm-linux-ld.bfd:u-boot.lds:1: ignoring invalid character `#' in expression
arm-linux-ld.bfd:u-boot.lds:1: syntax error
make: *** [u-boot] 錯誤 1
找到原因是上面一條巨集影響的結果:#define CONFIG_BOARD_EARLY_INIT_F
//#define CONFIG_SKIP_LOWLEVEL_INIT
正常的巨集定義都是#define xxx 1
我們可以刪除這個巨集也可以這樣註釋:
#define CONFIG_BOARD_EARLY_INIT_F
/* #define CONFIG_SKIP_LOWLEVEL_INIT */
#define CONFIG_SYS_TEXT_BASE 0
修改一下SDRAM的重新整理頻率,在檔案:board/samsung/tq2440/lowlevel_init.S中修改REFCNT的值:
#define REFCNT 0x4f4
S3C2440手冊知,計算公式:Refresh period = (2^11-refresh_count+1)/HCLK
SDRAM手冊知:Refresh period =8192/64ms
下面start.S設定FCLK為405MHZ,分頻係數 FCLK:HCLK:PCLK = 1:4:8 ,HCLK=100MHZ
於是編譯,用J-Flash ARM燒錄到Norflash上,記得燒錄完將軟體J-Flash ARM軟體斷開連線。復位開發板既可以實現從Norflash啟動了。
明天繼續!
相關文章
- u-boot-2014.10移植第15天----nor flash操作boot
- u-boot-2014.10移植第28天----nand flash啟動(六)bootNaN
- u-boot-2014.10移植第27天----nand flash啟動(五)bootNaN
- u-boot-2014.10移植第25天----nand flash啟動(三)bootNaN
- u-boot-2014.10移植第26天----nand flash啟動(四)bootNaN
- u-boot-2014.10移植第23天----nand flash啟動(一)bootNaN
- u-boot-2014.10移植第24天----nand flash啟動(二)bootNaN
- u-boot-2014.10移植第29天----nand flash的SPL啟動(一)bootNaN
- u-boot-2014.10移植第30天----nand flash的SPL啟動(二)bootNaN
- u-boot-2014.10移植第31天----核心啟動(一)boot
- u-boot-2014.10移植第21天----新增nand flash命令支援(三)bootNaN
- u-boot-2014.10移植第22天----新增nand flash命令支援(四)bootNaN
- u-boot-2014.10移植第19天----新增nand flash命令支援(一)bootNaN
- u-boot-2014.10移植第20天----新增nand flash命令支援(二)bootNaN
- S3C2440從NAND Flash啟動和NOR FLASH啟動的問題S3NaN
- ZYNQ FLASH+EMMC手動移植LINUX啟動Linux
- u-boot-2014.10移植第17天----新增DM9000網路卡支援(一)boot
- u-boot-2014.10移植第18天----新增DM9000網路卡支援(二)boot
- NAND Flash和NOR Flash的區別NaN
- nor flash 和nand flash 傻傻分不清楚NaN
- 宏旺半導體科普SPI NAND Flash和SPI NOR Flash的區別NaN
- 痞子衡嵌入式:在i.MXRT啟動頭FDCB裡使能序列NOR Flash的DTR模式模式
- 痞子衡嵌入式:深入i.MXRT1050系列ROM中序列NOR Flash啟動初始化流程
- 痞子衡嵌入式:在i.MXRT啟動頭FDCB裡使能序列NOR Flash的Continuous read模式模式
- 為什麼NOR FLASH仍是汽車行業的優選行業
- 第216天:Angular—自定義指令(二)Angular
- uboot1: 啟動流程和移植框架boot框架
- 痞子衡嵌入式:在i.MXRT啟動頭FDCB裡配置序列NOR Flash多個暫存器的注意事項
- 痞子衡嵌入式:瞭解i.MXRT1060系列ROM中序列NOR Flash啟動初始化流程優化點優化
- 痞子衡嵌入式:導致序列NOR Flash在i.MXRT下無法正常下載/啟動的常見因素之QE bit
- MySQL service啟動指令碼淺析(r12筆記第59天)MySql指令碼筆記
- 第32天:微博釋出動態
- 痞子衡嵌入式:序列NOR Flash的DQS訊號功能簡介
- 【全棧React】第16天: 顯示遠端資料全棧React
- Flutter第2天--Animation動畫+粒子運動Flutter動畫
- 第 0 天/第 1 天/第 2 天:雲時代的軟體生命週期
- 痞子衡嵌入式:飛思卡爾i.MX RT系列MCU啟動那些事(9)- 從Parallel NOR啟動Parallel
- 【全棧React】第5天: 資料驅動全棧React