上一篇文章,介绍了Renode的安装:初识Renode。 这一篇,继续探索Renode的用法。
Renode可以很容易地做跨机器仿真,本篇介绍Renode做机器仿真的基础操作。
1. 创建Machine
在monitor中执行mach create,将会创建一个新的machine,默认情况下,系统会自动分配machine的index,从0开始计数,分别命名为“machine-0”、“machine-1”等,并且会自动将monitor的上下文切换到新建的machine。
我们也可以通过命令指定machine的名称,例如,我们要创建一个名为“demo_machine”的machine,则可以使用mach create "demo_machine":
如果要查看所有已创建的machines,则可用help mach命令,如下图所示,该命令的结果中还指明了更多可用命令,大家可根据需要自己选择使用。
2. 切换machine
使用mach set命令可实现将monitor的上下文在不同的machine之间切换,可使用machine的名称或者index来指定需要切换的machine。
3. 装载Platform
当完成Machine的创建之后,该Machine只有一个外设,即系统总线(Renode中简写为sysbus)。此时该Machine并不具备CPU和内存,因此还无法执行任何代码。
我们可以通过 peripherals命令列出所有的外设,可以看到,此时只有sysbus:
要装载预定义平台,我们可以使用命令
machine LoadPlatformDescription @platforms/cpus/miv.repl
其中,@号后面是repl文件的路径。例如,我们要装载i386,可以用命令行:
machine LoadPlatformDescription @platforms/cpus/i386.repl
装载完后,通过peripherals查看当前外设:
4. 访问和操作外设
我们可对外围设备进行属性读写及操作。外围设备支持的属性及操作,可通过在对应的machine上下文中键入外围设备名称进行查看,例如我们要查看以上i386设备的sdram属性,可以键入sysbus.sdram:
根据以上的属性和操作列表,我们就可对该外设进行需要的操作。例如,我们要获取sdram的大小,可输入sysbus.sdram Size:
若要对其进行复位,可调用Reset方法:
5. 加载二进制文件
在完成平台的创建以及配置后,就可以将要运行的软件上载到平台上。Renode可以使得用户上载与在真实硬件上同样的软件可执行文件,无需修改或者重新编译。
上载ELF文件到存储器,所用命令格式如下:
sysbus LoadELF @my-project.elf
也可使用LoadBinary或LoadUImage来上载原始二进制文件或者UImage文件。
例如,新建一个stm32f的machine,加载platform后,上载适用的elf文件:
sysbus LoadELF @http://antmicro.com/projects/renode/stm32f4discovery.elf-s_445441-827a0dedd3790f4559d7518320006613768b5e72
6. 清除仿真
如果要切换至其他项目,可将当前的仿真清除。使用Clear命令可将所有创建的Machines、Peripherals以及上载的二进制文件全部清除,Renode会回归至初始状态: