diff --git a/content/linux-2-stm32.md b/content/linux-2-stm32.md index c6cfecd..c6481c0 100644 --- a/content/linux-2-stm32.md +++ b/content/linux-2-stm32.md @@ -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.** \ No newline at end of file diff --git a/public/linux-2-stm32/index.html b/public/linux-2-stm32/index.html index 23de123..fc2a5a7 100644 --- a/public/linux-2-stm32/index.html +++ b/public/linux-2-stm32/index.html @@ -157,6 +157,7 @@ stlink-tool gcc-arm-embedded picocom + renode-bin ]; }; }); @@ -164,7 +165,7 @@ }
使用Git拉取RT-Thread开源项目:
+使用Git拉取项目源码:
git clone https://github.com/RT-Thread/rt-thread.git
git clone https://github.com/RT-Thread-Studio/sdk-bsp-stm32f407-spark.git
@@ -316,6 +317,89 @@
98516 1468 8400 108384 1a760 rtthread.elf
[100%] Built target rtthread.elf
+如果没有真实的开发版,可以使用Renode来进行仿真模拟:
+# 启动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 常用命令大全
+
# 机器管理
+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.
diff --git a/public/pagefind/fragment/en_3a86d37.pf_fragment b/public/pagefind/fragment/en_3a86d37.pf_fragment deleted file mode 100644 index 6c0c718..0000000 Binary files a/public/pagefind/fragment/en_3a86d37.pf_fragment and /dev/null differ diff --git a/public/pagefind/fragment/en_b99cdbd.pf_fragment b/public/pagefind/fragment/en_b99cdbd.pf_fragment new file mode 100644 index 0000000..372e7cc Binary files /dev/null and b/public/pagefind/fragment/en_b99cdbd.pf_fragment differ diff --git a/public/pagefind/index/en_1b429f1.pf_index b/public/pagefind/index/en_1b429f1.pf_index deleted file mode 100644 index c08f923..0000000 Binary files a/public/pagefind/index/en_1b429f1.pf_index and /dev/null differ diff --git a/public/pagefind/index/en_2c882aa.pf_index b/public/pagefind/index/en_2c882aa.pf_index new file mode 100644 index 0000000..fa5a614 Binary files /dev/null and b/public/pagefind/index/en_2c882aa.pf_index differ diff --git a/public/pagefind/index/en_3af27a9.pf_index b/public/pagefind/index/en_3af27a9.pf_index deleted file mode 100644 index ff190ca..0000000 Binary files a/public/pagefind/index/en_3af27a9.pf_index and /dev/null differ diff --git a/public/pagefind/index/en_3d8b19f.pf_index b/public/pagefind/index/en_3d8b19f.pf_index new file mode 100644 index 0000000..2a4c4d0 Binary files /dev/null and b/public/pagefind/index/en_3d8b19f.pf_index differ diff --git a/public/pagefind/index/en_7ba9a6c.pf_index b/public/pagefind/index/en_7ba9a6c.pf_index new file mode 100644 index 0000000..6aad1d0 Binary files /dev/null and b/public/pagefind/index/en_7ba9a6c.pf_index differ diff --git a/public/pagefind/index/en_b92ee66.pf_index b/public/pagefind/index/en_b92ee66.pf_index new file mode 100644 index 0000000..53368a0 Binary files /dev/null and b/public/pagefind/index/en_b92ee66.pf_index differ diff --git a/public/pagefind/index/en_bb2d0e3.pf_index b/public/pagefind/index/en_bb2d0e3.pf_index new file mode 100644 index 0000000..ea3aad3 Binary files /dev/null and b/public/pagefind/index/en_bb2d0e3.pf_index differ diff --git a/public/pagefind/index/en_c64ced2.pf_index b/public/pagefind/index/en_c64ced2.pf_index deleted file mode 100644 index 967c852..0000000 Binary files a/public/pagefind/index/en_c64ced2.pf_index and /dev/null differ diff --git a/public/pagefind/index/en_ca43cc9.pf_index b/public/pagefind/index/en_ca43cc9.pf_index deleted file mode 100644 index c0622d9..0000000 Binary files a/public/pagefind/index/en_ca43cc9.pf_index and /dev/null differ diff --git a/public/pagefind/index/en_d56422d.pf_index b/public/pagefind/index/en_d56422d.pf_index deleted file mode 100644 index cb1558c..0000000 Binary files a/public/pagefind/index/en_d56422d.pf_index and /dev/null differ diff --git a/public/pagefind/pagefind-entry.json b/public/pagefind/pagefind-entry.json index 5e0ffef..79c9814 100644 --- a/public/pagefind/pagefind-entry.json +++ b/public/pagefind/pagefind-entry.json @@ -1 +1 @@ -{"version":"1.3.0","languages":{"en":{"hash":"en_ed2b9b5593","wasm":"en","page_count":77}}} \ No newline at end of file +{"version":"1.3.0","languages":{"en":{"hash":"en_53f3a95adf","wasm":"en","page_count":77}}} \ No newline at end of file diff --git a/public/pagefind/pagefind.en_53f3a95adf.pf_meta b/public/pagefind/pagefind.en_53f3a95adf.pf_meta new file mode 100644 index 0000000..0b45b5e Binary files /dev/null and b/public/pagefind/pagefind.en_53f3a95adf.pf_meta differ diff --git a/public/pagefind/pagefind.en_ed2b9b5593.pf_meta b/public/pagefind/pagefind.en_ed2b9b5593.pf_meta deleted file mode 100644 index d6af0ec..0000000 Binary files a/public/pagefind/pagefind.en_ed2b9b5593.pf_meta and /dev/null differ