|
其实,现在无论TI也好、Xilinx、Altera、微星,ADI、飞思卡尔等世界级大公司都将自己生产的设备用inlined wraper s-function或代码 继承工具写成了一个个的simulink模块,还有一些经过实践验证的常用算法MathWorks也用这些工具把他们变成了算法模型 如果卡尔曼滤波器,HMM,等。 有些人用RTW自动生成过DSP或单片机、ARM、FPGA等代码,觉得效率很低?why?主要是国内没一本这方面的书,不过,市面上 到处充斥这些垃圾,好像有几本书是关于自动代码产生的,不过,这些书基本上没什么参考价值,这里我无意贬低别人,不过 书中的确是连最基本的东西都没搞清楚,如果哪位朋友真正要搞清楚基于模型的设计,你不看30000页以上的外文是绝对做不到的 我想除了几个“250”以外,在国内是没什么人会这么做的,所以“基于模型的设计”在国内几乎没什么人知道,这家伙到底是个啥玩应? 目前一台高档汽车的控制代码就已经超过500万行代码,诺-马的联合攻击机F-35(这是大家比较关心的下一代老美的战机) 软件代码超过1500万行,大家想想,如果这些工作让人手工编写C代码,即使上万人要花多少时间,即使这里面一个变量定义有 bug查找有多困难?所以,这些新生事物,老美一般采用基于模型的设计方法,一个节约开发成本,二、节约开发时间,三、生成代码 的可靠性、一致性等都大为提高。开发这些所需话费的时间只有原来的一半~三分之一,开发费用大概也是这个数字。 什么是inlined wraper s-function?我想这个没几个人知道的,这样说吧,我们在单片机软件开发的时候,经常要用 C代码加汇编的混合编程方法,大家知道,代码中的汇编代码在生成.obj(目标代码)时,是原封不动的传递到下一级的 同样,用inlined wraper s-function生成的simulink模型就是把经过验证的现存C代码打包成simulink模型,在代码生成时, 自动释放这些C代码无缝链接到自动生成的C代码中,那些原来inlined wraper s-function中的C代码不会发生任何改变,这样效率和 用手写的C代码完全一样。大家understand没有!你同样可以把你常用的C代码打包成inlined wraper ,所以嵌入式开发 就变得很简单了。大家主要需要做的事,就是如何建模,如果测试与验证,如果做到模型与代码的跟踪,处理器在还测试 模型在还测试,硬件在还测试等,经过这一系列测试与验证,你得到的C代码就是高效的嵌入式实时代码了,我想各位没几个 知道还有这样的开发嵌入式系统的方法。 很多人只知道代码的自动生成,即RTW,他可能连该用RTW-Embedded coder都不知道,那结果是:生成代码的效率相当的糟糕 就是你用RTW-EC那生成的代码效率也不会高多少,因为你没经过一系列的优化与测试,这些MathWorks公司都给你考虑到了 对于大型项目,用基于模型的设计产生的C代码,超过手写代码的例子也比比皆是。
|
|