在嵌入代码和非嵌入代码之间维护单个代码库
我正在研究一个涉及微控制器编程的机器人研究项目.我希望能够在最大程度上将测试软件与测试硬件进行分离.这既是为了提高开发速度,也是为了在将代码放到机器人上之前,我可以更轻松地对代码进行单元测试/模拟.例如,我可能会写一个“MyRobot”库.然后我可以在嵌入代码和非嵌入式模拟/测试代码中包含这个库.在运行时,我会提供函数指针,这些函数指针可以读取(在嵌入式情况下)或模拟(在模拟中)传感器数据并将其提供到库中.
因此,我需要做的就是在编译时生成两个库:一个用于嵌入式代码,另一个用于非嵌入式代码. 我的问题是这是否可行/如果有更好的方法可行/如果有任何问题我应该注意. 提前致谢! 解决方法
这是嵌入式系统开发中的常见情况,您创建两个库的方法通常是推荐的解决方案.将嵌入式系统固件中的低级硬件与软件分离是一种最佳实践.
您提到的库通常称为“硬件抽象层”或HAL. HAL的API(应用程序编程接口)可以在名为hal.h的单个头文件中提供.软件中需要访问硬件的每个源模块都会在源文件的顶部显示以下行: #include "hal.h" 像这样设计系统的好处包括: >模块化.如果需要更改时序,例如读取传感器的UART或SPI接口,即使代码中有多个位置读取该传感器,您也只需要更改HAL库. 对于您的两个场景,如您所建议的那样,您将创建两个版本的HAL库:包含在嵌入式硬件上运行的代码的标准版本,以及模拟硬件的模拟版本,用于在控制方式.您可以将标准库命名为hal.lib(可能具有不同的扩展名,具体取决于您的开发环境),以及模拟库hal_simulated.lib.两者都具有相同的接口,如hal.h中所述.也就是说,两个库都包含hal.h中声明的所有函数,例如void halInit(),int halReadProximitySensor()等. 假设您的IDE支持发布和调试配置,您可以为名为SW_Test的软件测试创建第三个配置.此配置将与Debug配置重复,但hal_simulated.lib将链接到项目而不是标准hal.lib. 也可以看看 Hardware Abstraction (Wikipedia) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |