返回列表 发帖

关于开机的第一条指令

开机的第一条指是执行以下动作
db        0EAh
        dw        offset RUN_CSEG:reset_common_location
        dw        0F000h

LABEL :reset_common_location  在AMI的code 中有两处?

这两处有何区别?开机先跑的是哪一个呢? 望高手指点

TOP

BBEND.ASM -- CPU Reset Vector file里面的是开机跑的。
; Procedure:        reset_common_location
;
; Description:        Second instruction executed by the CPU after power-on or
;                reset.  This instruction is executed from F000 segment.

TOP

那么请问一下:
reset_common_location 有两个地方,对应有两个跳转

TOP

不好意思刚才操作错误,要讲的东西没有写完
reset_common_location 有两个地方,对应有两个跳转
1.jmp 到BBKERNEL 那边   
2.jmp 到bios_suru

开机会去跑BBKERNAL 那边,那为什么不去跑bios_suru呢?  望高手指点

TOP

问的好呀,我也想知道

TOP

本帖最后由 gssxd 于 2009-9-21 12:52 编辑
不好意思刚才操作错误,要讲的东西没有写完
reset_common_location 有两个地方,对应有两个跳转
1.jmp 到BBKERNEL 那边   
2.jmp 到bios_suru

开机会去跑BBKERNAL 那边,那为什么不去跑bios_suru呢?  望高手 ...
Mac 发表于 2009-9-21 08:25

jmp 到bios_suru属于Runtime的,刚开机的时候运行在Flash里面未被压缩的COde里面,Runtime都没有被解压出来,是不会跳到那边的。

TOP

BB会做更基本的动作,是最先跑的。power_on_init
不对的话请大侠指正
黄昏轻雨消残香!

TOP

你可以把ROM中跳转的部分反汇编一下,就知道他的地址是多少了。刚开始的时候只在Flash中跑。
像风一样的自由!

TOP

runtime段是什么时候init,那位DX给详细介绍一下各个段?迷惑中...
一再的感觉无路可走, 所以一再的前行

TOP

10# Debug
AMI Code:00D8h  The Runtime module is uncompressed into memory
在UUI.asm 文件的decompress_main_BIOS_FAR Funtion里面。此后,Runtime的Code就驻留在Memory中供调用,不管是Post还是Boot OS之后,直到Memory掉电,像 S4S5Hard Reset

TOP

bios_suru是重启跳过去的,这个段在MEM里面,而前者则是在ROM里

TOP

一个是WARM BOOT 跑的,这个在MEM里,一个是POWER ON 跑的

TOP

13# mchtfly 这就和Phoenix的不一样了阿,Phoenix的boot block是无论如何不管是warm reboot还是s3/s4.就算后来加了选项在s3的时候跳过一部分,刚开机的那些命令还是要执行的。

TOP

还有这个suru和印度语有关系么?当年给上课的AMI的人提到过的,时间长记不清楚了。

TOP

cpu_reset_vector                        <bbend.asm>

TOP

一个是warm boot 一个是Cold boot
1.jmp 到BBKERNEL 那边   是Cold boot
2.jmp 到bios_suru            是warm boot

TOP

gssxd 讲解得很清楚了
bbend.asm中的跳转是冷启动的第一条指令
JMP.asm中的bios_suru是在runtime段,是之后的reset调用的。

我有点迷惑的是为什么POST完成后,内存的FFFF0处跳转指令的偏移会被改成E05Bh?
To be or not to be, that's a question.

TOP

18# knight956
S3 Resume的时候先通过SMI找到入口程序,然后 Jmp F000:FFF0
-->Jmp F000:E05B

  1. bios_suru PROC NEAR PUBLIC
  2. cli    ; test under CLI mode
  3. cld    ; ensure direction
  4. mov ax, cs
  5. mov ss, ax
  6. jmp wake_up   ; check for wakeup
  7. bios_suru ENDP
复制代码

TOP

本帖最后由 123456 于 2011-6-10 15:05 编辑

受益非浅。。。。还想知道上电第一条指令与SB的关系。

TOP

返回列表