U-Boot-2009-03移植笔记(移植准备)
因為工作需要,需要在S3C2440板子上移植U-boot和Linux,雖然關于S3c2440移植的文章比較多,但是畢竟全面的不多,而且都是別人的,這次自己動手,以此系列記錄全過程。
U-boot1.1.6中有支持smdk2410的代碼,而2440和2410還是比較相近的,于是在2410的基礎上來移植。
建立xinna2440代碼
我們把自己移植的u-boot叫xinna2440-u-boot,首先要建立xinna2440代碼
修改頂層Makefile
直接在vim中查找smdk2410_config,然后在下面增加xinna2440_config的定義
1 smdk2410_config : unconfig 2 @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0 3 4 xinna2440_config : unconfig 5 @$(MKCONFIG) $(@:_config=) arm arm920t xinna2440 NULL s3c24x0然后拷貝代碼
cp include/configs/smdk2410.h include/configs/s3c2440.h cp board/samsung/smdk2410/ board/xinna2440 -r?測試xinna2440代碼
make xinna2440_config Configuring for xinna2440 board... make只要你安裝好了交叉編譯鏈(這里推薦3.4.5,其他版本有可能在移植Nandflash驅動的時候出現鏈接錯誤),編譯不應該出錯,在根目錄下會生成u-boot.bin文件。
搞清楚要移植的內容
U-Boot分為兩部分,第一部分是匯編部分的啟動,我們在這個階段至少要設置CPU工作模式、關閉看門狗、初始化內存(SDRAM)關閉MMU,禁中斷,設置PLL,代碼拷貝,為C語言準備運行環境(設置堆棧指針)等一些列工作。移植是個細活, 不熟悉的沒法快起來,需要很有耐心。
因為我們基于smdk2410來移植xinna2440,那么我們要搞清楚哪些地方是我們需要移植的.
SOC的區別
smdk2410用的是s3c2410的芯片,xinna2440用的是s3c2440的芯片,因此我們只要弄清楚這兩款芯片的區別,就知道針對cpu的不同而要移植哪些地方了.
1、兩款芯片的主頻不同,所以我們要修改PLL驅動
2、中斷控制器不同,我們需要禁止所有中斷
3、兩款芯片的NandFlash控制器不同。
smdk2410是帶有NORFlash的,可以從NORFlash啟動,而xinna2440是不帶NORFlash,我們只能從NandFlash啟動,所以我們必須移植好NandFlash驅動。
BOARD區別
1、第一個就是要注意GPIO的鏈接不同,這里不詳說。
2、第二要注意外圍器件不同
查找入口點
用vim打開cpu/arm920t/u-boot.lds,可以看到,U-boot的起始代碼位于cpu/arm920t/start.S中,我們可以從這里作為入手點,展開移植工作。
轉載于:https://www.cnblogs.com/spinsoft/archive/2013/05/31/3110620.html
總結
以上是生活随笔為你收集整理的U-Boot-2009-03移植笔记(移植准备)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java ee中如何实现数据库中数据柱状
- 下一篇: 网络渗透测试笔记