1 / 33

嵌入式系统发展趋势及开发基础

嵌入式系统发展趋势及开发基础. 余昌盛 13958081784 flyycs@zju.edu.cn. 主要内容. 嵌入式系统的特点 嵌入式系统发展趋势 嵌入式软件技术特点 嵌入式操作系统对比 嵌入式 Linux 与普通 Linux 对比 嵌入式系统映像制作与加载. 嵌入式系统特点. 嵌入式系统有何不同? 嵌入式系统是专用的 ( 相对地: PC 是一个通用运算平台 ) 嵌入式系统通常对成本很敏感 嵌入式系统通常有实时性要求 不是所有嵌入式系统都需要一个 OS 嵌入式系统通常有功耗限制 嵌入式系统需要特别的工具进行设计和开发. 嵌入式系统特点. 硬件特点

rodd
Télécharger la présentation

嵌入式系统发展趋势及开发基础

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 嵌入式系统发展趋势及开发基础 余昌盛 13958081784 flyycs@zju.edu.cn

  2. 主要内容 • 嵌入式系统的特点 • 嵌入式系统发展趋势 • 嵌入式软件技术特点 • 嵌入式操作系统对比 • 嵌入式Linux与普通Linux对比 • 嵌入式系统映像制作与加载

  3. 嵌入式系统特点 • 嵌入式系统有何不同? • 嵌入式系统是专用的(相对地:PC是一个通用运算平台) • 嵌入式系统通常对成本很敏感 • 嵌入式系统通常有实时性要求 • 不是所有嵌入式系统都需要一个OS • 嵌入式系统通常有功耗限制 • 嵌入式系统需要特别的工具进行设计和开发

  4. 嵌入式系统特点 • 硬件特点 • 架构 • Von Neumann/Harvard • CPU • RISC/CISC • 总线 • 外设 • 存储 • I/O • 资源特点 • 运算 • 存储 • 功耗 • 产品特点 • 成本 • 可靠性

  5. 嵌入式系统发展趋势 • 从微处理器向SOC微控制器发展

  6. 嵌入式系统发展趋势 • 硬件 • 单核  多核(Freescale P4080 8 cores, Cavium 16 cores) • FPGA容易越来越大,速度越来越快,可集成CPU • 多核结合,如TI OMAP750集成DSP和ARM核(诺基亚手机,opod手机) • 软件 • 硬件逻辑  监控程序  操作系统 • Linux在嵌入式领域应用越来越广泛,发展速度快

  7. 嵌入式系统开发典型过程及趋势 开始 第一阶段:确定产品目标 第二阶段:软件/硬件任务划分 软件设计比重越来越大 第三阶段:反复细化任务划分 硬件设计 第四阶段:软件/硬件设计/开发 第五阶段:软件/硬件整合 第六阶段:产品测试、发布 产品发布 第七阶段:产品维护、升级

  8. 嵌入式软件技术特点 • 嵌入式软件架构 • The control loop • Non preemptive multitasking • preemptive timers • preemptive tasks • RTOS • Office-style OS

  9. 嵌入式软件架构 • The Control Loop • 软件是一个循环(无调度) • 循环中包括一系列子程序 • 每个子程序管理一部分硬件或过程 • 使用公共的数据结构,包括栈与堆 • 中断设置标志位或更新计数器来改变执行顺序 • 通过开/关中断来保证嵌套和避免重入 • 特点 • 优点:简单、不确定状态少 • 缺点:响应时间不能精确保证、功能扩展较难

  10. 嵌入式软件架构 • Non preemptive Multitasking • 与Control loop十分类似,但增加了Task概念和idle例程 • Task: 拥有私有数据结构、栈、堆和状态数据的子程序 • Idle例程:维护系统事件队列、调用相应的Task • 特点 • 优点:功能扩展容易 • 缺点:响应时间不精确

  11. 嵌入式软件架构 • Preemptive Timers • 在Non preemptive multitasking的基础上增加由计时器中断激活的Task • 特点 • 优点:对时间的响应有保证 • 开发提示:由计时器激活的任务必须小心处理

  12. 嵌入式软件架构 • Preemptive Tasks • 与Non preemptive Multitasking类似 • Preemptive task由计时器或中断激活 • Task必须可重入 • 特点 • 优点:响应时间有保证 • 缺点:可重入特性极大地增加了复杂性和不确定性

  13. 嵌入式软件架构 • RTOS(Real-Time Operating System) • 具有进程管理、内存管理、设备管理、文件管理等特性 • 支持实时任务调度 • 具有明确的系统分层结构 • 特点 • 优点:复用性好,对复杂应用支持好 • 缺点:对资源要求高,开发工具完善程度极大影响开发成本

  14. 一些专有概念 • BSP • BootLoader • hibernated • Image • WatchDog • Flash Memory • Byte Order • Little Endian • Big Endian • Debug Protocols • JTAG (Joint Test Action Group, IEEE 1149.1

  15. BSP • Board Support Package (板级支持包) • 通常由硬件系统厂商提供 • 包括Bootloader、Device driver、Compiler、Library、Documents

  16. Byte Order • 寄存器宽度 != 地址线宽度 • Little Endian(如:8086, x86) • Big Endian(如:MPC8560)

  17. Debug Protocols • 问题 • 如何调试一个不可靠的硬件系统? • 如何交互式地调试Firmware中的代码? • 如何在无仿真条件下以真实时钟速率调试? • 解决 • 在硬件中加入调试逻辑

  18. Debug Protocols • JTAG (Joint Test Action Group) • 串行、源于PC制造

  19. 嵌入式操作系统对比 • VxWorks • QNX • WinCE • Linux

  20. VxWorks • Vxworks体系结构

  21. QNX • QNX的微内核体系结构

  22. Windows CE • Windows CE内核体系结构

  23. Linux • Linux内核体系结构

  24. Windows CE • Development Tools • Platform Builder • eMbedded Visual Tools • eMbedded Visual Basic • eMbedded Visual C++

  25. 嵌入式操作系统评估 • 处理器支持情况 • 支持种类足以覆盖需要吗? • 编程语言支持情况 • 支持种类足以覆盖需要吗? • 开发工具兼容能力 • 与目前的工具、代码兼容吗? • 系统特性是否足够? • queues, semaphores…… • 代码容量 • 在所要求的功能能够满足时,满足ROM/RAM容量要求吗? • 性能 • 在你最终的硬件平台上能够达到要求的性能指标吗?

  26. 嵌入式操作系统评估 • 系统组件容易获得吗? • 一些必需的组件如:图形库、虚拟机…… • 设备驱动程序 • 是否能获得足够的支持? • 调试工具 • 能否在目标平台上实现源码级的调试? • 标准兼容能力 • 能否兼容目标应用领域的标准? • 技术支持 • 能够获得足够的技术支持服务吗? • 代码 • 你获得的支持包是链接库还是源代码? • 许可 • 开发工具和OS本身通常具有不同的License

  27. 嵌入式Linux vs. Linux • Kernel • MMU • Module • Timer • Schedule • Library • File System • UI

  28. 嵌入式系统映像制作与加载 • 交叉编译 • compiler: gcc • bin-tools: binutils • maker: make • header files: .h files • libraries: glibc • 映像制作 • 加载方式 • 交互加载 • 映像烧写

  29. 映像制作 • 映像的组成 Loader Kernel filesystem

  30. 映像制作 • 编译目标Kernel • Make menuconfig • 配置内核和驱动 • Make zImage • 编译目标kernel • Make modules • 编译modules驱动,生成.ko文件

  31. 映像制作 • 制作基本文件系统 • 制作空文件系统 • 确认loop device存在 • /dev/loop? (mknod /dev/loop0 b 7 0) • dd if=/dev/zero of=/tmp/target bs=1k count=nnn • mount -o loop -t ext2 /tmp/target /mnt • mke2fs -m 0 -i 2000 /mnt • 基本文件系统包含 • /dev – 设备文件节点目录 • /proc – proc文件系统安装点 • /etc – 系统配置文件 • /sbin – 系统维护关键程序 • /bin – 系统工具程序 • /lib – 程序运行所需的共享库 • /mnt – 外接存储设备的安装点 • /usr – 用户程序和库文件 • 完成 • dd if=/tmp/target bs=1k | gzip -v9 > rootfs.gz • 制作S3C2440文件系统 • ./mkyaffs2image-128M rootfs/ rootfs.bin

  32. 映像制作 • 可以利用的资源 • BootLoader • x86 : • LILO, GRUB, syslinux, ROLO, Loadin, etherboot, LinuxBIOS,U-Boot …等 • ARM : • Redboot, vivi, blob, U-Boot …等 • MIPS : • PMON, U-Boot …等 • SuperH: • Sh-boot …等

  33. 映像制作 • 可以利用的资源 • 系统工具 • BusyBox • Init, syslogd, sh, ls, dd, df, kill, killall, telnet, ln, mv, cp, gzip, gunzip, insmod, rmmod…等 • http://www.busybox.net • 系统运行库 • uClibc • 支持alpha, ARM, cris, i386, i960, m68k, mips, powerpc, sh …等 • http://www.uclibc.org • Diet libc • alpha, ARM, ia64, i386, mips, sparc, ppc … • http://www.fefe.de/dietlibc/

More Related