修改了代码中的一个bug,时钟终端终于正常了。
project4是一个很大的工程,包括了6个小工程。今天完成的是第一个工程:添加中断,初始化pic(8259A)和pit(8253)。
第二个工程project4.1主要添加了用户态段和一个TSS段,重新初始化gdt,并加载了一个TSS
第三个工程project4.1.1实现用户态和内核态的切换,主要通过修改int中断,在中断处理函数中修改trapframe的CS、DS等的值实现。同时这个工程中需要注意idt中从user到kernel那一项的dpl是3(改成0试试???)
第四个工程project4.1.2使用lret从kernel跳转到user,通过call callgate从user跳转到kernel
第五个工程project4.2实现了一个kgdb
第六个工程project4.3使用了cpu的调试寄存器db0~db7进行内核调试
project4已经延期了6天了,今天刚刚完成project4,后续需要完成内核和外部跳转的能力,调试部分先不管,毕竟还有printf和qemu提供的gdb调试能力。
争取project4明天全部完成。
2011/12/18: 很遗憾,今天刚刚完成4.1.1,延期12天。不过收获很大,对x86 cpu内核和用户态切换,以及中断的实现、任务处理(TSS)有了比较多的了解,idt中从user到kernel那一项的dpl必须为3,为0时会不断产生通用保护异常(异常13)。
分享到:
相关推荐
### Kernel Panic - Not...通过上述步骤,用户不仅解决了眼前的启动问题,也为我们提供了一个宝贵的经验:在面对难以解决的技术难题时,耐心地观察错误信息中的线索,并尝试不同的方法,往往能带来意想不到的解决方案。
- Mode 4: Card Multimedia Command Set (CMCSD1) - Mode 5: Enhanced Direct Interface Clock (EDICK) - Mode 6: Joint Test Action Group Output (JTDO) - Mode 7: Bluetooth JTDO (BTJTDO) - Mode 8: FM ...
通过修改中断复用寄存器的INTSEL字段,可以重新映射中断源,使得一个中断源可以连接到任意的CPU中断。 在C6000 DSP系统中,中断管理是一个关键部分,它允许系统高效地处理实时事件,同时保持对核心任务的控制。通过...
- 中断向量:每个中断都有一个中断向量,存储在内存的中断向量表(IVT)中,包含中断处理程序的地址和中断服务的处理方式。中断向量的前两个字节是中断处理程序的段地址,后两个字节是偏移地址。 - 中断类型号:每...
中断向量表(Interrupt Vector Table, IVT)存储了所有可能中断的处理程序地址,每个表项通常包含两个字节,分别表示中断服务例程的段选择子和偏移地址。在这个实验中,`idt_init`函数用于初始化中断向量表,其中`...
- 中断请求(Interrupt Request, IRQ):当系统中发生需要立即处理的事件时,会向处理器发送一个中断请求。 - 中断服务程序(Interrupt Service Routine, ISR):一旦处理器响应中断请求,就会跳转到预先设定的ISR...
在虚拟机环境中,有时会遇到一个令人困扰的问题,即虚拟机启动后屏幕变黑,并显示“end kernel panic - not syncing”的错误信息。这个错误通常表示Linux内核遇到了严重的问题,导致系统无法正常运行。在本文中,...
1. **中断向量表**:中断向量定义了每个中断服务例程(ISR)的入口地址,当发生中断时,CPU会跳转到这个地址开始执行。 2. **中断使能/禁止**:通过设置相关寄存器,可以开启或关闭特定中断源。 3. **定时器初始化...
当一个设备需要处理紧急任务时,它会向处理器发送一个中断信号,从而中断当前的执行流程并跳转到特定的中断服务程序来处理该事件。Open Firmware (OF) 是一种引导加载程序,它定义了一系列标准接口来支持不同平台上...
总的来说,MSP430F149的Timer_A中断功能是系统设计中的一个重要工具,它能够帮助开发者灵活地处理时间相关的任务,提升系统性能。这份源代码提供了一个现成的参考实现,对于初学者或有经验的开发者来说,都是一个...
在这个示例中,`timer0_isr`是一个中断服务程序,它被配置为响应定时器/计数器0中断(`interrupt 1`),并且在执行过程中使用第2组工作寄存器(`using 2`)。这样做的好处在于,即使主程序也在使用寄存器,也不必担心...
在NXP i.MX RT1052上,中断处理可能涉及到中断控制器如ARM Cortex-M4内核的NVIC(Nested Vectored Interrupt Controller)。NVIC负责管理和分发中断,支持中断优先级分层,使得更紧急的中断可以打断较低优先级的中断...
1. 英语短语翻译: - 分享东西:share things with others - 打断别人:interrupt others - 有礼貌地等:wait politely - 学习礼仪:learn manners - 活到老,学到老:live and learn - 随地乱扔垃圾:litter ...
- **中断向量表**:记录了每个中断源对应的处理程序地址,中断发生时,CPU通过向量表找到相应服务程序。 3. **Linux中的串口驱动**: - **设备节点**:在Linux中,串口通常映射为/dev/ttySx(x为序列号)的设备...
##### 1、一级菜单(Primary Menu) 一级菜单包括了ANSYS的主要功能分类。 - **前处理(Preprocessing)**:定义模型和边界条件。 - 英文:Preprocessing - 中文:前处理 - **网格划分(Meshing)**:生成计算网格。 ...
- 中断向量:每个中断都有特定的中断向量,其在内存中的地址指示中断服务程序的入口。 - 中断优先级:在AVR单片机中,中断向量的位置决定了优先级,低地址的中断优先级更高。 3. **中断控制** - 中断优先级确定...
本文将深入探讨标题为"The-timer-interrupt.zip"的压缩包内容,它涉及到STM32单片机上的定时器中断编程。STM32F103RBT6是一款常见的STM32芯片,具有多个定时器资源,适用于多种实时性和精度要求较高的应用场合。 ...
本资源“timer--interrupt-STM32.rar”提供了一套适用于所有STM32系列单片机的定时器中断实现方案,帮助开发者深入理解和应用这一功能。 首先,我们要理解STM32定时器的基本概念。STM32单片机内置了多种类型的...
当定时器的计数值达到预设的阈值时,它会生成一个中断请求,CPU在响应这个请求后暂停当前任务,转而执行中断服务子程序。这个过程提高了系统响应实时性,因为定时任务无需等待CPU空闲就可以执行。 3. 中断服务子...
Timer-A 是一个 16 位的定时器,可以配置为定时器或计数器模式,并且具有多个捕获/比较通道(最多 8 个),用于捕捉外部信号或者进行比较操作。 #### 二、Timer-A 寄存器结构解析 **1. TACTL 寄存器** - **SSEL1 ...