海思3559A開發經驗總結

2021-01-07 酷扯兒

本文轉載自【微信公眾號:卡本特,ID:gh_4ccc02ed8885】

Hi3559A的晶片資源

這裡可以清晰看到,CPU部分無非是A73和A53,跑的系統還是linux,architecture都是"aarch64"。所以有了一個想法,就是呢,我使用RK3399的ubuntu系統編譯了一個小程序,只有print函數的,生成可執行程序,移植到3559A上運行,一切正常。這個實驗證明,3559AV100的linux本質上與TX2或者是RK3399的ubuntu16.04並沒有什麼區別,它依舊是arm64v8的linux。所以我就順其自然地想到了一個快速在PC開發的方法:

使用arm64v8/ubuntu:xenial這樣的docker鏡像,不使用海思提供的交叉編譯工具,畢竟這樣我就可以很方便的,在PC上的docker使用apt-get install somepackages,不需要啥第三方庫都得自己用交叉編譯器擼一遍,然後很愉快地編譯pytorch,caffe,opencv這些我需要的第三方庫了。

一、 docker準備

docker基本知識匯總[1] 請先了解docker是幹什麼的,同時在自己PC上面配置好docker。 Deepin安裝docker[2]

二、 使用docker安裝3559A系統

安裝3559A可以使用的ubuntu:xenial的docker鏡像 這個是我測試過的鏡像,完美模擬ARM64.地址[3]

Once you need to configure binfmt-support on your Docker host. This works locally or remotely (i.e using boot2docker or swarm).

# configure binfmt-support on the Docker host (works locally or remotely, i.e: using boot2docker)

docker run --rm --privileged multiarch/qemu-user-static:register --reset

It also works for ubuntu16.04 arm64 Host#

$ docker run -it --rm multiarch/ubuntu-core:arm64-xenial

root@723fb9f184fa:/# uname -a

Linux 723fb9f184fa 4.1.13-boot2docker #1 SMP Fri Nov 20 19:05:50 UTC 2015 aarch64 aarch64 aarch64 GNU/Linux

一般進入後,最好換成國內的源:aarch64的docker容器

#加入源

echo 'deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main restricted universe multiverse\n\

#deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main restricted universe multiverse\n\

deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main restricted universe multiverse\n\

#deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main restricted universe multiverse\n\

deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main restricted universe multiverse\n\

#deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main restricted universe multiverse\n\

deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main universe restricted\n\

#deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main universe restricted\n\

' > /etc/apt/sources.list

#更新

apt-get update

這裡推薦使用我push到dockerhub的一個鏡像

xxradon/jetson-tx2-ubuntu:latest:

使用 Host#

docker pull xxradon/jetson-tx2-ubuntu:latest

進行拉取,這裡面常用的開發庫都已經安裝完畢。並安裝oh my zsh,所以方便的設置容器啟動自啟,我的容器裡設置了ssh自啟,方便使用ssh訪問docker容器。使用docker run啟動後,直接鍵入

su

Tips:如果docker run出現如下錯誤:Host#

standard_init_linux.go:190: exec user process caused "exec format error"

請重新使用下面的指令進行註冊qemu-user-static修復。Host#

configure binfmt-support on the Docker host (works locally or remotely, i.e: using boot2docker)

三 、3559A硬體連接Linux PC,調試運行

1.通過minicom進行串口連接

首先進行minicom-linux下USB轉串口配置[4],將3559A的板子連接好PC 現在的筆記本越做越薄,好些電腦已經沒有串口了,做硬體開發會非常頭疼,不過有了USB轉串口設備,PC機只需要有USB接口就可以了。在linux下我們使用minicom與目標設備通信,在此記錄一下linux下USB轉串口的配置過程。

1.1 查看驅動是否正常:Host#

sst@ubuntu:~/work/test$ lsmod |grep usbserial

usbserial 45014 1 ch341

如果有usbserial這一行,說明系統支持USB轉串口。

1.2 查看USB設備

Host#

