嵌入式系统概述

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


ARMv6


ARMv7

使用Thumb-2技术,还使用了NEON技术,将DSP和 媒体处理能力提高了近4倍,并支持改良的浮点运 算。 6
ARM处理器系列

ARM7

32位低功耗RISC处理器。无MMU(内存管理单元) 有MMU和Cache。 ARM920T(如S3C2410和S3C2440)和ARM922T两种 类型。 在单一的处理器内核上提供了微控制器、DSP、 Java应用系统的解决方案 使用新的体系结构拥有所有ARM系列中最高主频。 7 含有浮点运算协处理器。
3
ARM简介


ARM是一类嵌入式微处理器,同时也是一个公司的名字。ARM 公司于1990年11月成立于英国剑桥,它是一家专门从事16/32位 RISC微处理器知识产权设计的供应商。ARM公司本身不直接从 事芯片生产,而只是授权ARM内核,再给生产和销售半导体的 合作伙伴,同时也提供基于ARM架构的开发设计技术。世界各 大半导体生产商从ARM公司处购买其设计的ARM微处理器核, 根据各自不同的应用领域,加入适当的外围电路,从而形成自 己的ARM微处理器芯片进入市场。 ARM公司从成立至今,在短短几十年的时间就占据了75%的市 场份额,如今,ARM微处理器及技术的应用几乎已经深入到各 个领域。采用ARM技术的微处理器现在已经遍及各类电子产 品,汽车、消费娱乐、影像、工业控制、海量存储、网络、安 保和无线等市场。到2001年就几乎已经垄断了全球RISC芯片市 场,成为业界实际的RISC芯片标准。
all : prog1 prog2 prog3 执行make时,目标“all”被作为终极目标。为了完成对它的更新,make会创建(不存 在)或者重建(已存在)目标“all”的所有依赖文件(prog1、prog2和prog3)。
clean: rm -f *.o make clean 可以清除前面产生的文件。
2
嵌入式系统常用处理器体系结构

PowerPC



RISC体系结构,苹果电脑公司、IBM和摩托罗拉的 半导体部门(Freescale)共同开发。 汽车、消费类电子产品、网络应用设备、电信交换机 RISC体系结构,MIPS Technology公司 广泛应用于许多产品中
MIPS


ARM Intel Atom


编写程序,输入一个整数,然后输出该整数的10 倍和20倍。其中,10倍20倍各用一个函数实现 主程序lx2.c 10倍 lx2_func1.c 20倍 lx2_func2.c 头文件 lx2_h.h
17
程序lx2_func1.c int mul10(int x)‫‏‬ { return 10*x; }
4
ARM体系架构的版本


ARM体系架构的版本就是它所使用的指令集的版 本。 ARMv4

当今市场上最老版本,只支持32位指令集。一些 ARM7处理器和Intel StrongARM采用。 增加了16位的Thumb指令集。可以使编译器生成更 紧凑的代码,提高指令执行效率。 1999年,ARMv5TE改进了Thumb指令集,增加了一 些“增强型DSP指令”,简称为E指令集。

编写自己增加的设备的驱动 编写应用程序
11
嵌入式开发的几个基本概念


宿主机与目标板 交叉编译 串口在调试中的作用

终端、传送文件
12
宿主机Linux的选择

RedHat 系列

RedHat企业版6 CentOS5.6 Fedora 15 早期的RedHat9 Debian 6.0.1a Ubuntu 11.04 Mint 新华华镭 SUSE Linux Enterprise Server SUSE Linux Enterprise Desktop OpenSuse
5

ARMv4T


ARMv5TE

ARM体系架构的版本(续)

ARMv5TEJ

2000年,ARMv5TEJ版本增加了Jazelle技术用于提 供Java加速功能,和仅用软件实现的Java虚拟机相 比,运行速度大大提高,功耗大幅下降。 2001年问世。在许多方面都有改进:存储系统、异 常处理,最重要的是增加了对多媒体功能的支持。 引入了Thumb-2和TrustZone技术。

Debian系列




Suse系列

13
宿主机Linux的选择(续)



Gentoo Slackware Mandriva Puppy Linux 红旗Linux
14
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不是编译器,它可以根据预定义的 参数来执行订制的编译过程,在这个过程中要依 15 靠外部编译器
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 19
make工程管理器

Vxworks



Windows CE Linux eCos RedHat公司开发,实时性好,硬件要求低 RTEMS 实时性好,占用资源少
9
嵌入式Linux开发过程


硬件设计 制作交叉编译工具链 移植Bootloader




