update:stm32

This commit is contained in:
dichgrem
2025-11-17 12:05:04 +08:00
parent 1c22b82f58
commit 954182c59b
17 changed files with 176 additions and 3 deletions

View File

@@ -46,6 +46,7 @@ sudo apt install -y git python3 scons openocd stlink-tools gcc-arm-none-eabi gdb
stlink-tool
gcc-arm-embedded
picocom
renode-bin
];
};
});
@@ -55,7 +56,7 @@ sudo apt install -y git python3 scons openocd stlink-tools gcc-arm-none-eabi gdb
## 源码
使用Git拉取RT-Thread开源项目:
使用Git拉取项目源码
```shell
git clone https://github.com/RT-Thread/rt-thread.git
@@ -249,5 +250,93 @@ This warning is for project developers. Use -Wno-dev to suppress it.
[100%] Built target rtthread.elf
```
## 使用Renode
如果没有真实的开发版可以使用Renode来进行仿真模拟
```shell
# 启动renode
renode
# 创建机器
(monitor) mach create
# 加载STM32F407平台
(monitor) machine LoadPlatformDescription @platforms/boards/stm32f4_discovery.repl
# 加载你的固件
(monitor) sysbus LoadELF @/你的路径/rtthread.elf
# 打开串口窗口finsh会显示在这里
(monitor) showAnalyzer sysbus.usart1
# 启动仿真
(monitor) start
```
> Renode 常用命令大全
```bash
# 机器管理
mach add "名称" # 创建新机器(指定名称)
mach create # 创建新机器(自动命名)
mach set "名称" # 切换到指定机器
mach set 0 # 切换到编号0的机器
mach rem "名称" # 删除机器
mach clear # 清除当前选择
mach # 显示帮助信息
emulation # 查看仿真信息
# 仿真控制
start # 启动仿真
pause # 暂停仿真
quit # 退出Renode
# 帮助
help # 显示帮助
help 命令名 # 查看特定命令帮助
# 加载固件
sysbus LoadELF @/path/to/firmware.elf # 加载ELF文件
sysbus LoadBinary @/path/to/firmware.bin 0x8000000 # 加载BIN到指定地址
# 重置
sysbus Reset # 重置系统总线
machine Reset # 重置整个机器
# 读取内存
sysbus ReadByte 0x20000000 # 读1字节
sysbus ReadWord 0x20000000 # 读2字节
sysbus ReadDoubleWord 0x20000000 # 读4字节
# 写入内存
sysbus WriteByte 0x20000000 0xFF
sysbus WriteWord 0x20000000 0x1234
sysbus WriteDoubleWord 0x20000000 0x12345678
# 查看内存区域
sysbus FindSymbolAt 0x08000000 # 查找地址对应的符号
# 查看GPIO端口
sysbus.gpioPortA
# 设置GPIO状态
sysbus.gpioPortA.0 Set true # 设置PA0为高
sysbus.gpioPortA.0 Set false # 设置PA0为低
sysbus.gpioPortA.0 Toggle # 切换PA0状态
# 读取GPIO状态
sysbus.gpioPortA.0 State
# 使用GDB调试
(monitor) machine StartGdbServer 3333
# 另一个终端
arm-none-eabi-gdb firmware.elf
(gdb) target remote :3333
(gdb) load
(gdb) b main
(gdb) c
```
---
**Done.**

View File

