不知所云的乱弹技术笔记记录。
电脑的主板有总线架构,所以每个主板不尽相同。 其中有个Power Management 总线管理各个总线,有个PM Register寄存器很重要。 而且在一般的英文版的计算机硬件白皮书写得很隐晦,并有所保留。 这个寄存器只有几个值可用,如 50h,54h,58h,5ch等。 现在说说ROM BIOS分配地址的计算公式: 如BIOS芯片模块在设备总线14h,功能支线为3h,可以对BIOS芯片设置读写保护。
格式为 段名 字位 描述 基地址 31:11 ROM基地址 21位基地址 字位10:0 访问为0,在这之前是2k对齐 长度 10:2 9字位(0-511)定义为1k-512k,包含1k。 读保护 1 置位,读内存返回FFh 写保护 0 置位,写内存没效 例子: 32K的LPC ROM 保护开始基地址为FFF80000。 基地址位 31:11 1111 1111 1111 1000 0000 0 b 长度 32K 字位 10:2 0 0001 1111 b = 1Fh = 32d 读保护位 1 1 写保护位 0 1 寄存器 50h 的总线地址为: 1111 1111 1111 1000 0000 0000 0111 1111b = FFF8007Fh 注意:1. 寄存器50-5Fh 能在硬件复位后写1次,挂起写入没效果。 2. 设置和升级LPC ROM 区 的读和写程序单元 双校验读保护会使程序中断。
PCI BIOS中断程序开发例子:
I/O 端口为 c00h和 c01h 索引/数据格式
图表:
汇编机器语言例子:
mov dx,0c00h ;写IO端口C00
mov al,01h ;索引PCI 硬件中断 INTB# 线
out dx,al ;设置索引到 INTB#
mov dx,0c01h ;写入中断数10(0Ah)
mov al,0ah
out dx,al ;连接IRQB#(INTB#) 到中断 10
PM_REG 数值表: