背景
保密。不管怎么樣接觸到了海思SDK的開發,作為一項比較常見的技術,我們開展有關地學習。
host平台 :Ubuntu 16.04
arm平台 : 3531d
arm-gcc :4.9.4
概況
海思給出的官方資料有:
文件名 | 解釋 |
---|---|
Hi3531D_Vxxxxxx.rar | 包含了有關的SDK |
ReleaseDoc.rar | 官方發布的中英文文檔 |
arm-hisiv500-linux.tgz | 開發用的工具鏈 |
安裝
以下的操作在 Linux主機上進行。(本人這里是Ubuntu)
Hi3531D_Vxxxxxx.rar:解壓SDK包、並展開包的內容
Hi3531D SDK包位置:在"Hi3531D Vxxxxxx/01.software/"目錄下,有 Hi3531D_SDK_Vx.x.x.x.tgz 的文件,該文件就是Hi3531D的軟件開發包。
tar -xf Hi*SDK*.tgz
cd Hi*SDK*
# 如果需要拷貝SDK包,請先運行source sdk.cleanup,收起SDK包的內容,拷貝到新的目錄后再展開。
source sdk.unpack
SDK目錄介紹
# schips @ ubuntu in Hi3531D_SDK [10:54:44]
$ tree -L 2
.
├── drv #平台驅動
│ ├── cipher
│ ├── hisi-irda
│ ├── rtc
│ ├── sys_config
│ └── wtdg
├── mpp # 存放媒體處理平台的目錄
│ ├── component # 組件源代碼
│ ├── extdrv # 板級外圍驅動源代碼
│ ├── include # 對外頭文件
│ ├── ko # 內核模塊
│ ├── lib # release版本庫以及音頻庫
│ ├── linux.param
│ ├── Makefile.param
│ ├── sample # 樣例源代碼
│ └── tools # 媒體處理相關工具
├── osal
│ ├── include
│ └── source
├── osdrv # 存放操作系統及相關驅動的目錄
│ ├── drv # drv源代碼
│ ├── Makefile # osdrv Makefile
│ ├── opensource # 包含了 uboot、kernel、busybox等源碼
│ ├── pub # 編譯好的鏡像、工具、drv驅動等(空的)
│ ├── readme_cn.txt
│ ├── readme_en.txt
│ ├── rootfs_scripts # rootfs源代碼
│ └── tools # linux工具源代碼
├── package # 存放SDK各種壓縮包的目錄
│ ├── drv.tgz # 平台驅動壓縮包
│ ├── image_uclibc # 可供FLASH燒寫的映像文件,如內核、根文件系統
│ ├── mpp.tgz # 媒體處理平台軟件壓縮包
│ ├── osal.tgz
│ ├── osdrv.tgz # linux內核/uboot/rootfs/tools源碼壓縮包
│ └── rootfs_uclibc.tgz
├── scripts # 存放shell腳本的目錄
├── sdk.cleanup # SDK清理腳本
└── sdk.unpack # SDK展開腳本
arm-hisiv500-linux.tgz:安裝交叉編譯器到HOST
解壓與自動安裝
tar -xf arm-hisiv500-linux.tgz
cd arm-hisiv500-linux
# arm-hisiv500-linux.install 腳本中的 TOP_DIR 為安裝工具鏈的位置,可以修改,一般默認即可
chmod +x arm-hisiv500-linux.install
sudo ./arm-hisiv500-linux.install
配置工具鏈到 PATH中
# 默認情況下的工具鏈配置路徑
export PATH=$PATH:/opt/hisi-linux/x86-arm/arm-hisiv500-linux/target/bin
測試
$ arm-hisiv500-linux-gcc --version
arm-hisiv500-linux-gcc (Hisilicon_v500_20170922) 4.9.4 20150629 (prerelease)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
如果出現:
arm-hisiv500-linux-gcc: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
這是因為gcc太老的問題:解決辦法:
sudo apt-get install lib32z1 lib32ncurses5 lib32stdc++6 -y
編譯osdrv
osdrv ,具體參見osdrv目錄下readme;這里給出自用的編譯kernel 有關的腳本
- 配置:
make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- menuconfig
- 清除:
make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- clean
- 編譯:
sudo PATH=$PATH:/opt/hisi-linux/x86-arm/arm-hisiv500-linux/target/bin make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- uImage -j4