问题标签 [simics]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
simics - 有没有办法通过 Simics 中的 Bus:Device:Function Offset 打印 PCI 配置地址空间?
我发现我可以做到
从 Bus 0、Device 0、Function 0、Offset 0、2 个字节读取。但我一直无法找到编码任意 BDFO 的正确方法。(在偏移量 0x1FFF 之后,它开始说没有任何映射,所以我不能简单地使用 BDF * 0x1000 计算)
我还可以在对象浏览器中看到诸如“board.mb.nb.ioxapic”之类的东西,但是如果我可以完全按照数据表中的描述为寄存器指定地址,而不用弄清楚它们是如何的,那就容易多了翻译成人类命名的设备。
simics - 为什么 firststeps.simics 和 qsp-client-core.simics 之间的 SMM 行为不同?
如果我SMM
在其中设置断点firststeps.simics
并检查寄存器,它会显示预期的RIP = 0x8000
和CS base = 0x30000
. 但是如果我在 中做同样的事情qsp-client-core.simics
,它会显示RIP = 0xdffebe74
和CS base = 0
,我不明白为什么。
最终,我看到SMBASE
get 从0x30000
to移动0xdffcd000
。但似乎 X58 芯片组手册所说的TSeg
, 并没有设置为相同的值,这是我所期望的。知道为什么TSeg
永远不会设置吗?
(注意:我在直到 skylake 的平台上对此进行了测试,它似乎只在qsp-client-core.simics
默认设置的咖啡湖上以这种方式表现)
simics - 如何从 Simics 中的端口 IO 读取?
我可以从帮助搜索中看到有一个“<port_space>.read”,但我不知道如何找到 CPU 的 <port_space> 名称。
simics - 如果目标是在另一台机器上编译的,断点在 Simics 2021.24 中不起作用
我在 Ubuntu 20.04 LTS 中编译了一个 helloworld 程序,我想在 Simics 中调试它,我在 上设置了一个断点main
,但 Simics 不会中断。
我尝试在 QSP-x86 中编译它,该二进制文件可以工作。
据我了解,main
无论二进制文件的原始构建环境是什么,Simics 都可以中断。我不知道为什么它在我的情况下没有破裂。
这是我的步骤:
第 1 步:在 Ubuntu 20.04 中编译 helloworld
步骤 2:复制a.out
到 Simics 项目根目录并上传到 QSP-x86 (firststeps.simics)
第 3 步:
第 4 步:a.out
从模拟的串行控制台运行
预期:main
应该触发
断点但得到:根本没有触发断点
simics - Simics 软件包存储库
我正在为爱好开发一个轻量级内核。
目前我使用QEMU作为仿真平台。最近,我下载并玩了一下 Simics 公开发布的预览版。
我想将我的项目迁移到这个平台,以尝试利用它提供的一些惊人的功能,比如反向执行。
我的问题是预览平台仅支持新硬件,而我的项目在旧硬件上运行。
基本上要运行我的项目,我需要一个基于 440bx 的环境。我知道 Simics 支持它,包应该类似于 simics-x86-440bx-6.0.0。
无论如何,如果我理解正确,这个包不包含在预览版中。
我的问题:是否有一些公共存储库可以从哪里下载预览版安装中未包含的软件包?
simics - debug_notification.notify_address() 无法捕获某些地址
我编写了一个python 脚本来跟踪所有malloc()
//由带有API的线程进行的调用calloc()
。我可以收到/通知,但不能。free()
debug_notification
malloc()
calloc()
free()
真奇怪。我试过notify_location
/ notify_address
/ notify_line
,它们都可以与 malloc()
/一起使用calloc()
,但没有一个可以与free()
.
如果我在 上设置free()
断点,断点总是命中,但脚本仍然无法收到任何关于free()
.
它出什么问题了?我该如何解决?
simics - 如何使用 simics 命令设置条件断点?
看起来 Simics Eclipse 可以设置条件断点,但我没有找到任何condition
带有break-*
命令的参数。是否可以使用 simics 命令设置中断条件?
另一个问题是如何使用 simics 命令设置动态 printf?
使用 gdb,我可以使用它来记录断点命中,我如何使用 simics 做同样的事情?
simics - 如何在 SIMICS 公开预览版 6.0.43 上以 BIOS 传统模式启用启动
我正在尝试以 BIOS 传统模式启用启动,但没有成功。
就像测试用例一样,我使用的是旧的 Ubuntu 服务器映像 (bionic-server-cloudimg-i386.img)。
这就是我所做的:
在 %simics%/simics-qsp-cpu-6.0.1/targets/qsp-x86 我修改了 qsp-client-core.simics 文件如下:
当我运行这个文件时,启动卡住了“通过 IPv4 启动 PXE”消息(即 Simics 没有找到 UEFI 分区并尝试从网络启动)。
如果我使用 cl-b28910-v2.craff 图像运行相同的文件,一切正常。
请注意,当涉及到仿生图像时,我尝试了原始格式和 craff 格式。
还要注意与 QEMU 中预期的相同的仿生图像引导。
我的问题:参数 enable_efi = FALSE 是否足以强制 Simics 以传统模式启动?
如果没有,我还需要做什么?
simics - simics-qsp-x86-6.0.53 导致 pcie mcfg 0xe0100000 访问错误,这不会在 6.0.44 上发生
我正在为 QSP 移植 UEFI BIOS,最近尝试了新版本 2021.50,但发现启动失败。我的 BIOS 使用 pcie mcfg 内存空间 0xe0000000 ~ 0xf0000000 进行 pci 设备枚举,这会导致 simics-qsp-x86-6.0.53 出现问题。Simics 停止并且 simics-log 显示
4364572099 board.mb.cpu0.mem[0][0] 错误 0 在没有映射的 0xe0100000 处访问(写入 4 个字节)。
我尝试打开 ignore_unmapped_writes 但它仍然失败。
board.mb.cpu0.mem[0][0]->ignore_unmapped_writes=TRUE
也尝试通过添加 mcfg 范围到 board.mb.cpu0.mem[0][0]
board.mb.cpu0.mem[0][0].add-map board.mb.socket[0].qpi_arch.port.mcfg 0xe0000000 0x10000000
但仍然无法正常工作。很困扰我,请帮忙!
bios 对 simics-qsp-x86-6.0.44 没有问题。
simics - 无法加载符号表并使用 Simics 执行符号调试
我正在尝试在 Simics 预览版 6.0.43 下调试我的自定义内核。
我能够启动内核,在内存地址上设置断点并让执行到达断点。无论如何,我无法加载符号进行符号调试。
这就是我所做的:
我编译了我的源代码:
我的问题:为什么错误信息
这似乎阻止了对符号的正确访问?