華爲海思Hikey 970+ Ubuntu16.04 Xenial +ROS kinetic

1. 基礎介紹

2018年3月19日的Linaro Connect大會上華爲正式發佈了HiHope Hikey 970開源硬件。HiHope Hikey 970基於華爲海思麒麟970,採用了臺積電10nm工藝,擁有4核[email protected]和4核[email protected],12核的Mali-G72。麒麟970是全球首款內置獨立NPU(神經網絡單元)的移動AI計算平臺。HiHope Hikey 970擁有6GB的LPDDR4 和 64GB UFS。外圍部分擁有支持4K高清的HDMI 2.0a接口,2個USB3.0接口,2個USB Type-C接口,1個千兆網口,支持CAN V2.0B協議,可以運行AOSP、Ubuntu、Debian等系統。

目前淘寶已經可以買到。

HiHope Hikey 970以強悍的性能和兼容於96Boards CE的標準,在計算機視覺、高性能計算開發、Android標準化程序開發測試等領域有廣泛的應用,HiHope Hikey 970不只是開源硬件中的性能怪獸,因爲集成了NPU(NPU相比與CPU在能效上有50倍以上的提升,性能上有25倍以上的提升),並且得到了華爲HiAI生態的全力支持,在AI等人工智能領域開發中擁有巨大的發展前景,HiHope Hikey 970可運用於深度學習算法、智能機器人、無人駕駛和智慧城市等多個領域。

這款雖然是華爲的產品但是主要的文檔都在96boards的官網上。

Using the HiKey970
hikey970 相關軟件

2. 使用指南

如果Hikey970開發板之前燒錄了 Debian,再次燒錄 Lebuntu 之後開機發現系統可能仍然是 Debian,可以先燒錄 Android 再燒錄 Lebuntu 。

2.1 刷基礎固件和android

hikey 970 開發板刷基礎固件和Android系統刷板子的系統主要包括兩個方面,一個是基礎固件,一個就是系統文件。根據板子上面四個開關狀態的不同板子會處在不同的狀態。
Alt
開關位於圖中的22的位置 這四個開關的功能分別是

1.自動開機 這個開關如果是On,當板子通電的時候就會自動啓動系統。反之則上電之後要按電源鍵啓動。
2.啓動模式 開關是On的時候上電後啓動至刷基礎固件模式,這時候可以通過程序給板子刷基礎固件。當是off的時候系統會從已經安裝的bootloader啓動。
3.系統啓動模式 當是On的時候系統會以UEFI模式啓動,反之則會直接啓動系統
4.擴展功能選擇 當是On的時候會使用低速擴展口功能,當是Off的時候會使用藍牙功能。

基礎固件包含了板子的bootloader等等。如果基礎固件刷錯了系統就不能再啓動了。甚至連fastboot也不能使用,也無法再刷其他系統。正常情況下只是刷系統是不需要刷基礎固件的。

安裝基礎程序

sudo apt-get install android-tools-adb
sudo apt-get install android-tools-fastboot

基礎固件

以下的操作都是在Linux系統環境下完成的

下載鏡像

從96boards的970下載主頁下載最新的系統鏡像。目前(2018.5.19)只有Android的。這個文件中包含了基礎固件和系統鏡像。

下載完成後你需要解壓這個文件。在image文件夾中包含了需要的文件。

下載鏡像工具

git clone https://github.com/96boards-hikey/tools-images-hikey970

官方的工具有錯誤,我們需要進行修改後才能用 在 recovery-flash.sh 的第九行

UEFI_BUILD_PATH=/home/qubo/tools-images-hikey970

改爲

UEFI_BUILD_PATH=${PWD}

然後把剛纔下載的文件中的image裏的所有文件複製到tools-images-hikey970文件夾

設置開發板啓動方式

把板子的開關設置成 On On On Off,然後上電。按照之前的說明,這時候板子處在刷基礎固件的狀態。 用數據線通過USB把板子和電腦連接起來。

正常情況下你會在/dev/ 文件夾下面發現一個ttyUSBX的設備,X是一個數字可能是0,1之類的。確認自己的板子是對應哪個設備。

刷入固件

運行

sudo ./recovery-flash.sh ttyUSBX

如果你的設備是ttyUSB0那麼你可以省略第二個參數
程序卡在了 wait for devices可能的原因是

1.你安裝過modemmanager,這個程序會給我們的板子發數據導致程序寫入失敗。解決方法很簡單,卸載這個軟件
sudo apt-get purge modemmanager
2.你刷入了錯誤的固件。可能你的固件是從別的地方下載的,也可能是自己編譯的。如果是這樣那麼很有可能是固件自身出了問題。

系統鏡像

實際上在刷入上個基礎固件的時候會自動的把系統鏡像也刷入進去。這時候把板子上的開關設置爲On Off On Off就可以啓動系統了。第一次啓動的時候要多等一會,因爲Android要先初始化一下。

如果只是要刷系統固件可以只刷入系統固件中的下面幾個文件。執行

sudo fastboot flash boot boot.img
sudo fastboot flash cache cache.img
sudo fastboot flash system system.img
sudo fastboot flash userdata  userdata.img

