|
楼主 |
发表于 2024-4-17 17:56:59
|
显示全部楼层
我看C19和C20里内核代码设置8259A从片级联的代码是
- mov al,0x11
- out 0xa0,al ;ICW1:边沿触发/级联方式
- mov al,0x70
- out 0xa1,al ;ICW2:起始中断向量
- <b><i><u> mov al,0x04</u></i></b>
- out 0xa1,al ;ICW3:从片级联到IR2
- mov al,0x01
- out 0xa1,al ;ICW4:非总线缓冲,全嵌套,正常EOI
复制代码 这里ICW3设置的04 我看的资料里应该指的是主片的IRQ4引脚(老师推荐的《车子小姐8259A》)
但是bochs跑会报错,提示PIC = 4 未启用
我查了下C18的内核代码里ICW3设置的是2,意思主片IRQ2引脚(我理解这才是正确设置,因为主片设置里是IRQ2引脚接入从片)
- mov al,0x11
- out 0xa0,al ;ICW1:边沿触发/级联方式
- mov al,0x70
- out 0xa1,al ;ICW2:起始中断向量
- <u><i><b>mov al,0x02</b></i></u>
- out 0xa1,al ;ICW3:从片级联到IR2
- mov al,0x01
- out 0xa1,al ;ICW4:非总线缓冲,全嵌套,正常EOI
复制代码
这样bochs就不会报错了
问题1:
C18和C19,C20不同的ICW3是笔误?还是另有考虑?
问题2:
不管ICW3是2还是4,C20的程序我在Vbox里跑都能跑起来,但是都有一定概率报严重错误,也就是有时候能一直无限循环切换任务,有时候能正常启动,但是在内核->app1->app2之后,再切回内核的时候就会报严重错误,这是啥情况呢。。
|
|