sst@ubuntu:~/work/test$ dmesg |grep ttyUSB0

[221102.440589] usb 3-10: ch341-uart converter now attached to ttyUSB0

1.3 安裝minicomHost#

sudo apt-get install minicom

1.4 配置minicomHost#

sudo minicom -s

按A鍵,設置Serial Device為:/dev/ttyUSB0

按F鍵,設置Hardware Flow Control 為No

按G鍵,設置Software Flow Control為No

按回車,保存。

如果想把你的配置設置為默認配置,在configuration選擇Save setup as dfl,然後退出。

1.5 啟動minicomHost#

sudo minicon

我的串口輸出是二進位數據,所以看上去就是亂碼啦按下CTRL-A Z後會彈出幫助菜單,在菜單下按Q可以退出。

2.NFS開發環境搭建

NFS就是Network File System的縮寫,它最大的功能就是可以通過網絡,讓不同的機器、不同的作業系統可以共享彼此的文件。

NFS伺服器可以讓PC將網絡中的NFS伺服器共享的目錄掛載到本地端的文件系統中,而在本地端的系統中來看,那個遠程主機的目錄就好像是自己的一個磁碟分區一樣,在使用上相當便利;

2.1 安裝 NFS 服務包由於我的Host# 主機是Deepin作業系統,其他類debian的作業系統,如ubuntu執行的命令基本一致,在 Deepin 終端執行以下命令安裝 NFS 服務包:

sudo apt-get install nfs-kernel-server

2.2 設置配置文件NFS 允許掛載的目錄和權限需要在文件「/etc/exports」中進行定義。執行如下指令,創建 NFS 共享目錄,打開 NFS 配置文件 exports: //建立 NFS 共享目錄

sudo mkdir /home/shining/nfs_share

sudo gedit /etc/exports //打開 NFS 配置文件

在文件最後加入如下配置信息,添加完畢保存並退出。如下圖所示: Host#

/home/shining/nfs_share/ *(rw,sync,no_root_squash)

參數說明如下:

/home/shining/ nfs_share /:新建的 NFS 共享目錄。

*:允許所有的網絡段訪問。

rw:訪問者具有可讀寫權限。

sync:資料同步寫入內存和硬碟。

no_root_squash:NFS 共享目錄訪問者具有 root 權限。

NFS 常用參數說明如下:

ro:只讀訪問。

rw:讀寫訪問 sync 所有數據在請求時寫入共享。

asyncnfs:在寫入數據前可以響應請求。

secure nfs:通過 1024 以下的安全 TCP/IP 埠發送。

insecure nfs:通過 1024 以上的埠發送。

wdelay:如果多個用戶要寫入 NFS 目錄,則歸組寫入(默認)。

no_wdelay:如果多個用戶要寫入 NFS 目錄,則立即寫入,當使用 async 時,無需此設置。

hide:在 NFS 共享目錄中不共享其子目錄。

no_hide:共享 NFS 目錄的子目錄。

subtree_check:如果共享」/usr/bin」之類的子目錄時,強制 NFS 檢查父目錄的權限(默認)。

no_subtree_check:和上面相對,不檢查父目錄權限。

all_squash:共享文件的 UID 和 GID 映射匿名用戶 anonymous,適合公用目錄。

no_all_squash:保留共享文件的 UID 和 GID(默認)。

root_squash root:用戶的所有請求映射成如 anonymous 用戶一樣的權限(默認)。

no_root_squas root:用戶具有根目錄的完全管理訪問權限。

anonuid=xxx:指定 NFS 伺服器」/etc/passwd」文件中匿名用戶的 UID。

2.3 重啟 NFS 服務執行以下命令重啟 NFS 伺服器,結果如下圖所示:

sudo /etc/init.d/rpcbind restart

sudo /etc/init.d/nfs-kernel-server restart //重啟 NFS

2.4. 開發板掛載 NFS 伺服器共享目錄開發板和 PC 先通過路由器或者交換機互聯,也可以通過網線直聯。

