如何从零开始开发一款嵌入式产品_转

上传人:橙** 文档编号:333371500 上传时间:2022-09-01 格式:PDF 页数:9 大小:125.90KB
返回 下载 相关 举报
如何从零开始开发一款嵌入式产品_转_第1页
第1页 / 共9页
如何从零开始开发一款嵌入式产品_转_第2页
第2页 / 共9页
如何从零开始开发一款嵌入式产品_转_第3页
第3页 / 共9页
如何从零开始开发一款嵌入式产品_转_第4页
第4页 / 共9页
如何从零开始开发一款嵌入式产品_转_第5页
第5页 / 共9页
亲,该文档总共9页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《如何从零开始开发一款嵌入式产品_转》由会员分享,可在线阅读,更多相关《如何从零开始开发一款嵌入式产品_转(9页珍藏版)》请在金锄头文库上搜索。

1、如何从零开始开发一款嵌入式产品(20 年的嵌入式经验分享学习)_转作者:jesse 转载请注明出处首先,如果你有幸看到这篇文章,千万不要试图在2 个小时内阅读完,就算你2 个小时阅读完,我相信你也不会理解里面讲解的精华之处,我相信,你应该将此文章,慢慢品尝,这绝对是一篇需要品尝23 天,再结合自己过往的经验,加上自己的思考,我相信会对你不仅仅是技术能力,甚至包括整体的思维方式都会有一个非常大的提高。我写这篇文章的目的,是用本人 20 年的嵌入式经验呈现给大家一副完整的产品,项目开发蓝图,用本人多年经的历总结了一些教训无私的分享给各位,希望各位今后能站在本人的肩膀之上,少走弯路,多为公司,为个人

2、多做贡献,那我的愿望就达到了,也同时希望能看到大家反馈和回复,留个脚印,留下你的见解和智慧,为后人乘凉打点基础,先在这谢谢各位了。那么由此开始我们充满知识的旅程吧,最重要的一点,就是在一个产品或项目的开发过程中,如果没有明确的目标,那么成功将无从谈起,做任何事的第一步必须明确目标。与日常生活中的大多数事务一样,设计一个嵌入式产品的过程也必须从确定目标开始,对生产的产品进行明确定义。对产品进行定义主要是对产品是什么和能有什么功能进行描述,其次是在我们的整个开发过程中,应该要撰写一些开发文档,大概的框架的如下:1)产品需求文档:描述产品的特性2)功能需求文档:描述产品必须具备的功能3)工程说明文档

3、:描述系统实现的方法和满足需求的手段4)硬件说明文档:对有关硬件进行描述5)软件或固件说明文档:描述特定处理器下设计微程序以及固件的方法6)测试说明文档:描述必须测试的项目和验证系统正常运行的方法1.需求定义需求定义用来描述产品的基本功能,对于公司来说,需求一般由该公司的市场销售部门或该公司的主要客户来制定;而对小公司或爱好者(就像 ar 里的爱好者一样),技术人员可以自己负责定义需求,并撰写成文档。通常需求定义是围绕以下几个因素而来:1)系统的用途(定义需要系统实现的各种功能)2)实际输入输出是何种方式实现的(为元器件的选型做参考)3)系统是否需要操作界面(涉及软件层操作系统的选型)其实对小

4、型的嵌入式产品来说,定义需求是非常关键的,因为需求清楚了,就可以避免后续开发过程中出现的诸如随机存储器(RAM)容量不足或所选的 CPU 速度不能满足处理的需要等一系列问题。-下面举个简单的实际例子,供大家来参考:系统描述:用于从化温泉的水泵换水系统名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 9 页 -电源输入:使用来自于变压器的9V12V 直流电水泵功率:375W 1)使用单相交流电机,由机械电气进行控制2)如果温泉池处于低水位,则输入开关闭合信号,以禁止水泵继续运行3)用户可以自由设置水泵运行或关闭的时间长度4)除了自动设置控制外,还需要提供一种人工装置来允许维护人员灵活

5、控制水泵进行维修5)水泵开启/关闭/人工干预的时间可以30 分钟为单位,在30 分钟到 23 小时的范围内进行调节6)显示设备可以指示水泵的开关状态,剩余时间,以及水泵是否处于人工干预模式7)具备监视低水位的功能,并显示在屏幕上如果需要商用,那么除了上面给出的功能要求外,其设计文档中还要包括电磁干扰(EMI)和电磁兼容性(EMC)认证、安全认证以及使用环境(包括环境温度、湿度、盐雾腐蚀等)等方面的需求。实际上,以上的需求确定之后,接下来就是要考虑选择一款合适的CPU 来满足和实现系统的功能,那么我们就要将上述7 点用户能够理解的需求转化成我们专业领域的需求,转化如下,大家可以参考一下:a.处理

