海思開發記錄(一):3559A開發環境搭建

說明

這次安裝的是Ubuntu14.04-64位系統,沒有選擇裝虛擬機,而是物理機單系統
因爲在另一臺電腦上,不方便截圖,所以只記錄重點

啓動u盤製作

系統鏡像獲取:http://mirrors.aliyun.com/ubuntu-releases/
u盤燒錄工具:https://rufus.akeo.ie

鏡像選擇爲14.04 64位系統,桌面版(而不是服務器server版本,server版本試過安裝不成功)
0

將系統ISO文件燒錄到u盤
1

系統安裝

重啓後進入BIOS,修改啓動優先級,選擇u盤啓動
安裝過程可以參考:https://blog.csdn.net/whitefish520/article/details/103850361
安裝過程中,選擇格式化整個硬盤,並且語言最好是選擇英文

安裝完成後的配置

修改鏡像源

進入系統後,在右上角的下拉菜單中,選擇系統設置system setting,然後選擇software & updates
在download form後選擇other,找到china,選擇阿里雲mirrors.aliyun.com

界面調整爲中文

選擇設置中的language support
具體步驟可以參考:https://blog.csdn.net/whitefish520/article/details/103850361

更新軟件

在終端terminal中執行
sudo apt-get update
sudo apt-get upgrade
前者完成檢查,後者完成下載更新

設置靜態IP

sudo vi /etc/network/interfaces
在末尾添加如下內容,ip、網關和掩碼,要改成自己需要的
auto eth0
iface eth0 inet static
address 172.20.10.128
netmask 255.255.255.0
gateway 172.20.10.2
dns-nameservers 180.76.76.76

重啓網絡服務
sudo /etc/init.d/networking restart

查看IP:ifconfig -a

重啓網絡服務失敗的解決辦法:https://www.cnblogs.com/siikee/p/4193922.html
sudo ifdown -a
sudo ifup -a

配置ssh服務

安裝:sudo apt-get install openssh-server
修改配置:sudo gedit /etc/ssh/sshd_config
PermitRootLogin prohibit-password 更改爲 PermitRootLogin yes
重啓服務:sudo service ssh restart
接下來,選擇在Windows端,利用ssh協議遠程登陸進行操作(推薦使用secureCRT),這樣方便後面的配置進行復制粘貼

解決VI中方向鍵亂碼

sudo apt-get install vim
安裝vim即可解決

設置VI的風格

sudo vim /etc/vim/vimrc
打開vim配置文件,在末尾加上如下內容

set number             "顯示行號
set showmode            "底部顯示當前模式
set mouse=a             "鼠標有效
set encoding=utf-8      "utf-8編碼
filetype indent on      "文件類型檢查
set autoindent          "自動縮進
set cursorline          "所在行高亮
set textwidth=80        "設置行寬80個字符
set showmatch           "自動匹配括號
set hlsearch            "高亮搜索結果
set nobackup            "不創建備份文件
set noswapfile          "不創建交換文件
set undofile            "保留撤銷歷史
set autochdir           "自動切換工作目錄
set noerrorbells        "出錯時不要叫
set history=1000        "歷史操作次數1000
set autoread            "自動監視
set wildmenu            "自動補全

設置root密碼

sudo passwd
輸入root用戶密碼即可,新安裝的沒有root密碼,如果該某些內容出錯,可能無法恢復,只能開機後進入單用戶模式恢復
本次設置密碼爲123456

設置sudo不需要密碼

查看配置文件權限:ls /etc/sudoers -l
發現爲只讀,給它的用戶加上寫權限:sudo chmod u+w /etc/sudoers
再次查看權限:-rw-r-----,發現多了寫權限

打開配置文件:sudo vi /etc/sudoers
對應位置修改爲如下內容
%admin ALL=(ALL) NOPASSWD:ALL
%sudo ALL=(ALL:ALL) NOPASSWD:ALL
之前改過的權限改回只讀:sudo chmod u-w /etc/sudoers

配置samba服務

