mirror of
https://github.com/Dichgrem/Blog.git
synced 2025-12-16 13:32:00 -05:00
update:stm32
This commit is contained in:
@@ -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.**
|
||||
@@ -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;">"</span><span style="color:#99ad6a;">名称</span><span style="color:#556633;">" </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;">"</span><span style="color:#99ad6a;">名称</span><span style="color:#556633;">" </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;">"</span><span style="color:#99ad6a;">名称</span><span style="color:#556633;">" </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.
BIN
public/pagefind/fragment/en_b99cdbd.pf_fragment
Normal file
BIN
public/pagefind/fragment/en_b99cdbd.pf_fragment
Normal file
Binary file not shown.
Binary file not shown.
BIN
public/pagefind/index/en_2c882aa.pf_index
Normal file
BIN
public/pagefind/index/en_2c882aa.pf_index
Normal file
Binary file not shown.
Binary file not shown.
BIN
public/pagefind/index/en_3d8b19f.pf_index
Normal file
BIN
public/pagefind/index/en_3d8b19f.pf_index
Normal file
Binary file not shown.
BIN
public/pagefind/index/en_7ba9a6c.pf_index
Normal file
BIN
public/pagefind/index/en_7ba9a6c.pf_index
Normal file
Binary file not shown.
BIN
public/pagefind/index/en_b92ee66.pf_index
Normal file
BIN
public/pagefind/index/en_b92ee66.pf_index
Normal file
Binary file not shown.
BIN
public/pagefind/index/en_bb2d0e3.pf_index
Normal file
BIN
public/pagefind/index/en_bb2d0e3.pf_index
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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}}}
|
||||
BIN
public/pagefind/pagefind.en_53f3a95adf.pf_meta
Normal file
BIN
public/pagefind/pagefind.en_53f3a95adf.pf_meta
Normal file
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user