久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Ubuntu上hi3531交叉編譯環境arm

159次閱讀
沒有評論

共計 8931 個字符,預計需要花費 23 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

丸趣 TV 小編給大家分享一下 Ubuntu 上 hi3531 交叉編譯環境 arm-hisiv100nptl-linux 怎么搭建,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

安裝 SDK

1、Hi3531 SDK 包位置

在 Hi3531_V100R001***/01.software/board 目錄下,您可以看到一個 Hi3531_SDK_Vx.x.x.x.tgz 的文件,

該文件就是 Hi3531 的軟件開發包。

2、解壓縮 SDK 包

在 linux 服務器上(或者一臺裝有 linux 的 PC 上,主流的 linux 發行版本均可以),使用命令:tar -zxf Hi3531_SDK_Vx.x.x.x.tgz,

解壓縮該文件,可以得到一個 Hi3531_SDK_Vx.x.x.x 目錄。

3、展開 SDK 包內容

返回 Hi3531_SDK_Vx.x.x.x 目錄,運行./sdk.unpack(請用 root 或 sudo 權限執行) 將會展開 SDK 包打包壓縮存放的內容,請按照提示完成操作。

如果您需要通過 WINDOWS 操作系統中轉拷貝 SDK 包,請先運行./sdk.cleanup,收起 SDK 包的內容,拷貝到新的目錄后再展開。

4、在 linux 服務器上安裝交叉編譯器

1)安裝 uclibc 交叉編譯器(注意,需要有 sudo 權限或者 root 權限):

進入 Hi3531_SDK_Vx.x.x.x/osdrv/toolchain/arm-hisiv100-linux 目錄,運行 chmod +x cross.install,然后運行./cross.install 即可。

2) 安裝 glibc 交叉編譯器(注意,需要有 sudo 權限或者 root 權限):

進入 Hi3531_SDK_Vx.x.x.x/osdrv/toolchain/arm-hisiv200-linux 目錄,運行 chmod +x cross.install,然后運行./cross.install 即可。

3) 執行 source /etc/profile,安裝交叉編譯器的腳本配置的環境變量就可以生效了,或者請重新登陸也可。也可以 source /etc/bash.bashrc。

在終端上輸入命令 arm-linux 再按 Tab 鍵,可以看到下圖,說明環境變量設置成功了

ls@ubuntu:/slq/nfs/mpp$ arm-hisiv100nptl-linux-

arm-hisiv100nptl-linux-addr2line arm-hisiv100nptl-linux-gprof

arm-hisiv100nptl-linux-ar arm-hisiv100nptl-linux-ld

arm-hisiv100nptl-linux-as arm-hisiv100nptl-linux-nm

arm-hisiv100nptl-linux-c++ arm-hisiv100nptl-linux-objcopy

arm-hisiv100nptl-linux-c++filt arm-hisiv100nptl-linux-objdump

arm-hisiv100nptl-linux-cpp arm-hisiv100nptl-linux-ranlib

arm-hisiv100nptl-linux-g++ arm-hisiv100nptl-linux-readelf

arm-hisiv100nptl-linux-gcc arm-hisiv100nptl-linux-size

arm-hisiv100nptl-linux-gcc-4.4.1 arm-hisiv100nptl-linux-strings

arm-hisiv100nptl-linux-gccbug arm-hisiv100nptl-linux-strip

arm-hisiv100nptl-linux-gcov

驗證,編譯一個 hello.c 文件

#include

int main()