2.5. 開發板和 deepin 之間 ping 測試請進入開發板和 deepin 系統,使用 ifconfig 命令查看各自當前 IP 和子網掩碼。此處查詢到 deepin IP 為: 192.168.1.243,開發板 IP 為: 192.168.1.242,子網掩碼為: 255.255.255.0. 如果未設置好IP,請按照如下方案設置ip:在deepin作業系統上,由於deepin的系統自帶網絡配置無法同時配置2個IP,使用如下指令安裝輔助工具:Host#

sudo apt-get install network-manager

如下圖編輯自己的網絡IP。

海思3559A開發板上設置,在vi /etc/init.d/rcS下加入:3559A#

ifconfig eth0 192.168.1.242 netmask 255.255.255.0

route add default gw 192.168.1.1

設置完成後,請使用ping指令相互ping一下,確保連接正常。

2.6. 開發板掛載 NFS 伺服器共享目錄進入開發板文件系統,執行如下命令建立 NFS 掛載目錄並修改讀寫權限。

3559A#

mkdirs -p /home/shining/nfs

chmod 777 /home/shining/nfs

在開發板中當前執行以下命令,掛載 NFS 伺服器共享目錄到開發板的「/home/shining/nfs」目錄,並 查看共享目錄內容: 3559A#

mount -t nfs -o nolock,nfsvers=3,vers=3 192.168.1.243:/home/shining/nfs_share /home/shining/nfs

ls /home/shining/nfs //查看掛載的 NFS 共享目錄內容

指令注釋:

-t nfs:type,掛載類型為 NFS。

-o nolock:不加文件鎖,NFS 掛載時默認選項為文件鎖(lock),依賴於 portmap 提供的

動態埠分配功能。

192.168.1.89:/home/shining/nfs_share /nfs/:NFS 伺服器 IP 地址為 192.168.1.89,NFS 伺服器共享目錄為」/home/shining/nfs_share」。

如果開發板還沒有安裝 NFS 客戶端,請在開發板聯通網絡下,執行以下命令安裝 NFS客戶端,再重新掛載。

在 NFS 共享目錄新建的文件,會在開發板掛載目錄同步出現。在開發板掛載目錄新建的文件,也會在 NFS 共享目錄出現。開發板通過 NFS 掛載 Deepin 的 NFS 共享目錄已經成功,並且可讀可寫,以後就可以 通過 NFS 伺服器來傳輸文件,比 U 盤拷貝方式更加便捷。

2.7. 卸載開發板的 NFS 掛載目錄在開發板上執行以下命令,卸載 NFS 掛載目錄: 3559A#

umount /home/shining/nfs_share

df //查看系統掛接信息

用 df 命令查看掛接信息,已經沒有掛接信息,說明卸載成功。

四、 使用docker聯合3559A開發板進行開發

4.1. docker容器與3559A開發板共享文件夾通過上面二、四教程,我們知道docker可以進行文件夾映射,這個功能與NFS相同,所以我們將aarch64的docker容器的一個工作文件夾與3559A的NFS共享文件設置為同一個文件夾,這裡假設共享的文件夾是/home/shining/Projects/work/His3559A:3559A#

mount -t nfs -o nolock,nfsvers=3,vers=3 192.168.1.243:/home/shining/Projects/work/His3559A /home/shining/nfs

aarch64 的docker容器#

docker container run --privileged --rm -p 8003:22 -it --ipc=host -v /home/shining/Projects/work/His3559A:/home/shining/nfs -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=:0 xxradon/jetson-tx2-ubuntu:latest /bin/bash

上面的-v /home/shining/Projects/work/His3559A:/home/shining/nfs 就是docker配置文件夾映射。

4.2. 開發流程使用aarch64 的docker容器進行編譯,這裡需要特別說明,所有的第三方庫基本都可以使用了,opencv,caffe,pytorch(怎麼編譯caffe,opencv,pytorch這些常用的深度學習算法庫,請自行百度),只用在aarch64 的docker容器進行編譯,然後使用以下腳本[5]deploy.sh: docker容器#

