From f8352856126491a3c9f70ebdb98479141eb468cb Mon Sep 17 00:00:00 2001 From: cbia <13291533+cbia@user.noreply.gitee.com> Date: Tue, 22 Jul 2025 23:43:22 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../images/day1" | 2 + ...76\347\250\213\347\254\224\350\256\260.md" | 362 ++++++++++++++++++ 2 files changed, 364 insertions(+) create mode 100644 "2025/\347\254\2545\347\273\204(CanMV-K230)/\350\265\265\345\256\266\344\271\220/images/day1" create mode 100644 "2025/\347\254\2545\347\273\204(CanMV-K230)/\350\265\265\345\256\266\344\271\220/\343\200\220RSOC25\343\200\221Day1 \350\257\276\347\250\213\347\254\224\350\256\260.md" diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\350\265\265\345\256\266\344\271\220/images/day1" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\350\265\265\345\256\266\344\271\220/images/day1" new file mode 100644 index 0000000..efa89bd --- /dev/null +++ "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\350\265\265\345\256\266\344\271\220/images/day1" @@ -0,0 +1,2 @@ +d:\wechat file\xwechat_files\wxid_d2uqlj2fm94x22_dc33\temp\RWTemp\2025-07\9e20f478899dc29eb19741386f9343c8\341463715579038cdf7b0a5d7f864a63.pngd:\wechat file\xwechat_files\wxid_d2uqlj2fm94x22_dc33\temp\RWTemp\2025-07\aacebbdb17de939e365514232196980d\e8ddd7c1d95a5f9a2edd01c692ca14de.png +d:\wechat file\xwechat_files\wxid_d2uqlj2fm94x22_dc33\temp\RWTemp\2025-07\aacebbdb17de939e365514232196980d\e8ddd7c1d95a5f9a2edd01c692ca14de.png \ No newline at end of file diff --git "a/2025/\347\254\2545\347\273\204(CanMV-K230)/\350\265\265\345\256\266\344\271\220/\343\200\220RSOC25\343\200\221Day1 \350\257\276\347\250\213\347\254\224\350\256\260.md" "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\350\265\265\345\256\266\344\271\220/\343\200\220RSOC25\343\200\221Day1 \350\257\276\347\250\213\347\254\224\350\256\260.md" new file mode 100644 index 0000000..142eb04 --- /dev/null +++ "b/2025/\347\254\2545\347\273\204(CanMV-K230)/\350\265\265\345\256\266\344\271\220/\343\200\220RSOC25\343\200\221Day1 \350\257\276\347\250\213\347\254\224\350\256\260.md" @@ -0,0 +1,362 @@ +# 【RSOC25】Day1 课程笔记:git环境配置 +# 1. 新建目录与拉取仓库操作指南 +## 1.1 git下载网站: +下载网站:https://git-scm.com/downloads/win 选择x64版本 +![image1](images/day1/image1.png) +下载完成后,可以在win中看见git应用 +![image2](images/day1/image2.png) + +## 1.2 将RT-Thread代码拉取到本地 +### 1.2.1 在D盘新建一个RSOC的目录,用来存放RT-Thread的相关文件 +![image3](images/day1/image3.png) +新建完成后里面什么都没有 +![image4](images/day1/image4.png) +### 1.2.2 打开git base软件,并将当前工作目录切换到刚刚新建的2025-RSOC目录 +1. cd命令可切换工作目录 +![image5](images/day1/image5.png) +2. 打开git的仓库包 +链接:https://github.com/RT-Thread/rt-thread +![image6](images/day1/image6.png) +3. 点击code找到HTTP的链接,并复制。如下图所示 +链接为:https://github.com/RT-Thread/rt-thread.git +![image7](images/day1/image7.png) +4. 将链接粘贴后,到git-Bash中使用git clone命令进行仓库的拉取 +命令:``git clone https://github.com/RT-Thread/rt-thread.git`` +![image8](images/day1/image8.png) +__【备用方案】在gitee中克隆镜像的仓库(由于我的网络不稳定,所以我采用的是这个方案)__ +链接:https://gitee.com/mirrors_RT-Thread/rt-thread +同样也是复制HTTP的链接到git-Bash中进行仓库的拉取 +![image9](images/day1/image9.png) +![image10](images/day1/image10.png) +当进度条为百分百之后,表示仓库以及拉取完毕,可打开文件夹验证 +![image11](images/day1/image11.png) +![image12](images/day1/image12.png) + +## 1.3 拉取ENV工具(构建工具) +新建一个用来存放ENV工具的文件夹,在刚刚的文件夹下新建 +![image13](images/day1/image13.png) +仓库链接:https://github.com/RT-Thread/env-windows +![image14](images/day1/image14.png) +### 另一种使用git的方式:直接在当前要存放的文件夹下,打开命令提示符,并在此输入仓库拉取的命令(在网址下有克隆的命令) +命令:``git clone --recursive --depth 1 https://gitee.com/mirrors_RT-Thread/env-windows.git`` +![image15](images/day1/image15.png) +![image16](images/day1/image16.png) +当进度条为百分百之后,表示仓库以及拉取完毕,可打开文件夹验证 +![image17](images/day1/image17.png) +拉取成功后可以在文件夹中找到 +![image18](images/day1/image18.png) + +## 1.4 ENV的配置 +1. 打开刚刚拉取的ENV仓库,打开env.bat(第一次打开会自动配置一些依赖,等它下载完成以后就是配置好了,下面第一张图为正在配置,第二张图就是配置好了) +![image19](images/day1/image19.png) +![image20](images/day1/image20.png) +2. 打开右上角的setting,找到Integration栏,点击Register(注册),它会将env注册到我们的一个系统里面 +![image21](images/day1/image21.png) +![image22](images/day1/image22.png) +注册好以后,可以在文件夹中通过右键打开env +![image23](images/day1/image23.png) + +# 2. 环境配置与代码编译操作指南 +## 2.1 在rt-thread文件夹下右键打开env,可以看见env工作目录即为打开的文件夹,在env中输入 pkgs --update 进行更新 +### 检查 Env 工具是否正常工作 +命令: +``pkgs --list `` # 查看已安装的包 +``menuconfig `` # 检查配置界面是否正常 +![image24](images/day1/image24.png) +## 2.2 RT-Thread源代码目录结构 +![image25](images/day1/image25.png) + +# 3. Q启动与代码编辑操作指南 +1. 在D:\2025-RSOC\rt-thread\bsp\qemu-vexpress-a9目录下重新打开env +![image26](images/day1/image26.png) +2. 输入 ``menuconfig ``进行配置 +![image27](images/day1/image27.png) +![image28](images/day1/image28.png) +第一次进来,按下Q退出,会提示“是否需要保存” +![image29](images/day1/image29.png) +保存后,退出,输入 ``scons -j4 ``进行编译 (4取决于电脑的进程数) +![image30](images/day1/image30.png) +![image31](images/day1/image31.png) +输入``ls `` 查看目录下的文件,可以看到,当前目录以及成功编译出了.elf文件 +将.elf文件使用烧入工具把它烧录到对应的板子就可以运行起来了 +![image32](images/day1/image32.png) +3. 使用Q对它进行启动,由于没有打开GUI,直接使用没有中心化的版本 +命令: qemu-nographic.bat +![image33](images/day1/image33.png) + +# 4. git bash 环境中查用命令 +1. 命令:``help``(可以查看支持的一些命令) +![image34](images/day1/image34.png) +2. 命令:list device(可以查看当前开启的一些设备) +![image36](images/day1/image36.png) +3. 命令:``list thread``(可以查看当前开启的线程) +![image37](images/day1/image37.png) +显示栏中一些参数的含义 +![image38](images/day1/image38.png) +4. 命令:``list timer``(可以查看当前的定时器) +![image39](images/day1/image39.png) +5. ctrl+A+X:退出当前的终端 +![image40](images/day1/image40.png) +【遇到的问题】在我的电脑中,按下ctrl+A+X是打出一堆笑脸 +【解决办法】按下ctrl+a再松开,再按x就可以退出了 + +# 5. 终端操作与构建系统应用 +## 5.1 用VScode打开D:\2025-RSOC\rt-thread\bsp\qemu-vexpress-a9 +1. 选择打开文件夹,找到这个文件夹 +![image41](images/day1/image41.png) +![image42](images/day1/image42.png) +2. 如果跳出是否信任此作者,请选择信任 +![image43](images/day1/image43.png) +3. 打开完成后如下图所示 +![image44](images/day1/image44.png) +4. 在applications栏下找到main.c,在main.c中对dsp代码进行编辑 +![image45](images/day1/image45.png) +5. 加入一句打印的语句 +![image46](images/day1/image46.png) +6. 加入完成后,对此进行编译(__加入完成后,一定要保存!!!__) +命令:``scons -j4 `` +![image47](images/day1/image47.png) +7. 编译完成后,输入命令让它跑起来 +命令:``qemu-nographic.bat`` +可以看到我们刚刚写的2025-RSOC被打印到终端上了 +![image48](images/day1/image48.png) +## 5.2 思考:ENV是怎么把.c文件添加到构建中的? +1. 找到根目录中的一个SConscript文件 +![image49](images/day1/image49.png) +在此文件中采用递归查找同样是SConscript的文件 +![image50](images/day1/image50.png) +2. 找到内文件中的一个SConscript文件 +![image51](images/day1/image51.png) +3. 运行过程:在编译时,首先会找到根目录先的SConscript文件,进行递归搜索,搜索到子目录中的SConscript文件,会继续往下递归。并将.c文件添加到SRC中。 +![image52](images/day1/image52.png) +## 5.3 思考:如何将新的目录添加到当前的构建系统中? +1. 创建一个新的目录(test1) +![image53](images/day1/image53.png) +![image54](images/day1/image54.png) +2. 在test1中新建.c文件,并输入一些代码(方便起见,直接用main.c) +![image55](images/day1/image55.png) +![image56](images/day1/image56.png) +main.c中的代码如下: +![image58](images/day1/image58.png) +3. 将test.c添加到当前的构建中 +创建一个SConscript脚本,因为下面没有文件夹,所以不需要再递归了 +脚本代码如下 +![image57](images/day1/image57.png) +4. 编写完成后,保存,进行编译 +![image59](images/day1/image60.png) +5. 编译完成后,运行查看效果,效果和刚才一样 +![image60](images/day1/image61.png) +## 5.4 代码规范 +### 例:比如要获取传感器的数据 +新建一个目录专门放置传感器的代码,如Sensor +![image62](images/day1/image62.png) + +# 6.管理包 +1. 打开menuconfig +![image63](images/day1/image63.png) +2. 找到Enable LVGL for LCD,将它打开 +依次打开下面的栏 +![image64](images/day1/image64.png) +![image65](images/day1/image65.png) +![image66](images/day1/image66.png) +3. 然后返回,在Kconfig中查看是否配置完成,可以看到在Kconfig中看见Enable LVGL for LCD,说明配置成功,并且将这个配置自动创建到.config中 +![image67](images/day1/image67.png) +4. 使用`` pkgs --update`` 进行下载 +![image68](images/day1/image68.png) +5. 下载完成以后,输入`` scons -j4`` 进行编译 +![image69](images/day1/image69.png) +![image70](images/day1/image70.png) +6. 编译完成后,运行 ``qemu.bat`` +![image71](images/day1/image71.png) +![image72](images/day1/image72.png) +# 7.git版本控制系统与基本使用介绍 +## 7.1 核心概念 +### Git:它是一个版本控制系统。把它想象成一个超级智能的 “时光机器” 或 “文档追踪器”。 +#### 1. 它的核心工作是跟踪文件的变化。每次你对文件做了重要的修改(比如完成一个功能、修复一个 bug),你就可以告诉 Git 记录下这个 “快照”。 +#### 2. 它允许你回溯历史。如果你改错了东西,或者想看看一周前的代码是什么样子,Git 可以轻松带你回到那个 “快照” 的状态。 +#### 3. 它支持协作。多人可以在同一个项目上工作,Git 能帮大家合并各自的修改,管理不同版本。 +#### 4. 它支持分支。想象你在写小说,想尝试一个不同的结局。Git 允许你创建一个独立的分支来写这个结局,而不会影响主线故事。写完后,你可以决定是否合并回主线。 +### 本地 Git 仓库 (Repository / Repo):这是 Git 工作的核心场所。把它理解成一个项目专属的数据库或时光胶囊。 +#### 1. 位置:它通常是你项目根目录下的一个隐藏文件夹(名为 .git )。 +#### 2. 内容:这个文件夹里包含了 Git 运作所需的一切: +1. 项目的所有文件的历史版本(以高效压缩的方式存储)。 +2. 记录每次修改的日志(谁、什么时候、改了哪里、为什么改)。 +3. 指向当前状态和各个历史版本的指针。 +4. 分支信息、标签信息、远程仓库地址等配置。 +#### 3.作用:对项目文件的所有修改记录都保存在这里。 +### 如何理解它们之间的关系? +#### 想象你有一个木匠工作坊(你的项目文件夹)。 +#### Git 就像是这个工作坊的管理系统,负责记录每件工具的摆放位置(文件状态)、每次制作家具的步骤(修改历史)、不同的设计方案草稿(分支)。 +#### Git 仓库 (.git 文件夹) 就是这个工作坊里一个特殊的、上了锁的档案室。里面存放着: +1. 所有工具的详细清单和每次使用记录。 +2. 每件家具从木料到成品的完整制作过程录像(所有历史版本)。 +3. 不同设计方案(分支)的图纸和模型。 +#### 当你在工作坊(项目目录)里干活(修改文件)时,Git 系统(通过命令)让你可以选择: +1. 暂存 (git add):把改动好的零件 / 图纸放进一个 “准备区”,告诉 Git 系统这些是下次要记录进档案室的。 +2. 提交 (git commit):把 “准备区” 的东西正式拍个快照,存档到档案室(仓库)里,并写下这次存档的说明(比如 “完成了桌面打磨” )。这就是创建了一个新的历史版本。 +3. 查看历史 (git log):去档案室翻阅以前的存档记录和快照。 +4. 回退 (git checkout,git reset):根据档案室的记录,把工作坊恢复到某个历史快照的状态(比如桌面打磨前的状态)。 +5. 创建分支 (git branch/git checkout -b):复制一份当前的设计图纸,开始尝试一个新的设计方案,不影响原来的主线设计。 +6. 合并分支 (git merge):把新设计方案中满意的部分合并回主线设计。 +## 7.2自己创建仓库 +### 7.2.1 使用git bash创建 +1. 新建一个文件夹,命名为test +![image73](images/day1/image73.png) +2. 初始化仓库:``git init`` +![image74](images/day1/image74.png) +初始化完成后,本地会有一个.git文件夹 +![image75](images/day1/image75.png) +3. 在test文件夹中新建一个文本,命名为hello.txt,并且编写一些内容 +![image76](images/day1/image76.png) +4. 使用 ``git status`` 查看它的状态 +[标红原因:没有添加到暂存区] +![image77](images/day1/image77.png) +使用``git add . ``将当前文件添加到暂存区 +![image78](images/day1/image78.png) +再次使用 ``git status``查看它的状态 +![image79](images/day1/image79.png) +5. 使用 ``git commit ``提交到仓库,使用`` -m "测试提交" ``添加说明 +![image80](images/day1/image80.png) +[遇到的问题]显示这个是因为没有配置全局信息,利用下面的代码配置完成后,再次运行就可以了: +![image81](images/day1/image81.png) +![image82](images/day1/image82.png) +使用``git log``命令显示日志 +![image83](images/day1/image83.png) +### 7.2.2 使用vscode插件创建 +1. 用vscode打开当前目录 +![image84](images/day1/image84.png) +2. 安装扩展:git graph +![image85](images/day1/image85.png) +3. 可以在git graph中进行源代码管理 +![image86](images/day1/image86.png) +4. 怎么在git graph中提交文件到仓库 +新建一个1.txt并在1.txt中写入内容 +![image87](images/day1/image87.png) +![image88](images/day1/image88.png) +5. 打开源代码管理,会看见更改的内容,对应了git status +![image89](images/day1/image89.png) +6. 在文件右边选择暂存更改 +![image90](images/day1/image90.png) +7. 将暂存的文件进行提交,并添加说明 +![image91](images/day1/image91.png) +8. 提交后就可以在图形中看见了 +![image92](images/day1/image92.png) +### 7.2.3 创建分支 +1. 在图形栏右键创建分支 +![image93](images/day1/image93.png) +2. 输入分支名字(比如first) +![image94](images/day1/image94.png) +3. 在图形栏可以看见被标为了first,这表示创建完毕 +![image95](images/day1/image95.png) +4. 新建一个2.text文件,并将其提交 +![image96](images/day1/image96.png) +![image97](images/day1/image97.png) +![image98](images/day1/image98.png) +5. 新建一个终端,使用 ``git branch -a ``查看当前所有分支 +![image99](images/day1/image99.png) +6. 使用``git switch master`` 可以切换分支 +![image100](images/day1/image100.png) +7. 使用 ``git checkout -b test`` 创建分支,并且图形已经切换到了test分支 +![image101](images/day1/image101.png) +8. 使用``git reset --hard HEAD~``强制回到上一次的提交(把第三次的修改去掉)【硬重置】 +![image102](images/day1/image102.png) +9. 使用``git reset --soft HEAD~``将上一次提交放回暂存区【软重置】 +![image103](images/day1/image103.png) +### 7.3 使用命令查看RT-thread仓库的情况 +1. 打开源码管理 +![image104](images/day1/image104.png) +在这里面可以查看一些修改 +![image105](images/day1/image105.png) +点击撤回可以撤回到刚刚从拉下来的状态 +![image106](images/day1/image106.png) +![image107](images/day1/image107.png) +2. 在D:\2025-RSOC\rt-thread\bsp\qemu-vexpress-a9中重新输入menuconfig,并进行编译运行 +![image108](images/day1/image108.png) +![image109](images/day1/image109.png) +### 7.4 远端仓库提交 +示例远程仓库:https://gitee.com/rtthread/rsoc-rtt +默认是没有权限的,只能通过DPR对仓库进行修改 +#### 7.4.1 将本地仓库推送到远端仓库 +1. 将仓库拉取到本地(进行fork) +![image110](images/day1/image110.png) +打开fork下来的仓库(前缀已经变成了我们的用户名),我们可以对它进行修改 +![image111](images/day1/image111.png) +为了将代码推送到远端仓库,根据下面的提示进行配置(用户信息和密钥) +![image112](images/day1/image112.png) +![image113](images/day1/image113.png) +得到加密后的密钥 +![image114](images/day1/image114.png) +![image115](images/day1/image115.png) +把得到的密钥粘贴到自己的SSH公钥中 +![image116](images/day1/image116.png) +到网站中复制SSH的链接 +![image117](images/day1/image117.png) +![image118](images/day1/image118.png) +在D:\2025-RSOC文件夹中进行拉取(命令:git clone git@gitee.com:zhou-strontium-qi/rsoc-rtt.git) +![image119](images/day1/image119.png) +2. 在当前目录下打开vs code(命令:code .) +![image120](images/day1/image120.png) +3. 新建一个自己的文件夹并新建一个.md文件用来记笔记 +![image121](images/day1/image121.png) +记笔记的语法参考:https://markdown.com.cn/basic-syntax/paragraphs.html +5. 在vscode右上角可以打开预览,看一下笔记的样子 +![image122](images/day1/image122.png) +![image123](images/day1/image123.png) +6. 进入源代码管理进行提交【注意:不要提交到主分支】 +![image124](images/day1/image124.png) +![image125](images/day1/image125.png) +7. 使用软重置将刚刚提交的内容放回暂存区 +![image126](images/day1/image126.png) +8. 使用``git checkout -b first_notes``创建分支并重新提交 +![image127](images/day1/image127.png) +9. 使用 ``git push origin first_notes``推送到远程仓库 +![image128](images/day1/image128.png) +10. 刷新远程仓库,可以看见新建的分支和刚刚新建的笔记 +![image129](images/day1/image129.png) +![image130](images/day1/image130.png) +##### 7.4.2 PR +1. 在网页端新建pull requests +![image132](images/day1/image132.png) +2. 选择正确的源分支和目标分支 +![image131](images/day1/image131.png) +3. 填写完内容以后就可以提交了 +![image133](images/day1/image133.png) + +# 8. 整体架构以及常用命令 +## 8.1 整体架构 +![image134](images/day1/image134.png) +## 8.2 常用命令 +1. 初始化一个新的Git仓库 +``git init`` +2. 查看当前 Git 仓库中文件的状态 +``git status`` +3. 将当前目录(包括子目录)下所有有修改、新增等状态变化的文件,添加到 Git 的暂存区 +``git add .`` +4. 把暂存区的文件变动,正式提交到本地 Git 仓库,创建一个新的版本记录 +-m 选项后面跟着的是提交说明 +``git commit -m "本次提交说明" `` +5. 查看本地 Git 仓库的提交历史记录 +``git log`` +6. 查看当前所有分支 +``git branch -a`` +7. 切换分支 +``git switch master`` +8. 创建分支 +``git checkout -b test`` +9. 硬重置 +`` git reset --hard HEAD~`` +10. 软重置 +`` git reset --sort HEAD~ `` +11. 推送到远程仓库 +`` git push origin first_notes`` +12. 推送至远端仓库的代码修改 +`` git push origin test --force`` +[需要先进行硬重置] +13. 删除分支之后更新 +`` git pull `` + +# 9.参考资料 +git使用教程:https://mp.weixin.qq.com/s/raSGv-aLHjK1HUcLZvQBeA +Markdown使用教程:https://markdown.com.cn/basic-syntax/paragraphs.html +RT-Thread文档中心:https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/basic/basic + -- Gitee