天天看點

裝置樹jz2440開發環境鏡像說明

#燒寫步驟

    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系統。