又一嵌入式开源仿真器
来源:嵌入式大杂烩发布时间:2022-11-28647浏览
询问 AI同QEMU类似,Renode也是嵌入式相关的一个模拟器。
Renode 针对物联网应用,QEMU 针对 PC 模拟器。
Renode 是一个开发框架,通过让你模拟物理硬件系统来加速物联网和嵌入式系统开发。
Renode 可以模拟 Cortex-M、RISC-V 等微控制器,不仅可以模拟 CPU指令,还可以模拟外设,甚至可以模拟板载的外设。更强的是,它可以让你在你的 PC 上运行、调试和测试未经修改的嵌入式软件-从裸机系统芯片,通过完整的设备到多节点系统。
它广泛的网络支持和多系统仿真使它成为由多个设备组成的一个测试系统。
Renode 官网:
https://renode.io/
Renode 官方文档:
https://renode.readthedocs.io/en/latest/
使用 Renode,您可以在硬件准备就绪之前开始开发,在不部署硬件的情况下测试程序,并通过减少闪存加载延迟来缩短迭代周期。
Renode 的指令模拟器使用 C 语言编写,外设模拟器使用 C# 语言编写,兼顾了运行效率和开发效率。老版本是用Mono 构建的,最新版本已经升级到.NET 6:
https://github.com/renode/renode
来源:https://blog.csdn.net/zoomdy/article/details/95445329
$uname-a
Linuxvbox4.10.0-28-generic#32~16.04.2-UbuntuSMPThuJul2010:19:48UTC2017x86_64x86_64x86_64GNU/Linux
sudoaptupdate
sudoapt-keyadv--keyserverhkp://keyserver.ubuntu.com:80--recv-keys3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
sudoaptinstallapt-transport-httpsca-certificates
echo"debhttps://download.mono-project.com/repo/ubuntustable-xenialmain"|sudotee/etc/apt/sources.list.d/mono-official-stable.list
sudoaptupdate
sudoaptinstallmono-complete
安装 Mono 快结束时有个预编译的过程,这需要花费是十几分钟的时间。
参考:
- https://github.com/renode/renode/blob/master/README.rst#installation
- https://www.mono-project.com/download/stable/#download-lin
sudoapt-getinstallpolicykit-1libgtk2.0-0screenuml-utilitiesgtk-sharp2libc6-dev
打开下载页面 https://github.com/renode/renode/releases/latest ,下载renode_1.7.1_amd64.deb。
sudodpkg-irenode_1.7.1_amd64.deb
命令行输入 renode 运行。
renode
运行之后,renode 会开启新的命令窗口用作renode 命令输入,原来的命令行窗口作为renode的日志输出窗口使用。
以下命令均在 renode 命令窗口输入。
创建机器,然后加载平台描述文件,这里是 STM32F4Discovery开发板的平台描述文件。
machcreate
machineLoadPlatformDescription@platforms/boards/stm32f4_discovery-kit
.repl
输入peripherals命令查看外设。
(machine-0)peripherals
Availableperipherals:
sysbus(SystemBus)
│
├──can0(STMCAN)
│<0x40006400,0x400067FF>
│
├──cpu(CortexM)
│Slot:0
│
├──dma1(STM32DMA)
│<0x40026000,0x400263FF>
│
├──dma2(STM32DMA)
│<0x40023400,0x400237FF>
│
├──ethernet(SynopsysEthernetMAC)
││<0x40028000,0x400293FF>
││
│├──phy(EthernetPhysicalLayer)
││Address:0
││
│└──phy1(EthernetPhysicalLayer)
│Address:1
│
├──exti(EXTI)
│<0x40013C00,0x40013FFE>
│
├──flash(MappedMemory)
│<0x08000000,0x081FFFFF>
│
├──fscmBank1(MappedMemory)
│<0x60000000,0x6FFFFFFF>
│
├──gpioPortA(STM32F4GPIOPort)
││<0x40020000,0x400203FF>
││
│├──UserButton(Button)
││
│├──externalButton(Button)
││
│└──externalLed(LED)
│
├──gpioPortB(STM32F4GPIOPort)
│<0x40020400,0x400207FF>
│
├──gpioPortC(STM32F4GPIOPort)
│<0x40020800,0x40020BFF>
│
├──gpioPortD(STM32F4GPIOPort)
││<0x40020C00,0x40020FFF>
││
│└──UserLED(LED)
│
├──gpioPortE(STM32F4GPIOPort)
│<0x40021000,0x400213FF>
│
├──gpioPortF(STM32F4GPIOPort)
│<0x40021400,0x400217FF>
│
├──nvic(NVIC)
│<0xE000E000,0xE000EFFF>
│
├──rng(STM32F4_RNG)
│<0x50060800,0x50060BFF>
│
├──rom(MappedMemory)
│<0x1FFF0000,0x1FFFFFFF>
│
├──spi1(STM32SPI)
│<0x40013000,0x400133FF>
│
├──spi2(STM32SPI)
│<0x40003800,0x40003BFF>
│
├──spi3(STM32SPI)
│<0x40003C00,0x40003FFF>
│
├──sram(MappedMemory)
│<0x20000000,0x2003FFFF>
│
├──uart1(STM32_UART)
│<0x40011000,0x400110FF>
│
├──uart2(STM32_UART)
│<0x40004400,0x400044FF>
│
├──uart3(STM32_UART)
│<0x40004800,0x400048FF>
│
├──uart4(STM32_UART)
│<0x40004C00,0x40004CFF>
│
└──uart5(STM32_UART)
<0x40005000,0x400050FF>
机器创建好了以后,就可以用 LoadELF 命令加载程序了。
sysbusLoadELF@http://antmicro.com/projects/renode/stm32f4discovery.elf-s_445441-827a0dedd3790f4559d7518320006613768b5e72
输入 start 命令启动模拟器。
start
pause
官方帮助文件:https://renode.readthedocs.io/en/latest/
来源:https://blog.csdn.net/zoomdy/article/details/95445329
版权声明:本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除。
新闻来源:嵌入式大杂烩,文中所述为作者独立观点,不代表icspec立场。更多精彩资讯请下载icspec App。如对本稿件有异议,请联系微信客服specltkj。