環(huán)境:Ubuntu20.04
xmake安裝
sudo add-apt-repository ppa:xmake-io/xmake
sudo apt update
sudo apt install xmake
下載源碼
用戶(hù)態(tài)應(yīng)用程序
QEMU安裝
首先安裝必要依賴(lài):
sudo apt-get install -y libglib2.0-dev libpixman-1-dev
安裝qemu:
sudo dpkg -i ./tools/qemu/qemu_7.1.0-2022111713_amd64.deb
編譯
首先需要更新環(huán)境變量
source env.sh
進(jìn)入apps目錄進(jìn)行編譯
cd apps/
// notes:這里注意如果是linux平臺(tái)下需要先安裝解壓縮工具,下面為7zip的下載方式
sudo add-apt-repository universe
sudo apt update
sudo apt install p7zip-full p7zip-rar
xmake f -a aarch64 //選擇目標(biāo)平臺(tái)為aarch64
xmake -j8
鏡像制作
運(yùn)行xmake smart-rootfs制作rootfs,運(yùn)行xmake smart-image制作鏡像
xmake smart-rootfsxmake smart-image -o ../prebuilt/qemu-virt64-aarch64/ext4.img # 將鏡像輸出至 qemu-virt64-aarch64 目錄
運(yùn)行qemu
進(jìn)入userapp/prebuilt/qemu-virt64-aarch64,運(yùn)行run.sh腳本啟動(dòng)qemu
運(yùn)行用戶(hù)態(tài)應(yīng)用
使用VSCode調(diào)試用戶(hù)態(tài)應(yīng)用
準(zhǔn)備工作
下載源碼(如上)
安裝VSCode:安裝VSCode并安裝C/C++擴(kuò)展插件
$ sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make
$ sudo apt-get update
$ sudo apt-get install ubuntu-make
$ umake ide visual-studio-code
提示輸入 a 即可
安裝內(nèi)核編譯工具
編譯內(nèi)核的時(shí)候需要用到 aarch64-linux-musleabi- 工具鏈
環(huán)境變量配置為:
export RTT_CC="gcc"
export RTT_EXEC_PATH="/opt/aarch64-linux-musleabi_for_x86_64-pc-linux-gnu/bin"
export RTT_CC_PREFIX="aarch64-linux-musleabi-"
export PATH="**RTT_EXEC_PATH:**PATH"
安裝scons:
sudo apt-get install scons
安裝xmake:
sudo add-apt-repository ppa:xmake-io/xmake
sudo apt update
sudo apt install xmake
安裝gdb-multiarch:
sudo apt-get install gdb-multiarch
編譯userapps與內(nèi)核
在 userapps 中,編譯 app:
用戶(hù)態(tài)的應(yīng)用用xmake編默認(rèn)沒(méi)有調(diào)試符號(hào)
cd apps
xmake f -m debug -a aarch64 # 配置為 aarch64 平臺(tái),并指定debug模式,就有調(diào)試信息了
xmake -j8
制作鏡像:
xmake smart-rootfs
xmake smart-image -o ../prebuilt/qemu-virt64-aarch64/ext4.img # 將鏡像輸出至 qemu-virt64-aarch64 目錄
基于 rt-thread 倉(cāng)庫(kù)的 qemu-virt64-aarch64 構(gòu)建內(nèi)核鏡像:
選擇 RT-Thread Kernel 選項(xiàng)
使能Smart內(nèi)核
在該目錄下執(zhí)行scons編譯
將生成的內(nèi)核鏡像 rtthread.bin 和 rtthread.elf 更新到 userappsprebuiltqemu-virt64-aarch64 目錄中。
使用命令 ./run.sh,測(cè)試 qemu 正常運(yùn)行后,使用 ctrl a,x 結(jié)束運(yùn)行。
VSCode配置
要想使用VSCode配置用戶(hù)態(tài)應(yīng)用,需要先在工程路徑下添加調(diào)試配置
首先在 userapps 目錄下使用命令 code .,使用 VSCode 打開(kāi)該目錄。
在 userapps 目錄下創(chuàng)建launch.json ,如下所示(需要更新實(shí)際的 gdb 路徑):
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug smart @ Linux",
"type": "cppdbg",
"request": "launch",
"args": [],
"stopAtEntry": true,
"externalConsole": true,
"cwd": "${workspaceRoot}",
"program": "${workspaceRoot}/apps/build/rootfs/bin/smart-fetch",
"serverLaunchTimeout": 2000,
"miDebuggerPath":"/usr/bin/gdb-multiarch",
"miDebuggerServerAddress": ":1234",
"setupCommands": [
{
"text": "cd ${workspaceRoot}"
},
{
"text": "file ${workspaceRoot}/apps/build/rootfs/bin/smart-fetch"
},
{
"text": "break main"
}
],
"customLaunchSetupCommands": [],
"launchCompleteCommand": "exec-run"
},
]
}
launch.json 配置文件中的 smart-fetch,改為自己要調(diào)試的應(yīng)用。
如果上述配置 launch.json 的文件無(wú)法進(jìn)行調(diào)試,那就使用以下配置:
{
"version": "0.2.0",
"configurations": [
{
"name": "aarch64-debug",
"type": "cppdbg",
"request": "launch",
"miDebuggerPath": "/usr/bin/gdb-multiarch",
"program": "${workspaceFolder}/rtthread.elf",
"setupCommands": [
{
"description": "為 gdb 啟用整齊打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"text": "target remote localhost:1234"
},
{
"text": "restore ${workspaceFolder}/rtthread.elf"
}
],
"launchCompleteCommand": "None",
"cwd": "${workspaceFolder}"
}
]
}
launch.json 配置文件中的 rtthread.elf,改為自己要調(diào)試的應(yīng)用。
調(diào)試用戶(hù)態(tài)應(yīng)用
這部分開(kāi)始正式調(diào)試用戶(hù)態(tài)應(yīng)用,具體步驟如下:
修改run.sh腳本,在腳本里添加-s -S
在 VSCode 終端輸入 ./run.sh,如果調(diào)試的是內(nèi)核,可以看到啟動(dòng)過(guò)程被掛起,等待調(diào)試前端來(lái)連接。
在 VSCode 中按下 F5 開(kāi)始調(diào)試內(nèi)核,可以看到應(yīng)用的源碼文件被打開(kāi),運(yùn)行的代碼將停在斷點(diǎn)處。
如果調(diào)試的是用戶(hù)態(tài)應(yīng)用,我們以smart_fetch為例,在VSCode終端輸入./run.sh,并按下F5開(kāi)始調(diào)試,選擇要運(yùn)行的用戶(hù)態(tài)應(yīng)用,運(yùn)行的代碼將停在斷點(diǎn)處
后續(xù)就可以單步調(diào)試用戶(hù)態(tài)應(yīng)用了。單步運(yùn)行后,應(yīng)用代碼執(zhí)行的打印將顯示在終端上。
-
C++語(yǔ)言
+關(guān)注
關(guān)注
0文章
147瀏覽量
6927 -
LINUX內(nèi)核
+關(guān)注
關(guān)注
1文章
315瀏覽量
21544 -
Ubuntu系統(tǒng)
+關(guān)注
關(guān)注
0文章
85瀏覽量
3847 -
RTThread
+關(guān)注
關(guān)注
7文章
130瀏覽量
40638 -
gdb調(diào)試器
+關(guān)注
關(guān)注
0文章
10瀏覽量
1090
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論