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系統刷板子的系統主要包括兩個方面,一個是基礎固件,一個就是系統文件。根據板子上面四個開關狀態的不同板子會處在不同的狀態。
開關位於圖中的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
成功!
參考文獻:
[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