嵌入式系统专题GC2.ppt

uCOS-II a. 为什么需要一个嵌入式操作系统? b. 介绍两种嵌入式操作系统 Linux、uCLinux、WinCE、VxWork FreeBSD、FreeDOS、 首先,嵌入式实时操作系统提高了系统的可靠性。 其次,提高了开发效率,缩短了开发周期。 再次,嵌入式实时操作系统充分发挥了cpu的多任务潜力。 还有是为后续开发移植提供好的基础。 最后…… 结合操作系统概念理解,并不仅限于此/彼? 一、Intel x86 PC引导过程 二、μC/OS-II内核结构 三、嵌入Linux 一、 Intel x86 PC引导过程 对于Intel x86 PC 1. 开启电源后, 机器就会开始执行ROM BIOS的一系列系统测试动作,包括检查RAM,keyboard,显示器,软硬磁盘等等。 2. 执行完BIOS的系统测试之后,紧接着控制权会转移给ROM中的启动程序(ROM bootstrap routine);这个程序会将磁盘上的第0轨第0扇区(叫boot sector或MBR ,系统的引导程序就放在此处)读入内存中,并放到自0x07C0:0x0000开始的512个字节处;然后处理机将跳到此处开始执行这一引导程序;也即装入MBR中的引导程序后, CS:IP = 0x07C0:0x0000 。 ***如果这个扇区的最后两个字节是“55 AA”,那么这就是一个引导扇区。如果最后两个字节不是“55 AA”,那么BIOS 就检查下一个磁盘驱动器。 3. 加电后处理机运行在与8086相兼容的实模式下。 2 引导例子 读引导扇区后计算机就完全归你控制了。由你任意发挥…, 自己动手生成引导程序(boot.asm) !!!切记先不要那硬盘做实验 如何写主引导区(MBR) boot.asm org 07c00h ; 程序会被加载到7c00处,所以需要这一句 mov ax, cs mov ds, ax mov es, ax Call DispStr ; 调用显示字符串例程 jmp $ ; 无限循环 DispStr: mov ax, BootMessage mov bp, ax ; ES:BP = 串地址 mov cx, 16 ; CX = 串长度 mov ax, 01301h ; AH = 13h, AL = 01h mov bx, 000ch ; 页号为0(BH = 0) 黑底红字(BL = 0Ch,高亮) mov dl, 0 int 10h ; int 10h ret BootMessage: db Hello, OS world! times 510-($-$$) db 0 ;填充剩下的空间,使生成的二进制代码恰好为512字节 dw 0aa55h ; 引导扇区需要以55AA结束 INT 10h INT 13h BIOS调用 所谓BIOS调用是指:利用计算机软中断完成需要实现的功能。 INT 10h 实现显示,它分字符与图形模式。可进行显示模式设置、设定显示位置、调色板颜色等等 INT 13h 硬盘、软盘读取控制功能,实现 绝对读写 一般开放源代码的读操作 .ResetFloppy ; 重置磁盘 mov ax , 0 ; 设置重置磁盘的功能号 mov dl , [bootdrive] ; 选择启动磁盘 int 0x13 jc .ResetFloppy ; 如果出错则重试 .ReadFloppy ; 读内核到内存中 0000:9000 (es:bx)处 xor ax , ax ; 设置 es 寄存器 mov es , ax mov bx , 0x9000 mov ah , 2 ; 设置读磁盘功能号 mov dl , [bootdrive] ; 设置欲读驱动器号 mov ch , 0 ; 磁头号 mov cl , 2 ; 起始扇区号 mov al , 17 ; 读入扇区数量 int 13h jc .ReadFloppy 3 如何制作引导盘 需要(开发)工具,需要(开发)环境,需要实验对象 自己开发、借鉴其它人、用通用的 Windows写映像盘、Linux、DOS 、专用 生成IMG文件 #include fstream.h #include iostream.h #include windows.h #include assert.h #include stdio.h int main( int argc , char** argv ) { char ch ; argv++ ; un

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档