xml地图|网站地图|网站标签 [设为首页] [加入收藏]
如何进行SI仿真,浅谈系统服务分发
分类:操作系统

---恢复内容开始---

图片 1Altium designer 如何进行SI仿真。

    欢迎转载,转载请注明出处:

 

        1、仿真电路中需要至少一块集成电路;    

0x00.说在前面

  开始的操作系统是黑白屏的DOS,随着光标的一闪一闪并逐渐后移,一条条指令输入电脑,并执行相关指令完成任务。慢慢的,视窗操作系统最初是基于DOS的windows 9X内核WIN 95、WIN 98、WIN ME,直到WINDOWS NT技术的出现,产生了WIN 2000、WIN XP、WIN VISTA、WIN 7直到今天的WIN 10。

        2、器件的IBIS模型;     

  就我们所知,Windows操作系统内核的陷阱处理器会分发中断、异常和系统服务调用,这里我们就其中的系统服务分发简单解析一下。

  1.安装win7

        3、在规则中必须设定电源网络和地网络;     

 

  由于WIN7之前的操作系统对UEFI支持不太好,主要是因为显卡驱动支持不好和CSM模块的兼容性问题,导致Windows7并不支持纯UEFI启动。因此在安装WIN7操作系统里,为了保险起见和兼容性,一般还是会选择BIOS为LEGACY,而主分区为MBR的形式。

        4、建立SI规则约束;     

0x01.粗看不同处理器进入系统调用

  安装方式1(U盘启动安装)

        5、层堆栈必须设置正确,电源平面必须连续;

  (1).在PentiumII 之前的x86处理器上,Windows使用int2e指令产生一个陷阱,导致执行线程转到内核模式,进入系统服务分发器,eax保存系统服务号,edx指向参数列表。最后通过iret指令返回用户模式;

下载win7安装镜像,推荐使用跟原版镜像677408版本,稳定,纯净,适合日常用

    建立的文件必须是一个工程,并把相应的文件放在工程目录下,建立原理图设计,建立PCB设计。搭建相应的IBIS模型,设定电源和地的规则,建立SI规则约束,并将层堆栈设置正确,电源平面连续。

       我们查看IDT的2e成员,得知该成员保存的地址是系统调用分发器的地址,紧接着u一下KiSystemService,会发现在保存完寄存器等状态之后,他走到了KiFastCallEntry里面!(在Win7 x86下测试)

 图片 2

    对于SI仿真,可以是原理图仿真,可以是PCB仿真,

      图片 3

使用ULTRAISO软件,打开镜像文件,点击启动,写入磁盘。选择U盘,点击便捷启动,写入硬盘主引导MBR。

    下面就实际操作一下如何利用Altium来实现对集成电路的SI仿真工作。首先要打开一块单板,单板可以是系统自带的,也可以是自行设计的。笔者打开一个自行设计的单板如下所示:

  (2).在x86Pentium II 处理器上,Windows使用了sysenter指令,内核的系统服务分发器例程的地址保存在与该指令相关联的一个MSR中,eax,edx保存与int2e相同的内容。最后通过sysexit指令返回用户模式;

图片 4

        (1)首先设置好层叠设置,选择Impedance Calculation…,配置板材的相应参数,这里选择默认值,如下所示:

     这里读取MSR的0x176处,其中包含了系统服务分发器地址,发现实际上调用的就是KiFastCallEntry(入口)!(在Win7 x86下测试)

图片 5

图片 6

      图片 7

图片 8

    当遇到个别原理图元器件符号并未放置在PCB版图设计,用户可以利用Altium Designer提供的器件关联功能,即菜单Project -> Component Links命令;在PCB版图设计SI分析中,未布线的网络将采用曼哈顿(Manhattan)长度算法计算引脚间的传输线长度。

  (3).在x64体系架构上,Windows使用syscall指令,将系统调用号保存在eax中,前四个参数放在寄存器(rcx/rdx/r8/r9)中,剩下的参数在栈中。

 

    (2)设置信号的激励,如下图所示:

    64位平台读取MSR的0xC0000082处,里面保存的是64位的syscall,当我们u一下这个地址,发现这个就是x64系统调用分发的入口KiSystemCall64(在Win7 x64下测试)

 图片 9

图片 10

      图片 11

 设置BIOS启动模式为LEGACY

    (3)设置电源和地网络

    Ps:通过KiSystemCall64的地址可以通过硬编码得到SSDT、SSSDT地址

图片 12

    (4)进入到仿真界面,tools ----signal integrity,如下图所示:

 ......

 

图片 13

图片 14

安装方式2(PE启动安装)

    打开模型信号完整性配置界面后,有几种状态需要了解,如上图所示。

 

下载U启动 或者老毛桃等等

点击Analyze Design…,弹出下图

   我们发现,32位下,系统调用分发操作都会走到KiFastCallEntry里面,而64位下,系统调用分发操作会走到KiSystemCall64,然后去完成相应的系统服务调用。那么我们有个疑问,系统是怎么进入到这些系统调用的呢?

这里使用老毛桃

图片 15

 

图片 16

        点击Analyze Design…,出现如下图所示:

0x02.举例查看系统调用如何发生

 

图片 17

  这里以Win7 x86 平台下的 NtOpenProcess为例,切换到一个进程内(如explorer.exe),u一下NtOpenProcess,这里显示的是ntdll里的NtOpenProcess的反汇编:

 制作U盘启动制作工具

    可以选择一个网络,点击右键---detail查看详细的信息。

  图片 18

本文由澳门新葡亰手机版发布于操作系统,转载请注明出处:如何进行SI仿真,浅谈系统服务分发

上一篇:25个iptables常用示例,linux基础环境搭建 下一篇:linux下的下载之道,Gitlab备份和恢复操作记录
猜你喜欢
热门排行
精彩图文