嵌入式系统开发技术与系统设计策略
Pad、iPhone、Apple TV产品全球大风行,造成硬件厂商也纷纷起而效尤,想透过近似的产品设计或是架构概念,来整合出如同iOS Device+iTunes+App Store的服务架构,眼前最能达到设计需求的嵌入式操作系统,也就只有Android最富竞争实力,但考量移动设备的嵌入式系统开发,不能光看操作系统,而必须从系统、服务、网络机制等多方角度观察,为用户整合最佳化的应用环境...
3C硬件装置,以往在开发的目的上,都会针对其主要应用进行相关的核心功能开发,例如,移动电话自然必须将通讯功能列为首要开发功能,像是电话拨打、接取、简讯收发,拍照、PIM(Personal Information Management)这类附加功能,反而不是开发重点。
又如Apple TV智能网络电视机制,首重的开发要求应以网络接取与实时影音串流解码机制为主,需让整个服务体验达到最佳化,在开发的主要核心服务设定的不同,对于整个装置与外部服务的架构设定也会有所差异。
审慎选择开放原始码资源 减少开发成本
目前能与iOS Device架构相抗衡的嵌入式系统,其实有相当多的选择,尤其是多数开放原始码的开发资源,目前都可以很简单的转移开发资源到多数运算平台,对于因应多种开发需求或装置的专案来说,可以如同变形虫般因应不同的核心功能设定,去进行最佳化的系统整合设计。
使用开放原始码的优势相当多,因为多数的硬件开发专案,大多以特殊的整合模式为主,每个开发专案似乎也无法与另一个专案共享开发成果,这造成每次新专案初始时,开发团队就必须从头针对硬件架构、元件特性、装置I/O...等重新进行学习与整合,造成开发成本提升与时程延宕。
但其实多数装置的嵌入式系统,都会有5到6成的系统功能为重复性投资,例如,核心的操作系统、I/O、显示、存储、档案系统...等,大多都是近似或根本相同的设计,若今天的系统采取相对具弹性的整合方案,这代表每种特定目的的嵌入式装置开发时程,最少都可以省掉30~40%重复性的软件开发投资,将更多开发时程花在精进使用者体验的操作界面方面。
多数开放源码资源,都是基于Linux为基础的嵌入式解决方案为多,使用这些资源虽然可以加速专案开发时程,但有时必须考量的却不光是技术问题,而是产品在使用这些开放资源后必须担负的授权义务问题。开放原始码资源多会声明GNU GPL授权声明,其中的差异就会影响产品日后维护与相关开发。
软件不同授权范围 影响开发成品商业化应用弹性
GNU GPL(GNU’s Not UNIX General Public License)是一种授权方面的声明,而不是着作权(CopyRight),即开放原始码的软件作者,可以将他的程序码以GPL规范释出,而GPL授权即代表该程序码为完全自由的形式公布与释出,任何人可以任意下载、使用、复制、修改、贩卖该程序码,但有趣的是,以GPL方式释出的原始码进行相关加工、整合开发后的软件成果,也必须以GNU GPL精神再将成果以相同的条件无偿释出,或提供任何人下载、使用、复制与修改。
在开放源码的领域,也有另一种采行BSD(Berkeley Software Distribution)相对开放的授权机制,这也相当近似Public Domain的授权方式,以Public Domain而言,就是让开发者放弃着作权。
也就是说任一人都可以用采Public Domain授权方式的程序码,进行编改、下载、使用、复制,甚至衍生开发成商品销售,而不用负担任何义务。但多数的开放原始码软件中,大多以GPL授权方式为主,因为GPL要求必须公开衍生版本与原始码,也必须延续GPL授权精神,此精神是否会与终端产品的应用机制与服务目标产生互斥,必须在选择开放原始码系统前就必须审慎考量。
授权范围与智财问题 导入开放源码开发资源也必须列入考量
而在iOS Device所采行的App Store与Music在线下载机制服务模式观察,Apple采行的方式为较为封闭的服务机制,这对于其未来商业营运模式而言,是相对有利的技术架构,因为内容授权厂商相对于其核心内容的保护,会更重视DRM(Digital Rights Management)数码版权保护的机制。
因为内容商(CP)的思维在于透过内容多元的授权,为内容产制者争取更多平台的授权回馈营收,当DRM采取过于开放的架构或是开放源码的解决方案拼凑而成,就极容易被有心人进行破解或使整个服务机制的DRM架构崩解,如此一来,终端用户的使用权益或许会因此受到影响,而对于数码内容的来源供应者,参与此服务机制的信任感降低,致使其授权量或是热门内容反而不授权的状况发生,影响整个服务架构的成形。
关键服务应用 需考量是否独立开发专属软件元件
未来的嵌入式系统,若在核心内容服务方面必须考量到DRM或是更严密的小额付费与安全机制,这些关键的软件元件,就必须避免利用现成的开放原始码资源进行开发,或甚至应该采取客制化的手段。
例如,改变编码技术或使用更强等级的安全机制,或将内容预先在数码化的本体即进行加密,装置端的嵌入式系统与软件元件必须搭配如SIM卡认证或是其他认证机制,强化装置与服务机制的安全性。
除了服务机制与营运模式在导入开放原始码进行开发前的考量外,其实更多的开发问题会源自GNU GPL的授权协议,因为GNU GPL若要导入商业应用,这代表转移至装置的嵌入式系统开发成果,也必须将原始码公开,甚至提供下载与个人可以任意编修的弹性。
但实际上这麽做的结果等于是把自己的研发成果公开,会不会因此造成竞争对手也可利用相同的 GNU GPL授权资源去架构自己的装置?或是不当的授权使用造成装置销售会有着作权的法律隐忧,在未来嵌入式系统装置大量使用开放原始码进行开发时,必须做好更完善的版权管理,达到加速产品开发同时又不会形成新的智财隐忧问题。
节能产品开发要求 成为嵌入式系统开发重要指标
除软件开发面的考量外,实际开发专案也将面临如何透过系统程序的协助,达到节约产品功耗目的,在嵌入式系统开发设计中,功耗问题已变成重要议题,除非是不需要移动应用的装置开发,如Apple TV的电力来源源自市电,自然没有节电需求,但基于节能减碳的诉求发烧,也必须针对这类固定的嵌入式装置,考量节约电能的设计。
节约电能的产品开发要求,除可以利用更具能源转换效率的变压器来达成,或是选用低功耗、低电压、低电流的零组件进行电路设计外,实际上观察装置的使用模式,反而可以在嵌入式系统上采取更多节约能源的开发方式,让装置的耗能可以更进一步满足绿色产品的开发要求。
USB界面节电关键 从细微处达到节电要求
这种节能诉求,多数的开发目的不仅限于手机、PDA和可携媒体播放器等设备开发,对多数透过交流电电源的设备开发,功耗问题都变成重要关键。例如,条码扫描仪、指纹识别、外部存储装置、Wi-Fi无线网卡、键盘、鼠标等装置,这些周边都是需透过USB界面取得电力来源的产品,即便这些装置本身就号称「低功耗」,而且USB装置单埠电流也仅限于8mA~100mA,若不在乎这一个部分的节能设计,将会让装置整体的节能开发策略出现漏洞。
一般来说,数码逻辑电路功耗产生来源,主要来自漏电流和开关电流部分,在CMOS元件的逻辑闸的漏电流因为数值极小,多数状况都可以忽略不计,而当元件采行的是专为低功耗装置开发的微控制器、存储器时,由于元件本身即采取相对较省电的制程技术,对整体的电子电路也能有较佳的节能表现。
多数的嵌入式设计,在考量装置节能要求时,会尝试透过降低装置的运作频率,去达到对应的耗能降低机制,但实际上,在装置的电子电路方面,造成功耗的关键在开关的瞬态,每当数码输出改变0或1状态时,都会对其元件本身的多处寄生电容、与其相连接的实体电容,进行充/放电动作,不管电容是位在电路上或芯片中,每条信号线的状态变动都会消耗系统电力,直觉会理解降低状态转换速度,或是调降系统运行时脉,就等于可以降低整体装置的功耗。
善用微处理器睡眠模式
节能设计真正的挑战在于,是要在设计中减少处理器完成任务必须执行的指令总数!其实这又回到先前的嵌入式系统的设计目标,此即要求程序设计师必须针对运行的程序,进行程序码最佳化的强化设计,或是采取相对更具结构化的程序撰写方式,搭配合适的编译器或开发工具,因为编译器的好坏,也会影响最终编译的程序运行效能,对于装置的运行功耗有很大影响。
目前常见的微处理器,都会提供休眠、深度休眠等能源节约运行模式,在实际设计中,工程师可以善用这些缺省节能状态,透过补强电路设计,让装置的节能效益发挥更高。多数微处理器都可以进入某种程度的睡眠状态,借此降低芯片的运行功耗。
最佳化程序码 亦可达到装置节能
在休眠状态下,微处理器将停止执行,这也会让芯片上许多相关运算资源随之暂停或关闭。至于芯片所允许的睡眠状态类型和应用方式,需决定装置的应用中,哪些状态是可以处于睡眠模式,而部分运行机制又如何避免睡眠唤醒的时间差所影响。
而采行全面程序码产生(Omniscient Code Generation;OCG)技术,让编译器可保存特定中断需要的暂存器数值,编译器能够确定程序每个中断会使用的暂存器,因此,根据有效数据产生的程序码,可取得最小的程序码,同时可保存与最佳所需指令周期数。
电源系统本身的电路设计 也是影响节能效率关键
因应嵌入式系统装置的高复杂度、高整合特性设计,其嵌入式系统装置使用的电源系统设计,不能再沿用传统单一套的电源管理机制来进行整体装置的电力供应设计,若仅使用单一套电力系统,最终设计的电源管理效益,其能源转换效率将会受到影响。目前已有多种目的性设计的电源管理IC,可解决电路设计需求,针对各式应用目的设置的方案,让电力管理应用更容易导入对应的嵌入式系统装置设计案,为装置功能提供更多弹性设计。
嵌入式系统装置,可透过整合电源管理单元,与高性能分离式电源元件,进行系统电池应用管理、功率转换,来建构相对更完善的电力管理环境。一般作法是,开发人员必须针对不同的功能区块建构供电标准,提供对应的电力辅助其电路运行,常见的作法是让电路处于单一电力系统进行供应,但针对特定的功能应用电路,运用高效率的DC/DC电源转换元件,取得针对此类嵌入式系统装置特定电路最佳化的电力来源,透过不同电力配置去达到最佳化的电源使用效率设计。