1.在構建好嵌入式開發環境的基礎上進行下一步開發移植工作。
修改完成後,使用交叉編譯工具編譯u-boot檔案,編譯完成後,在生成的u-boot檔案後加.elf字尾以便xilinx sdk工具對其進行識別,該檔案和 .bit檔案, fsbl.elf檔案被用來生成linux啟動檔案boot.bin。
# git clone
修改u-boot
# vim u-boot-digilent/include/configs/zynq_zed.h
# make zynq_zed_config
編譯# make
# cp u-boot u-boot.elf
3.生成boot.bin
在xps中選擇將硬體設計輸出到xilinx軟體設計平台(sdk),建立第一階段引導程式(first stage bootloader,fsbl)工程,該工程使用邏輯配置檔案system.bit對pl進行配置並載入作業系統映象,通過xilinx工具使用上兩步u-boot.elf、system.bit以及fsbl.elf生成zynq的boot映象,將生成檔案u-boot.bin改名為boot.bin以識別。(可後續再做,先專心ubuntu環境下檔案的生成)
//使用menuconfig工具對核心進行配置。(按需求)
進行編譯工作,
make arch=arm
編譯成功後,在arch/arm/boot下生成了zimage檔案。
5.編譯裝置檔案樹
裝置檔案樹原始碼位於arch/arm/boot/dts/digilent-zed.dts,修改裝置串列埠連線時的波特率資訊,
vi digilent-zed.dts,在chosen項進行修改。
通過如下指令編譯修改好的裝置檔案樹原始碼(devicetree.dts),可執行程式dtc為裝置樹編譯器,(devicetree.dtb)是由原始碼生成的二進位制檔案。
./linux-digilent/scripts/dtc/dtc -i dts -o dtb –o devicetree.dtb digilent-zed.dts
/usr/include/mtd/ubi-user.h:412:3: error: conflicting types for 『__packed』
/usr/include/mtd/ubi-user.h:313:3: note: previous declaration of 『__packed』 was here
make[1]: *** [miscutils/ubi_tools.o] error
1make: *** [miscutils] error
2
需要重新配置 make menuconfig
miscellaneous utilities —>刪掉所有和ubi相關選項
linux-2.6.27後,核心加入了一種新型的flash檔案系統ubi(unsorted block images)。
刪掉後,成功安裝。(參考
./configure –prefix=/opt/zedboard/devel/_rootfs –host=arm-xilinx-linux-gnueabi –disable-zlib cc=arm-xilinx-linux-gnueabi-gcc ldflags=」-wl,–gc-sections」 cflags=」-ffunction-sections -fdata-sections -os」編譯安裝:
make programs=」dropbear dbclient dropbearkey dropbearconvert scp」multi=1 strip
make install
建立軟連線
cd /opt/zed/_rootfs/usr/bin/
ln -s ../../sbin/dropbear ./scp
工具鏈動態庫與應用設定
1.建立目錄
cd /opt/zedboard/devel/_rootfs/
mkdir lib
將交叉編譯環境庫拷貝到這個目錄下
cp /root/codesourcery/sourcery_codebench_lite_for_xilinx_gnu_linux/arm-xilinx-linux-gnueabi/libc/lib/* lib -r
cp /root/codesourcery/sourcery_codebench_lite_for_xilinx_gnu_linux/arm-xilinx-linux-gnueabi/libc/sbin/* sbin/ -r
cp /root/codesourcery/sourcery_codebench_lite_for_xilinx_gnu_linux/arm-xilinx-linux-gnueabi/libc/usr/bin/* usr/
2.建立目錄結構與配置
在/opt/zedboard/devel/_rootfs/下:
mkdir dev etc etc/dropbear etc/init.d mnt opt proc root sys tmp var var/log var/www
然後進入etc目錄,建立許多的配置檔案
"rcs complete"設定使用者許可權:chmod 755 etc/init.d/rcs
chown root:root etc/init.d/rcs
3.製作ramdisk映象檔案
製作映象檔案
cd ~
dd if
=/dev/zero of=ramdisk8m.image bs=
1024 count=
8192
mke2fs -f ramdisk8m.image -l
"ramdisk"
-b1024
-m0
tune2fs ramdisk8m.image -i
0 chmod 777 ramdisk8m.image
掛載,將_rootfs的所有內容複製到該映象中
mkdir ramdisk
mount -o
loop ramdisk8m.image ramdisk/
cp -r /home/devel/_rootfs/* ramdisk
umount ramdisk/
gzip -9 ramdisk8m.image
最後一步;將zimage,boot.bin,devicetree_ramdisk.dtb(devicetree.dtb改名),ramdisk8m.image.gz拷貝到sd卡中,zedboard上電觀察啟動資訊。 gdbserver遠端除錯嵌入式Linux裝置
然而,有些情況下嵌入式裝置的硬體資源很有限,比如我手頭的這個裝置,總的rom空間只有16.5mb,韌體,一些系統程式加一些庫就占去了13mb 這樣我可以用的空間就只剩下3mb,而乙個交叉編譯得到的gdb二進位制大小有將近9mb,顯然是放不進去的了。所以聰明的人類想到了另一種方法gdbserver g...
初識嵌入式 嵌入式開發概述
1 什麼是嵌入式技術 1 嵌入式軟體與非嵌入式軟體的區別?答 嵌入式軟體是結合作業系統之上做的開發 非嵌入式軟體是做的裸機開發。裸機 沒有作業系統 2 嵌入式開發與微控制器開發的區別?答 區別 是否有作業系統。拓展 答 優點 解決了軟體的移植性 解決了開發人員的能力的劃分問題。提供了豐富的網路協議 ...
如何學習嵌入式 嵌入式如何入門?
學習嵌入式,該學習什麼基本的知識呢?嵌入式如何入門?其次,應該對作業系統有所了解,這對你對硬體和軟體的理解,絕對有很大的幫助。應該把系統的管理理解一下,比如程序 執行緒,系統如何來分配資源的,系統如何來管理硬體的,當然,不是看書就能把這些理解透,如果不是一時能理解,沒關係,多看看,結合以後的專案經驗...