`
spartan1
  • 浏览: 365864 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ucore-project4: interrupt

 
阅读更多

中断处理程序总算调进去了,刚才调试主要有两个问题:

1. outb时,两个参数反了,输出参数放在了后面,而端口号放在了前面。究其原因,是直接抄ucore代码的后果。我的outb函数定义时,参数顺序与AT&T的outb指令参数顺序一样,输入值在前,输出值在后,而ucore的定义把他们反过来了,所以所有ucore调用outb的地方,都是端口在前,而输出数值在后。

 

2. %ds/%es等压栈时使用了pushw进行压栈。pushw一次只压两个字节到栈上,下次pushw时会挨着这两个自己继续压,pushw不会自动加padding,让自己总是四字节对齐。并且,即使压栈4个字节(使用pushl),x86 cpu也不会默认让它四字节对齐。

所以,在C代码中使用的trapframe中,假定es、ds等是四字节对齐的,从而添加了padding,反而出错了。

改过来后,现在中断可以发生了,不过应该每秒钟打印一次的始终中断,现在却没完没了,晚上回来在找原因。

 

总算中断可以出来了。

分享到:
评论

相关推荐

    kernel panic - not syncing : fatal exception

    4. **使用其他工具进行诊断** - 对于更深层次的问题,可以考虑使用内存测试工具(如MemTest86+)、硬盘检测工具等来进一步排查硬件故障。 5. **社区支持** - 如果以上方法都不能解决问题,可以寻求社区的帮助。...

    MediaTek_MT2502A_SOC_Data_Sheet GPIO_Table__v1_0.pdf

    - Mode 4: External interrupt (EINT10) - **KCOL4**: - **Pin Name**: KCOL4 - **Default Direction**: Input - **Default PU/PD**: Pull-Up - **Modes**: - Mode 0: Keypad Column 4 (KCOL4) - Mode 1: ...

    虚拟机黑屏end kernel panic - not syncing两种解决方式.docx

    在虚拟机环境中,有时会遇到一个令人困扰的问题,即虚拟机启动后屏幕变黑,并显示“end kernel panic - not syncing”的错误信息。这个错误通常表示Linux内核遇到了严重的问题,导致系统无法正常运行。...

    ucore-lab1实验报告.docx

    在“ucore-lab1实验报告.docx”中,我们主要关注的是操作系统内核加载ELF格式可执行文件的过程,以及硬盘分区的读取方法,最后涉及到中断向量表的初始化和中断处理函数的设计。 首先,ELF(Executable and Linkable...

    江苏省靖江市新港城初级中学八年级英语下册 Unit 5 Good manners(第1课时)学案(无答案)(新版)牛津版.doc

    - 打断别人:interrupt others - 有礼貌地等:wait politely - 学习礼仪:learn manners - 活到老,学到老:live and learn - 随地乱扔垃圾:litter everywhere - 让水龙头的水一直流:leave the tap running ...

    Open Firmware Recommended Practice: Interrupt Mapping Version 0.9

    ### Open Firmware Recommended Practice: Interrupt Mapping 版本 0.9 #### 1. 概述与背景 在计算机系统中,中断(Interrupt)是硬件设备与操作系统之间进行通信的重要方式之一。当一个设备需要处理紧急任务时,...

    ISSFA-0178_A_SM59R_series_SPI_APN_SC_

    - Bit4: SPITDR (Transmit data register) - Bit3: SPIRXIF (Receive interrupt flag) - Bit2: SPIRDR (Receive data register) - Bit1: SPIRS (SPI ready status) #### 3.2 寄存器地址与位定义 - **AUX ...

    java试题(非武大)

    - 线程控制:sleep()、join()、yield()、interrupt()等方法。 - 同步机制:synchronized关键字、wait()、notify()、notifyAll()。 - 线程池:ExecutorService、ThreadPoolExecutor、Future接口。 7. **I/O流** ...

    ansys菜单中英文对照

    ##### 4、四级菜单(Fourth-level Menu) 四级菜单进一步细化了三级菜单中的功能。 由于提供的信息中提到在ANSYS 10.0版本中尚未找到五级菜单的信息,因此我们在这里重点介绍四级菜单。四级菜单通常是针对三级菜单中...

    RTX Supported Network Cards

    - 设备ID: 0x10A4 - 版本添加: 8.0 - 支持MSI配置、MSI-X配置、巨帧(jumbo frames)。 - **Intel® 82572PT Gigabit Ethernet Controller** - 设备ID: 0x107D - 版本添加: 7.1 - 支持MSI配置、MSI-X配置、巨帧...

    interrupt-system-of-8086.rar_8086interrupt

    4. 实际应用: - 键盘中断:当用户按下键盘键时,键盘控制器会向8086发送一个中断请求,CPU响应后执行键盘扫描和输入处理。 - 定时器中断:定时器周期性地触发中断,用于实现时间片轮转、定时任务等。 - 错误处理...

    RT-Thread-api.rar

    4. **邮箱(Mailbox)** - 邮箱创建:`rt_mb_create()`创建一个邮箱,用于线程间的数据传递。 - 发送消息:`rt_mb_send()`将数据发送到指定邮箱,若接收方阻塞,会将其唤醒。 - 接收消息:`rt_mb_recv()`从邮箱...

    linux下网卡驱动

    - Interrupt Handler:处理来自网卡的中断请求,进行数据包的接收和发送。 - DMA(Direct Memory Access):允许网卡直接读写内存,提高数据传输速度。 - Ring Buffer:用于缓存待处理的数据包,减少中断次数。 ...

    NRF24L01资料大全

    - IRQ(Interrupt Request):中断请求信号,当有新数据到达或通信错误时,该引脚将产生中断。 3. NRF24L01配置与设置: - 频道选择:可以通过编程设置26个不同的频道,每个频道间隔1MHz。 - 动态功率调整:可...

    java面试题

    - 状态与生命周期:理解线程的五种状态,以及join()、yield()、sleep()、interrupt()等方法。 - 同步机制:synchronized关键字,wait()、notify()和notifyAll()方法,以及ReentrantLock、Semaphore等高级锁。 - ...

    windows蓝屏代码

    - 错误分析:当驱动程序、硬件或软件存在缺陷或不兼容时,可能导致内核模式中的IRQL(Interrupt Request Level)过高,尝试访问无权限的内存地址。 - 解决方案:尝试应用通用的解决方法,如更新驱动程序、回滚驱动...

    Oracle Solaris 9 - Platform Notes: Sun GigaSwift Ethernet Devic

    3. 使用 interrupt coalescing 优化中断处理。 4. 使用多队列网络接口卡(Multi-Queue NIC)优化网络流量。 结论 Sun GigaSwift 以太网设备驱动程序是 Oracle Solaris 9 平台的一个重要组件,提供了高性能和可靠的...

    南京工程学院-单片机原理及应用-期末复习资料.pdf

    - 定义时需加`interrupt m`修饰符,m对应中断编号。 - 不支持参数传递,无返回值。 - 不能直接调用中断函数,调用其他函数时需注意寄存器使用一致性。 这些知识点是单片机学习的基础,对于理解和掌握单片机控制...

    三菱PLC程序源码-七层以下电梯通用的程序(原创带全注释).zip

    - 中断程序(INTERRUPT):处理紧急情况或特定事件,如门超时未关闭的中断。 4. **I/O分配**: - 输入(INPUT):识别来自传感器或按钮的信号,如层楼感应器、召唤按钮、门状态等。 - 输出(OUTPUT):控制电梯...

    strace命令用法

    getgroups(4, [0, 2, 4, 5]) = 4 ``` 表示`getgroups`系统调用传递了一个包含四个元素的整数数组。 - **位字段参数**: ``` sigprocmask(SIG_BLOCK, [CHLDTTOU], []) = 0 ``` 这里展示了信号屏蔽位字段的...

Global site tag (gtag.js) - Google Analytics