#這裡是deploy.sh裡的腳本內容

deplist=$( ldd $1 | awk '{if (match($3,"/")){ print $3}}' )

cp -L -n $deplist $2

使用下面指令 docker容器#

bash deploy.sh 軟體名 打包的庫文件放置位置

進行依賴庫打包。這裡拿編譯好的pytorch的libtorch.so為例,假如我想在3559A上使用libtorch.so的ATen 操作,在編譯好的pytorch的lib下/home/shining/nfs/3rdparty/install/lib,使用 docker容器#

bash deploy.sh libtorch.so

將libtorch.so的所有依賴打包至libtorch.so的當前目錄下。

4.3. 在3559A上運行程序第一步當然是使用export,將庫路徑放在環境變量中去(臨時的),如下:

export LD_LIBRARY_PATH="/home/shining/nfs/3rdparty/install/lib:$LD_LIBRARY_PATH:"

export PATH="/home/shining/nfs/3rdparty/install/bin:$PATH"

運行pytorch中的AlgorithmsTest例子,如圖一切正常:

五、開發Tips

3559A的開發版一般不支持ssh,但是支持Telnet,所以可以通過telnet在PC主機上打開多個窗口。3559A#

# telnetd&

Host

telnet 192.168.1.242

References

[1]

docker基本知識匯總: https://yeasy.gitbooks.io/docker_practice/content/install/ubuntu.html

[2]

Deepin安裝docker: https://www.jianshu.com/p/e6b6268956ec

[3]

地址: https://github.com/multiarch/ubuntu-core

[4]

配置: https://www.cnblogs.com/shishiteng/p/5801826.html

[5]

腳本: http://然後使用以下腳本deploy.sh/

本文轉載自【微信公眾號:卡本特,ID:gh_4ccc02ed8885】

