<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

在QEMU/aarch64上完成smart用戶態應用的運行并使用VSCode進行調試

冬至子 ? 來源:boat7 ? 作者:boat7 ? 2023-09-18 16:29 ? 次閱讀

環境:Ubuntu20.04

xmake安裝

sudo add-apt-repository ppa:xmake-io/xmake
sudo apt update
sudo apt install xmake

下載源碼

用戶態應用程序

rt-thread

QEMU安裝

首先安裝必要依賴:

sudo apt-get install -y libglib2.0-dev libpixman-1-dev

安裝qemu:

sudo dpkg -i ./tools/qemu/qemu_7.1.0-2022111713_amd64.deb

編譯

首先需要更新環境變量

source env.sh

進入apps目錄進行編譯

cd apps/
// notes:這里注意如果是linux平臺下需要先安裝解壓縮工具,下面為7zip的下載方式
sudo add-apt-repository universe
sudo apt update
sudo apt install p7zip-full p7zip-rar
xmake f -a aarch64 //選擇目標平臺為aarch64
xmake -j8

1.jpg

鏡像制作

運行xmake smart-rootfs制作rootfs,運行xmake smart-image制作鏡像

xmake smart-rootfsxmake smart-image -o ../prebuilt/qemu-virt64-aarch64/ext4.img # 將鏡像輸出至 qemu-virt64-aarch64 目錄

運行qemu

進入userapp/prebuilt/qemu-virt64-aarch64,運行run.sh腳本啟動qemu

1.jpg

運行用戶態應用

1.jpg

使用VSCode調試用戶態應用

準備工作

下載源碼(如上)

安裝VSCode:安裝VSCode并安裝C/C++擴展插件

$ 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 即可

安裝內核編譯工具

編譯內核的時候需要用到 aarch64-linux-musleabi- 工具鏈
環境變量配置為:

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與內核
在 userapps 中,編譯 app:

用戶態的應用用xmake編默認沒有調試符號

cd apps
xmake f -m debug -a aarch64 # 配置為 aarch64 平臺,并指定debug模式,就有調試信息
xmake -j8
制作鏡像:

xmake smart-rootfs
xmake smart-image -o ../prebuilt/qemu-virt64-aarch64/ext4.img # 將鏡像輸出至 qemu-virt64-aarch64 目錄
基于 rt-thread 倉庫的 qemu-virt64-aarch64 構建內核鏡像:

選擇 RT-Thread Kernel 選項

使能Smart內核

在該目錄下執行scons編譯

將生成的內核鏡像 rtthread.bin 和 rtthread.elf 更新到 userappsprebuiltqemu-virt64-aarch64 目錄中。

使用命令 ./run.sh,測試 qemu 正常運行后,使用 ctrl a,x 結束運行。

VSCode配置

要想使用VSCode配置用戶態應用,需要先在工程路徑下添加調試配置

首先在 userapps 目錄下使用命令 code .,使用 VSCode 打開該目錄。

