330 likes | 476 Views
嵌入式系统发展趋势及开发基础. 余昌盛 13958081784 flyycs@zju.edu.cn. 主要内容. 嵌入式系统的特点 嵌入式系统发展趋势 嵌入式软件技术特点 嵌入式操作系统对比 嵌入式 Linux 与普通 Linux 对比 嵌入式系统映像制作与加载. 嵌入式系统特点. 嵌入式系统有何不同? 嵌入式系统是专用的 ( 相对地: PC 是一个通用运算平台 ) 嵌入式系统通常对成本很敏感 嵌入式系统通常有实时性要求 不是所有嵌入式系统都需要一个 OS 嵌入式系统通常有功耗限制 嵌入式系统需要特别的工具进行设计和开发. 嵌入式系统特点. 硬件特点
E N D
嵌入式系统发展趋势及开发基础 余昌盛 13958081784 flyycs@zju.edu.cn
主要内容 • 嵌入式系统的特点 • 嵌入式系统发展趋势 • 嵌入式软件技术特点 • 嵌入式操作系统对比 • 嵌入式Linux与普通Linux对比 • 嵌入式系统映像制作与加载
嵌入式系统特点 • 嵌入式系统有何不同? • 嵌入式系统是专用的(相对地:PC是一个通用运算平台) • 嵌入式系统通常对成本很敏感 • 嵌入式系统通常有实时性要求 • 不是所有嵌入式系统都需要一个OS • 嵌入式系统通常有功耗限制 • 嵌入式系统需要特别的工具进行设计和开发
嵌入式系统特点 • 硬件特点 • 架构 • Von Neumann/Harvard • CPU • RISC/CISC • 总线 • 外设 • 存储 • I/O • 资源特点 • 运算 • 存储 • 功耗 • 产品特点 • 成本 • 可靠性
嵌入式系统发展趋势 • 从微处理器向SOC微控制器发展
嵌入式系统发展趋势 • 硬件 • 单核 多核(Freescale P4080 8 cores, Cavium 16 cores) • FPGA容易越来越大,速度越来越快,可集成CPU • 多核结合,如TI OMAP750集成DSP和ARM核(诺基亚手机,opod手机) • 软件 • 硬件逻辑 监控程序 操作系统 • Linux在嵌入式领域应用越来越广泛,发展速度快
嵌入式系统开发典型过程及趋势 开始 第一阶段:确定产品目标 第二阶段:软件/硬件任务划分 软件设计比重越来越大 第三阶段:反复细化任务划分 硬件设计 第四阶段:软件/硬件设计/开发 第五阶段:软件/硬件整合 第六阶段:产品测试、发布 产品发布 第七阶段:产品维护、升级
嵌入式软件技术特点 • 嵌入式软件架构 • The control loop • Non preemptive multitasking • preemptive timers • preemptive tasks • RTOS • Office-style OS
嵌入式软件架构 • The Control Loop • 软件是一个循环(无调度) • 循环中包括一系列子程序 • 每个子程序管理一部分硬件或过程 • 使用公共的数据结构,包括栈与堆 • 中断设置标志位或更新计数器来改变执行顺序 • 通过开/关中断来保证嵌套和避免重入 • 特点 • 优点:简单、不确定状态少 • 缺点:响应时间不能精确保证、功能扩展较难
嵌入式软件架构 • Non preemptive Multitasking • 与Control loop十分类似,但增加了Task概念和idle例程 • Task: 拥有私有数据结构、栈、堆和状态数据的子程序 • Idle例程:维护系统事件队列、调用相应的Task • 特点 • 优点:功能扩展容易 • 缺点:响应时间不精确
嵌入式软件架构 • Preemptive Timers • 在Non preemptive multitasking的基础上增加由计时器中断激活的Task • 特点 • 优点:对时间的响应有保证 • 开发提示:由计时器激活的任务必须小心处理
嵌入式软件架构 • Preemptive Tasks • 与Non preemptive Multitasking类似 • Preemptive task由计时器或中断激活 • Task必须可重入 • 特点 • 优点:响应时间有保证 • 缺点:可重入特性极大地增加了复杂性和不确定性
嵌入式软件架构 • RTOS(Real-Time Operating System) • 具有进程管理、内存管理、设备管理、文件管理等特性 • 支持实时任务调度 • 具有明确的系统分层结构 • 特点 • 优点:复用性好,对复杂应用支持好 • 缺点:对资源要求高,开发工具完善程度极大影响开发成本
一些专有概念 • BSP • BootLoader • hibernated • Image • WatchDog • Flash Memory • Byte Order • Little Endian • Big Endian • Debug Protocols • JTAG (Joint Test Action Group, IEEE 1149.1
BSP • Board Support Package (板级支持包) • 通常由硬件系统厂商提供 • 包括Bootloader、Device driver、Compiler、Library、Documents
Byte Order • 寄存器宽度 != 地址线宽度 • Little Endian(如:8086, x86) • Big Endian(如:MPC8560)
Debug Protocols • 问题 • 如何调试一个不可靠的硬件系统? • 如何交互式地调试Firmware中的代码? • 如何在无仿真条件下以真实时钟速率调试? • 解决 • 在硬件中加入调试逻辑
Debug Protocols • JTAG (Joint Test Action Group) • 串行、源于PC制造
嵌入式操作系统对比 • VxWorks • QNX • WinCE • Linux
VxWorks • Vxworks体系结构
QNX • QNX的微内核体系结构
Windows CE • Windows CE内核体系结构
Linux • Linux内核体系结构
Windows CE • Development Tools • Platform Builder • eMbedded Visual Tools • eMbedded Visual Basic • eMbedded Visual C++
嵌入式操作系统评估 • 处理器支持情况 • 支持种类足以覆盖需要吗? • 编程语言支持情况 • 支持种类足以覆盖需要吗? • 开发工具兼容能力 • 与目前的工具、代码兼容吗? • 系统特性是否足够? • queues, semaphores…… • 代码容量 • 在所要求的功能能够满足时,满足ROM/RAM容量要求吗? • 性能 • 在你最终的硬件平台上能够达到要求的性能指标吗?
嵌入式操作系统评估 • 系统组件容易获得吗? • 一些必需的组件如:图形库、虚拟机…… • 设备驱动程序 • 是否能获得足够的支持? • 调试工具 • 能否在目标平台上实现源码级的调试? • 标准兼容能力 • 能否兼容目标应用领域的标准? • 技术支持 • 能够获得足够的技术支持服务吗? • 代码 • 你获得的支持包是链接库还是源代码? • 许可 • 开发工具和OS本身通常具有不同的License
嵌入式Linux vs. Linux • Kernel • MMU • Module • Timer • Schedule • Library • File System • UI
嵌入式系统映像制作与加载 • 交叉编译 • compiler: gcc • bin-tools: binutils • maker: make • header files: .h files • libraries: glibc • 映像制作 • 加载方式 • 交互加载 • 映像烧写
映像制作 • 映像的组成 Loader Kernel filesystem
映像制作 • 编译目标Kernel • Make menuconfig • 配置内核和驱动 • Make zImage • 编译目标kernel • Make modules • 编译modules驱动,生成.ko文件
映像制作 • 制作基本文件系统 • 制作空文件系统 • 确认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
映像制作 • 可以利用的资源 • BootLoader • x86 : • LILO, GRUB, syslinux, ROLO, Loadin, etherboot, LinuxBIOS,U-Boot …等 • ARM : • Redboot, vivi, blob, U-Boot …等 • MIPS : • PMON, U-Boot …等 • SuperH: • Sh-boot …等
映像制作 • 可以利用的资源 • 系统工具 • 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/