5个版本
0.2.0 | 2024年3月26日 |
---|---|
0.1.3 | 2023年10月5日 |
0.1.2 | 2023年3月15日 |
0.1.1 | 2023年3月15日 |
0.1.0 | 2023年3月15日 |
#10 in #emulator
216 每月下载量
36KB
701 行
renode-run —
一个自定义Cargo运行器,用于在renode模拟器中运行Rust固件。
功能
- 作为Cargo运行器,集成到
cargo run
。 - 将renode的所有脚本功能和CLI作为配置暴露在你的
Cargo.toml
中。 - 提供环境配置,允许你在几乎所有地方执行环境变量替换。
安装
要安装 renode-run
,使用 cargo install renode-run
。
设置
注意 主机系统上需要安装renode。
1. 设置Cargo运行器
将 renode-run
设置为你的Cargo运行器 (.cargo/config.toml
)。
[target.'cfg(all(target_arch = "arm", target_os = "none"))']
runner = "renode-run"
2. 运行
你现在可以使用 cargo run
运行你的固件。
配置
[package.metadata.renode]
选项
注意 许多这些选项都可以通过CLI选项覆盖。几乎每个字段都支持环境变量替换。
与 resc
脚本生成相关的字段
- name: 生成
resc
脚本中使用的名称字段。如果不存在,则使用crate的名称或提供默认名称。 - description: 生成
resc
脚本中使用的描述字段。如果不存在,则使用crate的描述或提供默认描述。 - machine-name: 机器的名称。
- init-commands: 机器创建后并在声明变量之前运行的命令数组。
- 变量:变量声明的数组。
renode-run
会自动插入由 Cargo 提供的$bin = @target/<profile>/<bin>
。 - 平台描述:单个平台描述。可以是以下之一
- 由 renode 提供的
repl
文件(以@
开头) - 本地的
repl
文件(不以@
开头) - 要导入并生成到输出目录的本地
repl
文件(以<
开头)。当你想在repl
文件的 内容上执行环境替换时很有用。 - 一个字面字符串
- 由 renode 提供的
- 平台描述数组:平台描述的数组。每个条目可以是以下之一
- 由 renode 提供的
repl
文件(以@
开头) - 本地的
repl
文件(不以@
开头) - 要导入并生成到输出目录的本地
repl
文件(以<
开头)。当你想在repl
文件的 内容上执行环境替换时很有用。 - 一个字面字符串
- 由 renode 提供的
- reset:重置宏定义。默认是
sysbus LoadELF $bin
。 - start:启动命令定义。默认是
start
。 - pre-start-commands:在
start
命令之前立即执行的命令数组。 - post-start-commands:在
start
命令之后立即执行的命令数组。
与 renode-run
行为相关的字段
- 环境变量:要为
renode-run
和renode
环境设置的变量和值数组。 - renode:要使用的
renode
可执行文件的路径。默认使用系统的$PATH
。 - omit-start:不要生成
start
命令。默认为false
。 - omit-out-dir-path:不要将输出目录添加到 renode 的路径。
- resc-file-name:生成的
resc
脚本名称。默认为emulate.resc
。 - use-relative-paths:待定
- disable-envsub:待定
- using-sysbus:待定
与 renode
本身调用相关的字段
- plain:将
--plain
添加到传递给renode
的参数列表中。 - port:将
--port <port>
添加到传递给renode
的参数列表中。 - disable-xwt:将
--disable-xwt
添加到传递给renode
的参数列表中。 - hide-monitor:将
--hide-monitor
添加到传递给renode
的参数列表中。 - hide-log:将
--hide-log
添加到传递给renode
的参数列表中。 - hide-analyzers:将
--hide-analyzers
添加到传递给renode
的参数列表中。 - console:将
--console
添加到传递给renode
的参数列表中。 - keep-temporary-files:将
--keep-temporary-files
添加到传递给renode
的参数列表中。
示例
[package.metadata.renode]
name = 'my-script'
description = 'my renode script - ${FOOKEY} works'
machine-name = 'my-machine'
using-sysbus = true
renode = '${HOME}/repos/forks/renode/renode'
environment-variables = [
['FOOKEY', 'FOOVAL'],
["MYENV", "MYVAL"],
]
init-commands = [
'logLevel -1 i2c2',
]
variables = [
'$tap?="renode-tap0"',
# Set random board UNIQUE ID
'''
python "import _random"
python "rand = _random.Random()"
$id1 = `python "print rand.getrandbits(32)"`
$id2 = `python "print rand.getrandbits(32)"`
$id3 = `python "print rand.getrandbits(32)"`
''',
]
platform-descriptions = [
'@platforms/boards/stm32f4_discovery-kit.repl',
'path/to/dev_board.repl',
'< ${SOMETHING}/other_dev_board.repl',
'''
phy3: Network.EthernetPhysicalLayer @ ethernet 3
Id1: 0x0000
Id2: 0x0000
''',
'''
wss: Python.PythonPeripheral @ sysbus 0x50070000
size: 0x10
initable: true
filename: "${ORIGIN}/sensor_models/wss.py"
''',
]
pre-start-commands = [
'''
emulation CreateSwitch "switch"
connector Connect sysbus.ethernet switch
emulation CreateTap $tap "tap"
connector Connect host.tap switch
''',
'''
logFile @/tmp/logfile.log true
logLevel 3 file
''',
'emulation LogEthernetTraffic',
'machine StartGdbServer 3333',
'''
sysbus.usart3 AddLineHook "PANIC" "Antmicro.Renode.Logging.Logger.Log(LogLevel.Error, line)"
sysbus.usart3 AddLineHook "test result: ok" "Antmicro.Renode.Emulator.Exit()"
''',
]
reset = '''
sysbus LoadELF $bin
sysbus WriteDoubleWord 0x1FFF7A10 $id1
sysbus WriteDoubleWord 0x1FFF7A14 $id2
sysbus WriteDoubleWord 0x1FFF7A18 $id3
'''
许可证
根据以下之一获得许可
-
Apache License,版本 2.0(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
-
麻省理工学院许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
根据您的要求。
贡献
除非您明确声明,否则根据 Apache-2.0 许可证定义,您提交的任何有意包含在工作中的贡献,将按照上述方式许可,不附加任何额外条款或条件。
依赖项
约 7-17MB
约 232K SLoC