{

printf(hello world!\n

}

使用命令:arm-hisiv100nptl-linux-gcc hello.c -o hello 看是否編譯成功

root@ubuntu:/slq/test# ls

hello hello.c

可見成功生成了二進制文件。

5、編譯 osdrv

1.osdrv 使用說明

本目錄設計思路為一套源代碼支持兩種工具鏈編譯,因此需要通過編譯參數指定不同的工具鏈。其中 arm-hisiv100nptl-linux 是 uclibc 工具鏈,arm-hisiv200-linux 是 glibc 工具鏈。具體命令如下

(1) 編譯整個 osdrv 目錄:

make OSDRV_CROSS=arm-hisiv100nptl-linux all

或者

make OSDRV_CROSS=arm-hisiv200-linux all

(2) 清除整個 osdrv 目錄的編譯文件:

make OSDRV_CROSS=arm-hisiv100nptl-linux clean

或者

make OSDRV_CROSS=arm-hisiv200-linux clean

(3) 徹底清除整個 osdrv 目錄的編譯文件,除清除編譯文件外,還刪除已編譯好的鏡像:

make OSDRV_CROSS=arm-hisiv100nptl-linux distclean

或者

make OSDRV_CROSS=arm-hisiv200-linux distclean

(4) 單獨編譯 kernel:

待進入內核源代碼目錄后,執行以下操作

cp arch/arm/configs/godnet_defconfig .config

make ARCH=arm CROSS_COMPILE=arm-hisiv100nptl-linux- menuconfig

make ARCH=arm CROSS_COMPILE=arm-hisiv100nptl-linux- uImage

或者

cp arch/arm/configs/godnet_defconfig .config

make ARCH=arm CROSS_COMPILE=arm-hisiv200-linux- menuconfig

make ARCH=arm CROSS_COMPILE=arm-hisiv200-linux- uImage

(5) 單獨編譯 uboot:

待進入 boot 源代碼目錄后,執行以下操作

make ARCH=arm CROSS_COMPILE=arm-hisiv100nptl-linux- godnet_config

make ARCH=arm CROSS_COMPILE=arm-hisiv100nptl-linux-

或者

make ARCH=arm CROSS_COMPILE=arm-hisiv200-linux- godnet_config

make ARCH=arm CROSS_COMPILE=arm-hisiv200-linux-

(6) 制作文件系統鏡像:

在 osdrv/pub/ 中有已經編譯好的文件系統,因此無需再重復編譯文件系統,只需要根據單板上 flash 的規格型號制作文件系統鏡像即可。

spi flash 使用 jffs2 格式的鏡像,制作 jffs2 鏡像時,需要用到 spi flash 的塊大小。這些信息會在 uboot 啟動時會打印出來。建議使用時先直接運行 mkfs.jffs2 工具,根據打印信息填寫相關參數。下面以塊大小為 64KB 為例:

osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_uclibc -l -e 0x40000 -o osdrv/pub/rootfs_uclibc_256k.jffs2

osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_uclibc -l -e 0x10000 -o osdrv/pub/rootfs_uclibc_64k.jffs2

sudo osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_uclibc -l -e 0x10000 –pad=0x9A0000 -o osdrv/pub/rootfs_uclibc_64k.jffs2

sudo osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_uclibc_slq -l -e 0x10000 –pad=0x9A0000 -o osdrv/pub/rootfs_uclibc_64k_slq.jffs2

sudo osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_custom_slq -l -e 0x10000 –pad=0x100000 -o osdrv/pub/rootfs_custom_64k_slq.jffs2

或者

osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_glibc -l -e 0x40000 -o osdrv/pub/rootfs_glibc_256k.jffs2

nand flash 使用 yaffs2 格式的鏡像,制作 yaffs2 鏡像時,需要用到 nand flash 的 pagesize 和 ecc。這些信息會在 uboot 啟動時會打印出來。建議使用時先直接運行 mkyaffs2image 工具,根據打印信息填寫相關參數。下面以 2KB pagesize、1bit ecc 為例:

osdrv/pub/bin/pc/mkyaffs2image osdrv/pub/rootfs_uclibc osdrv/pub/rootfs_uclibc_2k_1bit.yaffs2 1 1

或者

osdrv/pub/bin/pc/mkyaffs2image osdrv/pub/rootfs_glibc osdrv/pub/rootfs_glibc_2k_1bit.yaffs2 1 1

(7) 單獨編譯 PCIE MCC 驅動模塊:

首先,先準備好編譯模塊時需要連接到的內核源代碼目錄:

cd ./kernel/

tar -xvf linux-3.0.y.tgz

解壓內核源代碼之后,需要根據具體的芯片類型,先編譯內核 (以 Hi3531 為例),以生成相應的頭文件

cd ./linux-3.0.y

cp arch/arm/configs/godnet_defconfig .config

make ARCH=arm CROSS_COMPILE=arm-hisiv100nptl-linux- menuconfig

make ARCH=arm CROSS_COMPILE=arm-hisiv100nptl-linux- uImage

內核源代碼準備完畢,可以進入 PCIE MCC 驅動模塊的源代碼目錄,編譯驅動:

cd ../../drv/pcie_mcc

如果是編譯主片的 ko,直接使用 make 命令

make

如果是編譯從片的 ko 文件,請帶上參數 target=slave

make target=slave

(說明:默認情況下編譯驅動的工具鏈是 arm-hisiv100nptl-linux-,如需更改請帶上參數 CROSS_COMPILE=arm-hisiv200-linux-)

2. 鏡像存放目錄說明

編譯完的 image,rootfs 等存放在 osdrv/pub 目錄下

pub

│ rootfs_uclibc.tgz —————————————— hisiv100nptl 編譯出的 rootfs 文件系統

│ rootfs_glibc.tgz ——————————————- hisiv200 編譯出的 rootfs 文件系統

├─image_glibc ———————————————— hisiv200 編譯出的鏡像文件

│ uImage ————————————————- kernel 鏡像

│ u-boot-hi3531_930MHz.bin ——————————- u-boot 鏡像

│ rootfs_256k.jffs2 ————————————– jffs2 rootfs 鏡像 (對應 spi-flash blocksize=256K)

│ rootfs_2k_1bit.yaffs2 ———————————- yaffs2 rootfs 鏡像 (對應 nand-flash pagesize=2K ecc=1bit)

├─image_uclibc ———————————————– hisiv100nptl 編譯出的鏡像文件

│ uImage ————————————————- kernel 鏡像

│ u-boot-hi3531_930MHz.bin ——————————- u-boot 鏡像

│ rootfs_256k.jffs2 ————————————– jffs2 rootfs 鏡像 (對應 spi-flash blocksize=256K)

│ rootfs_2k_1bit.yaffs2 ———————————- yaffs2 rootfs 鏡像 (對應 nand-flash pagesize=2K ecc=1bit)

└─bin

├─pc

│ mkfs.jffs2

│ mkimage

│ mkfs.cramfs

│ mkyaffs2image

├─board_glibc ——————————————– hisiv200 編譯出的單板用工具以及 pcie 消息通訊層 ko

│ flash_eraseall

│ mcc_usrdev_host.ko

│ flash_erase

│ mcc_usrdev_slv.ko

│ hi35xx_dev_slv.ko

│ nandwrite

│ hi35xx_dev_host.ko

│ mcc_drv_slv.ko

│ mtd_debug

│ flash_info

│ mcc_drv_host.ko

│ boot_device.ko

│ pcit_dma_slv.ko

│ sumtool

│ mtdinfo

│ flashcp

│ nandtest

│ nanddump

│ parted_glibc

│ pcit_dma_host.ko

│ gdb-arm-hisiv200-linux

└─board_uclibc ——————————————- hisiv100nptl 編譯出的單板用工具以及 pcie 消息通訊層 ko

flash_eraseall

mcc_usrdev_host.ko

flash_erase

mcc_usrdev_slv.ko

hi35xx_dev_slv.ko

nandwrite

hi35xx_dev_host.ko

mcc_drv_slv.ko

mtd_debug

flash_info

parted_uclibc

mcc_drv_host.ko

boot_device.ko

pcit_dma_slv.ko

sumtool

mtdinfo

flashcp

nandtest

gdb-arm-hisiv100nptl-linux

nanddump

pcit_dma_host.ko

3.osdrv 目錄結構說明:

osdrv

├─Makefile —————————— osdrv 目錄編譯腳本

├─busybox ——————————- 存放 busybox 源代碼的目錄

├─tools ——————————— 存放各種工具的目錄

│ ├─board_tools ———————– 各種單板上使用工具

│ │ ├─reg-tools-1.0.0 ————— 寄存器讀寫工具

│ │ ├─mtd-utils ——————— flash 裸讀寫工具

│ │ ├─udev-100 ———————- udev 工具集

│ │ ├─gdb ————————— gdb 工具

│ │ ├─parted ———————— 大容量硬盤分區工具

│ │ └─e2fsprogs ——————— mkfs 工具集

│ └─pc_tools ————————– 各種 pc 上使用工具

│ ├─mkfs.cramfs ——————- cramfs 文件系統制作工具

│ ├─mkfs.jffs2 ——————– jffs2 文件系統制作工具

│ ├─mkimage ———————– uImage 制作工具

│ ├─mkyaffs2image301 ————– yaffs2 文件系統制作工具

│ ├─nand_production ————— nand flash 燒寫文件制作工具

│ └─uboot_tools ——————- uboot 鏡像制作工具、xls 文件及 ddr 初始化腳本、bootrom 工具

├─toolchain —————————– 存放工具鏈的目錄

│ ├─arm-hisiv100nptl-linux —————- hisiv100nptl 交叉工具鏈

│ └─arm-hisiv200-linux —————- hisiv200 交叉工具鏈

├─pub ———————————– 存放各種鏡像的目錄

│ ├─image_glibc ———————– 基于 hisiv100nptl 工具鏈編譯,可供 FLASH 燒寫的映像文件,包括 uboot、內核、文件系統

│ ├─image_uclibc ———————- 基于 hisiv200 工具鏈編譯,可供 FLASH 燒寫的映像文件,包括 uboot、內核、文件系統

│ ├─bin ——————————- 各種未放入根文件系統的工具

│ │ ├─pc —————————- 在 pc 上執行的工具

│ │ ├─board_glibc ——————- 基于 hisiv100nptl 工具鏈編譯,在單板上執行的工具

│ │ └─board_uclibc —————— 基于 hisiv200 工具鏈編譯,在單板上執行的工具

│ ├─rootfs_uclibc.tgz —————– 基于 hisiv100nptl 工具鏈編譯的根文件系統

│ └─rootfs_glibc.tgz —————— 基于 hisiv200 工具鏈編譯的根文件系統

├─drv ———————————– 存放外設驅動的目錄

│ └─pcie_mcc ————————– pcie 消息通訊層驅動

├─rootfs_scripts ———————— 存放根文件系統制作腳本的目錄

├─uboot ——————————— 存放 uboot 源代碼的目錄

└─kernel ——————————– 存放 kernel 源代碼的目錄

4. 注意事項

(1) 使用某一工具鏈編譯后,如果需要更換工具鏈,請先將原工具鏈編譯文件清除,然后再更換工具鏈編譯。方法是 make clean.

(2) 在 windows 下復制源碼包時,linux 下的可執行文件可能變為非可執行文件,導致無法編譯使用;u-boot 或內核下編譯后,會有很多符號鏈接文件,在 windows 下復制這些源碼包, 會使源碼包變的巨大,因為 linux 下的符號鏈接文件變為 windows 下實實在在的文件,因此源碼包膨脹。因此使用時請注意不要在 windows 下復制源代碼包。

(3) 目前網絡為自適應模式,如果要修改為固定某種速率模式,需要修改文件 kernel/linux-3.0.y/drivers/net/stmmac/stmmac_mdio.c:

關掉宏定義 TNK_HW_PLATFORM_ADJUST,注釋掉 33 行;

選擇需要固定配置的速率,例如固定配置為百兆全雙工的話,打開 46 行宏定義 PHY_SPEED_100 即可。

(4)Hi3531 支持硬浮點,文件系統中發布的庫都是硬浮點庫。因此請用戶注意,所有 Hi3531 板端代碼編譯時需要在 Makefile 里面添加以下命令:

CFLAGS += -march=armv7-a -mcpu=cortex-a9 –mfloat-abi=softfp -mfpu=vfpv3-d16

CXXFlAGS +=-march=armv7-a -mcpu=cortex-a9 –mfloat-abi=softfp -mfpu=vfpv3-d16

其中 CXXFlAGS 中的 XX 根據用戶 Makefile 中所使用宏的具體名稱來確定,e.g:CPPFLAGS。

以上是“Ubuntu 上 hi3531 交叉編譯環境 arm-hisiv100nptl-linux 怎么搭建”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!

向 AI 問一下細節

丸趣 TV 網 – 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-07發表,共計8931字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 梁河县| 井研县| 呼和浩特市| 临洮县| 罗城| 广昌县| 科技| 特克斯县| 玛纳斯县| 镇巴县| 驻马店市| 惠安县| 屏边| 绍兴县| 贵州省| 金门县| 赤水市| 台中县| 贵溪市| 凤冈县| 高陵县| 丹阳市| 万载县| 彰武县| 建水县| 龙胜| 温泉县| 临江市| 安庆市| 通化市| 东乌珠穆沁旗| 梅河口市| 齐齐哈尔市| 德州市| 新津县| 奇台县| 凤山市| 水城县| 睢宁县| 舟曲县| 武夷山市|