Embedded Operating System

Spring 2007


  • Teaching assistant: 王振明
  • email: zmwang4@mail.ustc.edu.cn
  • phone number: 0512-87161325(lab)
  • project homepage: ???
  • project time(暂定为):
    • 每周六和周日晚上7:00~8:30(第15~19周).
    • 最后一次往后延迟一周,作为交上机作业的截止时间
  • 理论课用幻灯片
  • 上机作业
  • 参考书

  • 高教区区内班车时刻表
  • 进高教区的公交车

  • Introduction

    详细介绍嵌入式开发流程、搭建交叉开发环境、GNU tools的使用、BootLoader的原理、嵌入式操作系统的编译配置等并通过大量实例演示使学生迅速掌握嵌入式操作系统及其应用相关的编程方法。
    结合实际的嵌入式操作系统,详细分析嵌入式操作系统的内核关键模块,使同学了解嵌入式操作系统的内部构造、掌握嵌入式操作系统关键技术。

    Prerequisites

    1. Principles of Operating System
    2. Principles of Computer Organization
    3. Principles of Compilation

    Text & Reference Books & webpages

    1. Buliding Embedded Linux Systems, by Karim Yaghmour (O'reilly), April 3003.
    2. 嵌入式系统设计与实例开发——基于ARM微处理器与μC/OS-Ⅱ实时操作系统(超星),王田苗主编,清华大学出版社,2002年9月第一版,2003年第二版
    3. 源码开放的嵌入式系统软件分析与实践——基于SkyEye和ARM开发平台,陈渝等编著,北航出版社,2004.9。
    4. 网络监控系统原理与应用
    5. 嵌入式系统设计,骆丽译,北航出版社,2004.9
    6. Understanding the Linux Kernel (O'reilly)
    7. The Linux Development Platform
    8. Linux From Scratch
    9. HOWTO for setting up a Cross Development Environment on Debian GNU/Linux
    10. GNU ARM
    11. Linux VOODOO

    软件及其安装


    上机作业

    实验环境准备(上机作业一
    1. 安装主机环境,可以下列之一
      • (虚拟机+)Linux操作系统,其中Linux操作系统可以是:Debian/ubuntu/kubuntu(推荐)或者RedHat或者其他
      • Windows操作系统+MingW或者cygwin
      • 或者其他
      要求达到的目标:能够进行后续的实验
    2. 安装SkyEye,可以直接安装二进制包,如果想自己编译也行
    实验1(上机作业二
    1. 安装uClinux-arm的二进制交叉编译环境arm-elf-tools
    2. 编译配置uClinux,并能够在SkyEye中run起来
    3. 编写一个简单的程序,例如hello.c,能够在uClinux中运行
    实验2(上机作业三
    1. 根据实验教材中的指导,使用jtag烧写boot loader------blob
    2. 编译配置uClinux,使用blob烧写内核和根文件系统
    3. 编写一个简单的程序,例如hello.c,能够在开发板上的uClinux中运行
    实验3:多进程实验(上机作业四
  • 实验内容
  • 实验4:操作系统内核实验(上机作业五
    1. 捕获键盘中断
    2. 捕获缺页异常
    3. 增加一个空的系统调用
    实验5:网络编程实验(上机作业六
    1. 使用socket套接字实现基于TCP的进程间通信
    实验6:简单驱动实验(上机作业七
    1. 设计并实现一个简单的虚拟驱动

    理论课用的幻灯片

    一、
    2007-5-21
    星期一
    1. 课程介绍
    2. 嵌入式系统
    二、
    2007-5-22
    星期二
    1. 开发环境的搭建和开发工具介绍
    三、
    2007-5-28
    星期一
    1. SkyEye介绍
    2. uClinux简介
    四、
    2007-5-29
    星期二
    1. BootLoader
    五、
    2007-6-4
    星期一
    1. 嵌入式Linux开发技术
    六、
    2007-6-5
    星期二
    1. 基于i386体系结构的Linux启动代码分析
    2. arch/i386/boot/bootsect.S
    3. arch/i386/boot/setup.S
    4. arch/i386/boot/compressed/head.S
    5. arch/i386/kernel/head.S
    6. arch/i386/vmlinux.lds
    7. documentation/i386/boot.txt
    8. Makefile
    9. arch/i386/Makefile
    10. arch/i386/boot/Makefile
    11. arch/i386/boot/compressed/Makefile
    12. asm/boot.h
    13. init/main.c
    七、
    2007-6-11
    星期一
    1. Linux内核分析:一些预备知识
    2. 堆栈使用举例:test.c的源文件
    3. 堆栈使用举例:test的反汇编文件
    4. 观察pt_regs
    5. 观察do_IRQ
    6. 观察do_IRQ的调用方法
    7. 内存寻址
    八、
    2007-6-12
    星期二
    1. 进程、进程管理和进程调度
    2. kernel/fork.c: 进程的创建
    3. kernel/sched.c: 进程的调度
    4. include/linux/sched.h
    5. include/asm-i386/processor.h
    6. kernel/timer.c
    7. init/main.c
    8. arch/i386/kernel/init_task.c
    9. include/asm-i386/ptrace.h
    10. arch/i386/kernel/process.c
    11. arch/i386/kernel/entry.S
    12. arch/i386/kernel/irq.c
    13. include/asm-i386/hw_irq.h
    14. include/asm-i386/mmu_context.h
    15. include/asm-i386/system.h
    16. include/linux/kernel.h
    17. include/linux/wait.h
    18. include/asm-i386/current.h
    九、
    2007-6-18
    星期一
    1. 中断和异常
    2. arch/i386/kernel/entry.S
    3. arch/i386/kernel/irq.c
    4. include/asm-i386/hw_irq.h
    5. arch/i386/kernel/traps.c
    6. arch/i386/kernel/i8259.c
    十、
    2007-6-19
    星期二
    1. 系统调用
    2. Linux中的时钟
    3. kernel/sched.c
    4. kernel/timer.c
    5. inclcude/linux/interrupt.h
    6. inclcude/linux/timex.h
    7. arch/i386/kernel/time.c
    8. arch/i386/kernel/irq.c
    9. arch/i386/kernel/i8259.c
    10. include/asm-i386/timex.h
    11. include/asm-i386/msr.h
    12. 内存管理
    十一、
    2007-6-25
    星期一
    1. 进程地址空间
    2. Linux的信号机制
    • 这里也许会获得一些关于Linux帮助
    十二、
    2007-6-26
    星期二
    1. 用户进程间的通信
    2. testpipe.c
    3. for fifo
    4. usesem.c
    5. testshm.ctestshm2.c
    6. server.cclient.c
    7. 设备驱动程序
    8. char_dev.c
    9. Makefile
    10. testchardev.c
    十三、
    2007-7-10
    星期二
    1. 晚上复习、答疑
    十四、
    2007-7-12
    星期四
    1. 上午8:30~10:30考试

    Edited by xlanchen@ustc.edu.cn
    Embedded Operating Systems Spring 2007