继续上一节,学习simics hindsight使用,命令行参数部分。
帮助系统
simics常用命令按类别分组,要查看分类,可以输入help。
1 2 3 4 5 6
| simics> help [...] To get you started, here is a list of command categories: Breakpoints Files and Directories Python CD-ROM GUI Real Network Changing Simulated State Haps Registers
|
使用help catogory
打印该分类下的命令清单:
1 2 3 4 5 6
| simics> help "Changing Simulated State" Commands available in the Changing Simulated State category: <image>.set set bytes in image to specified value <memory-space>.load-binary load binary (executable) file into memory <memory-space>.load-file load file into memory
|
help命令能打印几乎所有的simics文档,从命令,类 ,模块,接口,API类型和功能,haps一些根据配置不同加载内容。所有的内容也可以在reference manual中得到。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| ##命令信息 simics> help ptime [... ptime command documentation ...] simics> help mpc8641d_simple.soc.cpu[0].disassemble [... <processor_info>.disassemble command documentation ...] ##类信息 simics> help mpc8641d_simple.soc.cpu[0].cpu [... <ppce600> class documentation ...] ##接口信息 simics> help processor_info [... <processor_info> interface documentation ...] ##属性信息 simics> help mpc8641d_simple.soc.cpu[0].gprs [... <ppc440gp>.gprs attribute documentation ...] ##hap信息 simics> help Core_Exception [... Core_Exception hap documentation ...] ##方法信息 simics> help SIM_get_mem_op_type [... SIM_get_mem_op_type() function declaration ...] ##模块信息 simics> help ppce600-turbo [... ppce600-turbo module documentation ...]
|
如果名字同时匹配多个Topic(比如命令和属性),那么它将输出以下顺序中匹配的第一个categories
, commands
, classes
, interfaces
, haps
, modules
, attributes
, API functions
,symbols
.
也可以指定Topic:
1 2
| simics> help module:NS16550_c [... NS16550_c module documentation ...]
|
可用specifier有object:, class:,
command:, attribute:, interface:, module:, api:, hap: and category:
默认情况下tab完成不对module和api symbols生效,可指定module:来启用。
help-search
(别名为apropos
)命令可以用来搜索help文档中的关键词,输入help-search keyword
可以得到所有匹配的文档topic清单。
simics搜索路径
许多simics命令会在当前目录探索文件,simics的当前目录是simics从系统命令行窗口中启动时的目录,如果是从GUI启动,则为project目录。simics还提供两个目录操作特性来满足scripting时的需求。
特殊标识
simics识别一些特殊标识并在使用前翻译
%simics%
simics将在所有已安装包中寻找最新的版本,直到抵达最旧版本。例如%simics%/scripts/foo.simics
可被译为/opt/simics/simics-4.8/simics-4.8.1/scripts/foo.simics
。
如果改变了使用了simics版本,%simcis%也的翻译也会跟着变化,所以只用它来引用在所有版本中都存在的路径。可以使用`lookup-file “%simics%”来查看它的具体引用 。
%script%
翻译成当前运行script所在目录。一个常见用法是调用同一目录下的另一script,无论当前目录在哪里。
1
| run-command-file %script%/bar.simics
|
%simics% 和 %script% 总是被译成绝对路径,所以将不会与下一特性simics’ search path交互,后果之一是它们必须在双引号中使用。
搜索路径
simics有一个名为Simics’s search path的路径列表,当使用一些特定命令(如load-binary, load-file, run-commandfile, and run-python-file)和类(如image类和service-node中的tftp服务的实现)时将在这些目录中查找文件。
假设搜索路径包含:/home/joe/scripts/ ,当前目录 /home/joe/project,执行命令
1
| simics> run-command-file test/start-test.simics
|
会顺序搜索以下文件运行
1. /home/joe/project/test/start-test.simics
2. /home/joe/scripts/test/start-test.simics
搜索目录可用add-directory, clear-directories ,
list-directories
操作。搜索路径在寻找属于checkpoints或新配置的镜像文件时也会被使用。
注意用 %simics% or %script%给变量赋值并不会自动计算路径,以下语句的行为有很大差异
1 2
| $just_a_string = "%script%/images/my_image" $absolute_path = (lookup-file "%script%/images/my_image")
|
第二条语句会在当前翻译路径。
虽然搜索路径会保存在checkpoint的sim对象中,但是直到对象创建才能被看到,所以模块初始化代码不应依赖simics路径,因为它会运行于sim对象之前。
pipe命令
pipe命令可以将simics命令的输出通过管道传递给shell的命令。
1
| simics> pipe "help" "grep Tracing"
|
也可以用来将输出保存到文件
1
| simics> pipe "stepi 1000" "cat > trace.txt"
|
或者使用shell的more命令:
1
| simics> pipe "pregs -all" more
|
运行shell命令
!
符号可以用来运行shell命令,它将所有之后的输入作为shell命令执行。
命令行快捷键
simics支持两种键盘快捷键风格:Windows
和 GNU Readline
,两种模式只有较少差异,CLI和GUI都可以进行设置具体使用哪种模式。
1 2
| simics> prefs->readline_shortcuts = TRUE simics> save-preferences
|
一些终端和telnet中键盘组合会被发送,例如cygwin中,所以推荐使用标准的windows终端。
移动
1 2 3 4 5 6 7 8
| Action Shortcuts ---------------------------------------- Move character left Ctrl-B, Left Move character right Ctrl-F, Right Move word left Alt-B, Ctrl-Left Move word right Alt-F, Ctrl-Right Move to start of line Ctrl-A (GNU Readline), Home Move to end of line Ctrl-E, End
|
编辑
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| Action Shortcuts ---------------------------------------- Enter line Ctrl-J, Ctrl-M, Enter Copy Ctrl-C, Ctrl-Insert Paste Ctrl-Y (GNU Readline), Ctrl-V, Shift-Insert Cut Ctrl-X, Shift-Delete Cut to end of line Ctrl-K Cut to start of line Ctrl-U Cut previous word Ctrl-W Select character left Shift-Left Select character right Shift-Right Select word left Ctrl-Shift-Left Select word right Ctrl-Shift-Right Select to start of line Shift-Home Select to end of line Shift-End Select line Ctrl-A (Windows) Delete character left Ctrl-H, Backspace Delete character right Ctrl-D, Delete Delete word left Ctrl-Backspace, Alt-Backspace, Alt-Delete Delete word right Alt-D, Ctrl-Delete Delete to start of line Ctrl-Home Delete to end of line Ctrl-End
|
历史
1 2 3 4 5 6 7 8 9
| Action Shortcuts ------------------------------------------- Next in history Ctrl-N, Down Previous in history Ctrl-P, Up First in history Alt-<, Page Up Last in history Alt->, Page Down Reverse search Ctrl-R Scroll page up Shift-Page Up Scroll page down Shift-Page Down
|
自动完成
1 2 3 4 5 6 7
| Action Shortcuts --------------------------------------------- Uppercase word Alt-U Lowercase word Alt-L Capitalize word Alt-C Transpose characters Ctrl-T Transpose words Alt-T, Ctrl-Shift-T
|
撤销
1 2 3 4 5 6
| Action Shortcuts ---------------------------------------- Cancel multi-line editing Ctrl-G Undo Ctrl-_, Ctrl-Z (Windows) Revert line Alt-R Clear screen Ctrl-L
|