收藏 分享(赏)

嵌入式开发简介.pptx

上传人:Facebook 文档编号:8987677 上传时间:2019-07-19 格式:PPTX 页数:29 大小:1.61MB
下载 相关 举报
嵌入式开发简介.pptx_第1页
第1页 / 共29页
嵌入式开发简介.pptx_第2页
第2页 / 共29页
嵌入式开发简介.pptx_第3页
第3页 / 共29页
嵌入式开发简介.pptx_第4页
第4页 / 共29页
嵌入式开发简介.pptx_第5页
第5页 / 共29页
点击查看更多>>
资源描述

1、嵌入式系统开发简介,一、嵌入式系统简介,二、嵌入式系统组成,三、嵌入式操作系统,四、嵌入式系统开发,五、使用Linux开发简介,1.1 什么是嵌入式系统,IEEE(国际电气和电子工程师协会)的定义: 嵌入式系统是用于控制、监视或者辅助操作机器和设备的装置(原文为devices used to control, monitor, or assist the operation of equipment, machinery or plants) 国内一个普遍被认同的定义: 以应用为中心、以计算机技术为基础、软/硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。,1

2、.2 嵌入式发展历史,SCM(Single Chip Microcomputer) 单片机 一种集成电路芯片,采用超大规模集成电路技术把具有数据处理能力的CPU、RAM、ROM、多种I/O口等集成到一块硅片上构成的一个小而完善的微型计算机系统。 MCU(Micro Controller Unit) 微控制器 在SCM的基础上满足各类应用,目前来讲不加以区分。 SoC(System on aChip) 系统级芯片 实现复杂系统功能的VLSI; 采用超深亚微米工艺技术; 使用一个以上嵌入式CPU数字信号处理器(DSP); 外部可以对芯片进行编程; 主要采用第三方IP进行设计。,1.3 IP核,IP

3、(Intellectual Property) 知识产权核 IP核是一段具有特定电路功能的硬件描述语言程序,该程序与集成电路工艺无关,可以移植到不同的半导体工艺中去生产集成电路芯片。利用IP核设计电子系统,引用方便,修改基本元件的功能容易。具有复杂功能和商业价值的IP核一般具有知识产权。 IP核分类 软核(Soft IP Core) 固核(Firm IP Core) 硬核(Hard IP Core),1.4 嵌入式微处理器,嵌入式微处理器大多工作在为特定用户群所专用设计的系统中,它将通用CPU许多由板卡完成的任务集成在芯片内部,从而有利于在设计时趋于小型化,同 时还具有很高的效率和可靠性。 据

4、不完全统计,目前全世界嵌入式微处理器已经超过1000多种,体系结构有30多个系列,其中主流的体系有ARM、MIPS、PowerPC、X86等。 但与全球PC市场不同的是,没有一种嵌入式微处理器可以主导市场,仅以32位的产品而言,就有100种以上的嵌入式微处理器。,1.5 Arm处理器介绍,ARM(Advanced RISC Machine)的概念 即可以任务是一个公司名字,也是一类处理器的通称,或者一种技术的名字。 ARM体系架构版本 即它所使用的指令集的版本。ARM架构支持了32位的ARM指令集和16位的指令集。有ARMv4、ARMv4T、ARMv5TE、ARMv5TEJ、ARMv6、ARM

5、v7等。 ARM处理器系列 在相同指令集下,搭配不同不见就可以组装出不同功能的处理器;有ARM7、ARM9、ARM9E、ARM10E、ARM11、Cortex、SecurCore、OptimoDE Data Engines等。 T:支持Thumb指令集; D:表示支持片上调试; M:表示内嵌硬件乘法器; I:支持片上断点和调试点 E:表示支持增强型DSP功能; J:表示支持Jazelle技术,即Java加速器; S:表示全合成型(Full synthesizable),2.1 嵌入式系统组成,2.2 嵌入式系统硬件层,硬件层中包含嵌入式微处理器、存储器(SDRAM、ROM、Flash等)、通用

6、设备接口和I/O接口(A/D、D/A、I/O等)。 在一嵌入式处理器基础上添加电源电路、时钟电路和存储器电路,就构成了一个嵌入式核心控制模块。其中操作系统和应用程序都可以固化在中。,2.3 嵌入式系统中间层,硬件层与软件层之间为中间层,也称为硬件抽象层(Hardware Abstract Layer,HAL) 或板级支持包(Board Support Package, BSP) 它将系统上层软件与底层硬件分离开来,使系统的底层驱动程序与硬件无关,上层软件开发人员无须关心底层硬件的具体情况,根据BSP层提供的接口即可进行开发。该层一般包含相关底层硬件的初始化、数据的输入/输出操作和硬件设备的配置

