TSIM2 Simulator - HPECLab/tutorials GitHub Wiki
TSIM是一个SPARC处理器架构的通用模拟器,可以模拟基于ERC32和LEON系列处理器的计算机系统。
TSIM具有如下特性:
——模拟ERC32、LEON2/3/4架构的处理器
——卓越的性能:高端PC机上指令执行速度可达到60MIPS
——处理器待机模式,允许超实时仿真
——单独运行模式和远程gdb连接模式
——可以提供库来拓展模拟器架构
——采用64bit表示时间,模拟时间无限制
——指令追踪缓冲区
——EDAC模拟(ERC32)
——MMU模拟(LEON2/3/4)
——SRAM模拟和SDRAM的功能性模拟
——本地高速暂存存储器(LEON3/4)
——可加载用户自定义的设备模块
——非抢占式执行时间表
——代码执行范围监测
——指令跟踪缓存
——带有标识信息的栈回溯
——设置检查点以保存和恢复完整的模拟器状态
——断点和监测点的数量没有上限
——针对GR712、UT699、UT700和AT697的预定义功能模拟模块
TSIM支持的操作系统有:Solaris 2.8, Linux, Linux-x64, Windows XP/7, 和 带Cygwin UNIX模拟器的Windows XP/7。
TSIM可以工作于两种模式:standalone和attached to gdb。Standalone模式中:ERC32和LEON的应用程序可以通过命令行直接加载模拟运行。TSIM提供了许多命令可用于检测数据、设置断点和advance simulation。连接gdb模式下:gdb就类似于TSIM的远程终端,应用程序的加载和调试都通过gdb来完成。
TSIM的启动命令如下:
tsim-erc32 [options] [input_files]
tsim-leon [options] [input_files]
tsim-leon3 [options] [input_files]
tsim-leon4 [options] [input_files]
其中option字段的选项有:
-ahbm ahb_module
使用 ahb_模块作为可加载的 AHB 模块而不是ahb.so (LEON only)。如果存在多个AHB模块要加载的话,-ahbm做多支持加载16个模块。可以在系统中的环境变量TSIM_MODULE_PATH里加入模块的搜索路径。
-asi1noallocate
使得ASI一次读写不分配缓存空间(LEON3/4)。
-at697e
根据the Atmel AT697E 设备(LEON2)来配置缓存。
-banks ram_banks
设置SRAM存储器划分ram bank的数量,支持1、2和4。默认值是1(LEON)。
-bopt
使得 idle-loop 最优化。
-bp
开启 LEON3/4 处理器的分支预测。
-c file
在启动模拟器是读取命令行文件并执行其中的命令。
-cfg file
从文件中读取额外的配置选项。
-cfgreg_and and_mask, -cfgreg_or or_mask
修复Leon配置寄存器(0x80000024),新的值是:(reg & and_mask)| or_mask(LEON2)
-cpm cp_module
将cp_module作为一个可装载的协处理器模块的文件名(LEON)。环境变量TSIM_MODULE_PATH可以被设置为以“:”(WIN32下是“;”)为间隔的搜索路径。
-cas
当运行一个VXWORKS SMP镜像时,SPARCV9的“casa”指令可以被使用。-cas选项是这条指令有效。(LEON3/4)
-dcsize size
设置LEON数据缓存的固定大小。允许设置2的幂次方大小(KB),对于LEON2,可设置范围是1-64(KB);对于LEON3/4,可设置的范围是1-256(KB)。默认值是4KB。
-dlock
开启数据缓冲存储器的行同步,默认不开启。
-dlram addr size
允许在地址addr处分配sizeKB大小的局部数据缓存(LEON3/4)。
-dlsize size
设置LEON处理器的数据缓存的行大小(单位是字节)。允许设定的值是16或者32,默认的是16。
-drepl repl
设置LEON处理器数据缓存的替换算法。允许的值是rnd(随机替换算法——LEON2默认算法)、lru(最近最少访问算法——LEON2/3的默认算法)和lrr()
-dsets sets
-exc2b
-ext nr
-fast_uart
-fpm fp_module
-freq system_clock
-gdb
-gr702rc
-grfpu
-hwbp
-icsize size
-ift
-ilock
-ilram addr size
-ilsize size
-iom io_module
-irepl repl
-isets sets
-iwde
-l2wsize size
-logfile filename
-mfailok
-mflat
-mmu
-nb
-nfp
-nomac
-noreadline
-nosram
-nothreads
-notimers
-nouart
-nov8
-nrtimers val
-numbp num
-numwp num
-nwin win
-port portnum
-pr
-ram ram_size
-rest file_name
-rom rom_size
-rom8, -rom16
-rtems ver
-sametimerirq
-sdram sdram_size
-sdbanks <1|2>
-sym file
-timer32
-timerirqbase number
-tsc691
-tsc695e
-uartX device
-ut699
-wdfreq freq
命令行的选项字段也可以在主目录在的 .tsimcfg 文件中指定,命令行程序运行时会自动读取。
在Win7中启动结果如下:
TSIM动态加载libreadline.so模块,该模块提供历史命令查询和tab键自动补全的功能。如果缺少libreadline.so模块,TSIM命令行就缺少以上功能。
如果在主目录下存在 .tsimrc的文件,它将作为一个批处理文件,在模拟器启动时自动加载运行。
batch file
执行关于TSIM命令的批处理文件。
+bp, break address
在摸个地址处设置断点。
bp, break
打印所有断点。
-bp, del [num]
删除某个断点,num省略则删除所有断点。
bt
cont [count/time]
coverage <enable | disable | save [file_name] | clear | print address [len]>
dis [addr] [count]
echo string
edac [clear | cerr | merr address]
event
flush [all | icache | dcache | addr]
float
gdb
go [address] [count/time]
help
hist [length]
icache, dcache
inc time
inst [length]
leon
load files
l2cache
mec
mem [addr] [count]
vmem [vaddr] [count]
mmu
quit
perf [reset]
prof [0|1] [stime]
reg [reg_name value]
reset
restore file
run [addr] [count/time]
save file
step
sym [file]
trace [num]
version
walk address [iswrite|isid|issu]*
watch address
wmem, wmemh, wmemb address value
xwmem asi address value