6、或更新输入输出信号的速率究竟需要多快?解释:目前嵌入式处理器的主频一般都在几十兆到几百兆不等,单片机的主频一般是几十兆,ARM 处理器可以到几百兆;我们主要看这个产品是否需要对大量数据进行处理,或是否需要对缓冲区进行频繁操作,是否有类似的占用CPU 资料的工作要做,这就决定我们要选择一款合适的处理器来让该产品得到最佳的性能。b.是否可使用单片集成电路(专用IC)或 FPGA 来完成数据处理?解释:如果可以的话,就不一定要选择处理器来做,用这些专业芯片就能替代c.系统是否有大量的用户输入输出操作(如对开关和显示设备进行频繁操作)?解释:如果有的话,要在处理器选型的时候考虑这些因素,选择一款能够满

7、足以上要求的CPU d.系统与其他外部设备之间需要使用何种接口?解释:这也是需要评估处理器的一个关键问题,选择具备这些接口功能的处理器会方便于我们的电路设计以及软件编程e.设计完成后是否有可能需要进行改动,或在设计过程中系统需求是否可能出现变化?我们的设计是否能适应系统需求的变化?解释:要避免选择的处理器刚好满足当前要求,这样当以后事务要求逐渐提高,处理器性能如果还有一定空间的话,那么就可以重用目前的产品;第二个就是要选择不会即将停产的芯片,很多处理器用得很广乏,可以借鉴的资料也很多,但是很可能这款芯片已经在市场上流行很长时间了,芯片厂商已经推出更新换代的替代品了,如果你选择了这款芯片,很可能

8、1,2 年后就买不到这款处理器芯片了,导致不得不重新选择新的处理器,重新设计产品,这样的既耗费时间,金钱,更消耗人力,延误市场的战机。2.处理器的选择2.1.需要使用的I/O 管脚数量多数处理器都是使用内存和外部管脚来控制输入输出设备的,通常处理器都会有内置ROM 和 RAM 的,如果内置的内存就已经满足需要,那么处理器就可以节省产生引用外部存储器信号的引脚,这样处理器可为输入输出提供较多的设备管脚(某些处理器支持外部RAM 或 ROM 的使用,但对外部存名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 9 页 -储器进行访问时,处理器一般需要占用8 条到 10 条 I/O 管脚)

9、。还有,有些处理器带有专用的内部定时时钟,这类时钟也需要使用一个端口管脚来实现某些定时功能;某些处理器中还具有漏极输出和高电流输出能力,可以方便的直接驱动继电器或电磁铁线圈,而不再需要额外驱动硬件的支持。当对处理器I/O 管脚进行计数时,我们一定要把使用处理器内部功能(如串行接口和定时器等)时限制使用的某些管脚考虑在内。2.2.需要使用的接口数量嵌入式处理器的主要功能是与应用环境中的硬件进行交互操作,这不仅需要外部硬件对接口具有实时处理能力,而且还要求处理器必须以足够快的速度对接口数据进行有效处理。举例来说,AT91RM9200是 ATMEL 公司出品的一款工业级ARM9 微处理器,它基于 A

10、RM920T核心,处理速度可达200MIPS,同时处理器内部配置了 USB、Ethernet、支持 RS485 的红外串口、IIC、SPI、SSC 等输出接口,其目的是更方便的利用这些接口开发出嵌入式产品。需要注意的是,由于许多处理器具有的局限性没有在处理器技术资料中给予足够的说明,因此一定要仔细阅读处理器的指标说明。例如,在阅读资料的过程中发现,该资料可能会说明其串行接口可以在最高波特率下工作,但仔细研究该处理器的指标数据时,可能会发现并非该串口接口的所有操作模式都可以在最大波特率下运行。深入了解并明确接口要求的方法:可以自己动手编写一些程序来对接口进行实际测试,以确认某种处理器是否可以满足

11、应用的要求;因为,确认某个处理器是否可以满足接口要求并非是一件简单的任务。2.3.需要使用的内存容量决定内存容量的大小是嵌入式产品设计过程中的一个基本步骤,如果对所需内存容量估计过高,那么我们就有可能会选择成本较高的解决方案;反之,如果低估了所需内存容量,就有可能因系统需要重新设计而导致项目不能按时完工。a.RAM 和 ROM 的区别:存储器分为随机存储器(RAM)和只读存储器(ROM)两种。其中 ROM 通常用来固化存储一些生产厂家写入的程序或数据,用于启动电脑和控制电脑的工作方式。而RAM 则用来存取各种动态的输入输出数据、中间计算结果以及与外部存储器交换的数据和暂存数据。设备断电后,RA