7、功能。 HAL/BSP具有以下两个特点 硬件相关性:因为嵌入式实时系统的硬件环境具有应用相关性,而作为上层软件与硬件平台之间的接口,BSP为操作系统提供操作和控制硬件的方法; 操作系统相关性:不同的操作系统具有各自的软件层次结构,并且具有特定的硬件接口形式。,2.4 嵌入式系统软件层,系统软件层 系统软件控制和管理嵌入式系统资源,为嵌入式应用提供支持的各种软件,如设备驱动程序、嵌入式操作系统、嵌入式中间件等。系统软件层由实时多任务操作系统(Real-Time Operation System,RTOS)、文件系统、图形用户接口(Graphic User Interface,GUI)、网络系统及

8、通用组件模块组成。RTOS是嵌入式应用软件的基础和开发平台。 应用软件层 应用软件是嵌入式系统中的上层软件,它定义了嵌入式设备的主要功能和用途,并负责与用户进行交互。应用软件是嵌入式系统功能的体现,如飞行控制软件、手机软件、MP3播放软件、电子地图软件等,一般面向于特定的应用领域。,2.5 嵌入式系统与PC,2.6 嵌入式系统与PC,3.1 嵌入式操作系统,嵌入式操作系统可以统称为应用在嵌入式系统中的操作系统,它具有一般操作系统的功能,同时具有嵌入式软件的特点,主要有: 可固化存储 可配置、可剪裁 独立的板级支持包,可修改 不同的CPU有不同的版本 应用的开发需要有集成的交叉开发工具常见操作系

9、统: C/OS-IIWinCELinuxVxWorksPalm OSQNX,3.2 任务的定义,任务是一个具有独立功能的无限循环的程序段的一次运行活动,是实时内核调度的单位,包含代码、数据、堆栈、程序执行的上下文环境,具有以下特性:动态性:任务状态是不断变化的。 一般分为就绪态、运行态和等待态。 在多任务系统中,任务的状态将随着系统的需要不断进行变化。并行性: 系统中同时存在多个任务,这些任务在宏观上是同时运行的。异步独立性: 每个任务各自按相互独立的不可预知的速度运行,走走停停。,3.3 内核与调度,内核(Kernel) 多任务系统中,内核负责管理各个任务,或者说为每个任务分配CPU时间,并

10、且负责任务之间的通信。内核提供的基本服务是任务切换。内核本身也增加了应用程序的额外负荷,代码空间增加ROM用量,内核本身的数据结构增加了RAM的用量。内核本身对CPU的占用时间一般在2到5个百分点之间。调度(Scheduler或dispatcher ) 内核的主要职责之一,决定哪个任务运行。多数实时内核是基于优先级调度法的。每个任务根据其重要程度被赋予一定优先级。CPU总是让处在就绪态的优先级最高的任务先运行。,4.1 嵌入式软件开发,嵌入式软件开发的特点: 需要交叉开发环境:交叉开发环境是指实现编译、链接和调试应用程序代码的环境。与运行应用程序的环境不同,它分散在有通信连接的宿主机和目标机环

11、境之中。宿主机(Host) 是一台通用计算机,一般是PC机。它通过串口或是网络连接与目标机通信; 目标机(Target) 可以是嵌入式应用软件的实际运行环境,也可以是能替代实际环境的仿真环境;,4.2 Linux开发流程,4.3 嵌入式代码编程,对于嵌入式开发,最初的嵌入式设备是一个空白的系统,需要通过主机为它构建基本的软件系统,并烧写到设备中,另外,嵌入式设备的资源并不足以用来开发软件。所以需要用到交叉开发模式,在主机上编辑、编译软件,然后在目标板上运行、验证程序。一般分以下三个步骤:在主机上编译Bootloader,然后通过Jtag烧入单板;在主机上编译嵌入式Linux内核,通过Bootl

12、oader烧入单板或者直接启动;在主机上编译各类应用程序,单板启动内核后通过NFS运行它们,经过验证后再烧入单板。,4.4 详细开发流程,(1)源代码编写:编写源 C/C+及汇编程序; (2)程序编译:通过专用编译器编译程序; (3)软件仿真调试:在 SDK 中仿真软件运行情况;(4)程序下载:通过 JTAG、USB、UART 方式下载到目标板上; (5)软硬件测试、调试:通过 JTAG 等方式联合调试程序;(6)下载固化:程序无误,下载到产品上生产。,4.5 交叉编译和链接,嵌入式软件开发编码完成后,要进行编译和链接以生成可执行代码。但是,在开发过程中设计人员普遍使用Intel的x86系列C

