嵌入式系统概述.ppt_第1页
嵌入式系统概述.ppt_第2页
嵌入式系统概述.ppt_第3页
嵌入式系统概述.ppt_第4页
嵌入式系统概述.ppt_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,嵌入式系统概念,以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。,2,嵌入式系统特点,面向特定应用的特点 。 嵌入式系统的硬件和软件都必须进行高效地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能 。 嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物 。 为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片中或单片机本身,而不是存储于磁盘中。 嵌入式开发的软件代码尤其要求高质量、高可靠性 。 嵌入式系统本身不具备二次开发能力 。,3,嵌入式系统常用处理器体系结构,PowerPC RISC体系结构,苹果电脑公司、IBM和摩托罗拉的半导体部门(Freescale)共同开发。 汽车、消费类电子产品、网络应用设备、电信交换机 MIPS RISC体系结构,MIPS Technology公司 广泛应用于许多产品中 ARM Intel Atom,4,ARM简介,ARM是一类嵌入式微处理器,同时也是一个公司的名字。ARM公司于1990年11月成立于英国剑桥,它是一家专门从事16/32位RISC微处理器知识产权设计的供应商。ARM公司本身不直接从事芯片生产,而只是授权ARM内核,再给生产和销售半导体的合作伙伴,同时也提供基于ARM架构的开发设计技术。世界各大半导体生产商从ARM公司处购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。 ARM公司从成立至今,在短短几十年的时间就占据了75%的市场份额,如今,ARM微处理器及技术的应用几乎已经深入到各个领域。采用ARM技术的微处理器现在已经遍及各类电子产品,汽车、消费娱乐、影像、工业控制、海量存储、网络、安保和无线等市场。到2001年就几乎已经垄断了全球RISC芯片市场,成为业界实际的RISC芯片标准。,5,ARM体系架构的版本,ARM体系架构的版本就是它所使用的指令集的版本。 ARMv4 当今市场上最老版本,只支持32位指令集。一些ARM7处理器和Intel StrongARM采用。 ARMv4T 增加了16位的Thumb指令集。可以使编译器生成更紧凑的代码,提高指令执行效率。 ARMv5TE 1999年,ARMv5TE改进了Thumb指令集,增加了一些“增强型DSP指令”,简称为E指令集。,6,ARM体系架构的版本(续),ARMv5TEJ 2000年,ARMv5TEJ版本增加了Jazelle技术用于提供Java加速功能,和仅用软件实现的Java虚拟机相比,运行速度大大提高,功耗大幅下降。 ARMv6 2001年问世。在许多方面都有改进:存储系统、异常处理,最重要的是增加了对多媒体功能的支持。 引入了Thumb-2和TrustZone技术。 ARMv7 使用Thumb-2技术,还使用了NEON技术,将DSP和媒体处理能力提高了近4倍,并支持改良的浮点运算。,7,ARM处理器系列,ARM7 32位低功耗RISC处理器。无MMU(内存管理单元) ARM9 有MMU和Cache。 ARM920T(如S3C2410和S3C2440)和ARM922T两种类型。 ARM9E 在单一的处理器内核上提供了微控制器、DSP、Java应用系统的解决方案 ARM10E 使用新的体系结构拥有所有ARM系列中最高主频。含有浮点运算协处理器。,8,ARM处理器系列(续),ARM11 ARMv6的第一代设计实现。 Cortex 基于ARMv7架构,分为Cortex-A、Cortex-R和Cortex-M 3类。Cortex-A为传统的、基于虚拟存储的操作系统和应用程序而设计。Cortex-R针对实时系统。Cortex-M针对价格敏感产品,只支持Thumb-2指令集。 SecurCore 专为安全需要而设计 OptimoDE Data Engines 针对高性能嵌入式信号处理应用 Intel 的strongARM和Xscale系列 Xscale基于ARMv5TE 如PXA270,9,嵌入式操作系统简介,C/OS-II Micrium公司开发,可用于8位、16位和32位处理器,硬件要求低 Vxworks WindRiver公司开发的嵌入式实时操作系统,非常优秀。 Windows CE Linux eCos RedHat公司开发,实时性好,硬件要求低 RTEMS 实时性好,占用资源少,10,嵌入式Linux开发过程,硬件设计 制作交叉编译工具链 移植Bootloader Bootloader就是在操作系统内核运行之前运行的一段程序,它类似于PC机中的BIOS程序。通过这段程序,可以完成硬件设备的初始化,并建立内存空间的映射关系,从而将系统的软硬件环境带到一个合适的状态,为最终加载系统内核做好准备。 Uboot Vivi Supervivi NOR和NAND flash的作用,11,嵌入式Linux开发过程(续),移植内核(配置编译内核) 制作根文件系统 根文件系统是内核启动时挂载的第一个文件系统,包括Linux启动时所必须的目录和关键性的文件。 一般有/bin /sbin /dev /etc /lib /home /root /usr /var /proc /mnt /tmp等目录。 一般来说,都要使用Busybox来创建/bin、/sbin等目录下的可执行文件。Busybox动态链接只有几百KB,静态链接只有1MB左右。 编写自己增加的设备的驱动 编写应用程序,12,嵌入式开发的几个基本概念,宿主机与目标板 交叉编译 串口在调试中的作用 终端、传送文件,13,宿主机Linux的选择,RedHat 系列 RedHat企业版6 CentOS5.6 Fedora 15 早期的RedHat9 Debian系列 Debian 6.0.1a Ubuntu 11.04 Mint 新华华镭 Suse系列 SUSE Linux Enterprise Server SUSE Linux Enterprise Desktop OpenSuse,14,宿主机Linux的选择(续),Gentoo Slackware Mandriva Puppy Linux 红旗Linux,15,Linux常用命令与软件,ls cd cp rm mv mkdir cat more head tail find grep mount chmod ps kill dmesg tar du df mknod diff echo 注意文件和目录的权限 文本编辑器可以使用vi、emacs、gedit、geany等 编译gcc 交叉编译arm-linux-gcc 调试gdb make make不是编译器,它可以根据预定义的参数来执行订制的编译过程,在这个过程中要依靠外部编译器,16,编写C语言程序编译、运行,用文本编辑器编写程序 取名为lx1.c #include int main() printf(“Hello,World.n“); return 0; 编译程序 gcc lx1.c -o lx1.o 运行程序 ./lx1.o,17,多个文件的编译,编写程序,输入一个整数,然后输出该整数的10倍和20倍。其中,10倍20倍各用一个函数实现 主程序lx2.c 10倍 lx2_func1.c 20倍 lx2_func2.c 头文件 lx2_h.h,18,程序lx2_func1.c int mul10(int x) return 10*x; ,程序lx2_func2.c int mul20(int x) return 20*x; ,头文件lx2_h.h int mul10(int x); int mul20(int x);,19,程序lx2.c #include #include “lx2_h.h“ int main() int x; printf(“x=?n“); scanf(“%d“, ,编译程序 gcc lx2.c lx2_func1.c lx2_func2.c -o lx2 运行程序 ./lx2,gcc -c lx2.c gcc -c lx2_func1.c gcc -c lx2_func2.c gcc lx2.o lx2_func1.o lx2_func2.o -o lx2,20,make工程管理器,make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能构根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件文件的内容来执行大量的编译工作 makefile文件有有一组依赖关系和规则构成。每个依赖关系由一个目标(即将要创造的文件)和一组该目标所依赖的源文件组成。而规则描述了如何通过依赖文件创建目标。,21,lx1:lx1.c gcc -o lx1 lx1.c 注意表示规则的语句以Tab开头,不能以空格开头,Make的3个常用选项 -k make发现错误时继续执行,而不是发现第一个错误就停下来。 -n make命令输出将要执行的步骤,而不真正执行这些操作。 -f 告诉make命令,哪个文件作为makefile文件,如未使用该选项,make命令首先查找当前目录下名为makefile的文件然后查找Makefile all : prog1 prog2 prog3 执行make时,目标“all”被作为终极目标。为了完成对它的更新,make会创建(不存在)或者重建(已存在)目标“all”的所有依赖文件(prog1、prog2和prog3)。 clean: rm -f *.o make clean 可以清除前面产生的文件。 #开始的语句是注释,22,/*lx2_func1.c*/ int mul10(int x) return 10*x; ,/*lx2_func2.c*/ int mul20(int x) return 20*x; ,/*lx2.c*/ #include #include int main() int x; printf(“x=?n“); scanf(“%d“, /本句如果注释掉,编译时使用 -Wall 有警告 ,/*lx2_h.h*/ int mul10(int x); int mul20(int x);,23,lx2:lx2.o lx2_func1.o lx2_func2.o gcc -o lx2 lx2.o lx2_func1.o lx2_func2.o lx2.o:lx2.c lx2_h.h gcc -I . -c lx2.c lx2_func1.o:lx2_func1.c gcc -c lx2_func1.c lx2_func2.o:lx2_func2.c gcc -c lx2_func2.c clean: # rm lx2.o lx2_func1.o lx2_func2.o rm *.o,24,makefile文件中的宏,makefile文件允许使用宏,这样可以以一种更为通用的格式来书写makefile文件。便于管理大型项目。 还可以,很简单的修改编译器的名称,只改一行,不用修改多行。 gcc cc c89 arm-linux-gcc,25,all:lx2 CC=gcc INCLUDE=. CFLAGS=-g -Wall lx2:lx2.o lx2_func1.o lx2_func2.o $(CC) -o lx2 lx2.o lx2_func1.o lx2_func2.o lx2.o:lx2.c lx2_h.h $(CC) -I $(INCLUDE) $(CFLAGS) -c lx2.c lx2_func1.o:lx2_func1.c $(CC) $(CFLAGS) -c lx2_func1.c lx2_func2.o:lx2_func2.c $(CC) $(CFLAGS) -c lx2_func2.c clean: # rm lx2.o lx2_func1.o lx2_func2.o rm *.o,26,mini2440开发板交叉编译工具链的安装,交叉编译器统一为 arm-linux-gcc-4.3.2 下面是它的安装设置步骤。 Step1:将光盘目录 linux中的 arm-linux-gcc-4.3.2.tgz 复制到某个目录下如 tmp,然后 进入到该目录,执行解压命令: #cd tmp #tar xvzf arm-linux-gcc-4.3.2.tgz C / 注意:C 后面有个空格,并且 C 是大写的,它是英文单词“Change”的第一个字母, 在此是改变目录的意思。 执行该命令,将把 arm-linux-gcc 安装到/usr/loca/arm/4.3.2 目录。 Step2:把编译器路径加入系统环境变量,运行命令 #gedit /root/.bashrc 编辑/root/.bashrc 文件,在最后一行 export PATH=$PATH:/usr/local/arm/4.3.2/bin 重新登录系统(不必重启机器,开始-logout 即可),使以上设置生效,在命令行输入 arm-linux-gcc v,会出现提示信息,这说明交叉编译环境已经成功安装。,27,系统环境变量也可以如下修改: 修改 /.bash_profile 修改后该文件最后几行内容如下 PATH=$PATH:$HOME/bin:/usr/local/arm/4.3.2/bin export PATH 交叉编译时使用命令 arm-linux-gcc,28,从PC机向开发板传文件 在开发板终端窗口输入 rz 出现 C*B0100000023be50ve.*B0100000023be50 按ctrl+A 再按s 选zmodem 再根据提示选文件(进入目录的方法是用空格双击。选中文件的办法是单击空格选中文件,再按回车。) 从开发板向PC机传文件,例如开发板上有个文件名为lx1.c sz lx1.c,PC机和开发板使用minicom软件通过串口传输文件,29,PC机和开发板可以使用ftp传输文件 在PC机输入 ftp 192.168.1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论