久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    RK3568開發板源碼編譯與交叉編譯環境搭建

     ARM開發板 2023-03-27 發布于河北

    本篇試用報告由發燒友碼農愛學習提供,感謝碼農愛學習的支持。

    在上篇文章《發燒友實測 | OK3568-C開發板初體驗》中,我們對飛凌嵌入式OK3568-C開發板進行了開箱測評,測試了命令行登錄與命令行測試,并外接HDMI屏幕測試了出廠界面。本篇,將繼續進行OK3568-C開發板Linux系統開發需要用的軟件交叉編譯環境的配置。下面就介紹兩種交叉編譯環境的配置方法

    一、C/C++交叉編譯環境編譯

    如果只是使用C/C++代碼,則在自己的Ubuntu虛擬機中添加RK3568對應的交叉編譯器(gcc/g++)即可。進行代碼的交叉編譯時可用使用如下方法,該配置方式簡單便捷。

    1. 下載aarch64類型的gcc

    在Linaro官網中下載GCC交叉編譯工具鏈,飛凌嵌入式OK3568-C開發板采用的是64位的Cortex-A55內核,需要使用aarch64-linux-gnu。

    地址:>>https://releases./components/toolchain/binaries/latest-7/aarch64-linux-gnu/

    我下載的是這個:gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz。

    然后解壓:

    tar-xvfgcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar

    解壓結果如下:

    解壓完成之后,可以在其下的bin目錄中看到aarch64編譯器:

    使用這里的gcc或g++,就能交叉編譯C或C++程序了。

    2. 交叉編譯C/C++程序測試

    寫一個簡易的hello word的C++測試程序main.cpp:

    include

    int main()

    {

    printf("hello\n");

    return 0;

    }

    然后使用如下指令進行編譯:

    export PATH=/home/xxpcb/myTest/OK3568/gcc_aarch64/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin:$PATH

    aarch64-linux-gnu-g++ main.cpp -o main

    第一句是臨時添加環境變量,當然也可以添加到.bashrc中實現永久添加,由于每種開發板用到的編譯工具鏈不太一樣,我一般都使用這種臨時添加的方式。

    第二句是使用aarch64-linux-gnu-g++來編譯C++程序,編譯結果如下,可用使用file指令查看編譯出的程序的文件類型:

    可以看到,編譯出的文件是ELF 64-bit LSB的可執行文件,ARM aarch64架構的。

    然后將程序放到飛凌嵌入式OK3568-C開發板中運行,這里使用ADB拷貝程序。可以看到在下圖右側窗口中看到,在OK3568-C開發板中已成功運行hello word程序。

    3. 關于開發板的WiFi自動聯網

    想要給開發板傳輸文件,就需要先連上網絡。在上篇《發燒友實測 | OK3568-C開發板初體驗》中介紹過,OK3568-C開發板使用一個腳本來進行WiFi配網,但每次開機后都需要再配置。可以寫個腳本加入到開機自啟動程序中。

    例如,在/etc/init.d目錄下,添加一個S99myinit文件,寫入如下內容即可實現開機自動連網:

    #!/bin/sh

    fltest_wifi.sh -i mlan0 -s "wifi_name" -p wifi_password

    這里注意要替換為自己的WiFi名和密碼,并且要給這個文件可執行權限。

    二、RK3568 Linux源碼編譯

    剛才介紹了只進行C/C++程序開發時進行交叉編譯環境配置的方法。如果還要進行Qt開發,可以通過編譯RK3568 Linux源碼的方式,得到Qt的交叉編譯工具鏈。由于我這里已經安裝過了VirtualBox虛擬機和Ubuntu18系統,那就在自己的開發環境中進行RK3568的開發吧。

    1. 基礎環境配置

    在進行RK3568的源碼編譯之前,需要先進行對自己的虛擬機進行一些依賴包的安裝,如下。首先是安裝一些必要的庫:

    sudo apt-get update sudo apt-get install build-essential

    sudo apt-get install libncurses*

    sudo apt-get install lzop

    sudo apt-get install net-tools

    然后還有安裝一些編譯OK3568 Linux源碼所需的庫:

    sudo apt-get update

    sudo apt-get install openssh-server vim git fakeroot

    sudo apt-get install repo git ssh make gcc libssl-dev liblz4-tool expect g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g++-multilib unzip device-tree-compiler python-pip libncurses5-dev

    此外,為了便于Qt開發,可選擇安裝Linux版的Qt Creator到自己的虛擬機中,安裝過程也比較簡單,并且我之前已經安裝過了,這里就不過多介紹了。當然,不安裝Qt Creator也是可以進行Qt程序的編譯的,只要有Qt交叉編譯環境即可。

    2. 準備RK3568源碼

    cat OK3568-linux-source.tar.bz2.a* > OK3568-linux-source.tar.bz2

    tar -xvf OK3568-linux-source.tar.bz2

    第一句是把.aa和.ab兩個壓縮包合并為一個壓縮包,有個兩個文件都差不多4G大小,這個合并的過程需要一點時間(大概2、3分鐘左右),并且合并過程沒有信息打印,命令行為不可輸入狀態,等變為可輸入狀態,即合并完成,并且在虛擬機上可看到合并后的壓縮包。

    第二句是把合并后的壓縮包進行解壓,這個解壓過程也要一點時間(大概20分鐘左右),解壓過程會有信息打印。

    解壓完成后,可以看到OK3568-Linux的源碼文件夾:

    3. 編譯RK3568源碼

    在編譯之前,需要確保自己的虛擬機有足夠的磁盤空間和內存空間,我的虛擬機配置如下,我的筆記本一共12G內存,我給了虛擬機10G。

    注意上圖中的硬盤空間,只是這個虛擬機的最大空間,需要在ubuntu中使用df指令確認下實際的大小,如果不夠大,可以使用GParted等軟件調整自己的虛擬機硬盤空間。

    如下圖所示,我的ubuntu的硬盤現在總共是276G,這個截圖是我編譯完源碼后截的圖,感覺整個編譯源碼操作,耗費了有幾十個G的空間,現在還剩余80G的空間可用。

    3.1 全編譯測試

    進入到剛才解壓后的RK3568源碼目錄,通過運行.build.sh腳本即可編譯,在編譯之前,可以先來看下腳本中的內容:

    這里編譯腳本比較長,截取部分圖如下:

    執行腳本后會先出現一個選項需要選擇,選擇1,即使用OK3568的配置。

    編譯一段時間后(大概10分鐘)會彈出下圖界面,需要選擇,提取圖中信息:

    VCCIO4 和 VCCIO6 選擇 1800000

    其余的選擇 3300000

    使用上下方向按鍵選擇選項,按回車確認選擇即可。

    編譯的過程中,會十分耗費內存資源,我的電腦顯示在編譯過程中,內存基本占滿了,再使用其它軟件都會特別的卡,所以在編譯的時候,就不用進行其它操作了,讓它獨自編譯好了。

    整個編譯時間較長,我的電腦用了7、8個小時才編譯完,從凌晨編譯到天亮,還好沒報錯。編譯成功后的截圖如下,注意大片的紅色部分不是錯誤信息,只是在提醒電源域的配置是否正確。

    編譯成功后,會在IMAGE文件夾下生成對應編譯工程結果文件,這些文件中,update.img為打包好用于OTG或TF卡全燒寫使用,其它的編譯文件用于分步燒寫時使用。

    3.2 內核單獨編譯測試

    整個編譯程序,十分的耗時,有時如果只是修改了內核代碼,可以單獨編譯內核,編譯方法是,在執行腳本時,指定一個kernel參數即可:

    ./build.sh kernel

    三、Qt程序交叉編譯測試

    1. Qt程序交叉編譯

    RK3568 Linux源碼編譯完成后,可以到output目錄下的bin目錄中查看編譯出的交叉編譯工具,對應Qt開發,需要注意是qmake這個工具,bin目錄中的所有編譯工具如下:

    使用資料中的Qt程序進行交叉編譯測試,我使用的是qcamera這里例程,將程序源碼復制到Ubuntu中,然后使用如下指令進行Qt程序的交叉編譯:

    export PATH=/home/xxpcb/myTest/OK3568/sourcecode/OK3568-linux-source/buildroot/output/OK3568/host/bin:$PATH

    /home/xxpcb/myTest/OK3568/sourcecode/OK3568-linux-source/buildroot/output/OK3568/host/bin/qmake

    make

    第一句是臨時添加環境變量;

    第二句是使用RK3568源碼編譯結果中的qmak來生成Makefile;

    第三句是使用make來編譯;

    編譯結果如下,同樣可以使用fie指令來確認編譯出的可執行文件的文件類型。

    可以看到,編譯出的fltest_qt_qcamera文件也是ELF 64-bit LSB的可執行文件,ARM aarch64架構的。

    2. Qt程序運行測試

    同樣使用ADB的方式,將可執行程序拷貝到板子中,然后運行,運行結果如下,注意我在qt程序中稍微修改了一下,給Exit字符串加了一個中括號,以確認板子中運行的就是我自己編譯出的Qt程序。

    至此,Qt的交叉編譯環境已驗證可正常使用。

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 久久久久亚洲AV成人网人人网站| 国产香蕉尹人在线视频你懂的 | 亚洲欧美综合精品二区| 成午夜福利人试看120秒| 中文字幕无码AV激情不卡| 加勒比无码人妻东京热| 亚洲AV无码AV在线影院| 国内精品无码一区二区三区| 欧美成人免费做真爱| 亚洲日韩欧美一区二区三区| A毛片终身免费观看网站| 欧美乱妇高清无乱码免费| 在线精品国产中文字幕| 国产JJIZZ女人多水喷水| 精品国产高清中文字幕| 国产V片在线播放免费无码| 久久99热只有频精品8| 精品一区二区三区免费播放| 日本一区二区三区免费播放视频站 | 精品久久久久久无码国产 | 福利一区二区不卡国产| 国产欧美日韩另类精彩视频| 377P欧洲日本亚洲大胆| 国产日产欧产精品精品软件| 国产AV无码专区亚洲AV紧身裤| 亚洲日韩欧洲无码AV夜夜摸| 激情 自拍 另类 亚洲| 午夜高清福利在线观看| 久久精品国产久精国产一老狼| 亚洲人成网站77777在线观看 | 少妇人妻AV无码专区| 又大又长粗又爽又黄少妇毛片| 大陆精大陆国产国语精品| 精品无码久久久久国产| 好男人好资源WWW社区| bt天堂新版中文在线| 欧美性大战久久久久XXX| 日本高清视频色欧WWW| 国产不卡av一区二区| 人妻在卧室被老板疯狂进入| 伊人色综合久久天天小片|