13、PU的计算机进行开发,而目标环境的处理芯片却是多种多样的,如ARM,DSP,PowerPC,DragonBall系列等,这就要求开发机上的编译器能支持交叉编译。嵌入式集成开发环境都支持交叉编译、链接,如WindRiver公司的Tornado以及GNU套件等。交叉编译链接生成两种类型的可执行文件:调试用的可执行文件和固化的可执行文件。,4.6 嵌入式软件开发要点,嵌入式应用软件高度依赖目标应用的软硬件环境,软件的部分任务功能函数由汇编语言完成,具有高度的不可移植性。为了保证实时性能,使用效率高和速度快的汇编语言是不可避免的。尽可能提高嵌入式应用软件的可移植性方法: (1)尽量用高级语言开发,少用

14、汇编语言 (2)局域化不可移植部分 (3)提高软件的可重用性,4.7 交叉调试,4.8 交叉调试,交叉调试,又叫远程调试,具有以下特点:调试器和被调试的程序运行在不同的机器上。调试器运行在PC或工作站上,而被调试程序运行在各式的专用目标机上; 调试器通过某种通信方式与目标机建立联系,如串口、并口、网络、JTAG或者专用的通信方式; 在目标机上一般具有某种调试代理,这种代理能与调试器一起配合完成对目标机上运行程序的调试。这种代理可以是某种能支持调试的硬件,也可以是某种软件; 目标机可以是一种仿真机。通过在宿主机上运行目标机的仿真软件,仿真一台目标机,使整个调试工作只在一台计算机上进行。,5.1

15、Linux开发过程简介,(1)建立开发环境,操作系统一般使用 Redhat Linux,选择定制安装或全部安装,通过 网络下载相应的 GCC 交叉编译器进行安装(比如,arm-1inux-gcc、arnl-uclibc-gcc、arm-linux-ld等),或者安装产品厂家提供的相关交叉编译器; (2)配置开发主机,配置串口通信软件或者Windows 下的超级终端。串口通信软件的作用是作为调试嵌入式开发板的信息输出的监视器和键盘输入的工具。配置网络主要是配置NFS 网络文件系统,需要关闭防火墙,简化嵌入式网络调试环境设置过程。,5.2 Linux开发过程简介,(3)建立引导装载程序 BOOTL

16、OADER,从网络上下载一些公开源代码的 BOOTLOADER,如 U.BOOT、BLOB、VIVI、LILO、ARM-BOOT、RED-BOOT 等,根据具体芯片进行移植修改。有些芯片没有内置引导装载程序,比如,三星的 ARV17、ARM9 系列芯片, 这样就需要编写开发板上 FLASH 的烧写程序,读者可以在网上下载相应的烧写程序,也有 Linux 下的公开源代码的 J-FLASH 程序。如果不能烧写自己的开发板,就需要根据自己的具体电路进行源代码修改。这是让系统可以正常运行的第一步。如果用户购买了厂家的仿真器 比较容易烧写 FLASH,虽然无法了解其中的核心技术,但对于需要迅速开发自己的

17、应用的人来说可以极大提高开发速度。,5.3 Linux开发过程简介,(4)下载已经移植好的 Linux 操作系统,如 MCLiunx、ARM-Linux、PPC-Linux 等,如果有专门针对所使用的 CPU 移植好的 Linux 操作系统那是再好不过,下载后再添加特定硬件的驱动程序,然后进行调试修改,对于带 MMU 的 CPU 可以使用模块方式调试驱动,而对于MCLiunx 这样的系统只能编译内核进行调试。 (5)建立根文件系统,可以从 busybox下载使用 BUSYBOX 软件进行功能裁减,产生一个最基本的根文件系统,再根据自己的应用需要添加其他的程序。由于默认 的启动脚本一般都不会符合

18、应用的需要,所以就要修改根文件系统中的启动脚本,它的存放 位置位于/etc 目录下,包括:/etc/init.d/rc.S、/etc/profile、/etc/.profile 等,自动挂装文件系统 的配置文件/etc/fstab,具体情况会随系统不同而不同。根文件系统在嵌入式系统中一般设为只读,需要使用mkcramfs genromfs等工具产生烧写映像文件。,5.4 Linux开发过程简介,(6)建立应用程序的 FLASH 磁盘分区,一般使用 JFFS2 或 YAFFS 文件系统,这需要在 内核中提供这些文件系统的驱动,有的系统使用一个线性FLASH(NOR型)512KB32MB, 有的系统使用非线性 FLASH(NAND 型)8MB512MB,有的两个同时使用,需要根据应用 规划 FLASH 的分区方案。 (7)开发应用程序,可以放入根文件系统中,也可以放入 YAFFS、JFFS2 文件系统中, 有的应用不使用根文件系统,直接将应用程序和内核设计在一起,这有点类似于C/OS-II 的方式。 (8)烧写内核、根文件系统和应用程序,发布产品。,谢谢!,Email:孙宏伟 ,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报