软件合作开发中的接口

继续来谈谈ECU软件合作开发,这次我们说点实际的问题 —— 接口。在软件合作开发的过程中,最重要的就是双方交互接口的定义。因为双方的变量需要交互,所以在软件编译中就不可避免的会产生接口的问题。

软件合作开发中的接口:原文配图 1

在项目早期,双方的接口都没有开发完成,如何封闭这些接口成为了一个巨大的难题,举个最简单的例子:车速。OEM算的车速要赋值到Tier1变量中,比如有一个Interface1.c中包含如下代码:

 Tier1_vehicle_speed = OEM_vehicle_speed;

如果Tier1没有OEM SW或者在OEM SW中该接口未开发完成,在Tier1这边的编译就会出现,OEM_vehicle_speed 未定义的情况。不过,在计算机中有一句至理名言:在软件中没有一个中间层解决不了的问题。

软件合作开发中的接口:原文配图 2

比如我们不使用Interface1.c而是定义一个Interface2.c,其中包含如下代码:

 uint8 vehicle_speed = 0;
 void set_vehicle_speed(uint8 x) {
   vehicle_speed = x
 }
 uint8 get_vehicle_speed() {
   return vehicle_speed;
 }

观察这段代码,有如下优点:

(1)不会产生任何接口问题

(2)做到真正的黑盒,双方变量都得到的隐藏

(3)函数调用,降低了变量被非法访问的几率

比如OEM开发好了这个接口,只需调用:

 set_vehicle_speed(OEM_vehicle_speed);

或者Tier1开发好了,就调用:

 Tier1_vehicle_speed = get_vehicle_speed();

无论哪方都可以直接编译通过,不会产生任何接口相关的编译报错。当然,只有这两个函数都被调用,才相当于变量的赋值。

软件合作开发中的接口:原文配图 3

氨气“ 携手进步 共同成长 ”

阅读原文

← 返回文章列表