安裝samba:sudo apt-get install samba samba-common
創建要共享的目錄:sudo mkdir 你的目錄
修改目錄權限:sudo chmod 775 你的目錄
修改samba配置文件:vi /etc/samba/smb.conf
在max log size 1000下面一行,增加security = user
在文件末尾,增加
[你的目錄名]
path = /home/你的用戶名/你的目錄名
browseable = yes
writable = yes
valid users = glx
public = yes
available = yes

設置samba密碼:sudo smbpasswd -a 你的用戶名
win10訪問不了samba的,可以參考:https://jingyan.baidu.com/article/7c6fb428d62a6e80642c90cc.html
重啓samba服務:sudo service smbd restart

在Windows端映射驅動器:我的電腦-映射網絡驅動器
輸入:\192.168.10.101\share
這裏的ip就是Ubuntu機器IP,後面跟的是你的samba目錄名
使用其它憑據連接,輸入賬號密碼,並勾選記住憑據
如果遇到權限問題,可以暴力一點修改目錄權限
sudo chmod 777 你的目錄 -R

配置NFS

安裝nfs服務器:sudo apt-get install nfs-kernel-server
安裝nfs客戶端:sudo apt-get install nfs-common
創建NFS目錄:sudo mkdir 你的目錄
修改設置:vi /etc/exports,最後一行添加
/home/用戶名/nfs目錄名 *(rw,sync,no_root_squash,no_subtree_check)
重啓服務:
sudo service rpcbind restart
sudo /etc/init.d/nfs-kernel-server restart
檢查是否配置成功:showmount -e

配置TFTP

創建工作目錄,在根目錄創建tftp文件夾:sudo mkdir /tftpboot
給這個目錄權限777:sudo chmod 777 -R /tftpboot
安裝tftp:sudo apt-get install tftpd tftp xinetd
修改配置文件:sudo vim /etc/xinetd.d/tftp

service tftp                                                                    
{
        protocol        = udp
        port            = 69
        socket_type     = dgram
        wait            = yes
        user            = nobody
        server          = /usr/sbin/in.tftpd
        server_args     = /tftpboot
        disable         = no
}

修改配置文件:sudo vim /etc/inetd.conf
找到tftp dgram dup wait nobody ...字樣的內容,用 # 屏蔽掉,複製一行到下面,末尾的目錄改成自己的
2

這裏不建議全部手打,tab和空格好像對它有影響,我手打和它一模一樣,仍然無法下載
3

查看/var/log/syslog,發現如下語句,我推測是因爲修改了vim的vimrc文件,導致空格和tab對tftp程序讀取配置文件造成影響

Jun 10 11:28:22 zigsunHI tftpboot[2436]: connect from 127.0.0.1 (127.0.0.1)
Jun 10 11:28:22 zigsunHI tftpboot[2436]: error: cannot execute /usr/sbin/in.tftpd /tftpboot: No such file or directory

重啓服務:sudo /etc/init.d/xinetd restart
測試:在不同於tftpboot的目錄下執行:
tftp 127.0.0.1
tftp> get test.c
tftp>q

桌面UI開機時打開num_lock

桌面ui開機時無法輸入數字,得打開num_lock

sudo apt-get install numlockx
sudo vim /etc/rc.local

在最後一行exit 0前增加一下內容

if [-x /usr/bin/numlockx ]; then
numlockx on
fi

配置默認使用 bash

執行 sudo dpkg-reconfigure dash 選擇 no

安裝軟件包

執行:sudo apt-get install make libc6:i386 lib32z1 lib32stdc++6 zlib1g-dev libncurses5-dev ncurses-term libncursesw5-dev g++ u-boot-tools:i386 texinfo texlive gawk libssl-dev openssl bc

注意這是一行,如果因爲其它的原因導致了換行,會導致部分軟件安裝失敗,請在文本編輯器中將它整合到一行後,再去執行安裝

其它配置

創建/etc/ld.so.preload 文件,並修改權限爲777
並執行 echo “” > /etc/ld.so.preload,以解決 64bit linux server 上某些第三方庫編譯失敗的問題。

修改sudo執行時的環境變量

首先給/etc/sudoers增加寫權限:sudo chmod u+w /etc/sudoers
然後修改:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/opt/hisi-linux/x86-arm/gcc-arm-none-eabi-4_9-2015q3/bin:/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin"