相關焦點

  • 海思麒麟是哪個國家的_海思和麒麟什麼關係
    海思和麒麟什麼關係   其實是一個東西,海思麒麟是華為麒麟以前的名字。   雖然中國有眾多營收只有幾千萬美元的中小集成電路設計公司,但從全球來看,集成電路越來越成為豪門的盛宴確實不爭的事實。   海思麒麟是哪個國家的   海思處理器是中國的,它是屬於華為集團的手機處理器晶片產品。
  • 華為海思發布HiSpark智能家居開發套件:全面支持鴻蒙2.0
    現在,華為旗下對外的上海海思與潤和軟體合作,打造了HiSpark系列開發套件,包括硬體開發板、SDK包、參考工程、說明文檔等,首批覆蓋感知計算、智慧聯接領域,支持多作業系統,尤其是全面支持鴻蒙2.0!HiSpark開發板基於海思晶片開發平臺,包括HiSpark WiFi IoT、HiSpark AI Camera、HiSpark IPC DIY三款智能硬體開發套件。
  • 海思入局XR晶片市場:Rokid AR眼鏡首發,業內新選擇
    這條消息背後就是:海思正式發布XR晶片平臺,同時與Rokid合作,並宣布首款基於海思XR平臺的產品。海思XR專用平臺亮相上海海思正式公布了自家XR專用晶片平臺,該平臺專為AR/VR場景開發,注重高解析度、低延遲等特性,支持8K解碼,內置高性能GPU,宣稱具備海思專有架構獨立NPU,算力可達9TOPS。
  • Boot Loader的啟動流程和開發經驗總結
    4.BootLoader的開發經驗總結  (1)嵌入式系統中,Bootloader的意義與作用與PC上的BIOS有點類似,它對開發板上的主要部件如CPU、SDRAM、FLASH、串口等進行了初始化,也可以使用Bootloader下載文件到開發板和啟動系統等。因此,一個功能比較強大的Bootloader已經相當於一個微型的作業系統了。
  • 海思採用高級Cadence仿真器提升效率
    加州聖荷塞,2011年7月18日——全球電子設計創新領先企業Cadence設計系統公司(NASDAQ: CDNS)今天宣布中國的海思半導體有限公司使用Cadence Virtuoso加速並行仿真器實現了驗證流程的巨大進步。海思使用這種備受好評的仿真器檢驗其複雜的ASIC。
  • 2年Java開發工作經驗面試總結
    我是一個喜歡總結經驗的人,每經過一場面試,我在回來的路上都會仔細回想今天哪些問題可以答的更好,或者哪些問題是自己之前沒遇到過的,或者是哪個知識點今天又問了等等。四月中旬的時候,我就在構思要寫一篇面經,主要是想著可能對那些跟我相同處境的人有點幫助,再者就是稍微記錄下這為期一個月的面試過程。
  • 華為聯合行業夥伴發布系列5G模組,海思提供模組中間件
    5G模組作為承載終端接入網絡的關鍵部件,其較高的開發難度、過長的開發周期和多樣化的行業需求成為了制約5G在行業規模應用的瓶頸。此次發布,華為聯合移遠通信、長虹控股、四川愛聯科技有限公司、中國移動通信集團終端有限公司推出了5G工業模組、5G+8K 媒體模組、5G電力模組等行業類模組,這將極大地加速5G技術在智能製造、多媒體、商顯和大屏、能源、交通等豐富行業場景下的商業應用。
  • 華為海思晶片 10 年備胎史!
    28年間,海思從未安逸過,正是這份「不安分」,才讓海思結出碩果。時間要回到2004年秋天,那一年,深圳市海思半導體有限公司,在華為集成電路設計中心的基礎上註冊成立。2004年,海思成立,她最初是研發管理部部長,後來先後擔任海思總裁和2012實驗室副總裁。23年中,她和海思經歷了晶片從0.5微米到0.35、0.25,再到現在的28、16、10納米。如今,海思正在做7納米和5納米的晶片。與晶片越做越小相對應的,則是海思的產品越做越多。
  • 傳臺積電已獲華為代工許可,海思或迎轉機,但手機和5G無望
    總結來看,美國的終極目的是想禁華為的5G技術,也就是遏制中國5G的發展,並非單純要弄死某家企業。華為海思的命運似乎迎來重要轉機。10 月 9 日晚間有消息傳出,繼AMD、英特爾之後,臺積電已經從美國商務部拿到繼續供貨華為的許可證,可以幫華為繼續代工生產一部分成熟製程技術的產品。
  • 解密海思:8千餘項專利技術 員工平均工資16500元
    海思公司註冊資本6億元,經營範圍包括:電子產品和通信信息產品的半導體設計、開發、銷售及售後服務;相關半導體產品的代理;電子產品和通信信息產品器件和配套件的進出口業務。深圳海思還全資持股蘇州市海思半導體有限公司,何庭波本人也在上海海思技術有限公司和海思光電子有限公司中分別擔任高管,後者是一家位於武漢的公司,上述企業全部由華為技術有限公司直接或間接全資持股。
  • 華為電視國家隊:京東方面板+海思晶片+鴻蒙系統
    ▎處理器晶片:華為海思資料顯示,在2010年之前,中國電視晶片對於國外產品的依賴相當嚴重,外國晶片在中國市場佔有率超過90%。同樣是缺芯少屏的痛,中國作為全球最大電視消費市場承受了太久。而後,以華為海思為代表的國產晶片企業逐漸打破了市場格局,使電視晶片的國產化率逐步提升,數據統計到2017年,國產晶片在電視晶片市場的份額已經達到60%左右。
  • 華為輪換制老總郭平 就華為海思 發音,麒麟晶片終究會 強勢歸來
    不可以生產製造又不可以代工生產,華為華為海思之後的將來會邁向哪裡?堅信這也是大伙兒心裡疑慮的地區。華為海思創立於04年,16年的過程總算讓華為海思變成全世界十大半導體公司。但是在遭遇沒法生產製造和沒法購置的狀況下,還能再次保存海思半導體嗎?華為管理層得出了回答。
  • 華為上海青浦開建新研發中心:施工單位已進場,海思提前落子
    上海海思技術有限公司已經開展運營不久前,上海市領導來到華為青浦研發中心項目一期選址所在地,詳細了解項目規劃、功能用途和推進進度。華為相關負責人說,青浦研發中心作為華為重點研發基地,將開展終端晶片、無線網絡和物聯網等領域的研發。目前正進行建築方案設計,將努力打造現代的、經典的建築博物館。
  • 海思AI Super Resolution,讓每一個細節爽脆出現!
    (溫馨提示:一隻動物)圍觀群眾非常不滿:這分明是一組花裡胡哨的馬賽克為了看清楚這組馬賽克究竟是啥我們藉助海思晶片黑科技基於AI的Super Resolution(溫馨提示:還是一隻動物)圍觀群眾依舊錶示不滿:這分明是一塊地毯海思借你一雙慧眼我們來看一下經過海思AI-SR算法處理後的效果看完清晰圖片的小夥伴肯定猜到了這是你家主子
  • 半導體廠商最新排名出爐,華為海思躍居第八
    半導體廠商最新排名出爐,華為海思躍居第八
  • 海思推出新款入門智能電視晶片,512MB 內存流暢運行安卓 9 系統
    最近華為上海海思推出了兩顆 FHD 智能電視晶片,它們採用 Pin2Pin 兼容,其中一顆內置了 512MB 內存,另一顆翻倍達到了 1GB。海思通過對內存的優化,讓第一顆晶片能夠流暢運行 Andriod 9 系統,這也是目前唯一配合 512MB 內存的 Andriod 9 電視平臺。
  • 放棄海思,就能保住華為?阿爾斯通說:你很幼稚!
    有人據此延伸出美國的「真實」意圖——其實不是針對整個華為,而就是針對海思這個自研晶片的公司罷了。開始傳播一個所謂華為自救新思路——放棄海思,或者說拆分海思,這樣就等於華為放棄了晶片自研,美國就會發放許可證,讓華為購買美國的晶片,這樣就能保住華為了。
  • 一周動態:中國第一座12英寸車規級晶圓廠落戶臨港,海思唯一5G聯合...
    項目動態海思唯一5G聯合實驗室成立,四川長虹與上海海思籤署合作協議8月18日,四川長虹電器股份有限公司與上海海思技術有限公司在成都籤署合作協議,同時「長虹-上海海思5G應用聯合實驗室」正式成立。據長虹公司官方消息,本次四川長虹與海思成立的聯合實驗室也是海思目前唯一一個5G聯合實驗室,正是聚焦5G,結合AI、8K等技術融合,在行業應用中進行創新。12英寸車規級功率半導體自動化晶圓製造中心項目落戶臨港8月19日,中國第一座12英寸車規級功率半導體自動化晶圓製造中心項目正式籤約落戶臨港新片區。
  • 華為開放軟硬兼施暫無鴻蒙 openEuler系統開源、海思晶片對外開售
    在社區中,正式開放了openEuler的原始碼、鏡像及開發測試環境,這也標誌著openEuler社區正式開放運作邁出了實質性的一步。據悉,作為主要籌備方,華為會逐步開放在ICT基礎軟體領域的技術積累,將作業系統、編譯器/JDK等領域的基礎平臺能力開源至openEuler社區。
  • 內置海思晶片的MIFON F1開機無廣告,網友:值
    內置海思晶片的MIFON F1開機無廣告,網友:值!(文/5G智玩好物)華為海思晶片高性能配置,MIFON機頂盒F1,芒果TV帶回家。有人說,網絡時代的今天誰還看電視?5G智玩好物想說,有的是。值得一提的是烽火通信MIFON F1搭載華為海思晶片運行芒果OS系統,烽火、華為、芒果TV,強強聯合,產品令人期待。話不多說,跟5G智玩好物一起感受下這款智能產品——芒果TV x MIFON聯名版 F1全4K智能機頂盒。包裝時尚簡約,初見討喜。