Bootloader就是在操作系统内核运行之前运行的一段 程序,它类似于PC机中的BIOS程序。通过这段程 序,可以完成硬件设备的初始化,并建立内存空间的 映射关系,从而将系统的软硬件环境带到一个合适的 状态,为最终加载系统内核做好准备。 Uboot Vivi Supervivi NOR和NAND flash的作用
程序lx2_func2.c int mul20(int x)‫‏‬ { return 20*x; } 头文件lx2_h.h int mul10(int x); int mul20(int x);
18
程序lx2.c #include <stdio.h> #include "lx2_h.h" int main()‫‏‬ { int x; printf("x=?\n"); scanf("%d",&x); printf("%d , %d\n",mul10(x),mul20(x)); return 0; } 编译程序
int main()‫‏‬ { int x; printf("x=?\n"); scanf("%d",&x); printf("%d , %d\n",mul10(x),mul20(x)); //return 0; //本句如果注释掉,编译时使用 -Wall 有警告 22 }
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
编写C语言程序编译、运行
用文本编辑器编写程序 取名为lx1.c #include <stdio.h> int main()‫‏‬ { printf("Hello,World.\n"); return 0; }
编译程序 gcc lx1.c -o lx1.o
运行程序 ./lx1.o
16
多个文件的编译

Cortex



SecurCore 专为安全需要而设计 OptimoDE Data Engines

针对高性能嵌入式信号处理应用 Xscale基于ARMv5TE 如PXA270
8

Intel 的strongARM和Xscale系列

嵌入式操作系统简介

μC/OS-II

Micrium公司开发,可用于8位、16位和32位处理 器,硬件要求低 WindRiver公司开发的嵌入式实时操作系统,非常优 秀。
make工程管理器也就是个“自动编译管理器”, 这里的“自动”是指它能构根据文件时间戳自动发 现更新过的文件而减少编译的工作量,同时,它通 过读入Makefile文件文件的内容来执行大量的编译 工作 makefile文件有有一组依赖关系和规则构成。每个 依赖关系由一个目标(即将要创造的文件)和一组 该目标所依赖的源文件组成。而规则描述了如何通 过依赖文件创建目标。

ARM9


ARM9E


ARM10E

ARM处理器系列(续)

ARM11

ARMv6的第一代设计实现。 基于ARMv7架构,分为Cortex-A、Cortex-R和 Cortex-M 3类。Cortex-A为传统的、基于虚拟存储的 操作系统和应用程序而设计。Cortex-R针对实时系 统。Cortex-M针对价格敏感产品,只支持Thumb-2指 令集。
嵌入式系统概念
以应用为中心、以计算机技术为基础、软 件硬件可裁剪、适应应用系统对功能、可 靠性、成本、体积、功耗严格要求的专用 计算机系统。
1
嵌入式系统特点





面向特定应用的特点 。 嵌入式系统的硬件和软件都必须进行高效地设计,量 体裁衣、去除冗余,力争在同样的硅片面积上实现更 高的性能 。 嵌入式系统是将先进的计算机技术、半导体技术和电 子技术与各个行业的具体应用相结合后的产物 。 为了提高执行速度和系统可靠性,嵌入式系统中的软 件一般都固化在存储器芯片中或单片机本身,而不是 存储于磁盘中。 嵌入式开发的软件代码尤其要求高质量、高可靠 性。 嵌入式系统本身不具备二次开发能力 。
10ຫໍສະໝຸດ Baidu
嵌入式Linux开发过程(续)


移植内核(配置编译内核) 制作根文件系统


根文件系统是内核启动时挂载的第一个文件系统,包 括Linux启动时所必须的目录和关键性的文件。 一般有/bin /sbin /dev /etc /lib /home /root /usr /var /proc /mnt /tmp等目录。 一般来说,都要使用Busybox来创建/bin、/sbin等目 录下的可执行文件。Busybox动态链接只有几百 KB,静态链接只有1MB左右。
#开始的语句是注释 21
/*lx2_func1.c*/ int mul10(int x)‫‏‬ { return 10*x; } /*lx2_h.h*/ int mul10(int x); int mul20(int x);
/*lx2_func2.c*/ int mul20(int x)‫‏‬ { return 20*x; } /*lx2.c*/ #include <stdio.h> #include <lx2_h.h>
23
makefile文件中的宏
makefile文件允许使用宏,这样可以以一种更为通 用的格式来书写makefile文件。便于管理大型项 目。 还可以,很简单的修改编译器的名称,只改一行, 不用修改多行。 gcc cc c89 arm-linux-gcc
24
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
20
lx1:lx1.c gcc -o lx1 lx1.c
注意表示规则的语句以Tab开头,不能以空格开头
Make的3个常用选项 -k make发现错误时继续执行,而不是发现第一个错误就停下来。 -n make命令输出将要执行的步骤,而不真正执行这些操作。 -f <filename> 告诉make命令,哪个文件作为makefile文件,如未使用该选项,make 命令首先查找当前目录下名为makefile的文件然后查找Makefile
相关文档
最新文档