在 userapps 目錄下創建launch.json ,如下所示(需要更新實際的 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,改為自己要調試的應用。

如果上述配置 launch.json 的文件無法進行調試,那就使用以下配置:

{
"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,改為自己要調試的應用。

調試用戶態應用

這部分開始正式調試用戶態應用,具體步驟如下:

修改run.sh腳本,在腳本里添加-s -S

1.jpg

在 VSCode 終端輸入 ./run.sh,如果調試的是內核,可以看到啟動過程被掛起,等待調試前端來連接。

在 VSCode 中按下 F5 開始調試內核,可以看到應用的源碼文件被打開,運行的代碼將停在斷點處。

1.jpg

如果調試的是用戶態應用,我們以smart_fetch為例,在VSCode終端輸入./run.sh,并按下F5開始調試,選擇要運行的用戶態應用,運行的代碼將停在斷點處

1.jpg

后續就可以單步調試用戶態應用了。單步運行后,應用代碼執行的打印將顯示在終端上。

1.jpg

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C++語言
    +關注

    關注

    0

    文章

    146

    瀏覽量

    6878
  • LINUX內核
    +關注

    關注

    1

    文章

    311

    瀏覽量

    21400
  • Ubuntu系統
    +關注

    關注

    0

    文章

    84

    瀏覽量

    3799
  • RTThread
    +關注

    關注

    7

    文章

    129

    瀏覽量

    40535
  • gdb調試器
    +關注

    關注

    0

    文章

    10

    瀏覽量

    1081
收藏 人收藏

    評論

    相關推薦

    ARMv8中aarch64aarch32是怎樣進行切換的

    ARMv8中,aarch64aarch32是通過異常進行切換的。而A32和T32是通過bx指令進行切換的。如下圖:以下A64和A32混合編
    發表于 04-01 15:09

    談一談AArch64架構下內核與用戶地址的隔離機制

    1、 AArch64 架構下內核與用戶地址的隔離機制一般來說操作系統之上會有多個應用程序或者任務同時運行。每一個任務都有自己獨立的頁表,
    發表于 04-13 17:27

    如何在x86環境下基于Qemu和Docker快速搭建AARCH64開發環境

    內容都是 AARCH64 開發環境中的操作,AARCH64 基本匯編編譯運行切換到目錄 ~/work/aarch64_asm,有一個內置的
    發表于 07-11 15:18

    VSCode中使用QEMU調試FreeRTOS

    在這篇文章中,我們將逐步完成一個示例設置,該設置以模擬 Arm Cortex-M3 微控制器為例,展示了如何使用 QEMU Visual Studio Code (VSCode
    發表于 03-16 15:45

    運行ldd qemu-系統-aarch64顯示的不是動態可執行文件,這個怎么做?

    我正在運行以下命令,ldd qemu-系統-aarch64 但它顯示的不是動態可執行文件這個怎么做)
    發表于 03-30 07:51

    RT-Thread BSP qemu-virt64-aarch64的編譯環境搭建步驟

    =》 ${RTT_EXEC_PATH}”  下載gcc交叉編譯工具鏈接后,rt-thread/bsp/qemu-virt64-aarch64 運行  設置smart_env.sh的
    發表于 04-04 17:04

    RT-Thread BSP qemu-virt64-aarch64文件系統

      前言   前面大體搭建了 RT-Thread BSP qemu-virt64-aarch64 的交叉編譯環境,運行后發現,文件系統沒有掛載,感覺是沒有 mkfs。   通過RT
    發表于 05-16 10:29

    AArch64異常模型指南

    。是的尤其與任何編寫代碼以設置或管理異常的人相關。 本指南的最后,您可以檢查您的知識。您將能夠列出異常級別,說明執行如何在它們之間移動,命名和描述執行狀態。你還將能夠詳細說明一個簡單的AArch64矢量表的組成部分,
    發表于 08-02 06:03

    AArch64自托管調試指南

    集成Arm核心中的調試邏輯提供了觀察和控制CPU和系統環境,同時深度嵌入式處理器執行軟件。手臂調試體系結構規范允許將
    發表于 08-02 10:05

    AArch64外部調試詳解

    用自托管調試模型正在調試。調試異常是自托管調試模型的基礎。這個調試器對調試邏輯
    發表于 08-02 06:37

    AArch64平臺上性能下降的例子

    編者按:目前許多公司同時使用 x86 和 AArch64 2 種主流的服務器。這兩種環境的算力相當,內存相同的情況下:相同版本的 JVM 和 Java 應用,相同的 JVM 參數,應用性
    的頭像 發表于 09-09 11:11 ?2055次閱讀

    如何使用預裝程序創建并分發AArch64容器

    本文我們將探討如何使用預裝程序創建并分發 AArch64 容器。
    的頭像 發表于 09-30 10:57 ?832次閱讀

    最新的Linux aarch64 LSA驅動程序

    電子發燒友網站提供《最新的Linux aarch64 LSA驅動程序.zip》資料免費下載
    發表于 08-23 15:46 ?2次下載
    最新的Linux <b class='flag-5'>aarch64</b> LSA驅動程序

    RT-Thread BSP qemu-virt64-aarch64文件系統

    前面大體上搭建了 RT-Thread BSP qemu-virt64-aarch64 的交叉編譯環境,運行后發現,文件系統沒有掛載上,感覺是沒有 mkfs。
    的頭像 發表于 10-08 16:34 ?581次閱讀
    RT-Thread BSP <b class='flag-5'>qemu-virt64-aarch64</b>文件系統

    探索aarch64架構上使用ftrace的BPF LSM

    ,aarch64跟x86_64的內核功能有差異。在筆者嘗試定位這些差異時,看到這篇文章,可以讓大家更直觀地了解LSM eBPF在兩種CPU 內核上的差異。
    的頭像 發表于 01-25 09:30 ?269次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>