12、M 中存储的数据就会丢失。b.随即存储器(RAM)的选择:RAM 容量的预测是比较直观的,我们只需把所有变量数目与所有内部缓冲区的容量以及先入先出(FIFO)队列长度和堆栈长度直接相加,就能得到所需RAM 容量的总数。如果所需内存容量超出这类处理器的寻址范围,那么只能通过增加外部RAM 来满足需求;然而,增加外部 RAM 的同时将会占用一定数量的I/O 管脚来对扩展内存进行寻址,这种扩展往往会影响到处理器来实现应用的初衷。需要注意的一个问题是,某些微处理器限制RAM 的使用,这种限制的目的是为了借用部分内存存储器作为内部寄存器组使用。除了以上因素外,所使用的开发语言也对所需RAM 容量有一定的

13、影响,某些效率较低的编译程序可能会占用大量宝贵的RAM 空间。c.只读存储器(ROM)的选择:系统所需ROM 的大小应该是系统程序代码与所有基于ROM 的数据表容量之和。预测所需ROM 空间容量比较困难的部分是预测程序代码的长度,解决这类问题的方法只能是随着经验的逐步积累来提高预测精度。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 9 页 -然而,最重要的并不是精确计算程序的代码长度,而是要清楚地估算代码长度的上限。根据经验,如果 80%的 ROM 空间被代码占用的话,那么就太拥挤了,除非能确保系统需求不会有任何变化,否则至少要为可能发生的变化保留足够的备用ROM 空间。在多数

14、情况下,我们可以试着在ROM 中写入一部分程序代码,以便观察代码占用空间的情况,对于带有内部 ROM 的微处理器系统来说,系统程序都只能占用有限的程序存储器空间。d.经验之谈:ROM 与 RAM 使用情况相类似,程序代码长度与所选用的开发语言有关。举例来说,使用汇编语言编制的程序要比使用C 语言编制的程序占用少得多的空间。对于追求低成本的小型系统来说,一般不提倡使用高级程序设计语言;这是因为虽然高级语言在使用、调试以及维护方面来的比较容易,但同时这类语言需要占用更多的内存空间和大量的处理器时钟周期。如果开发语言选择不当,其后果可能是把一个简单、低成本的单片机系统变为一个需要使用配置若干兆字节

15、RAM 空间的 64 位嵌入式处理器系统。2.4.需要使用的中断数量中断的主要用途是向中央处理器通报当前发生的某类特殊事件,这类事件包括诸如定时器超时事件、硬件引发的事件等。需要强调的是,多数系统设计师经常过多地使用中断功能,实际上,中断的主要作用只是中断现行程序的执行,中断最适用于必须要求中央处理器立即提供服务的事件。在需要设计和使用中断的情况下,一定要首先确认实际需要的中断数量,然后必须考虑到系统内部占用的中断资源,如果需要使用的中断资源超出了处理器可以接收的中断数量,我们就应借助于某些特殊手段来减少所需中断信号的数量。2.5.实时处理方面的考虑实时处理是一个涉及范围很广的题目,其主要内容

16、与系统的处理速度有密切联系,实时事件是嵌入式微处理器需要关注的主要任务。例如:处理器跟串口进行通信时,通常通过上层软件(为了保证实时性,进行任务切换的时间足够短),然后再占用处理器去执行从串口拿数据的任务,并且要保证处理器的速率比串口速率快,那么处理器可以以最快的速度反应并处理串口的相关的任务,这样就可以达到最大的实时性;另一方面,如果处理器本身就内置了串口控制器、或DMA、或 LCD 的控制器等,那么它就可以保证直接使用这些处理器内置的接口去控制串口、液晶屏等对象,以达到最大的实时性能。2.6.该厂商是否提供好的开发工具和环境选择一款新的处理器,很可能就要使用一个新的开发工具和开发环境,包括软件的编译环境等;对于开发日程安排比较紧张的项目来说,开发人员往往无法抽出专门的时间来研究,熟悉新的开发工具,从而也无法全面掌握开发工具的使用技巧。并且,有的开发工具价格也比较昂贵,而且很可能只能从制造商那里购买,还有仿真工具也是需要付费的,这些对我们在选择一款处理器的时候,是都应该考虑进去的成本因素。2.7.处理器速度方面的考虑主要考虑几个细节问题:名师资料总结-精品资料欢迎下载-名师精心整理-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 初中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号