嵌入式系统开发流程
嵌入式编程开发是目前大多数软件开发程序员都在学习的一种编程开发技术。 以下是小编搜集的关于嵌入式系统开发流程的内容。 让我们来看看。 我希望它可以帮助你!
第一步:搭建开发环境
操作系统一般采用Redhat Linux,选择定制安装或完全安装,通过互联网下载相应的GCC交叉编译器并安装(例如arm-linux-gcc、arm-uclibc-gcc),或者安装相关交叉- 由产品制造商设备提供的编译器;
步骤2:配置开发主机
配置 MINICOM。 一般参数为波特率115200 Baud/s,数据位8,停止位1、9,无奇偶校验,软硬件流控设置为无。 Windows下超级终端的配置也是如此。 MINICOM软件作为监视器和键盘输入工具,用于调试嵌入式开发板的信息输出。 配置网络主要涉及配置NFS网络文件系统,需要关闭防火墙以简化嵌入式网络调试环境搭建过程。
第3步:创建引导加载程序BOOTLOADER
从网上下载一些开源的BOOTLOADER,如U.BOOT、BLOB、VIVI、LILO、ARM-BOOT、RED-BOOT等,根据具体芯片进行移植和修改。 有些芯片没有内置引导加载程序,例如三星的ARV17和ARM9系列芯片。 这种情况下,就需要为开发板上的FLASH编写编程程序。 可以在网上下载相应的编程程序,Linux下也有开源的J程序。 -FLASH程序。 如果您无法对自己的开发板进行编程,则需要根据您的具体电路修改源代码。 这是启动并运行系统的第一步。 如果用户购买厂家的仿真器,对FLASH进行编程就更容易了。 虽然核心技术无法理解,但是对于需要快速开发自己的应用程序的人来说,可以大大提高开发速度。
第四步:下载移植的Linux操作系统
比如MCLiunx、ARM-Linux、PPC-Linux等。如果有一个专门针对所使用的CPU移植的Linux操作系统那就太好了。 下载后,添加针对特定硬件的驱动程序,然后进行调试和修改。 对于带有MMU的CPU可以使用模块模式来调试驱动程序,而对于MCLiunx等系统,只能编译内核进行调试。
步骤5:创建根文件系统
下载并使用BUSYBOX软件减少功能生成基本的根文件系统,然后根据自己的应用需求添加其他程序。 由于默认的启动脚本一般不能满足应用程序的需要,因此需要修改根文件系统中的启动脚本。 其存放位置在/etc目录下,包括:/etc/init.d/rc.S、/etc/profile、/etc/.profile等,自动挂载文件系统的配置文件/etc/fstab 。 具体情况会因系统而异。 嵌入式系统中根文件系统一般设置为只读,需要使用mkcramfs genromfs等工具来生成编程镜像文件。
第六步:创建应用程序的FLASH磁盘分区
一般采用JFFS2或YAFFS文件系统,这就需要在内核中提供这些文件系统的驱动。 有的系统使用线性FLASH(NOR型)512KB~32MB,有的系统使用非线性FLASH(NAND型)8MB~512MB。 有的两者同时使用,需要根据应用规划FLASH分区方案。
第七步:开发应用程序
它可以放在根文件系统中,也可以放在YAFFS或JFFS2文件系统中。 有些应用程序不使用根文件系统,直接将应用程序和内核设计在一起,这有点类似于μC/OS-II的方式。
第8步:烧写内核
根文件系统及应用、发布产品。
常见的嵌入式系统有很多:
Linux、uClinux、WinCE、PalmOS、Symbian、eCos、uCOS-II、VxWorks、pSOS、Nucleus、ThreadX、Rtems、QNX、INTEGRITY、OSE、C Executive、autosar…
什么是嵌入式操作系统?
嵌入式操作系统是支持嵌入式系统应用的操作系统软件。 它是嵌入式系统的重要组成部分。 嵌入式操作系统具有通用操作系统的基本特征,可以有效管理复杂的系统资源,并对硬件进行虚拟化。
从应用角度看,可分为通用嵌入式操作系统和专用嵌入式操作系统。 常见的通用嵌入式操作系统包括Linux、VxWorks、Windows CE.net等。常用的专用嵌入式操作系统包括Smart Phone、Pocket PC、Symbian等。
根据实时性能可分为两类:
实时嵌入式操作系统主要面向控制、通信等领域。 例如WindRiver的VxWorks、ISI的pSOS、QNX System Software的QNX、ATI的Nucleus以及许多汽车电子行业都使用实时能力较强的操作系统。
非实时嵌入式操作系统主要针对消费电子产品。 此类产品包括PDA、移动电话、机顶盒、电子书、WebPhone等。如微软针对手机应用的Smart Phone操作系统。
嵌入式系统的设计和实现基本上需要四种不同类型的工作:系统设计工作、硬件设计工作、驱动程序和操作系统移植工作以及应用程序设计和开发工作。
1.系统设计工作
在系统设计阶段,系统分析师会根据需要确定系统硬件的基本构成,并根据系统的需要选择使用哪种处理器、使用哪种操作系统、使用哪种软件开发工具。 系统分析师往往是参与过嵌入式系统设计全过程、对系统应用行业有深入了解、对嵌入式系统本身的开发流程非常清楚的人。
2.硬件设计工作
系统硬件设计人员需要根据系统分析师的设计结果来设计硬件原理图。 硬件设计人员通常需要熟悉嵌入式系统的硬件组件。 硬件设计人员需要了解常用的嵌入式系统处理器、存储器(Flash、SDRAM)、以太网MAC芯片、音频/视频编解码芯片、电源管理芯片、总线接口电路(USB、PCI)、液晶显示模块等基本知识编程逻辑器件(FPGA/CPLD)、无线网络通信模块(蓝牙、WLAN、GPRS)等硬件电路元件的工作原理、连接方法、使用注意事项、基本调试方法等,可以找到很多公司的原理图互联网上的评估板。 您应该仔细研究这些原理图,以了解处理器如何以及为何与内存、网卡、液晶模块和其他设备连接。 通过对这些电路的学习,我们可以快速了解整个嵌入式系统的组成。 虽然这些电路与实际产品中的电路,尤其是手持设备中的电路存在一定的差异,但这些差异并不影响初学者对嵌入式系统的学习。 硬件设计的基本组成部分。
1)学习Linux系统安装、常用命令、应用程序安装。
2)要学习Linux下的C编程,必须学习Rechard Stevens写的《UNIX环境下的高级编程》和《UNIX网络编程》这本书。 大多数C专家都学习过《C与指针》、《C缺陷与陷阱》、《高质量C/C++编程指南》、《C专家编程》、《C编程语言》
3)大部分程序员必学:数据结构,嵌入式程序员必学数据结构!
4)大多数底层开发人员需要学习:微机原理和计算机体系结构,嵌入式开发人员必须学习!
5)微控制器可以让从事软件开发的人了解和操作硬件。 学习它是有必要的,因为从头开始学习ARM是不现实的!
6)ARM架构,包括汇编。
7)学习数字电路是有必要的,不然做底层开发的时候真的不知道怎么看原理图。 您至少必须了解与或门。
8)ARM+Linux应用开发。 (前提是有开发板)
9)做底层开发,必须知道软件和硬件是如何连接、协同工作的。 那你就应该认真学习电子技术。 经常用到模拟电路知识。 这就是专家和新手的区别。 一。
10)你需要学习Linux下的汇编,这样你才能真正理解你编写的程序是如何在特定硬件上运行的。 这是好玩家和新手的第二个区别。
11)TCP/IP协议栈必须学,是所有嵌入式专家都必须掌握的。 这是专家和新手的第三个区别。
12)有了这些东西,获取Linux驱动程序不再是小菜一碟。 你需要学习Linux内核源代码和Linux驱动程序设计。 这是技术上的升华。
13)你必须学习音频和视频解码技术。
14)可以参与各种IC、Bootloader的开发设计。
15)自行设计、开发新产品、新技术。
学会这一点大概需要3年左右的时间。 但下一步是什么? 在构建了一个嵌入式系统的产品之后,你基本上已经弄清楚了一些例程。
不同的行业有不同的系统要求。 比如汽车行业、航空航天行业等高精度、高安全性要求的行业,实时性要求非常高,对安全性、可靠性要求也非常严格。 有些行业,例如消费品、娱乐、生活必需品等,有不同的用户体验。 数码产品对一些图像和声音的处理要求较高,要求高清晰度、高质量。 对于某些类型的通信设备,对网络响应数据传输的要求非常严格,等等。 根据不同的需求,选择适合自己的操作系统,才能对开发工作有更大的帮助。
计算机四级嵌入式系统开发工程师考试复习要点
1.实时系统的调度
(1)调度:给定一组实时任务和系统资源,确定每个任务何时何地执行的整个过程。
(2)抢占式调度:通常是优先级驱动的调度,例如uCOS。 优点是实时性好,响应速度快,调度算法比较简单,可以保证高优先级任务的时间约束; 缺点是上下文切换较多。
(3)非抢占式调度:通常是按照时间片分配的调度。 任务在执行过程中不允许被中断。 一旦某个任务占用了处理器,就必须执行或者主动放弃,比如WinCE。 优点是上下文切换较少; 缺点是处理器的有效资源利用率低,可调度性不好。
(4)静态表驱动策略:运行前,系统根据各任务的时间约束和关系,采用一定的搜索策略生成运行时间表,标明各任务的开始运行时间和运行时间。
(5)优先级驱动策略:根据任务的优先级确定任务的执行顺序。
(6)实时任务分类:周期性任务、偶然任务、非周期性任务。
(7)实时系统总体结构模型:数据采集任务实现传感器数据的采集,数据处理任务对采集到的数据进行处理,并将处理后的数据发送给执行机构管理任务控制机构执行。
2.嵌入式微处理器架构
(1)冯诺依曼结构:程序和数据共享一个存储空间。 程序指令存储地址和数据存储地址指向同一存储器中的不同物理位置。 使用单个地址和数据总线。 程序和数据的宽度相同。 例如:8086、ARM7、MIPS……
(2)哈佛结构:程序和数据是两个独立的存储器。 每个存储器都是独立寻址和独立访问的。 它是一种将程序存储和数据存储分开的内存结构。 例如:AVR、ARM9、ARM10……
(3)CISC和RISC的特性比较(参考教程第22页)。 计算机执行程序所需的时间P可用下式计算:P=I×CPI×T
I:高级语言程序编译后可以在机器上运行的指令数。
CPI:执行每条指令所需的平均周期数。
T:每个机器周期的时间。
(4)流水线的思想:将CPU中一条指令的串行执行过程改为几条指令的子过程,在CPU中重叠执行。
(5)管道指标:
吞吐量:单位时间内从流水线处理器流出的结果数。 如果管道的子进程花费不同的时间,则吞吐率应该是最长子进程的倒数。
设置时间:管道开始工作并达到最大吞吐量的时间。 如果m个子进程花费的时间相同,均为t,则建立时间T=mt。
(6) 信息存储的字节顺序 A. 存储单位:字节(8 位)
B、字长决定了微处理器的寻址能力,即虚拟地址空间的大小。
C、32位微处理器的虚拟地址空间为232位,即4GB。
D. Little-endian 字节顺序:低字节在内存的低地址,高字节在内存的高地址。
E. Big-endian 字节顺序:高字节在内存的低地址,低字节在内存的高地址。 F. 网络设备的存储顺序取决于OSI模型底层的数据链路层。
3.逻辑电路基础
(1)根据电路是否具有存储功能,逻辑电路分为:组合逻辑电路和时序逻辑电路。
(2)组合逻辑电路:电路任意时刻的输出仅取决于该时刻的输入信号,与输入信号作用前电路的状态无关。 常用的逻辑电路包括解码器和多路复用器。
(3)时序逻辑电路:电路任意时刻的输出不仅与该时刻的输入有关,还与该时刻电路的状态有关。 因此,时序电路中必须包含存储元件。 触发器是时序逻辑电路的基础。 常用的时序逻辑电路包括寄存器和计数器。
(4) 真值表、布尔代数、摩根定律和门电路的概念。
(5)或非(NOR)和与非(NAND)门电路称为万能门电路,可以实现任何一种逻辑功能。
(6)解码器:具有多个输入和多个输出的组合逻辑网络。
对于每一个n位二进制码输入,m个输出中最多有一个是有效的。 当m=2n时,为全解码; 当米
(7)由于集成电路的高电平输出电流较小,而低电平输出电流较大,因此在采用集成门电路直接驱动LED时,常采用低电平驱动方式。 液晶七段字符显示LCD利用液晶在有外加电场和无外加电场时的不同光学特性来显示字符。
(8)时钟信号是时序逻辑的基础,用于确定逻辑单元中状态的适当更新。 同步是时钟控制系统的主要限制。
(9)选择触发器时,触发方式是必须考虑的因素。 触发方式有两种: 电平触发方式:其优点是结构简单,常用于组成临时寄存器。
边沿触发方式:数据侧抗干扰能力强,常用于构成寄存器、计数器等。
4级计算机嵌入式系统开发工程师考试复习要点
1.嵌入式系统的定义
(1)定义:以应用为中心,以计算机技术为基础,软硬件可定制,以满足应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
(2)嵌入式系统的发展有四个阶段:无操作系统阶段、简单操作系统阶段、实时操作系统阶段、面向互联网阶段。
(3)知识产权核(IP核):具有知识产权、特定功能、标准化接口、可在多种集成电路设计中重复使用的功能模块,是实现片上系统(SOC)的基本构建模块。
(4) IP核模块具有三个不同层次的设计:行为、结构和物理。 根据功能行为的不同描述,可以将它们分为三类:软核、实核和硬核。
2、嵌入式系统的组成:硬件层、中间层、系统软件层、应用软件层
(1)硬件层:嵌入式微处理器、存储器、通用设备接口和I/O接口。
嵌入式核心模块=微处理器+电源电路+时钟电路+存储器 Cache:位于主存和嵌入式微处理器核心之间,存储最近一段时间
微处理器使用最多的程序代码和数据。 其主要目标是减少内存对微处理器核心造成的内存访问瓶颈,使处理速度更快。
(2)中间层(也称硬件抽象层HAL或板级支持包BSP):它将系统上层软件与底层硬件分离,使得系统上层软件开发人员不需要担心底层硬件的具体情况。 根据BSP层开发提供的接口即可。
BSP有两个特点:硬件依赖和操作系统依赖。 设计一个完整的BSP需要完成两部分工作:
A.嵌入式系统的硬件初始化和BSP功能。
芯片级初始化:一种纯硬件的初始化过程,将嵌入式微处理器从上电时的默认状态逐步设置为系统所需的工作状态。
板级初始化:包括软件和硬件两部分的初始化过程,为后续的系统初始化和应用程序建立软硬件运行环境。
系统级初始化:基于软件的初始化过程,用于初始化操作系统。
B. 设计硬件相关的设备驱动程序。
(3)系统软件层:由RTOS、文件系统、GUI、网络系统和通用组件模块组成。
RTOS是嵌入式应用软件的基础和开发平台。
(4)应用软件:由基于实时系统开发的应用程序组成。
3、实时系统
(1)定义:在指定或确定的时间内,能够完成系统功能并响应外部或内部、同步或异步时间的系统。
(2)区别:通用系统一般追求系统的平均响应时间和用户的便利性; 而实时系统主要考虑最坏情况下的系统行为。
(3)特点:时间限制性、可预测性、可靠性、与外部环境的交互性。
(4)硬实时(强实时):指应完全满足应用的时间要求,否则会造成重大安全事故,甚至造成重大生命财产损失和生态破坏,例如航空航天和军事。
(5)软实时(弱实时):指虽然有些应用提出了时间要求,但偶尔违反这一要求的实时任务不会对系统运行和环境造成严重影响,例如监控系统和实时信息采集系统。
(6)任务约束包括:时间约束、资源约束、执行顺序约束和性能约束。
【嵌入式系统开发流程】相关文章:
嵌入式系统开发简介10-08
嵌入式系统开发特点10-08
嵌入式系统开发核心技术10-08
嵌入式系统开发基础知识10-08
2016嵌入式系统开发技术知识点:嵌入式系统09-27
嵌入式系统开发技术知识点09-27
嵌入式系统开发工程师考试要点10-01
嵌入式系统开发技术主要知识点09-21
嵌入式系统开发工程师职业前景09-21