zedboard 嵌入式Linux系統移植

2021-08-04 07:28:04 字數 4775 閱讀 7765

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 嵌入式開發與微控制器開發的區別?答 區別 是否有作業系統。拓展 答 優點 解決了軟體的移植性 解決了開發人員的能力的劃分問題。提供了豐富的網路協議 ...

如何學習嵌入式 嵌入式如何入門?

學習嵌入式,該學習什麼基本的知識呢?嵌入式如何入門?其次,應該對作業系統有所了解,這對你對硬體和軟體的理解,絕對有很大的幫助。應該把系統的管理理解一下,比如程序 執行緒,系統如何來分配資源的,系統如何來管理硬體的,當然,不是看書就能把這些理解透,如果不是一時能理解,沒關係,多看看,結合以後的專案經驗...