- 博客(18)
- 问答 (1)
- 收藏
- 关注
原创 第6章 引导启动程序boot
第6章 引导启动程序boot主要介绍boot/目录的三个汇编代码文件,boot.s和setup.s是实模式下的16位diamante程序,编译和汇编使用的as86和ld86。head.s使用的GNU的汇编格式。使用gas编译。6.1 总体功能Linux启动流程#mermaid-svg-xqWEnrmwoYFKadvG {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-s
2022-06-04 22:07:08 2355
原创 Linux内核完全注释中使用到的汇编指令
1.as86相关int 0x13:参考INT 13Hah为功能号,当ah=0x02时:从驱动器读取扇区。此时有输入参数表:寄存器名称表示的参数AH0x02AL读取多少个扇区CH磁道号CL扇区号DH磁头号DL驱动号ES:BX读入缓冲区位置返回参数表:寄存器名称参数CF进位标志,如果发生错误,就置位;没有错误就清0AH返回代码AL实际读取的扇区数DL的确定方法:现在的硬盘会兼
2022-05-31 22:02:29 1260
原创 第5章 Linux内核体系结构(2)
第5章 Linux内核体系结构目录第5章 Linux内核体系结构5.9 Linux 0.11采用的文件系统5.10 Linux内核源代码的目录结构5.10.1 内核主目录linux5.10.2 引导启动程序目录 boot5.10.3 文件系统目录 fs5.10.4 头文件主目录include5.10.5 内核初始化程序目录init5.10.6 内核程序主目录kernel5.10.7 内核库函数目录lib5.10.8 内存管理程序目录 mm5.10.9 编译内核工具程序目录tools5.11 内核系统与应
2022-05-30 22:47:22 304
原创 第5章 Linux内核体系结构(1)
第5章 Linux内核体系结构本章是对内核源代码的总结概述。操作系统组成:用户应用程序:字处理程序、Internet浏览器程序或用户自己编制的应用程序;操作系统服务:向用户提供的服务被看做是操作系统部分功能的程序。例如X窗口系统、shell命令解释系统以及内核编程接口等系统程序;操作系统内核:主要用于对硬件资源的抽象和访问调度。5.1 Linux内核模式操作系统结构可以分为:整体式单内核结构层次式微内核结构linux0.11:单内核优点:代码结构紧凑,执行速度快;缺点
2022-05-30 16:30:49 396
原创 第4章 80x86保护模式及其编程(3)——一个简单的多任务内核实例
4.9 一个简单的多任务内核实例完整描述了一个简单多任务内核的设计和实现方法。内核示例中包含两个特权级3的用户任务和一个系统调用的中断过程。4.9.1 多任务程序结构和工作原理本节给出的内核实例包括两个文件。使用as86语言编制的引导启动程序boot.s。使用GNU as汇编语言编制的内核程序head.s。boot.s程序编译出的代码共512字节,将被存放在软盘映像文件的第一个扇区中。PC机在加电启动时,ROM BIOS中的程序会把启动盘上第一个扇区加载到物理内存0x7c00(31kb)位置
2022-05-27 22:08:33 555
原创 使用WinImage创建新的Image文件
首先下载安装WinImage软件。这个就不叙述了。选择file->new选择Image文件格式,我这里选择标准格式,1.44M大小。新建完成后如图。可通过Image->Inject来输入文件。然后点击ctrl+s保存,注意文件类型选择All files,然后文件名自己加入.img后缀。这样一个img文件就制作好了。打开只需要file->open即可。...
2022-05-26 16:56:32 4262
原创 第4章 80x86保护模式及其编程(2)
第4章 80X86保护模式及其编程(2)4.6 中断和异常处理中断:(Interrupt);异常(Exception);中断处理程序(interrupt handler);异常处理程序(execption handler)。系统硬件使用中断来处理外部事件。当处理器在执行一条指令时,检测到一个出错条件,此时发生异常。包括违反保护机制、页错误以及及其内部错误。80x86可以透明的处理发生的中断和异常事件。4.6.1 异常和中断向量通过中断向量查找中断描述符表从而定位异常或中断的处理程序入口位置
2022-05-02 20:33:18 1297
原创 第4章 80X86保护模式及其编程(1)
第4章 80X86保护模式及其编程intel architecture software developer’s manual主要介绍80x86 CPU体系结构以及保护模式下编程。主要包括80x86基础知识、保护模式内存管理、各种保护措施、中断和异常处理、任务管理、保护模式编程的初始化以及一个简单的多任务内核的例子。4.1 80X86系统寄存器和系统指令...
2022-04-30 18:31:20 1287
原创 第3章 内核编程语言与环境(2)
第3章 内核编程语言与环境(1)3.4 C与汇编程序的相互调用3.4.1 C函数调用机制3.4.1.1 栈帧结构和控制转移权方式栈:传递函数参数、存储返回信息、临时保存寄存器原有值以备恢复以及用于存储局部数据。栈帧(Stack frame):单个函数调用操作所使用的栈部分ebp(frame pointer):帧指针,指向栈低(高地址)esp(stack pointer):栈指针,指向栈顶(低地址)通过push 和pop指令来入栈和出栈栈指针递减以扩展空间,栈指针增加以回收空间。CA
2022-04-27 17:05:20 1431
原创 第3章 内核编程语言与环境(1)
第3章 内核编程语言与环境3.1 as86汇编器3.1.1 as86汇编语言语法3.1.2 as86汇编语言程序!! boot.s -- bootsect.s的程序框架。用代码0x07替换串msg1中1字符,然后在屏幕第1行显示!.global begtext,begdata,begbss,endtext,enddata,endbss !全局标识符,供ld86链接使用;.text !正文段;begtext:.data !数据段;begdata:.bss
2022-04-25 11:14:54 699
原创 从汇编角度分析C语言指针
从汇编角度分析C语言指针分析在ubuntu18.04中进行。C语言源代码 pointer.c#include <stdio.h>int main(void){ int a=1; int *pa=&a; int *pb=NULL; pb=pa; return 0;}使用指令:gcc -m32 -S -o pointer.s pointer.c生成32位汇编源程序 pointer.s如下: .file "pointer.c" .text
2022-04-23 17:58:45 1999
原创 第17章 实验环境设置与使用方法
第17章 实验环境设置与使用方法windows系统下实验条件:linux系统下实验条件:三种仿真软件的区别描述:Review: VMWare Workstation 3.1 vs Virtual PC 4.3.2 vs Bochs 1.417.1 Bochs仿真软件系统bochs官网 bochs手册ubuntu下bochs安装教程sls-1.0.zip下载地址17.1.1 设置bochs系统17.1.2 配置文件*.bxrc1.megs:内存容量2.floppa
2022-04-22 17:11:33 1234
原创 关于hough变换的一些思考
关于hough变换的一些思考opencv官方关于hough变换的解释:https://docs.opencv.org/2.4/doc/tutorials/imgproc/imgtrans/hough_lines/hough_lines.html主要针对如下公式进行说明:关于r和θ的物理意义:如上图,注意一点r与直线是垂直的,也就是对每条直线来讲,r和θ是固定的,很多人说是极坐标表示,很具有误导性。其实不是,r表示从原点出发到直线的距离,而θ是距离线段与x轴的夹角。其实上面的公式的原始形式应该为:
2021-03-29 15:29:40 175
原创 探索者 STM32F4串口通讯实验解析
主要针对usart.c中的中断服务函数USART1_IRQHandler()进行一些解释。 u8 Res;#if SYSTEM_SUPPORT_OS OSIntEnter(); #endif if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) { Res =USART_ReceiveData(US...
2019-04-15 17:01:06 2147
原创 STM32 IIC实验中关于AT24Cxx的读写
在正点原子的STM32IIC实验例程中,从AT24Cxx芯片中某一位读取一个数据的操作如下:u8 AT24CXX_ReadOneByte(u16 ReadAddr){ u8 temp=0; IIC_Start();if(EE_TYPE>AT24C16){IIC_Send_Byte(0XA0); IIC_Wait_Ack()...
2019-03-19 17:35:15 5336 3
原创 STM32 I2C实验中的 SDA_IN()和SDA_out()的含义
在STM32 I2C实验例程中有这样的一段://IO方向设置#define SDA_IN() {GPIOB->MODER&=~(3<<(92));GPIOB->MODER|=0<<92;} //PB9输入模式#define SDA_OUT() {GPIOB->MODER&=~(3<<(92));GPIOB->MOD...
2019-03-18 19:38:45 8078 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人