420 likes | 570 Views
嵌入式 Linux 系统设计与开发. 祖校锋. 主要内容. 嵌入式系统与嵌入式 Linux 嵌入式 Linux 开发平台. 1.1 嵌入式系统. 嵌入式系统与嵌入式 Linux. 嵌入式计算机系统的定义: 以应用为中心,以计算机技术为基础,软件硬件可裁剪,复合应用系统对功能、可靠性、成本、体积、功耗的严格要求的专用计算机系统。. 嵌入式系统分类 按表现形式分(硬件范畴) 芯片级嵌入(含程序或算法的处理器) 模块级嵌入(系统中的某个核心模块) 系统级嵌入 按实时性要求分(软件范畴) 非实时系统( PDA ) 软实时系统(消费类产品)
E N D
嵌入式Linux系统设计与开发 祖校锋
主要内容 • 嵌入式系统与嵌入式Linux • 嵌入式Linux开发平台
1.1 嵌入式系统 嵌入式系统与嵌入式Linux • 嵌入式计算机系统的定义: 以应用为中心,以计算机技术为基础,软件硬件可裁剪,复合应用系统对功能、可靠性、成本、体积、功耗的严格要求的专用计算机系统。
嵌入式系统分类 • 按表现形式分(硬件范畴) • 芯片级嵌入(含程序或算法的处理器) • 模块级嵌入(系统中的某个核心模块) • 系统级嵌入 • 按实时性要求分(软件范畴) • 非实时系统(PDA) • 软实时系统(消费类产品) • 硬实时系统 (制导系统等)
1.1.1嵌入式系统的应用前景 • 美国著名未来学家尼葛洛庞帝1999年1月访华时预言: 4~5年后,嵌入式智能产品将是继PC和因特网之后最伟大的发明。 • 美国汽车大王福特公司的高级经理也曾宣称: 福特出售的“计算能力”已经超过了IBM。
1997年美国嵌入式系统大会的报告预测: 未来5年基于嵌入式计算机系统的全数字电视产品,就将在美国产生一个每年1500亿美元的新市场。
1.1.2 嵌入式产品分类 • 信息电器,包括电视机、电冰箱、微波炉、电话等等。 • 移动计算设备,包括手机、PDA、掌上电脑等各种移动设备。 • 网络设备,包括路由器、交换机、Web server、网络接入盒(卡)等各种网络设备。 • 工控、仿真等
1.1.3 嵌入式系统的特点 • 嵌入式系统的产品特征 它是 • 面向用户产品和应用的系统; • 完成目标功能的最小系统; • 处理器功耗、体积、成本、可靠性、速度、处理能力、电磁兼容性等方面都受应用制约的系统; • 高可靠性和高实时性的系统; • 与具体产品紧密结合的系统。
嵌入式系统软件的特征 • 软件要求固化存储; • 软件代码高质量和高可靠性; • 系统软件(OS)很多情况情况下要求具有实时处理能力; • 多任务实时操作系统是工业标准化的必然要求。 • 嵌入式系统开发需要的开发工具和环境 一般是基于通用计算机的软硬件设备、各种逻辑分析仪和混合信号示波器等。
嵌入式系统软件需要(EOS)开发平台 嵌入式系统中,应用软件可以没有操作系统而直接在芯片上运行。 但是,目前嵌入式应用已不仅仅局限于原来仅面对系统级的需求,还需要面对用户级的应用,尤其是消费电子产品的需求。传统的使用循环控制的嵌入式系统无法将系统软件和和应用软件分开处理,每次开发都要重新定制系统软件和应用软件,代价大,成本高,已不能满足需求。 为了合理调度多任务,充分利用系统资源系统函数及专家函数接口,减少开发代价,必须选用短小精悍、易定制、易移植的嵌入式操作系统开发平台,从而保证系统执行的实时性和可靠性,并大大减少开发时间。
1.2 嵌入式操作系统 • 嵌入式操作系统大多工作在实时性要求很高的环境中,这样的操作系统称为实时多任务操作系统(RTOS)。 • 实时多任务操作系统(RTOS)定义: 一个能够在指定或者确定的时间内,完成系统功能和对外部或内部、同步或异步事件作出响应的系统。
系统API 驱 动 程 序 编 程 接 口 I/O管理,文件系统,驱动程序 内存管理模块 图形驱动函数库 网络模块 RTOS核心 硬件抽象层(Hardware Abstraction Layer) 硬件(hardware) RTOS体系结构图
常用RTOS简介 • VRTX (Microtec Research) 世界上第一个商业嵌入式实时内核,市场占有率前五名。 • Tornado/Vxworks (Wind River Systems,inc.) 美国市场占有率第一名,火星探测器采用该操作系统。 • QNX(QNX Software Systems LTD) x86上最好的嵌入式实时操作系统,同时支持PowerPC,ARM,MIPS等处理器芯片。 • LynxOS(Lynx Real-Time systems) 老牌嵌入式实时操作系统,市场占有率前十名。 • WinCE(Microsoft INC.) 微软出品,嵌入但不够实时,属于软实时系统。
pSOSytem(Integrated Systems INC.) 老资格的实时操作系统,中国市场占有率第一名。 • 嵌入式LINUX(完全免费的操作系统) 既有软实时系统又有硬实时系统。
1.3 嵌入式Linux操作系统 • Linux操作系统 正式的Linux 1.0于1994年3月诞生于芬兰赫尔辛基大学的天才大学生Linus手中。现在,Linux已成为当前最流行的免费操作系统。只要遵守GPL(GNU通用公共许可证),任何人都可以自由使用Linux的源程序。
Linux操作系统的特征 • 符合国际通用标准; • 强大的兼容性; • 先进的网络特征; • 拥有真正的多用户、多任务能力; • 具有动态连接能力; • 系统性能十分稳定; • 可移植性强,非常灵活。 • Linux操作系统的发展情况及前景 Linux操作系统发展至今,已经成为具有全部UNIX特性的POSIX兼容的操作系统,能够与各种传统的商业操作系统分庭抗礼。 据1999年IOS统计,Linux占有全球Web服务器总数的28%,名列第一。 据2000年IDC统计,Linux在服务器操作系统市场中占25%。
1.3.1嵌入式Linux系统简介 • 嵌入式Linux系统的特点 • 开放源码,丰富的软件资源; • 功能强大的内核,性能高效、稳定、多任务; • 支持多种体系结构; • 完善的网络通讯、图形和文件管理机制; • 支持大量的周边硬件设备,驱动丰富; • 大小功能都可定制,可裁剪的内核不过500k。
常见嵌入式Linux操作系统 • RT-Linux 美国新墨西哥理工学院开发的嵌入式硬实时操作系统。它将标准Linux核心作为其实时内核的一个进程同实时进程一起调度,从而在改动最小的情况校充分利用了Linux下现有的资源。 • ucLinux ucLinux是针对微控制领域而设计的Linux系统,其最大特征就是没有MMU(内存管理单元模块)。ucLinux包含Linux常用的API和小于512k的内核及相关的工具,900k左右。 • Embedix 嵌入式Linux行业主要厂商Lineo推出,最小需要8M内存,3M ROM或者FLASH,提供了超过25种的Linux系统服务,是一种较完整的嵌入式Linux解决方案。
XLinux 美国网虎公司推出,主要开发者陈盈豪,核心仅143k,而且还在不断减小中,号称世界上最小的嵌入式Linux系统。其核心采用了“超字元集”的专利技术,与标准字符集兼容的同时还覆盖了12个国家和地区的字符集,在国际化方面具有得天独厚的优势。 • KURT-Linux 该OS是为多媒体应用和ATM网络应用设计的“严格”的实时系统。
Why嵌入式Linux 2000年9月份的调查如下图所示。截至2001年7月,已经使用或将要使用嵌入式Linux的用户已达88.6%。
未来24个月嵌入式嵌入式操作系统应用的调查(2000.9)未来24个月嵌入式嵌入式操作系统应用的调查(2000.9)
1.3.2 ucLinux简介 • ucLinx的优势 ucLinux是Linux2.0的一个分支,其最大特征就是没有MMU(内存管理单元模块)。 全球每年生产的CPU的数量在二十亿颗左右,超过80%应用于专用性很强的各类嵌入式系统。其中又有相当一部分面向低端市场。为降低硬件成本及运行功耗,有一类CPU在设计中取消了内存管理单元(Memory Management Unit,简称MMU)功能模块。如Motorola公司的M6K系列,龙珠系列,冷火系列,ARM7TDMI系列等等。
ucLinux的特点 • 如前所述,ucLinux的最大特征就是没有MMU。 • 标准Linux使用虚拟存储系统,这种技术用于提供比实际的物理内存大得多的内存空间,使得使用者在编写程序程序时可以完全不考虑内存空间的大小问题,从而带来了极大的方便。与此同时,内存管理活动也占用了宝贵的CPU时间(比较忙的系统中大约10%左右)。 • ucLinux取消了MMU,直接存取内存,虽然增大了进程管理的难度,对程序员提出了更高的要求,但同时也极大地增加了开发者的权利。毕竟,节省硬件的成本才是最重要的。再者,对于低端产品来讲,只要实现特定的功能,内存管理要求完全可由开发人员考虑。
ucLinux的进程管理 fork(),vfork(),exec(),exit(),copy-on-write • ucLinux继承了标准Linux的特性,提供了对网络的强大支持,具有完整的TCP/IP协议栈,并对外其他一些协议提供支持,是一个相当优秀的嵌入式网络操作系统。 • ucLinux支持多种文件系统,包括最常用的NFS(网络文件系统),ext2(第二文件扩展系统,Linux的一种标准文件系统),romfs文件系统,MS-DOS,FAT16/32等。
嵌入式Linux开发平台 2.1 硬件平台 • 硬将平台的组成 • 嵌入式处理器,分为嵌入式微控制器(MCU),嵌入式微处理器(MPU),嵌入式DSP和SoC(System on Chip); • 存储设备,分为ROM和RAM两类; • 外围设备,包括网络设备,输入设备和显示设备。
2.1.1 S3C4510B芯片简介 • S3C4510B是三星公司出品的一块用在基于以太网系统的高性价、比高性能的7TDMI构架的16/32位RISC微控制器。
S3C4510B的特性如下: • 体系结构 • 用于嵌入式以太网应用的集成系统; • 全16/32位RISC结构; • 支持小端/大端模式; • ARM7TDMI内核; • 高性价比且基于JTAG的调试解决方案; • 边界扫描。 • 系统管理 • 8/16/32位外部总线支持各种存储芯片和外部I/O; • 带总线请求应打引脚的外部总线主控制器; • 可编程访问周期(0-7个等待周期); • 4字深的写缓冲; • 存储器到外围的DMA接口。
一体的指令/数据Cache • 2路相联一体; • 支持LRU(近期最少使用)替换算法; • 可配置。 • I2C串行口 • 仅主控模式工作。 • Ethernet控制器 • 突发模式的DMA引擎; • 100/10Mgongzuosulv; • DMA发送接收缓冲区(256/256K); • MAC发送接收FIFO缓冲区(80/10字节); • 完全兼容IEEE802.3; • 带PAUSE的全双工模式; • 长短包模式; • 端变换。
HDLC • 10M工作速率; • Modem接口; • 每个HDLC有2通道DMA缓冲描述符用于发送接收。 • DMA控制器 • 4种数据突发方式; • UART • 基于DMA或者中断工作的2个UART模块; • 支持5,6,7或者8位的串行数据接收发送; • 可编程波特率; • 支持红外发送接收。 • 定时器 • 2个可编程32位定时器; • 间隔/触发模式工作。
可编程I/O口 • 18个; • 输入/输出/专用信号模式; • 中断控制器 • 21个中断源(4个外部); • 正常/快中断模式(IRQ/FIQ); • 基于优先级。 • PLL • 外部时钟可由片内PLL加倍以提供高频系统时钟; • 10~40MHz; • 输出频率位5倍输入时钟。
2.1.2 NET-Start!评估板 • 三星NET-Start!开发套件简介 该开发套件是三星公司为嵌入式网络应用量身订做的一块评估板,使用三星公司出品的网络控制芯片S3C4510B。
2.2 软件系统 • 嵌入式系统的软件组成 • Bootloader,分为主机端和目标端两个部分,主要作用包括: • 初始化处理器; • 初始化必备的设备; • 下载系统映象; • 初始化操作系统系统并准备执行。 • 嵌入式系统内核,必需部件包括进程管理,进程间通信,内存管理部分。 • 根文件系统,有ramdisk和NFS两种实现方式,而文件系统的类型则可分为: • 普通文件系统,包括只读文件系统romfs,压缩式文件系统cramfs等; • 日志文件系统(先写日志后写数据),例如日志式FLASH文件系统JFFS和JFFS2,ext3文件系统等等。
ucLinux宿主机软件环境的建立 • 安装cygwin或Linux,推荐安装Linux操作系统,推荐Red Hat Linux; • 下载一个未编译的Linux内核和一个ucLinux补丁(www.uclinux.org)及三个最新的文件(fs/binflat.c,include/linux/flat.h,lib/intflate2.c),将内核解压后打上补丁再编译即可。 • 使用GCC工具创建交叉编译工具,建立工具链(toolchain)。工具链分为两种:生成位置位置无关代码的和生成用户程序的。详情可参看《嵌入式Linux设计与应用》。 • 创建coff2flt和elf2flt,flat binary文件格式。 • 创建C函数库。 • 编译genromfs程序,用以创建romfs文件系统镜像和用户程序。 • 宿主机软件环境的建立完成。
ucLinux目标板软件环境的建立 • 将引导代码bootloader烧入FLASH,该代码相当于BIOS,或者Linux的引导程序GRUB,用于初始化硬件环境,在找到操作系统后将控制权转出。这段代码可以在网上下载得到,我们只需稍作修改即可。 • 重新编译BusyBox和GUI(MiniGUI或者Microwindows)已移植到ucLinux中。 • 配置IP地址并对ineted和通过ineted启动的telnetd和httpd进行编译连接和配置。 • 将镜像文件image.bin(实际上是内核文件linux.bin和文件系统romdisk.bin的合并)通过minicom配合bootloader下载到FLASH中。 • 配置gdb和stun并重新编译uc-libc。 • 安装NFS网络文件系统。 • 目标机软件环境建立完毕。
建立开发环境所需的几种开发调试工具 • minicom minicom是一个友好易用的串口通信程序,用来监视控制串行口的信息 。串口的各种参数都可以自由配置。它具有以下特性: • 自动重拨号的拨号目录; • 对串行设备UUCP格式的lock文件的支持; • 独立的脚本; • 语言解释器; • 文件捕获; • 多用户单独配置。
GCC编译器和GDB调试工具 • GCC编译器是一种非常强大的支持多达11种操作系统平台的的C/C++、Object C编译器,集预处理、编译、翻译和 连接四个过程于一身,可辨识的文件类型包括.c、.C、.cc、.cxx、.m、.i、.ii、.s、.S、.h等等,其最大的特点就是执行效率非常高,与一般的编译器相比要高出20%~30%,卓越的性能连一些商业软件都望尘莫及。与此同时,GCC还是一个强大的交叉编译器,支持C/C++和汇编语言的联编,配合上相应的汇编器as和连接器ld,可以在宿主机上开发目标机上可运行的二进制文件。此外,GCC生成的目标代码极其精炼,优化选项多等数十项,这是其他编译器所无法期望其颈背的。最后,编译原理也是其一大特色。 GCC先将高级语言转化为内部语言RTL,再优化并生成执行代码。 • GDB是一个可以调试C/C++、JAVA、PASICAL等的多功能GNU调试程序,可以使用多种交叉调试模式。在嵌入式系统的开发过程中,通过目标机上的一小段代码stub(stub是嵌入式系统中的一小段代码,通过GDB协议充当宿主机和目标之间的媒介),GDB可以实现对目标机上程序的远程调试功能,允许设计人员一步步的调试代码,设置断点,检验内存,同目标程序交换信息。GDB的交叉调试能力胜过大多数的商业调试内核,实际上,其功能相当于一些低端仿真器。
代码编程 C/汇编源程序 交叉编译 obj文件 交叉链接 交叉函数库 系统映象文件 重定位和下载 调试 目标板 • 嵌入式系统软件开发过程 • 开发,即代码编写; • 编译和链接; • 重定位和下载; • 调试。
总结 • 研究嵌入式Linux系统应该从研究Linux内核和学习Linux编程开始,逐步深入。 • 嵌入式Linux系统的应用范围已渗透到电子产品的各个角落,中国在这方面还处于起步阶段,希望将大家加入到嵌入式Linux设计和应用的行列。