這個是在末尾加上arm編譯器的目錄/opt/hisi-linux/x86-arm/gcc-arm-none-eabi-4_9-2015q3/bin:/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin
注意以冒號分隔,這是一行,不能換行寫,保存之前多檢查一下,這個文件改錯了很麻煩

4

最後改回權限:sudo chmod u-w /etc/sudoers

編譯海思SDK

主要參考文檔:ReleaseDoc\zh\01.software\board\Hi3559A╱C V100 SDK 安裝及升級使用說明.pdf
注意所有解壓操作均要在linux環境下進行!

SDK存放位置

在Windows端映射好samba驅動器後:

  1. 將整個Hi3559AV100R001C02SPC030目錄,放到共享目錄
  2. 將ReleaseDoc目錄,放到共享目錄
  3. 創建pack目錄,用於存放打包的文件

將以下文件放到pack目錄中:

  1. aarch64-himix100-linux.tgz
  2. gcc-arm-none-eabi-4_9-2015q3.tgz
  3. HiDPU_PC_V1.0.0.1.tgz
  4. HiIVE_PC_V2.1.0.8_64bit_sec.tgz
  5. HiSVP_PC_V1.1.3.0.tgz
  6. linux-4.9.37.tar.gz

將以上6個文件,分別解壓到共享目錄,下圖僅供參考
5

安裝工具鏈

參考文檔2.4節,在 linux 服務器上安裝交叉編譯器
注意之前已經將工具鏈安裝後的路徑放到sudo的環境變量中,所以make的時候,可以加sudo執行(如果不加sudo,可能會由於權限的不足而編譯失敗)

展開SDK

參考文檔2.1~2.3節

osdrv的編譯

這一步有以下幾個文件需要閱讀:

  1. Hi3559AV100R001C02SPC030/01.software/board/Hi3559AV100_SDK_V2.0.3.0/osdrv/Makefile
  2. Hi3559AV100R001C02SPC030/01.software/board/Hi3559AV100_SDK_V2.0.3.0/osdrv/readme_cn.txt
  3. Hi3559AV100R001C02SPC030/01.software/board/Hi3559AV100_SDK_V2.0.3.0/osdrv/opensource/kernel/readme_cn.txt

在kernel目錄下,告訴我們要提前準備好內核源碼,海思是不提供這個的
按照它的要求,將內核源碼文件放到kernel目錄下面,打補丁的操作不需要手動進行,退回osdrv目錄編譯all目標即可

根據osdrv目錄下的readme文件,執行sudo make BOOT_MEDIA=spi AMP_TYPE=linux all

有可能會導致如下的錯誤

Invalid CPU Type - valid names are: alpha, arm, x86, ia64, m68k, microblaze, mips, mips64, nios2, powerpc, ppc, s390, sh, sparc, sparc64, blackfin, avr32
Usage: /usr/bin/mkimage -l image
-l ==> list image header information
/usr/bin/mkimage [-x] -A arch -O os -T type -C comp -a addr -e ep -n name -d data_file[:data_file…] image
-A ==> set architecture to ‘arch’
-O ==> set operating system to ‘os’
-T ==> set image type to ‘type’
-C ==> set compression type ‘comp’
-a ==> set load address to ‘addr’ (hex)
-e ==> set entry point to ‘ep’ (hex)
-n ==> set image name to ‘name’
-d ==> use image data from ‘datafile’
-x ==> set XIP (execute in place)
/usr/bin/mkimage [-D dtc_options] -f fit-image.its fit-image
/usr/bin/mkimage -V ==> print version information and exit
make[1]: *** [arch/arm64/boot/uImage] Error 1
make: *** [uImage] Error 2

5

原因是系統目錄下/usr/local/bin/mkimage這個程序的問題
之前編譯all目標時,uboot的編譯應該是通過的,到以下目錄去找mkimage,然後複製到/usr/local/bin/目錄下
cd opensource/uboot/u-boot-2016.11/tools/
sudo cp mkimage /usr/local/bin/

如果uboot編譯失敗,按照readme上的要求,單獨編譯uboot
sudo make BOOT_MEDIA=spi AMP_TYPE=linux hiboot

mkimage程序就位後,重新編譯all目標
make BOOT_MEDIA=spi AMP_TYPE=linux all

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章