软硬件协同开发的应对计划
米乐体育直播

  人员而言是一种摧残。或许它仅仅意味着软件开发与硬件渠道规划齐头并进吧。这除了意味着软件人员的磨难之外,真不清楚还意味着什么。

  在嵌入式范畴,常常要为正在规划中的电路板或芯片一起编写软件。有时是为Mentor Graphics或Cadence Design Systems等EDA厂商仿真环境中杂乱的ASIC规划而编写软件。有时则是为Xilinx或Altera等公司功用强壮的FPGA规划而编写软件。FPGA器材带有与标准和定制IP模块相连的嵌入式微处理器内核。还有的时分是为了可编程片上体系编写软件,这种可编程片上体系将可编程数字/模仿功用和微操控器完美集成在一起(如赛普拉斯的PSoC器材)。这些功用都十分强壮,能完成难以置信的立异,但一起也会带来苦楚,那便是硬件或许随时发生改动,而软件开发人员则难以招架。

  不是主张怠慢立异脚步,而是说应该给软件工程师一个喘气的时机。但事实上刚好相反。硬件东西需求更好地与软件IDE集成在一起才干加快产品上市进程。而规划人员需求更多东西和方法让运用不受硬件改动的影响。不是说向规划中增加或从中移除首要的通讯模块。假如您的真需求增加或移除首要通讯模块,那么您的软件工程师真该找点其他事干了,由于这意味着硬件规划还底子没就位呢。这儿说的改动都是规划周期较晚阶段关于已界说的功用模块进行的细小改动,比方说寄存器地址改变、比特位被从头界说、缓冲区巨细改动等。这些“小改动”也会影响到软件,从而或许形成产品缺点,乃至在遗忘硬件改动原因时还要对软件进行长期返工。

  软件工程师,现在到了们奋起反击的时分了!以下给出了针对方针不断改动的情况如何灵敏进行运用开发的三点主张。在开端新的项目之前,不要遗忘这些主张!

  咱们需求的第一个改动便是让硬件开发东西生成软件接口,也便是一般所说的硬件适配层(HAL)。HAL应包含能牢靠地初始化可编程硬件的发动代码,并供给API接口以支撑体系的软件操控。HAL不只简化了固件开发,还能将施行从接口中笼统出来。这就意味着硬件的细小改动不会对固件形成影响。

  中其实没什么新概念,许多经验丰富的规划人员现已正确指出,常量、函数和变量都应选用共同的、直观的命名标准。不过,关于FPGA、CPLD和PSoC等可编程器材而言,们还要将此标准进一步扩展,也便是HAL要由硬件规划东西生成,不然软件工程师怎样才干保证牢靠的接口呢?

  在固定或改动很少的环境中(比如说固定功用MCU或大规模ASIC项目),们可将HAL视为一套独立的API,可将其作为硬件规划改动的一部分进行修正。不过,关于现代化的可编程器材而言,硬件一天会改动好几次。手动HAL保护与当前情况底子不相匹配,必定会在施行阶段呈现过错,更甭说要对软件工程师带来多大苦楚和摧残了!以为,HAL主动生成应为任何可编程渠道的必备要求。

  可编程器材为立异带来了巨大机会,但往往规划硬件所需的东西会对正常软件开发实践形成影响。工程师往往不得不运用简略、功用欠佳的东西,并且不能与现有的流程很好地结合。

  大多数协同规划环境都是从硬件规划东西演化而来,这些东西多年来一向支撑ASIC和FPGA或CPLD流程。跟着嵌入式CPU越来越遍及,为东西产品组合增加软件开发功用的需求变得十分显着,这样,一种东西就能支撑软硬件两个范畴,但对两个范畴各自而言又都不行抱负。在此情况下,工程师就会在两个范畴都会削减特性挑选,乃至损失特性挑选。

  解决计划不是让东西厂商供给业界抢先的调试器,将其绑缚到硬件规划东西中,就宣告成功,然后古怪软件工程师怎样还在不停地诉苦。为以硬件为中心的东西增加源代码编辑器并调试特性,这并不能真实解决问题,由于东西仍没有集成到用户的流程中。源操控接口、软件测验套件、主动化构建等是现在开发人员每天都要触摸的作业,将硬件规划东西集成到他们的日常作业中才是真实的应战。

  正确的做法底子不是集成调试器、编辑器或整个IDE,而是要让软件开发人员从项目一开端就能在自己真实喜爱并运用的传统IDE开发环境中开展作业。硬件规划人员或许仍需求东西中的软件特性来创立并运转小型测验程序,但真实的运用开发应当一直在工程师首选的IDE中进行。

  假如想要满意这一要求,一个方法便是要可以将项目从一个东西导出到另一个东西。举例来说,赛普拉斯的PSoC Creator可以将PSoC规划直接导入到Keil Vision东西中。在许多可编程体系中,“硬件”事实上是作为数据块供给,能在发动时被编程到器材中,以创立装备好的器材。关于软件而言,它仅仅是数据,因而导出规划只需硬件东西为方针产品生成项目文件,再用HAL源文件和初始化代码植入即可。运用随后就能在硬件顶层上进行构建,并且不会搅扰现代化环境中运用的主动化测验和源操控体系。

  图2:PSoC Creator的“IDE 导出”GUI.本对话框用来创立和更新用于运用开发的Keil Vision项目。