linux下搭建rtthread qemu環(huán)境
1.1 源碼包獲取
RT-Thread源碼的獲取方式有多種,可以是官網瀏覽器下載、云盤下載、git獲取,強烈推薦git,因為使用git可以很方便的切換各種版本的rtthread,但是前提是要先安裝git,linux下的安裝方法不多敘述。這里不推薦拷貝windows系統(tǒng)里面的源碼包,因為windows與linux的文件換行符等差異,會導致各種坑,所以還是老老實實的重新下載源碼包吧。
git方式國內建議使用gitee。
在終端輸入
即可獲取rtthread最新版的源碼包,但是由于兼容問題不太推薦最新的包,終端輸入cd rt-thread 進入源碼包后,使用git reset --hard + 某舊版本id可以快速切換到改舊版本的源碼包,以4.1.1為例,在終端輸入
版本的id號可以通過 git log查看,commit后面的就是該版本id

1.2 ?env工具
https://github.com/RT-Thread/env 可查看env工具相關信息,里面有幾句信息:
對于中國大陸用戶,請使用以下三行命令進行下載,第一行是下載,第二行修改權限,第三行安裝
Prepare Env
PLAN A: Whenever start the ubuntu system, you need to type command source ~/.env/env.sh
to activate the environment variables.
or PLAN B: open ~/.bashrc
file, and attach the command source ~/.env/env.sh
at the end of the file. It will be automatically executed when you log in the ubuntu, and you don't need to execute that command any more.
意思就是有兩種方法來配置env,推薦第二種,輸入
再在文件最后一行輸入source ~/.env/env.sh
1.3 編譯調試所需工具
除此之外,需安裝編譯工具gcc-arm-none-eabi、scons、gdb調試工具等,輸入以下指令下載安裝
通常編譯器都自動安裝到/usr/bin下了,安裝好之后需進入rt-thread/bsp/qemu-vexpress-a9,打開rtconfig.py文件,37行左右會指定編譯工具,設置為gcc,路徑為/usr/bin
2.運行QEMU看看效果
在windows下是運行qemu.bat,linux下則是qemu.sh。進入到rt-thread/bsp/qemu-vexpress-a9下,輸入
即可啟動虛擬的開發(fā)板。如果運行不了qemu.sh,則需要使用
為該文件增加“可執(zhí)行”的屬性。
如果還是運行不了,可能是沒有生成rtthread.elf的文件,qemu.sh腳本里面就一句話,作用是使用qemu創(chuàng)建機器,運行rtthread.elf。
輸入scons可編譯工程生成rtthread.elf
運行效果如下圖,已經進入了虛擬開發(fā)板的命令行界面。

3.修改main.c并編譯運行
打開rt-thread/bsp/qemu-vexpress-a9/application下的main.c,可以看到如下內容,經典的hello world
嘗試修改一下,printf("Hello RT-Thread this is a test \n");
保存后,再linux終端rt-thread/bsp/qemu-vexpress-a9/目錄下,輸入scons,工程便開始編譯

最終提示生成了rtthread.elf文件。運行./qemu.sh,可以看到啟動后打印修改的內容

4.搭建VSCode,開發(fā)更方便
很多人不習慣使用vi編輯器、gedit編輯器修改文件,不習慣使用gdb進行調試(我就是),搭建VSCode是很有必要的,看代碼很方便,調試界面也很友好。
VSCode的下載安裝不多作介紹,簡介就是宇宙最強萬能寫代碼工具。
這里還要借助VSCode里面的插件: RT-Thread Studio

安裝好之后,按照擴展設置,添加幾個必要的路徑:
1.rtthread源碼包路徑
2.gdb路徑:/usr/bin/arm-none-eabi-gdb
3.Toolchain_Loacation工具鏈 gcc編譯器的路徑:/usr/bin
使用左側的RT按鈕,即可打開一個工程。鼠標懸停再工程上,可看到編譯、調試等選項:

如此,就很方便了。調試起來毫無壓力。支持變量查看、單步執(zhí)行、斷點管理等

5.為QEMU增加網卡
到這里,基本的環(huán)境就已經搭建好了。但是需要使用更多的接口,還需要了解以下QEMU。
QEMU的本質是使用電腦的硬件,虛擬出一個開發(fā)板,也就是說這個開發(fā)板使用的接口實際上都是你的電腦的接口。
這一步,為QEMU增加網卡。根據RT-Thread文檔中心的指引,在windows下使用qemu,添加網卡是首先安裝一個虛擬網卡,然后將真實的可上網的網卡共享到虛擬網卡,然后再啟動虛擬開發(fā)板的時候設置啟動參數(shù),將虛擬網卡作為啟動項,當作虛擬開發(fā)板的網卡。
Linux中也是如此。大概的示意圖如下圖所示。

需要先安裝網橋軟件包
參照網上的例子改寫了qemu.sh,如下。其中ens33和ens36為我電腦上的兩個網卡,一個是以太網(VMware實體window和linux虛擬機NET模式),一個是WIFI(VMware橋接模式,linux和windows共用wifi)。
修改完之后,保存,運行qemu.sh,在rtthread終端ping一個網站即可ping通,到此就可以進行下一步學習了。B站上RTThread官方賬號有網絡課程專欄【7天入門網絡編程】,搭配使用真香。若ping不通則有可能是你的linux系統(tǒng)本身就上不了網,所以網橋一定要連接到可以上網的網卡才能往下走。ping不通移步第6節(jié) VMWare虛擬機網卡配置簡介,參考一下我的配置。

此時啟動另一個終端,輸入ifconfig,可以看到網卡的信息,里面有qemu.sh文件里新建的br0網橋、本機網卡ens33、ens36、lo回環(huán)、tap0虛擬網卡

6.VMWare虛擬機網卡配置簡介
以下給出我的參考配置
在windows平臺下使用VMware,windos下網絡適配器為如下配置,其中WLAN就是可以上網的Wifi,虛擬網卡VMnet8用于NET模式進行windows和Ubuntu的文件共享、SSH等

在虛擬機設置里面使用VMnet8和VMnet0,其中VMnet8設置為NAT模式,VMnet0設置為自定義橋接模式。在虛擬網絡編輯器里設置VMnet0橋接目標為我的WIFI,即RZ608 Wi-Fi 6E 80MHz。


設置完成后,在Ubuntu中使用ifconfig就可以看到這兩個網卡了,或者在圖形界面中也可以設置,但是Ubuntu都認為這兩個網卡都是有線網卡

這時在去ping一個網站就可以ping通了,如果ping不通可以嘗試關閉再重新打開。
7.TCP客戶端示例
演示TCP客戶端示例。
在windows下打開一個TCP服務器(咱也不知道為什么用windows,正好電腦上有,用著方便)

在RT-Thread命令行中輸入tcp_client命令 + 服務器IP +服務器端口號


源碼見文末尾,該源碼包通過sons --menuconfig彈出裁剪配置界面,添加
RT-Thread online packages ?---->
????miscellaneous packages ---->
????????samples:kernel and components samples --->
? ? ? ? ? ? a network_samples package for rt-thread ---->
????????????????[network] tcp client
即可獲得,添加完成之后,在終端輸入
自動下載TCP示例源代碼,然后直接scons編譯即可使用
更多信息可查看官方文檔中心