主题 : 零基础编写嵌入式操作系统MiniOS系列视频 复制链接 | 浏览器收藏 | 打印
操作系统编写easy
级别: 新手上路
UID: 104875
精华: 0
发帖: 1
金钱: 5 两
威望: 1 点
贡献值: 0 点
综合积分: 2 分
注册时间: 2014-06-07
最后登录: 2014-06-09
楼主  发表于: 2014-06-07 16:52

 零基础编写嵌入式操作系统MiniOS系列视频

  
零基础编写嵌入式操作系统大纲v2.0

视频特色
随着网络部断发展,市面上的嵌入式视频教程也非常繁多让人眼花缭乱。同学们在看完这些视频后确实能得些知识,但是目前视频知识都比较零散不够系统化,带来的结果就是看完这些视频后还是感觉隔靴瘙痒的味道。知道一些但是感觉无法深入了解,或者看完后不能建立足够的自信,对于通过视频获得的知识没有足够的信心。本系列视频是由资深嵌入式开发工程师和具有多年嵌入式培训经验资深讲师联合打造, 保证知识的实用性又能根据广大初学者自身情况以零基础为起点,每节都是以上节为起点增加内容。学习知识从ARM汇编语言->BIOS(Bootloader)编写->外围硬件设备的驱动编写->操作系统内核搭建操作系统内核优化为主轴,从底层汇编到C语言,从硬件设备驱动到软件系统架构打造一个系统化得学习路线,让学员们看完整个视频能对嵌入式开发有个彻底和深刻的理解。
授课方法和主要内容
   本课程完全颠覆以往操作系统教学模式,全程以实战操作为主轴。从最底层汇编代码开始一步步教大家从基础开始打造自己的嵌入式操作系统“Mini OS”。全程代码演示和理论互相呼应,先理论阐述再配以代码加以实现。每节课程都实现一个小目标而迈进。在整个讲解过程中代码和理论有机结合做到你中有我,我中有你。在整个授课过程中,我们以最通俗的语言来描述专业的技术术语。计算机是一门交叉学科,一部分知识往往还带着其它相关内容,这些连带内容如果处理不好,将影响学习者对目前掌握知识的理解,因此本视频采用“知识屏蔽”的方法,对知授容进行最小化分割力求我们在学校过程中接触到得每个知识点都是当前要唯一理解的东西,我们在看到这个知识点之前,已理解了以前所有的内容,在学习这个知识的过程中,以后的知识也不会对我们造成干扰。
对整个课程分为:ARM汇编基础篇、BIOS启动篇、硬件设备驱动篇(C语言编写)、操作系统内核搭建篇、操作系统内核优化篇、GUI框架搭建篇。共6大部分组成。整个系列视频立足从零基础开始一步步搭建,让学员深刻感受到编写一个操作系统的具体每个细节,理论如何联系实际代码编写出一个最近小的操作系统内核。现将每个篇幅大纲列出:
课程大纲    
  ARM汇编基础篇:
本篇是整个系列视频的开篇,众所周知操作系统的编写并非一般软件编写那样。编写者必须包含多方面的系统知识,如对CPU结构要了解,特别是汇编语言层面上,必须能熟练使用汇编语言来直接操作硬件,因此我们一开始就必须打好汇编语言基础。对于同学都对汇编语言敬而远之,主要是因为没有把汇编语言和实际问题相结合,都是理论学习自然枯燥乏味。本篇始终以实际列子贯穿全篇理论和实际代码完美结合,阐述汇编语言精髓。
第一节:学习方法和授课方式:
    该节不急着介绍技术而是重点讲解了该视频的授课技巧和同学的学习方法。特别是编写操作系统这样的软件,基本上都是底层汇编实现,操作系统层是C语言。由于我们的系统是基于ARM9CPU,汇编语言是驱动底层的最好方法。讲解了如何快速学习汇编的方法。
第二节:ARM汇编语言基础:
   介绍ARM开发环境KEIL4的配置,熟悉ARM汇编语言常用的几个指令如:LDR、STR、MOV,以及全局变量标号的定义。讲解过程中每句汇编语言对应一句C语言作为解释,方便大家理解。确保做到既看即会,立刻转化为自己的知识。
第三节: RW/ZI段的内存拷贝1-3
    分析ARM程序的组成RO/RW/ZI以及各自的不同。深刻理解ARM程序组成原理。开发板从NORFLASH启动后,必须通过汇编语言把RW段拷贝到内存中。通过这样一个实际的列子,让大家的汇编语言实际应用起来理论联系实际,大大加强对知识的理解和吸收。
BIOS启动篇
    BIOS它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。本篇就是需要把之前所学的ARM汇编语言对开发板上的所有硬件设备进行最直接的控制和驱动:包括内存控制器、LCD控制器、ARM中断控制器、串口控制器等等。
第一节:ARM中断向量表:
    中断向量表是一个非常抽象的概念,大部份同学非常难以理解。本节会以通俗易的方式讲解中段向量概念并配以实际的汇编代码加以阐述。中断向量是所有BIOS的起点也是重点。
