#燒寫步驟
1.使用EOP燒寫u-boot.bin到JZ2440的nor flash或nand flash
2.啟動u-boot, 在序列槽工具中輸入相應菜單指令, 使用dnw_100ask.exe發送對應檔案
菜單 要發送的檔案
[k] Download Linux kernel uImage uImage
[t] Download device tree file(.dtb) jz2440.dtb
[y] Download root_yaffs image fs_mini_mdev_new.yaffs2
3. 燒寫完畢即可重新開機進入闆上LINUX系統。
1. 編譯器的選擇:
一個完整的Linux系統包含三部分: u-boot, kernel, root filesystem.
a. 對于u-boot:
我們仍然使用u-boot 1.1.6, 在這個版本上我們實作了很多功能: usb下載下傳,菜單操作,網卡永遠使能等, 不忍丢棄.
b. 對于kernel:
我下載下傳了目前(2018.09.19)最新的核心 (4.19)
c. 對于root filesystem
中文名為"根檔案系統", 它包含一些必須的APP, 一些動态庫。
一般來說這些動态庫是從工具鍊裡的lib目錄複制得到的,
當然也可以自己去編譯glibc等庫。
在編譯u-boot和kernel時, 我們可以使用新的工具鍊,
隻要這個工具鍊支援ARM9的指令集(armv4)就可以(這通常可以通過編譯參數來指定使用特定的指令集).
工具鍊可以從某些網站上下載下傳,并不需要自己去制作。
比如可以通路這個網站: https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/arm-linux-gnueabi/
下載下傳: gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi.tar.xz
但是在制作根檔案系統時, 實際上我們是編譯各種APP,
這些APP要用到一些動态庫, 為了友善一般直接使用工具鍊中lib目錄裡的庫。
新版工具鍊的lib庫一般是支援新的晶片,比如cortex A7,A8,A9,并不支援ARM9。
是以在制作根檔案系統、編譯APP時我們還得使用比較老的工具鍊: arm-linux-gcc-4.3.2.tar.bz2
2. 通過設定PATH環境變量來選擇使用某個工具鍊:
2.1 安裝工具鍊:
這非常簡單, 解壓即可:
sudo tar xjf arm-linux-gcc-4.3.2.tar.bz2 -C / (解壓到根目錄, /usr/local/arm/4.3.2/bin/下就是工具鍊)
tar xJf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi.tar.xz (解壓到目前目錄, 假設/work/system/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin下就是工具鍊)
注意: "/work/system" 請自行替換為你的實際目錄
2.2 設定環境變量使用某個工具鍊:
a. 要使用arm-linux-gcc 4.3.2, 執行如下指令:
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/arm/4.3.2/bin
然後就可以執行 arm-linux-gcc -v 觀看到版本号了
b. 要使用arm-linux-gnueabi-gcc 4.9.4, 執行如下指令:
export PATH=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/work/system/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin
然後就可以執行 arm-linux-gnueabi-gcc -v 觀看到版本号了
2. u-boot的編譯:
a. 首先設定環境變量使用要使用arm-linux-gnueabi-gcc 4.3.2
b.
把源檔案u-boot-1.1.6.tar.bz2、更新檔檔案u-boot-1.1.6_device_tree_for_jz2440.patch放在同一個目錄,
執行如下指令:
tar xjf u-boot-1.1.6.tar.bz2 // 解壓
cd u-boot-1.1.6
patch -p1 < ../u-boot-1.1.6_device_tree_for_jz2440.patch // 打更新檔
make 100ask24x0_config // 配置
make // 編譯, 可以得到u-boot.bin
3. kernel的編譯:
a. 首先設定環境變量使用要使用arm-linux-gnueabi-gcc 4.3.2
b.
把源檔案linux-4.19-rc3.tar.gz、更新檔檔案linux-4.19-rc3_device_tree_for_jz2440.patch放在同一個目錄,
執行如下指令:
tar xzf linux-4.19-rc3.tar.gz // 解壓
cd linux-4.19-rc3
patch -p1 < ../linux-4.19-rc3_device_tree_for_jz2440.patch // 打更新檔
cp config_ok .config // 配置
make uImage // 編譯, 可以得到arch/arm/boot/uImage
make dtbs // 編譯, 可以得到arch/arm/boot/dts/jz2440.dtb
注意:
a. 如果提示"mkimage not found", 先編譯u-boot, 把tools/mkimage複制到/bin目錄
b. 如果提示"openssl/bio.h: No such file or directory"
先確定你的ubuntu可以上網, 然後執行如下指令:
sudo apt-get update
sudo apt-get install libssl-dev
4. 制作root filesystem :
可以直接使用映象檔案: fs_mini_mdev_new.yaffs2
如果想自己制作,請參考視訊:
從www.100ask.net下載下傳頁面打開百度網盤,
打開如下目錄:
100ask分享的所有檔案
009_UBOOT移植_LINUX移植_驅動移植(免費)
畢業班第3課_移植3.4.2核心
畢業班第3課第2節_移植3.4.2核心之修改分區及制作根檔案系統.WMV
5. 燒寫
a. 使用EOP燒寫u-boot.bin到JZ2440的nor flash或nand flash
b. 啟動u-boot, 在序列槽工具中輸入相應菜單指令, 使用dnw_100ask.exe發送對應檔案
菜單 要發送的檔案
[k] Download Linux kernel uImage uImage
[t] Download device tree file(.dtb) jz2440.dtb
[y] Download root_yaffs image fs_mini_mdev_new.yaffs2
燒寫完畢即可重新開機進入闆上LINUX系統。