Embedded System 修課紀錄(3)
話說研究室的同學在資工系電腦教師都會有陰影,在現場 Make 不過,回自己 Lab 重新編譯就順的跟超人一樣快。這次的實驗課程是延續上次的修課紀錄(3)燒板子,簡單的描述本次流程: 重新編譯 Linux Kernel,並且利用 U-Boot 將 Linux Kernel 燒到板子上,要注意的部分是: 記憶體位址,以及編譯工具和欲重編的驅動程式準備。
要重編那些東西?
根據廠商給的 CMOS 和 LCD Driver 要把它納入 Linux 核心中,因此驗證也是確認板子的周邊硬體(LCD, Camera)是否能夠正常運作,有感光即可。
認識 Linux Kernel
Linux-x.y.z.w,大致上先了解後面那串數字所代表的涵義即可。x: <主版本>, y: <次版本>, z: <修正版本>, w: <附版本>,廠商給的檔案室 linux-2.6.15.3-creator-pxa270.patch。
環境準備
將檔案都放置於 /home/sn/lab4_project/ 之中,因此解壓縮下來的話,會有 Toolchain 目錄,以及其他要編譯的驅動程式和 Kernel 檔案。
重新編譯 Linux Kernel
將 Linux Kernel 燒到板子
第一件重要的事情是,開發板上面要已經把 U-Boot 燒進去(?),這步驟是前一次的實驗課程。 操作過程
1. 設定環境
[1.] 楊教授課程授課資料
要重編那些東西?
根據廠商給的 CMOS 和 LCD Driver 要把它納入 Linux 核心中,因此驗證也是確認板子的周邊硬體(LCD, Camera)是否能夠正常運作,有感光即可。
認識 Linux Kernel
Linux-x.y.z.w,大致上先了解後面那串數字所代表的涵義即可。x: <主版本>, y: <次版本>, z: <修正版本>, w: <附版本>,廠商給的檔案室 linux-2.6.15.3-creator-pxa270.patch。
環境準備
將檔案都放置於 /home/sn/lab4_project/ 之中,因此解壓縮下來的話,會有 Toolchain 目錄,以及其他要編譯的驅動程式和 Kernel 檔案。
重新編譯 Linux Kernel
- 安裝 Toolchain 工具
tar -zxvf arm-linux-toolchain-bin.4.0.2.tar.gz
- 加入環境變數
/home/sn/lab4_project//opt/microtime/pro/devkit/arm/pxa270/gcc-4.0.2-glibc-2.3.3/arm-unknown-linux-gnu/bin/:$PATH真的有點長...
- 核心和驅動程式解壓縮
// 解壓縮linuxkernelsource tar -zxvfmt-linux-2.6.15.3.tar.gz // 解壓縮我們要掛載的kernel module到對應的路徑 tar -zxvfCreator_PXA270_LCD_Device_Driver.src.tar.gz tar -zxvfCreator_PXA270_CMOS_Device_Driver.src.tar.gz
- Patch
cp linux-2.6.15.3-creator-pxa270.patch microtime/pro/devkit/lsp/create-pxa270/ cd…/microtime/pro/devkit/lsp/create-pxa270 patch -p0 < linux-2.6.15.3-creator-pxa270.patchMenuconfig 到前一步驟所解開的檔案目錄之下做編譯。
cd…/microtime/linux // 主要的目的在清除不穩定目的檔(.o),確保核心重編時順利成功 make mrproper // 自動填完make config所問的項目,預設不掛載周邊所有Devices的kernel module make creator_pxa270_defconfig // 目前最常用的文字界面的選單模式 make menuconfig勾選我們要編譯的資訊,[character] -> [devices] -> (M)CMOS, (M)LCD 產生 uImage
make clean // 編譯 zImag 以及 LCD, CMOS Kernel Module make // 編譯 uImage make uImage補充 zImage 在 /microtime/linux/drivers/char 的 creator-pxa270-cmos.ko 與 creator-pxa270-lcd.ko;uImage 在 /microtime/linux/arch/arm/boot。 到這一步驟已經完成編譯 Linux Kernel 成為 uImage 了。
將 Linux Kernel 燒到板子
第一件重要的事情是,開發板上面要已經把 U-Boot 燒進去(?),這步驟是前一次的實驗課程。 操作過程
1. 設定環境
uboot> setenv ipaddr 192.168.0.100 uboot> setenv serverip 192.168.0.10 uboot> saveenv2. 透過 TFTP 下載uImage
uboot> tftp a1100000 uImage uboot> protect off 100000 47ffff3. 解除 ROM 保護
protect off 100000 47ffff4. 清除 ROM 資料
erase 100000 47ffff5. 燒綠 ROM
cp.ba1100000 100000 200000燒錄 Linux Kernel 完成!! 驗證成效 1. 進入 U-Boot 執行 bootcmd run linux 指令 使得 U-Boot 於啟動時可以自動運行 Linux,記得並且saveenv 將設定儲存 2. 找到先前編得出來的兩個檔案,並且載入
insmodcreator-pxa270-cmos.ko insmodcreator-pxa270-lcd.ko3. 執行周邊驅動的程式
./creator-pxa270-demoReference
[1.] 楊教授課程授課資料
Comments
Post a Comment