@@ -157,6 +157,7 @@
</span><span> </span><span style="color:#ffb964;">stlink-tool
</span><span> </span><span style="color:#ffb964;">gcc-arm-embedded
</span><span> </span><span style="color:#ffb964;">picocom
</span><span> </span><span style="color:#ffb964;">renode-bin
</span><span> ];
</span><span> };
</span><span> });
@@ -164,7 +165,7 @@
</span><span>}
</span></code></pre>
<h2 id="yuan-ma">源码</h2>
<p>使用Git拉取RT-Thread开源项目:</p>
<p>使用Git拉取项目源码</p>
<pre data-lang="shell" style="background-color:#151515;color:#e8e8d3;" class="language-shell "><code class="language-shell" data-lang="shell"><span>git clone https://github.com/RT-Thread/rt-thread.git
</span><span>git clone https://github.com/RT-Thread-Studio/sdk-bsp-stm32f407-spark.git
</span></code></pre>
@@ -316,6 +317,89 @@
</span><span> 98516 1468 8400 108384 1a760 rtthread.elf
</span><span>[100%] Built target rtthread.elf
</span></code></pre>
<h2 id="shi-yong-renode">使用Renode</h2>
<p>如果没有真实的开发版可以使用Renode来进行仿真模拟</p>
<pre data-lang="shell" style="background-color:#151515;color:#e8e8d3;" class="language-shell "><code class="language-shell" data-lang="shell"><span># 启动renode
</span><span>renode
</span><span>
</span><span># 创建机器
</span><span>(monitor) mach create
</span><span>
</span><span># 加载STM32F407平台
</span><span>(monitor) machine LoadPlatformDescription @platforms/boards/stm32f4_discovery.repl
</span><span>
</span><span># 加载你的固件
</span><span>(monitor) sysbus LoadELF @/你的路径/rtthread.elf
</span><span>
</span><span># 打开串口窗口finsh会显示在这里
</span><span>(monitor) showAnalyzer sysbus.usart1
</span><span>
</span><span># 启动仿真
</span><span>(monitor) start
</span></code></pre>
<blockquote>
<p>Renode 常用命令大全</p>
</blockquote>
<pre data-lang="bash" style="background-color:#151515;color:#e8e8d3;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#888888;"># 机器管理
</span><span style="color:#ffb964;">mach</span><span> add </span><span style="color:#556633;">&quot;</span><span style="color:#99ad6a;">名称</span><span style="color:#556633;">&quot; </span><span style="color:#888888;"># 创建新机器(指定名称)
</span><span style="color:#ffb964;">mach</span><span> create </span><span style="color:#888888;"># 创建新机器(自动命名)
</span><span style="color:#ffb964;">mach</span><span> set </span><span style="color:#556633;">&quot;</span><span style="color:#99ad6a;">名称</span><span style="color:#556633;">&quot; </span><span style="color:#888888;"># 切换到指定机器
</span><span style="color:#ffb964;">mach</span><span> set 0 </span><span style="color:#888888;"># 切换到编号0的机器
</span><span style="color:#ffb964;">mach</span><span> rem </span><span style="color:#556633;">&quot;</span><span style="color:#99ad6a;">名称</span><span style="color:#556633;">&quot; </span><span style="color:#888888;"># 删除机器
</span><span style="color:#ffb964;">mach</span><span> clear </span><span style="color:#888888;"># 清除当前选择
</span><span style="color:#ffb964;">mach </span><span style="color:#888888;"># 显示帮助信息
</span><span style="color:#ffb964;">emulation </span><span style="color:#888888;"># 查看仿真信息
</span><span>
</span><span style="color:#888888;"># 仿真控制
</span><span style="color:#ffb964;">start </span><span style="color:#888888;"># 启动仿真
</span><span style="color:#ffb964;">pause </span><span style="color:#888888;"># 暂停仿真
</span><span style="color:#ffb964;">quit </span><span style="color:#888888;"># 退出Renode
</span><span>
</span><span style="color:#888888;"># 帮助
</span><span>help </span><span style="color:#888888;"># 显示帮助
</span><span>help 命令名 </span><span style="color:#888888;"># 查看特定命令帮助
</span><span>
</span><span style="color:#888888;"># 加载固件
</span><span style="color:#ffb964;">sysbus</span><span> LoadELF @/path/to/firmware.elf </span><span style="color:#888888;"># 加载ELF文件
</span><span style="color:#ffb964;">sysbus</span><span> LoadBinary @/path/to/firmware.bin 0x8000000 </span><span style="color:#888888;"># 加载BIN到指定地址
</span><span>
</span><span style="color:#888888;"># 重置
</span><span style="color:#ffb964;">sysbus</span><span> Reset </span><span style="color:#888888;"># 重置系统总线
</span><span style="color:#ffb964;">machine</span><span> Reset </span><span style="color:#888888;"># 重置整个机器
</span><span>
</span><span style="color:#888888;"># 读取内存
</span><span style="color:#ffb964;">sysbus</span><span> ReadByte 0x20000000 </span><span style="color:#888888;"># 读1字节
</span><span style="color:#ffb964;">sysbus</span><span> ReadWord 0x20000000 </span><span style="color:#888888;"># 读2字节
</span><span style="color:#ffb964;">sysbus</span><span> ReadDoubleWord 0x20000000 </span><span style="color:#888888;"># 读4字节
</span><span>
</span><span style="color:#888888;"># 写入内存
</span><span style="color:#ffb964;">sysbus</span><span> WriteByte 0x20000000 0xFF
</span><span style="color:#ffb964;">sysbus</span><span> WriteWord 0x20000000 0x1234
</span><span style="color:#ffb964;">sysbus</span><span> WriteDoubleWord 0x20000000 0x12345678
</span><span>
</span><span style="color:#888888;"># 查看内存区域
</span><span style="color:#ffb964;">sysbus</span><span> FindSymbolAt 0x08000000 </span><span style="color:#888888;"># 查找地址对应的符号
</span><span>
</span><span style="color:#888888;"># 查看GPIO端口
</span><span style="color:#ffb964;">sysbus.gpioPortA
</span><span>
</span><span style="color:#888888;"># 设置GPIO状态
</span><span style="color:#ffb964;">sysbus.gpioPortA.0</span><span> Set true </span><span style="color:#888888;"># 设置PA0为高
</span><span style="color:#ffb964;">sysbus.gpioPortA.0</span><span> Set false </span><span style="color:#888888;"># 设置PA0为低
</span><span style="color:#ffb964;">sysbus.gpioPortA.0</span><span> Toggle </span><span style="color:#888888;"># 切换PA0状态
</span><span>
</span><span style="color:#888888;"># 读取GPIO状态
</span><span style="color:#ffb964;">sysbus.gpioPortA.0</span><span> State
</span><span>
</span><span style="color:#888888;"># 使用GDB调试
</span><span>(</span><span style="color:#ffb964;">monitor</span><span>) machine StartGdbServer 3333
</span><span style="color:#888888;"># 另一个终端
</span><span style="color:#ffb964;">arm-none-eabi-gdb</span><span> firmware.elf
</span><span>(</span><span style="color:#ffb964;">gdb</span><span>) target remote :3333
</span><span>(</span><span style="color:#ffb964;">gdb</span><span>) load
</span><span>(</span><span style="color:#ffb964;">gdb</span><span>) b main
</span><span>(</span><span style="color:#ffb964;">gdb</span><span>) c
</span></code></pre>
<hr />
<p><strong>Done.</strong></p>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
{"version":"1.3.0","languages":{"en":{"hash":"en_ed2b9b5593","wasm":"en","page_count":77}}}
{"version":"1.3.0","languages":{"en":{"hash":"en_53f3a95adf","wasm":"en","page_count":77}}}

Binary file not shown.