diff --git a/rt-thread-version/rt-thread-smart/debug/qemu-arm-linux/figures/debug_rtthread.png b/rt-thread-version/rt-thread-smart/debug/qemu-arm-linux/figures/debug_rtthread.png new file mode 100644 index 0000000000000000000000000000000000000000..7a291c8832e0d3788034c2f358324467c327b1d8 Binary files /dev/null and b/rt-thread-version/rt-thread-smart/debug/qemu-arm-linux/figures/debug_rtthread.png differ diff --git a/rt-thread-version/rt-thread-smart/debug/qemu-arm-linux/figures/vsc-debug.png b/rt-thread-version/rt-thread-smart/debug/qemu-arm-linux/figures/vsc-debug.png index 6463cdb1980a81dc49dd5ddd2d66677f0ec70aab..4705b4dbd28bb4660e9e9f3ad282e01ca37c9110 100644 Binary files a/rt-thread-version/rt-thread-smart/debug/qemu-arm-linux/figures/vsc-debug.png and b/rt-thread-version/rt-thread-smart/debug/qemu-arm-linux/figures/vsc-debug.png differ diff --git a/rt-thread-version/rt-thread-smart/debug/qemu-arm-linux/qemu-arm-linux.md b/rt-thread-version/rt-thread-smart/debug/qemu-arm-linux/qemu-arm-linux.md index 9f897fdd663306869ad7bc43f1c294d237c62355..2c96b989d52b602c2feb8aaf55f0ba9f4d683871 100644 --- a/rt-thread-version/rt-thread-smart/debug/qemu-arm-linux/qemu-arm-linux.md +++ b/rt-thread-version/rt-thread-smart/debug/qemu-arm-linux/qemu-arm-linux.md @@ -29,23 +29,6 @@ # 提示输入 a 即可 ``` -3. 安装 GDB:gcc-arm-none-eabi 已经不再包含 arm-none-eabi-gdb 调试工具,需要去官方网站下载对应的 toolchain 压缩包,然后解压到 /opt 下: - - ```bash - $ wget https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/10-2020q4/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2 - $ - $ sudo tar xf gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2 -C /opt - ``` - - 然后设置 GDB 环境变量设置,打开~/.bashrc - - ```bash - $ sudo gedit ~/.bashrc - ``` - 在里面设置 PATH 环境变量 `export PATH=$PATH:/opt/gcc-arm-none-eabi-10-2020-q4-major/bin:/opt/gcc-arm-none-eabi-10-2020-q4-major/arm-none-eabi/bin`,保存。 - - ![image-20221026140628406](figures/gdb-path.png) - 4. 安装内核编译工具链 编译内核的时候需要用到 aarch64-linux-musleabi- 工具链,可在 userapps/apps 目录下通过 `xmake smart-rootfs --export=all` 命令导出。导出的目录为 `userapps/apps/build/packages/a/aarch64-smart-musleabi/176897/efeb359e05d0431ea1fd8843dccf6d8f/bin` @@ -59,7 +42,6 @@ export RTT_CC="gcc" export RTT_EXEC_PATH="/opt/aarch64-linux-musleabi/bin/" export RTT_CC_PREFIX="aarch64-linux-musleabi-" export PATH="$RTT_EXEC_PATH:$PATH" -export PATH="/opt/gcc-arm-none-eabi-10-2020-q4-major/bin/:$PATH" ``` ![](figures/ARM_tool_config.png) @@ -109,60 +91,36 @@ xmake smart-rootfs xmake smart-image -o ../prebuilt/qemu-virt64-aarch64-ext4/ext4.img # 将镜像输出至 qemu-virt64-aarch64-ext4 目录 ``` -编译系统内核 (RT-Thread 版本大于等于 5.0.0 时,直接查看下面的的注意事项): +> 注意事项: +> +> 自己写的应用程序可以仿照 userapps/apps 下的应用,写一个 xmake.lua, 使用 xmake 进行编译,然后从 `制作镜像` 这一步骤开始,把 app 放在 ext4.img 镜像里,然后运行 qemu,在 qemu 里就可以运行自己编写的程序了。 -```bash -git checkout rt-smart -# update kernel's rt-smart branch to the latest version -git pull origin rt-smart -``` +基于 rt-thread 仓库的 qemu-virt64-aarch64 构建内核镜像: -基于 rt-thread 仓库 rt-smart 分支的 qemu-virt64-aarch64 构建内核镜像,在该目录下执行 scons 编译。 +1. 选择 RT-Thread Kernel 选项 -![img](figures/build_kernel1.png) + ![img](figures/smart-cfg-first-stages.png) -![image-20221021153136199](figures/build_kernel2.png) +2. 使能 Smart 内核 -将生成的内核镜像 rtthread.bin 更新到 userapps\prebuilt\ qemu-virt64-aarch64 目录即可。 + ![img](figures/samrt-cfg.png) -> 注意事项: -> -> RT-Thread 版本大于等于 5.0.0 时,rt-smart 分支合并进 master 分支,下载 rt-thread 源码(如有则跳过)。 -> -> ``` -> git clone https://github.com/RT-Thread/rt-thread.git -> cd ./rt-thread/bsp/qemu-virt64-aarch64/ #打开 rt-thread 项目目录中的 bsp/qemu-virt64-aarch64 目录 -> scons --menuconfig -> ``` -> -> 基于 rt-thread 仓库的 qemu-virt64-aarch64 构建内核镜像: -> -> 1. 选择 RT-Thread Kernel 选项 -> -> ![img](figures/smart-cfg-first-stages.png) -> -> -> 2. 使能 Smart 内核 -> -> ![img](figures/samrt-cfg.png) -> -> -> 3. 然后在该目录下执行 scons 编译 -> -> ![img](figures/build_kernel1.png) -> -> ![image-20221021153136199](figures/build_kernel2.png) -> +3. 然后在该目录下执行 scons 编译 + + ![img](figures/build_kernel1.png) + + ![image-20221021153136199](figures/build_kernel2.png) -1. 将 rt-thread 编译生成的 rtthread.bin 和 rtthread.elf 文件拷贝到 userapps/prebuilt/qemu-virt64-aarch64 中 -2. 使用命令 `./run.sh`,测试 qemu 正常运行后,使用 ctrl a,x 结束运行。 +4. 将生成的内核镜像 rtthread.bin 和 rtthread.elf 更新到 userapps\prebuilt\qemu-virt64-aarch64 目录中。 + +5. 使用命令 `./run.sh`,测试 qemu 正常运行后,使用 ctrl a,x 结束运行。 ## VSCode 配置 要想使用 VSCode 调试用户态应用,需要先在工程路径下添加调试配置。 1. 首先在终端使用命令 `code .`,使用 VSCode 打开该目录。 -2. 修改 `\rt-thread\bsp\qemu-vexpress-a9` 目录下 `.vscode` 文件夹中的 `launch.json` 配置,如下所示(需要更新实际的 gdb 路径): +2. 修改 `\rt-thread\bsp\qemu-virt64-aarch64` 目录下 `.vscode` 文件夹中的 `launch.json` 配置,如下所示(需要更新实际的 gdb 路径): ```json { @@ -241,17 +199,13 @@ launch.json 配置文件中的 `rtthread.elf`,改为自己要调试的应用 ![](figures/run_debug.png) -2. 在 VSCode 终端输入 `./run.sh`,此时弹出 qemu 窗口。可以看到启动过程被挂起,等待调试前端来连接。 +2. 在 VSCode 终端输入 `./run.sh`,如果调试的是内核,可以看到启动过程被挂起,等待调试前端来连接。 -3. 在 VSCode 中按下 F5 开始调试内核,运行的代码将停在 main 断点处,并且控制台打印 rt-thread logo,表示系统已经正常启动,文件系统也已经成功挂载。 +3. 在 VSCode 中按下 F5 开始调试内核,可以看到应用的源码文件被打开,运行的代码将停在断点处。 ![image-20221026104404817](figures/vsc-debug.png) -4. 按下 F5 全速运行程序,这时系统正常运行,应用会被加载运行。从 VSCode 可以看到应用的源码文件被打开,并且断点停在应用入口 main 处。 - - ![image-20221026104738963](figures/brk-hello-main.png) - 5. 后续就可以单步调试用户态应用了。单步运行后,应用代码执行的打印将显示在终端上。 - ![image-20221026104855575](figures/debug-app-1.png) + ![image-20221026104855575](figures/debug_rtthread.png) diff --git a/rt-thread-version/rt-thread-smart/quick-start/qemu-linux/quickstart.md b/rt-thread-version/rt-thread-smart/quick-start/qemu-linux/quickstart.md index f93a6df09a82d832684eaab0fc82886cc23490c7..5ce5731d4cfa698767a3dd2e8b029221b3897b79 100644 --- a/rt-thread-version/rt-thread-smart/quick-start/qemu-linux/quickstart.md +++ b/rt-thread-version/rt-thread-smart/quick-start/qemu-linux/quickstart.md @@ -57,7 +57,6 @@ export RTT_CC="gcc" export RTT_EXEC_PATH="/opt/aarch64-linux-musleabi/bin/" export RTT_CC_PREFIX="aarch64-linux-musleabi-" export PATH="$RTT_EXEC_PATH:$PATH" -export PATH="/opt/gcc-arm-none-eabi-10-2020-q4-major/bin/:$PATH" ``` ![](C:\Users\RTT\Desktop\source_code\docs-online\rt-thread-version\rt-thread-smart\quick-start\qemu-linux\figures\ARM_tool_config.png) @@ -84,55 +83,28 @@ xmake smart-image -o ../prebuilt/qemu-virt64-aarch64-ext4/ext4.img # 将镜像 ## 构建内核镜像 -下载 rt-thread 源码(如有则跳过)。(RT-Thread 版本大于等于 5.0.0 时,直接查看下面的注意事项) - ``` -git clone https://github.com/RT-Thread/rt-thread.git - -git checkout rt-smart -# update kernel's rt-smart branch to the latest version -git pull origin rt-smart +cd ./rt-thread/bsp/qemu-virt64-aarch64/ #打开 rt-thread 项目目录中的 bsp/qemu-virt64-aarch64 目录 +scons --menuconfig ``` -基于 rt-thread 仓库 rt-smart 分支的 qemu-virt64-aarch64 构建内核镜像,在该目录下执行 scons 编译。 - -![img](figures/build_kernel1.png) - -![image-20221021153136199](figures/build_kernel2.png) - -将生成的内核镜像 rtthread.bin 更新到 userapps\prebuilt\ qemu-virt64-aarch64 目录即可。 - -> 注意事项: -> -> RT-Thread 版本大于等于 5.0.0 时,rt-smart 分支合并进 master 分支,下载 rt-thread 源码(如有则跳过)。 -> -> ``` -> git clone https://github.com/RT-Thread/rt-thread.git -> cd ./rt-thread/bsp/qemu-virt64-aarch64/ #打开 rt-thread 项目目录中的 bsp/qemu-virt64-aarch64 目录 -> scons --menuconfig -> ``` -> -> 基于 rt-thread 仓库的 qemu-virt64-aarch64 构建内核镜像: -> -> 1. 选择 RT-Thread Kernel 选项 -> -> ![img](figures/smart-cfg-first-stages.png) -> -> -> 2. 使能 Smart 内核 -> -> ![img](figures/samrt-cfg.png) -> -> -> 3. 然后在该目录下执行 scons 编译 -> -> ![img](figures/build_kernel1.png) -> -> ![image-20221021153136199](figures/build_kernel2.png) -> -> 将生成的内核镜像 rtthread.bin 更新到 userapps\prebuilt\qemu-virt64-aarch64 目录即可。 +基于 rt-thread 仓库的 qemu-virt64-aarch64 构建内核镜像: + +1. 选择 RT-Thread Kernel 选项 + + ![img](figures/smart-cfg-first-stages.png) + +2. 使能 Smart 内核 + + ![img](figures/samrt-cfg.png) + +3. 然后在该目录下执行 scons 编译 + + ![img](figures/build_kernel1.png) + ![image-20221021153136199](figures/build_kernel2.png) +4. 将生成的内核镜像 rtthread.bin 更新到 userapps\prebuilt\qemu-virt64-aarch64 目录即可。 ## 运行用户态应用