第二节:ARM体系结构:
    BIOS的编写严重依赖CPU的体系结构,不同的CPU体现结构都不同。因此BIOS得编写完全必须参考不同CPU的芯片手册(datasheet),本节讲解ARM9 CPU的寄存器种类和CPU的7种异常模式,特别是所有CPU都有的程序状态寄存器CPSR,以及对CPSR的读写控制。通过这节大家就能对ARM体现结构有深刻的领会,对于其它种类CPU来说概念基本是一致,以后学习其它体现CPU如X86能做到快速精通。
第三节:CPU时钟频率设置:
    开发板上电后CPU时钟频率是非常低,这节讲解时钟频率概念。如何通过汇编代码提升CPU的时钟频率,达到CPU最大额定频率。这里牵涉到大量的时钟分频概念,对于初学者来说较难理解,本节通过大众化得语言描述这些问题,能让同学们立刻领会技术术语。
第四节:CPU堆栈设置
     本节重点讲解ARM9 cpu各个异常模式下的SP堆栈指针的使用方法,为后期操作系统模式切换提供准备。
硬件设备驱动篇
    在学习完ARM汇编基础篇、BIOS启动篇之后,我们基本上把最主要的硬件设备如CPU、内存都已经驱动起来,那么紧接着我们就必须驱动我们的外围设备如:LCD控制器、键盘控制器、串口等等。本篇主要以LCD控制器的驱动为重点,毕竟LCD屏幕较为直观的看出系统运行情况。
   第一节:LCD裸机驱动篇(1)
    目前网络上LCD裸机驱动也较多但是讲解并不透彻和不系统,本节我们从初学者角度出发从,LCD5个寄存器的每个位详细介绍和解释其含义配以C代码加以阐述和实际配合,并且会介绍LCD行业中让大家感觉比较陌生的又比较重要的概念如:帧同步、行同步、左肩值等等,让同学们能立刻领会其具体含义和实际操作方法。
第二节:LCD中英文字库和printf函数的实现(2)
    LCD上显示任意图片,并导入中英文字库显示中英文,设计属于自己的printf函数,方便后期系统调试信息格式的出和Bug的排查
第三节:MiniOS操作系统的神经系统—中断控制程序(按键中断实现)
    通过按下开发板上每个键盘按键,在屏幕中显示不同图形来揭示ARM中断系统的具体应用。从中能够举一反三的理解一级中断、二级外部中断。
第四节:MiniOS系统硬件定时器的驱动和实现
    本节讲解MiniOS系统多任务切换的最小时钟单位--硬件定时器。ARM提供了5个硬件定时器,讲解什么是脉冲可调制PWM定时器,并简要介绍了如何基于该硬件定时器制作多个软件定时器并应用到操作系统中。
操作系统内核搭建篇
经过之汇编基础篇、BIOS启动篇、硬件设备驱动篇之后,整个MiniOS系统的雏形已经渐渐形成。这篇主要开始建立操作系统核心相关的数据结构:操作系统进程控制块MiniOSProcessPCB、任务创建MiniOSProcessCreate、任务延时MiniOSProcessDelay、任务删除MiniOSProcessDel、任务暂停MiniOSProcessPause。
第一节:创建MiniOS核心-进程控制块数据结构MiniOSProcessPCB
本节开始真正进入操作系核心搭建阶段,详细描述操作系统进程控制块数据结构。包括进程栈顶指针、进程栈底指针、进程延时控制器、进程状态存储器等核心数据,并以C代码一一实现。
第二节:MiniOS进程就绪表MiniOSProcessReadyList
   MiniOS是支持多任务运行的操作系统,这里就需要考虑多进程行时每个进程的优先级是如何的?该如何去设计进程的优先级,用什么要的数据结构来保存任务的优先级。系统如何在进程就绪表里快速获取进程的?该节主要讲解以上内容。
第三节:MiniOS进程调度控制器 MiniOSSched
      进程调度控制器决定着操作系统如何对多个等待运行的进程中选择一个进行运行,或者说哪个进程获得CPU运行时间。这里牵涉的另外个核心,进程调度算法—进行程就绪表。本节围绕以上内容展开,该节一两进程时间运行为例。通过一行行C代码解释进行调度的每个细节。  
第四节 MiniOS系统初始化
         在真正运行MiniOS之前,必须对内核中的进程控制块、进程就绪表、进程调度器这些核心数据进行初始化后系统才能真正运行起来。本节围绕前面几节的内容把它们相互联系和互动起来,为系统初始化打下基础。

视频连接地址:http://v.youku.com/v_show/id_XNzIyNzM0NzYw.html
http://v.youku.com/v_show/id_XNzIyOTQ4NzA4.html
http://v.youku.com/v_show/id_XNzIyOTYzODI0.html
[ 此帖被大灰狼在2014-06-09 10:18重新编辑 ]