diff --git "a/2025/\347\254\2544\347\273\204(FRDM-MCXA156)/\346\235\234\346\265\251\347\204\266/\344\275\234\344\270\232/\347\254\2541\345\244\251\344\275\234\344\270\232.md" "b/2025/\347\254\2544\347\273\204(FRDM-MCXA156)/\346\235\234\346\265\251\347\204\266/\344\275\234\344\270\232/\347\254\2541\345\244\251\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..3b220eb0a241a33aaa831a4217b79291ad9989c9 --- /dev/null +++ "b/2025/\347\254\2544\347\273\204(FRDM-MCXA156)/\346\235\234\346\265\251\347\204\266/\344\275\234\344\270\232/\347\254\2541\345\244\251\344\275\234\344\270\232.md" @@ -0,0 +1,5 @@ +## 针对qemu平台的项目编译 +已经写在[第1天笔记](../笔记/第1天笔记.md#尝试针对qemu平台编译)中了,此处不再赘述。 + +## 整理并提交笔记 +详见夏令营仓库的[PR列表](https://gitee.com/rtthread/rsoc-rtt/pulls)及[夏令营作业收集表](https://docs.qq.com/sheet/DSkFwaW9GZVpYY0VI?tab=BB08J2) \ No newline at end of file diff --git "a/2025/\347\254\2544\347\273\204(FRDM-MCXA156)/\346\235\234\346\265\251\347\204\266/\347\254\224\350\256\260/figures/compile_1.png" "b/2025/\347\254\2544\347\273\204(FRDM-MCXA156)/\346\235\234\346\265\251\347\204\266/\347\254\224\350\256\260/figures/compile_1.png" new file mode 100644 index 0000000000000000000000000000000000000000..a80eee2dc6278b6d7f5e60ab4fe55a3cd8f48268 Binary files /dev/null and "b/2025/\347\254\2544\347\273\204(FRDM-MCXA156)/\346\235\234\346\265\251\347\204\266/\347\254\224\350\256\260/figures/compile_1.png" differ diff --git "a/2025/\347\254\2544\347\273\204(FRDM-MCXA156)/\346\235\234\346\265\251\347\204\266/\347\254\224\350\256\260/figures/compile_2.png" "b/2025/\347\254\2544\347\273\204(FRDM-MCXA156)/\346\235\234\346\265\251\347\204\266/\347\254\224\350\256\260/figures/compile_2.png" new file mode 100644 index 0000000000000000000000000000000000000000..18554ad97a39f7771f2f140d0b525935f6af8186 Binary files /dev/null and "b/2025/\347\254\2544\347\273\204(FRDM-MCXA156)/\346\235\234\346\265\251\347\204\266/\347\254\224\350\256\260/figures/compile_2.png" differ diff --git "a/2025/\347\254\2544\347\273\204(FRDM-MCXA156)/\346\235\234\346\265\251\347\204\266/\347\254\224\350\256\260/figures/gui.png" "b/2025/\347\254\2544\347\273\204(FRDM-MCXA156)/\346\235\234\346\265\251\347\204\266/\347\254\224\350\256\260/figures/gui.png" new file mode 100644 index 0000000000000000000000000000000000000000..575ba006d67c2109067fca506b9215c04e4586ac Binary files /dev/null and "b/2025/\347\254\2544\347\273\204(FRDM-MCXA156)/\346\235\234\346\265\251\347\204\266/\347\254\224\350\256\260/figures/gui.png" differ diff --git "a/2025/\347\254\2544\347\273\204(FRDM-MCXA156)/\346\235\234\346\265\251\347\204\266/\347\254\224\350\256\260/\347\254\2541\345\244\251\347\254\224\350\256\260.md" "b/2025/\347\254\2544\347\273\204(FRDM-MCXA156)/\346\235\234\346\265\251\347\204\266/\347\254\224\350\256\260/\347\254\2541\345\244\251\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..9b979a22e90989a2a961fd8d3158580b511469d6 --- /dev/null +++ "b/2025/\347\254\2544\347\273\204(FRDM-MCXA156)/\346\235\234\346\265\251\347\204\266/\347\254\224\350\256\260/\347\254\2541\345\244\251\347\254\224\350\256\260.md" @@ -0,0 +1,124 @@ +## 环境搭建与测试 + +### Git +安装版本管理软件[Git](https://git-scm.com/downloads)用于项目源代码仓库的管理和版本控制。 + +### 拉取RT-Thread项目源码 +从[github(国外)](https://github.com/RT-Thread/rt-thread)或[gitee(国内)](https://gitee.com/rtthread/rt-thread)代码仓库获取源码,使用命令 + +```sh +git clone https://gitee.com/rtthread/rt-thread.git +``` + +### 安装env工具 +从[github仓库](https://github.com/RT-Thread/env-windows)、[gitee仓库](https://gitee.com/mirrors_RT-Thread/env-windows)拉取或[官网](https://www.rt-thread.org/download.html)下载,官网的为离线版本,且版本号更新一点。其中使用了sub module,使用以下命令拉取 + +```sh +git clone --recursive --depth 1 https://github.com/RT-Thread/env-windows.git + +git clone --recursive --depth 1 https://gitee.com/mirrors_RT-Thread/env-windows.git +``` + +打开目录下的 `env.bat` 文件等待环境配置完成。 + +在命令窗口的右上角 `settings -> Integration -> Register` 将 `env` 注册到Windows右键菜单中。方便之后在对应目录打开 `env` + +先进行一次 `menuconfig` 生成配置文件,直接保存退出。 + +使用以下命令更新 +```sh +pkgs --update #更新包 + +pkgs --upgrade #更新env +``` + +可以使用 `help` 命令查看所有命令 + +### RT-Thread目录结构 +|名称 |描述 | +|-------------|---------------------------------------------------| +|bsp |Board Support Package(板级支持包)基于各种开发板的移植| +|components |RT-Thread 的各个组件代码,例如 finsh,gui 等。 | +|documentation|相关文档,如编码规范等 | +|examples |相关示例代码 | +|include |RT-Thread 内核的头文件。 | +|libcpu |各类芯片的移植代码。 | +|src |RT-Thread 内核的源文件。 | +|tools |RT-Thread 命令构建工具的脚本文件。 | + +### 尝试针对qemu平台编译 +在 `rt-thread\bsp\qemu-vexpress-a9` 目录下打开 `env` 工具,并使用menuconfig生成配置文件,直接保存退出即可。 + +使用以下命令编译,其中的数字表示编译使用的线程数。最终编译生成elf文件。 +```sh +scons -j4 #编译 +scons -c #清除编译文件 +``` + +![编译](figures/compile_1.png) + +使用以下命令启动,进入shell界面 +```sh +qemu-nographic.bat +``` + +在shell界面可以使用以下命令 +```sh +list device #查看当前所有的设备 +list thread #查看当前启动的线程 +list timer #当前使用到的定时器 +Ctrl+A松开后再按X #退出终端 +``` +尝试修改 `applications` 目录下的 `main.c` 文件后重新编译运行。 +![修改main后重新编译](figures/compile_2.png) + +### 编译过程概述 +项目的编译依赖于python脚本包括项目根目录的 `SConstruct` 、 `SConscript` 文件 以及各个目录下的`SConscript` 文件,通过递归查找目录下的 `.c` 和 `.cpp` 文件并返回,最终形成编译命令。 + +### 重新配置项目实现图像显示 +在 `rt-thread\bsp\qemu-vexpress-a9` 目录下打开 `env` 工具,并使用menuconfig生成配置文件,打开 `Hardware Drivers Config -> Onboard Peripheral Drivers -> Enable LVGL for LCD` 返回保存,更新 `Kconfig` 文件,同时会同步到 `.config` 文件中并生成 `rtconfig.h` 文件。 + +LVGL是一个软件包使用 `pkgs --update` 。实际上在保存退出后就会默认进行下载。下载的文件在根目录packages文件夹下。 + +再次编译生成elf文件并使用以下命令启动带有图形界面的终端。 +```sh +qemu.bat +``` +![图形界面](figures/gui.png) + + +### 安装VSCode +在[官网](https://code.visualstudio.com/)安装VSCode用于编辑代码及后续调试等 + +## Git使用及提交PR +Git主要用于项目的版本管理及多人协作。 + +### .git文件夹 +项目根目录下有.git文件夹,其中存储了和git 相关的文件,包括历史记录及一些配置主要的配置可以在 `config` 文件中查看。 + +### 常用命令 +```sh +git init #初始化文件夹成为一个git仓库 +git status #查看当前状态 +git add #暂存文件,将文件放到暂存区 +git log #查看历史 +git switch #切换分支 +git checkout #回退,迁出分支 +git reset --soft/--hard HEAD~ #重置,soft保留操作到暂存区hard直接删除 +git branch/checkout -b #创建新的分支 +git commit -m "本次提交说明" #提交代码 +git merge #合并分支 +``` + +### 使用ssh拉取仓库 +在第一次使用时需要创建一对密钥完成ssh配置(gitee平台) +```sh +ssh-keygen -t rsa #创建密钥对 +``` +windows环境下使用OpenSSH密钥对默认的存储位置为 `C:/Users/UserName/.ssh/` 默认文件名称为 `id_rsa(私钥)` 和 `id_rsa.pub(公钥)` 生成密钥时最好不要修改名称,修改名称会涉及到配置该目录下的 `config` 文件。使用以下命令测试配置正确性。 +```sh +ssh -T git@gitee.com +``` + +### 提交PR +首先对目标仓库进行 `fork` 操作将其拷贝到自己的仓库。本地完成编辑之后推送到自己的仓库。最后在目标仓库的PR列表提交PR请求。 \ No newline at end of file