精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在QEMU/aarch64上完成smart用戶(hù)態(tài)應(yīng)用的運(yùn)行并使用VSCode進(jìn)行調(diào)試

冬至子 ? 來(lái)源:boat7 ? 作者:boat7 ? 2023-09-18 16:29 ? 次閱讀

環(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)用程序

rt-thread

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

1.jpg

鏡像制作

運(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

1.jpg

運(yùn)行用戶(hù)態(tài)應(yīng)用

1.jpg

使用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

1.jpg

在 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)處。

1.jpg

如果調(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)處

1.jpg

后續(xù)就可以單步調(diào)試用戶(hù)態(tài)應(yīng)用了。單步運(yùn)行后,應(yīng)用代碼執(zhí)行的打印將顯示在終端上。

1.jpg

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 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
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ARMv8中aarch64aarch32是怎樣進(jìn)行切換的

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

    談一談AArch64架構(gòu)下內(nèi)核與用戶(hù)地址的隔離機(jī)制

    1、 AArch64 架構(gòu)下內(nèi)核與用戶(hù)地址的隔離機(jī)制一般來(lái)說(shuō)操作系統(tǒng)之上會(huì)有多個(gè)應(yīng)用程序或者任務(wù)同時(shí)運(yùn)行。每一個(gè)任務(wù)都有自己獨(dú)立的頁(yè)表,
    發(fā)表于 04-13 17:27

    如何在x86環(huán)境下基于Qemu和Docker快速搭建AARCH64開(kāi)發(fā)環(huán)境

    內(nèi)容都是 AARCH64 開(kāi)發(fā)環(huán)境中的操作,AARCH64 基本匯編編譯運(yùn)行切換到目錄 ~/work/aarch64_asm,有一個(gè)內(nèi)置的
    發(fā)表于 07-11 15:18

    VSCode中使用QEMU調(diào)試FreeRTOS

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

    運(yùn)行ldd qemu-系統(tǒng)-aarch64顯示的不是動(dòng)態(tài)可執(zhí)行文件,這個(gè)怎么做?

    我正在運(yùn)行以下命令,ldd qemu-系統(tǒng)-aarch64 但它顯示的不是動(dòng)態(tài)可執(zhí)行文件這個(gè)怎么做)
    發(fā)表于 03-30 07:51

    RT-Thread BSP qemu-virt64-aarch64的編譯環(huán)境搭建步驟

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

    AArch64自托管調(diào)試指南

    集成Arm核心中的調(diào)試邏輯提供了觀察和控制CPU和系統(tǒng)環(huán)境,同時(shí)深度嵌入式處理器執(zhí)行軟件。手臂調(diào)試體系結(jié)構(gòu)規(guī)范允許將
    發(fā)表于 08-02 10:05

    AArch64外部調(diào)試詳解

    用自托管調(diào)試模型正在調(diào)試。調(diào)試異常是自托管調(diào)試模型的基礎(chǔ)。這個(gè)調(diào)試器對(duì)調(diào)試邏輯
    發(fā)表于 08-02 06:37

    AArch64平臺(tái)性能下降的例子

    編者按:目前許多公司同時(shí)使用 x86 和 AArch64 2 種主流的服務(wù)器。這兩種環(huán)境的算力相當(dāng),內(nèi)存相同的情況下:相同版本的 JVM 和 Java 應(yīng)用,相同的 JVM 參數(shù),應(yīng)用性
    的頭像 發(fā)表于 09-09 11:11 ?2213次閱讀

    AArch64寄存器介紹

    作為 RISC 架構(gòu),AArch64 提供了大量的通用寄存器。除通用寄存器之外,本節(jié)還會(huì)介紹特殊寄存器、系統(tǒng)控制寄存器、處理器狀態(tài)、函數(shù)調(diào)用標(biāo)準(zhǔn)。
    的頭像 發(fā)表于 08-24 09:57 ?5526次閱讀

    如何使用預(yù)裝程序創(chuàng)建分發(fā)AArch64容器

    本文我們將探討如何使用預(yù)裝程序創(chuàng)建分發(fā) AArch64 容器。
    的頭像 發(fā)表于 09-30 10:57 ?984次閱讀

    VSCode中使用QEMU調(diào)試FreeRTOS

    在這篇文章中,我們將逐步完成一個(gè)示例設(shè)置,該設(shè)置以模擬 Arm Cortex-M3 微控制器為例,展示了如何使用 QEMU Visual Studio Code (VSCode
    的頭像 發(fā)表于 03-06 09:24 ?1608次閱讀

    最新的Linux aarch64 LSA驅(qū)動(dòng)程序

    電子發(fā)燒友網(wǎng)站提供《最新的Linux aarch64 LSA驅(qū)動(dòng)程序.zip》資料免費(fèi)下載
    發(fā)表于 08-23 15:46 ?2次下載
    最新的Linux <b class='flag-5'>aarch64</b> LSA驅(qū)動(dòng)程序

    RT-Thread BSP qemu-virt64-aarch64文件系統(tǒng)

    前面大體搭建了 RT-Thread BSP qemu-virt64-aarch64 的交叉編譯環(huán)境,運(yùn)行后發(fā)現(xiàn),文件系統(tǒng)沒(méi)有掛載,感覺(jué)是沒(méi)有 mkfs。
    的頭像 發(fā)表于 10-08 16:34 ?732次閱讀
    RT-Thread BSP <b class='flag-5'>qemu-virt64-aarch64</b>文件系統(tǒng)

    探索aarch64架構(gòu)使用ftrace的BPF LSM

    ,aarch64跟x86_64的內(nèi)核功能有差異。筆者嘗試定位這些差異時(shí),看到這篇文章,可以讓大家更直觀地了解LSM eBPF兩種CPU 內(nèi)核
    的頭像 發(fā)表于 01-25 09:30 ?478次閱讀