Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
环境搭建
rt-smart
xmake
在QEMU/aarch64上完成smart用户态应用的运行并使用VSCode进行调试(基于xmake)
发布于 2023-09-15 19:20:03 浏览:992
订阅该版
[tocm] # 在QEMU/aarch64上完成smart和smart用户态应用的运行,并使用VSCode进行调试 环境:Ubuntu20.04 ## xmake安装 ``` sudo add-apt-repository ppa:xmake-io/xmake sudo apt update sudo apt install xmake ``` ## 下载源码 - 用户态应用程序 ``` git clone https://github.com/RT-Thread/userapps.git ``` - rt-thread ``` git clone https://github.com/RT-Thread/rt-thread.git ``` ## QEMU安装 首先安装必要依赖: ```bash sudo apt-get install -y libglib2.0-dev libpixman-1-dev ``` 安装qemu: ```bash sudo dpkg -i ./tools/qemu/qemu_7.1.0-2022111713_amd64.deb ``` ## 编译 首先需要更新环境变量 ```bash source env.sh ``` 进入apps目录进行编译 ```bash 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 ``` ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230915/fa62f39520926948c0a3b59d46d11fcb.png.webp) ## 镜像制作 运行`xmake smart-rootfs`制作rootfs,运行`xmake smart-image`制作镜像 ```bash xmake smart-rootfsxmake smart-image -o ../prebuilt/qemu-virt64-aarch64/ext4.img # 将镜像输出至 qemu-virt64-aarch64 目录 ``` ## 运行qemu 进入`userapp/prebuilt/qemu-virt64-aarch64`,运行run.sh脚本启动qemu ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230915/145cbc61df19171918488478d46440d9.png.webp) ## 运行用户态应用 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230915/45c36898c8264fc223ae1ac8652a1308.png.webp) ## 使用VSCode调试用户态应用 ### 准备工作 1. 下载源码(如上) 2. 安装VSCode:安装VSCode并安装C/C++扩展插件 ```bash $ 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 即可 ``` 3. 安装内核编译工具 编译内核的时候需要用到 aarch64-linux-musleabi- 工具链,可以在 https://github.com/RT-Thread/toolchains-ci/releases 中下载 环境变量配置为: ```bash 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: ```bash sudo apt-get install scons ``` 安装xmake: ```bash sudo add-apt-repository ppa:xmake-io/xmake sudo apt update sudo apt install xmake ``` 安装gdb-multiarch: ```bash sudo apt-get install gdb-multiarch ``` ### 编译userapps与内核 在 userapps 中,编译 app: 用户态的应用用xmake编默认没有调试符号 ```bash cd apps xmake f -m debug -a aarch64 # 配置为 aarch64 平台,并指定debug模式,就有调试信息了 xmake -j8 ``` 制作镜像: ```bash xmake smart-rootfs xmake smart-image -o ../prebuilt/qemu-virt64-aarch64/ext4.img # 将镜像输出至 qemu-virt64-aarch64 目录 ``` 基于 rt-thread 仓库的 qemu-virt64-aarch64 构建内核镜像: 1. 选择 RT-Thread Kernel 选项 2. 使能Smart内核 3. 在该目录下执行scons编译 4. 将生成的内核镜像 rtthread.bin 和 rtthread.elf 更新到 userapps\prebuilt\qemu-virt64-aarch64 目录中。 5. 使用命令 `./run.sh`,测试 qemu 正常运行后,使用 ctrl a,x 结束运行。 ## VSCode配置 要想使用VSCode配置用户态应用,需要先在工程路径下添加调试配置 1. 首先在 `\userapps` 目录下使用命令 `code .`,使用 VSCode 打开该目录。 2. 在 `\userapps` 目录下创建launch.json ,如下所示(需要更新实际的 gdb 路径): ```json { "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 的文件无法进行调试,那就使用以下配置: ```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`,改为自己要调试的应用。 ## 调试用户态应用 这部分开始正式调试用户态应用,具体步骤如下: 1. 修改run.sh脚本,在脚本里添加-s -S ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230915/7a268dd6600845f0230bc354c0a61ee4.png.webp) 2. 在 VSCode 终端输入 `./run.sh`,如果调试的是内核,可以看到启动过程被挂起,等待调试前端来连接。 3. 在 VSCode 中按下 F5 开始调试内核,可以看到应用的源码文件被打开,运行的代码将停在断点处。 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230915/c0c717c296dd625505dbf4539831ef3a.png.webp) 4. 如果调试的是用户态应用,我们以smart_fetch为例,在VSCode终端输入`./run.sh`,并按下F5开始调试,选择要运行的用户态应用,运行的代码将停在断点处 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230915/0a6a83fa33ce2a2bd3e3e610736676a7.png.webp) 5. 后续就可以单步调试用户态应用了。单步运行后,应用代码执行的打印将显示在终端上。 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230915/8c3d6bb96776050668ba0d0e5d7d2306.png.webp)
3
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
boat7
这家伙很懒,什么也没写!
文章
1
回答
0
被采纳
0
关注TA
发私信
相关文章
1
rt-smart发布时间
2
rt-smart qemu-vexpress-a9 编译报错
3
rt-smart分支编译rasp4-32bsp报错
4
rt-smart qemu-vexpress-a9 win10编译脚本问题
5
rt-smart qemu-vexpress-a9 linux 下crtl+c
6
rt-smart + pthread 编译报错
7
rt-smart的rt_channel实现问题
8
关于rt-smart的musl-libc
9
RT-Smart Windows 编译 qemu-vexpress-a9 出错
10
用户程序在RT-Smart存在的方式
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
freemodbus
PWM
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
中断
编译报错
Debug
SFUD
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
a1012112796
10
个答案
1
次被采纳
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
YZRD
2
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部