2.2 刷入Ubuntu

鏡像下載

官方網址: https://www.96boards.org/
國內網站:http://smartfire.cn/forum-64-4.html

其中 Lebuntu 燒錄之後就是 ubuntu16.04 (xenial),板載的wifi模塊可以直接連無線網。

燒錄過程

1、在Ubuntu虛擬機中安裝燒錄工具,下載鏡像文件的壓縮包並進行解壓。

sudo apt-get install android-tools-adb
sudo apt-get install android-tools-fastboot
cd “下載目錄”
tar -xvzf hikey970-lebuntu-16.04.tar.gz
cd hikey970-lebuntu-16.04

2、給 hikey970 板斷電,將4位撥碼開關撥到 ON OFF ON OFF,用USB type-c數據線將板子的 Type C 接口與 Ubuntu 虛擬機連接。

3、給板子通電後,在虛擬機中打開終端,使用 lsusb 指令查看是否有 Google Inc. 字樣的USB設備,如果有則執行步驟4,如果沒有則執行步驟5。

4、執行指令

 ./flash-all-binaries.sh

即可完成系統燒錄。

5、注意仔細看第3條,當沒有 Google Inc. 設備被識別時才執行這條。先將撥碼改爲 ON ON ON OFF,重啓板子,查看USB終端編號

ls /dev/tty*

記住終端名稱 /dev/ttyUSBx 其中 x 可能是 0、1、2等數字,在鏡像文件的目錄中執行

./binaries/recovery-flash.sh /dev/ttyUSBx

即可完成系統燒錄。

6,燒錄完成後,將撥碼改爲 ON OFF OFF OFF,其中第一個 ON 表示通電後立即啓動。

7、登錄系統,用戶名和密碼都是 shunya,在終端中查看系統詳情。

#:lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.4 LTS
Release:        16.04
Codename:       xenial

修改分區

首先查看默認的分區空間,在 hikey970 上登錄系統後在終端中輸入指令

df -h

可以看到根目錄只有不到 4GB 的空間。

擴展空間需要重新進行分區鏡像文件的燒寫。

下載地址:https://test-1252517595.cos.ap-guangzhou.myqcloud.com/media/hikey970/64gtoendprm_ptable.img

下載之後拷貝到 Ubuntu 虛擬機中。將hikey970撥碼撥到 ON OFF ON OFF,用USB Type-C 數據線連接板子 TYPE C 接口和 Ubuntu 虛擬機(參考上述燒錄步驟)。執行一條指令

sudo fastboot flash ptable 64gtoendprm_ptable.img
重新將撥碼撥到 ON OFF OFF OFF,登錄 hikey970 板載系統,在終端中輸入指令 sudo fdisk -l 查看分區情況。

#: sudo fdisk -l
Device      Start      End  Sectors  Size Type
/dev/sdd1     256      511      256    1M Microsoft basic data
/dev/sdd2     512     3583     3072   12M Microsoft basic data
/dev/sdd3    3584     5119     1536    6M Microsoft basic data
/dev/sdd4    5120     8191     3072   12M Linux filesystem
/dev/sdd5    8192    73727    65536  256M Microsoft basic data
/dev/sdd6   73728    73983      256    1M Microsoft basic data
/dev/sdd7   73984    94463    20480   80M EFI System
/dev/sdd8   94464    98559     4096   16M EFI System
/dev/sdd9   98560   102655     4096   16M Microsoft basic data
/dev/sdd10 102656   106751     4096   16M Microsoft basic data
/dev/sdd11 106752   107263      512    2M Microsoft basic data
/dev/sdd12 107264 15611907 15504644 59.1G Linux filesystem

可以看到最後一個分區是 /dev/sdd12,大小接近60G。

輸入指令 df -h,查看根目錄大小是否變化。如果還是小於 4GB,則需要輸入指令

sudo resize2fs /dev/sdd12

來手動調整分區大小,最終得到的結果是。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        59G  4.5G   52G   8% /
devtmpfs        2.8G     0  2.8G   0% /dev
tmpfs           2.9G     0  2.9G   0% /dev/shm
tmpfs           2.9G   17M  2.8G   1% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           2.9G     0  2.9G   0% /sys/fs/cgroup
tmpfs           577M     0  577M   0% /run/user/107
tmpfs           577M     0  577M   0% /run/user/1000

根目錄已經擴展到59GB。

2.3 安裝ROS

添加ROS軟件源

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

添加key

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

開始安裝

sudo apt-get update
sudo apt-get install ros-kinetic-desktop-full

配置環境

sudo rosdep init
rosdep update

echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

安裝編譯軟件包依賴

sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential

測試

roscore

Alt成功!

參考文獻:

[1]介紹+刷機 https://doc.bwbot.org/zh-cn/books-online/hikey970-doc/topic/461.html

[2]Ubuntu燒錄 https://blog.csdn.net/SIR_wkp/article/details/86226611

[2] ROS安裝 http://wiki.ros.org/kinetic/Installation/Ubuntu

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