海思 Hi3521A SDK 的安裝及環境設定
本篇紀錄一下海思 Hi3521A SDK安裝相關問題。
Q:
vmware環境掛載 share folder 發生
mount: unknown filesystem type 'vmhgfs'
安裝 cross compiler
进入Hi3521A_SDK_Vx.x.x.x/osdrv/opensource/toolchain/arm-hisiv400-linux目录,
运行chmod +x cross.install,
然后运行./cross.install即可。<== 不用空格
source /etc/profile <== 設gcc環境變數
Q:
安裝compiler 之後,還是找不到 compiler ?
A:
因為 build SDK 會執行 su,root 沒有設gcc環境變數,編輯 /root/.bashrc
加上 export PATH="/opt/hisi-linux/x86-arm/arm-hisiv400-linux/target/bin:$PATH"
Q:
編譯過程中發生以下錯誤
pushd: not found
A:
进入/bin目录,查看sh的链接文件
sh命令链接到的是dash,而pushd命令需要在bash的环境中执行。
执行sudo dpkg-reconfigure dash 命令,将dash设置为No。
再次查看sh的链接:已经修改为bash了。
我安裝以下 package 即可正常編譯 SDK
sudo apt-get install lib32stdc++6
sudo apt install lib32z1-dev
sudo apt-get install libncurses-dev
安裝 Linux build server
PC 端使用免費的 VMware Workstation Player,安裝 ubuntu 14.04 64-bit server 版本。安裝完畢後,enable share folder功能讓 windows 和 Linux 可以分享檔案,或者設定並啟動 samba server,方便 windows 與 Linux 分享檔案。Q:
vmware環境掛載 share folder 發生
mount: unknown filesystem type 'vmhgfs'
A:
sudo apt-get install git
git clone https://github.com/rasa/vmware-tools-patches.git
cd vmware-tools-patches
sudo ./patched-open-vm-tools.sh
然後打 df,就可以看到 vmhgfs 可以正常使用
vmhgfs-fuse 483399676 97966528 385433148 21% /mnt/hgfs
Q:
如何設定 samba server ?
A:
sudo apt-get install samba
sudo vim /etc/samba/smb.conf
sudo service smbd restart
sudo smbpasswd -a user_name
[my_user]
path = /home/my_user/ws
available = yes
valid users = user_name
read only = no
browseable = yes
public = no
writable = yes
Q:
如何設定 samba server ?
A:
sudo apt-get install samba
sudo vim /etc/samba/smb.conf
sudo service smbd restart
sudo smbpasswd -a user_name
[my_user]
path = /home/my_user/ws
available = yes
valid users = user_name
read only = no
browseable = yes
public = no
writable = yes
安裝 Hi3521A_SDK
解開 tgz 之後,
sudo su
. sdk.unpack <=== "." 後面要空格
安裝 cross compiler
进入Hi3521A_SDK_Vx.x.x.x/osdrv/opensource/toolchain/arm-hisiv400-linux目录,
运行chmod +x cross.install,
然后运行./cross.install即可。<== 不用空格
source /etc/profile <== 設gcc環境變數
Q:
安裝compiler 之後,還是找不到 compiler ?
A:
因為 build SDK 會執行 su,root 沒有設gcc環境變數,編輯 /root/.bashrc
加上 export PATH="/opt/hisi-linux/x86-arm/arm-hisiv400-linux/target/bin:$PATH"
Q:
編譯過程中發生以下錯誤
pushd: not found
A:
进入/bin目录,查看sh的链接文件
sh命令链接到的是dash,而pushd命令需要在bash的环境中执行。
执行sudo dpkg-reconfigure dash 命令,将dash设置为No。
再次查看sh的链接:已经修改为bash了。
安裝 Linux Build Server上相關軟件
因為 cross compiler 是 32-bit,所以會缺很多 package我安裝以下 package 即可正常編譯 SDK
sudo apt-get install lib32stdc++6
sudo apt install lib32z1-dev
sudo apt-get install libncurses-dev
編譯 osdrv
cd osdrvmake OSDRV_CROSS=arm-hisiv400-linux CHIP=hi3521a all
cd osdrv/pub
tar zxvf rootfs_glibc.tgz
cd ../..
osdrv/pub/bin/pc/mkyaffs2image100 osdrv/pub/rootfs_glibc osdrv/pub/rootfs_glibc_2k_4bit.yaffs2 1 2
一切順利的話,會在 osdrv/pub/image_glibc 底下看到 uboot, uImage, 及 rootfs 如下:
rootfs_hi3521a_128k.jffs2 rootfs_hi3521a_2k_4bit.yaffs2 u-boot-hi3521a.bin
rootfs_hi3521a_256k.jffs2 rootfs_hi3521a_64k.jffs2 uImage_hi3521a
單獨編譯 uboot
若要單獨編譯 uboot,如下:
cd opensource/uboot/u-boot-2010.06
make ARCH=arm CROSS_COMPILE=arm-hisiv400-linux- hi3521a_config
make ARCH=arm CROSS_COMPILE=arm-hisiv400-linux-
cp u-boot.bin ../../../tools/pc/uboot_tools/
cd ../../../tools/pc/uboot_tools/
./mkboot.sh reg_info_hi3521a_400M_1GB_32bit_1100M_250M.bin u-boot-hi3521a.bin
cp u-boot-hi3521a.bin ../../../pub/image_glibc/
這樣就會更新 osdrv/pub/image_glibc 底下的 uboot 檔案
燒錄 uboot, kernel and rootfs
文件上有說明使用 tftp 下載 image 的方式,這邊記錄使用 usb storage 下載的方法
先將 u-boot-hi3521a.bin, uImage_hi3521a, rootfs_hi3521a_2k_4bit.yaffs2 複製到 SD card 上
u-boot 可以用 HiTool 燒錄,這裡跳過 u-boot 燒錄 (可自行比對文件或參考底下方法)
以燒錄到NAND Flash為例:
hisilicon # usb start
燒錄kernel
hisilicon # mw.b 82000000 ff 400000
hisilicon # fatload usb 0:1 0x82000000 uImage_hi3521a
hisilicon # nand erase 100000 400000
hisilicon # nand write 82000000 100000 400000
燒錄rootfs
hisilicon # mw.b 82000000 ff 2000000
hisilicon # fatload usb 0:1 0x82000000 rootfs_hi3521a_2k_4bit.yaffs2
hisilicon # nand erase 500000 2000000
hisilicon # nand write.yaffs 82000000 500000 18ED600 <== 這個是rootfs實際的大小
設定啟動參數
hisilicon # setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=yaffs2 mtdparts=hinand:1M(boot),4M(kernel),32M(rootfs),27M(test)' hisilicon # setenv bootcmd 'nand read 0x82000000 0x100000 0x400000;bootm 0x82000000' hisilicon # sa Saving Environment to NAND... Erasing Nand... Erasing at 0xa0000 -- 100% complete. Writing to Nand... done hisilicon # reset resetting ...
開發環境
若網路不通,只能先 copy 到 sd card 上,mount sd card 的方法如下:
mkdir /mnt/sd
mount -t vfat /dev/sda1 /mnt/sd
留言
張貼留言