作者:ouxiaolong
題圖:飛凌嵌入式
開發環境——
主機:Ubuntu18.04
開發板:飛凌嵌入式OK3568-C開發板
Windows下有很多虛擬機軟件,目前市面上流行的有VMware和VirtualBox。VMware分為收費專業版Workstation Pro 和非商用免費版Workstation Player,推薦使用Workstation Player。
筆者這里使用的編譯主機的Ubuntu18.04,關于Workstation和Ubuntu安裝筆者這里不在贅述,網上資料很多,筆者默認已經裝好Workstation和Ubuntu。
1、依賴庫安裝
1.1更新主機的源列表
$sudo apt-get update
1.2安裝依賴工具
$sudo apt-get install repo git ssh make gcc libssl-devliblz4-toolexpect g++ patchelf chrpath gawk texinfo chrpathdIFfstatbinfmt-supportqemu-user-static live-build bison flex fakeroot cmakegcc-multilibg++-multilib unzip device-tree-compiler python-piplibncurses5-devbuild-essential vim tree
2、TFTP服務環境搭建與測試
TFTP簡單文件傳輸協議,是一個基于UDP協議實現的用于在客戶機和服務器之間進行簡單文件傳輸的協議,適合于開銷不大、不復雜的應用場合。
TFTP協議專門為小文件傳輸而設計,只能從服務器上獲取文件,或者向服務器寫入文件,不能列出目錄,也不能進行認證。
(1)下載并安裝tftp
$sudo apt-get install openbsd-inetd
(2)新建tftp目錄和改變其屬性
$sudo mkdir /tftpboot
(3)修改/etc/inetd.conf文件
$sudo vim /etc/inetd.conf
新增如下內容:
tftpdgram udp wait nobody /usr/sbin/tcpd/usr/sbin/in.tftpd /tftpboot
(4)啟動tftp
$sudo /etc/init.d/openbsd-inetd start
(5)本地測試
在/tftpboot/目錄下新建一個文件test,輸入內容、保存。然后打開另外一個終端,測試文件傳輸。
–輸入命令tftp127.0.0.1
–輸入gettest
–輸入q可以退出
–退出后,使用ls命令可以發現當前目錄下有test文件,如果這個文件和服務器中的test文件內容一模一樣,表明服務器搭建成功。
(6)開發板測試
開發板下載測試
#tftp-g -l test -r test +IP地址
(注:-l后的文件是下載后文件名,可以自定義;-r后的是服務器的文件名)
3、安裝配置交叉編譯工具鏈
在Linaro官網中有很多種GCC交叉編譯工具鏈,因為我們所使用的RK3568開發板是一個Cortex-A55內核64位的開發板,選擇aarch64-linux-gnu。
地址:https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/
圖中有很多種交叉編譯器,我們只需要關注這兩種:
針對32位系統的gcc-linaro-7.5.0-2019.12-i686_aarch64-linux-gnu.tar.xz和針對64位系統的gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz。
大家根據自己所使用的Ubuntu系統類型選擇合適的版本,比如我安裝的Ubuntu14.04是64位系統,因此我要使用gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz。
4、交叉編譯器安裝
將交叉編譯器拷貝Ubuntu中的/opt目錄下(沒有opt則新建該目錄),進行如下步驟:
1.解壓gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar
用以下命令
$sudotar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar //
必須用超級用戶模式。
2.編輯~/.bashrc文件
$vi ~/.bashrc
在文件最后增加一行
exportPATH=$PATH:/opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin
保存退出。
3.運行source~/.bashrc讓文件生效
$source ~/.bashrc
5、交叉編譯器驗證
方法一:
在命令行下輸入aarch64-l然后按tab鍵看會不會自動補全
方法二:
輸入:aarch64-linux-gnu-gcc-v
如上圖則表示配置成功!
從圖中可以看出當前交叉編譯器的版本號為7.5.0,說明交叉編譯工具鏈安裝成功(注:編者安裝的交叉編譯器版本為7.5.0,OK3568-C開發板源碼包里是9.3.0版本)。
使用剛剛安裝的交叉編譯器的時候使用的命令是:
aarch64-linux-gnu-gcc
該命令的具體含義如下:
1.aarch64表示這是編譯aarch64架構代碼的編譯器。AArch64是ARMv8架構的一種執行狀態。
2.linux表示運行在linux環境下。
4.gcc表示是gcc工具。
最好的驗證驗證方法就是直接編譯一個例程,我們就編譯第一個裸機例程“hello.c”試試。
$vim hello.c #include intmain() { printf("Hello,OK3568-C!\n"); return0; } $aarch64-linux-gnu-gcc hello.c -o hello
使用如下命令查看hello文件信息:
$file hello
從圖中可以看到hello是64位LSB的ELF格式文件,目標機架構為ARMaarch64,,說明我們的交叉編譯器工作正常。
最后將程序下載到開發板,修改用戶權限后即可運行。
值得注意的是,在RK3568的源碼中有交叉編譯鏈,只是版本要舊些,在源碼prebuilts目錄下。筆者配置該工具鏈主要用在應用開發。
-
ARM
+關注
關注
134文章
9045瀏覽量
366799 -
嵌入式開發板
+關注
關注
5文章
81瀏覽量
18714
發布評論請先 登錄
相關推薦
評論