我正在用C++为一个不支持操作系统的嵌入式系统编写一个项目;几乎没有库支持。非常裸露的金属。因此,我的大部分代码都是紧密耦合的(例如,软件触发的中断和它们正上方的层)。
我正在做的部分工作涉及更改串行端口配置,从而在PC端(UI端)和微处理器(活动端)同时进行更改。到目前为止,我在一个非常小心的增量类型开发中做得还不错(一块一块地安装)。然而,我希望对我的代码在工程意义上的工作更有信心。
对于这种情况,你会推荐什么样的方法/框架?
编辑:
我在一块ACore86板上使用AMD186 ES,该板由Tern,股份有限公司编译器:Paradigm,免费版(随板提供)制成。不幸的是,我没有改变我正在做的事情的选择。
裸金属环境中缺乏基础设施是非常具有挑战性的。我建议您专注于调试工具。即使非常小心和出色的方法,您也需要调试事物的能力。
你应该让gdbagent工作起来。您需要自己实现,但这是一个简单的基于文本的协议。您在外部机器上运行gdb,并与目标上的gdbagent通信。您当然可以通过串行端口运行gdbagent协议,但当需要检查大量数据时,这会很快变得乏味。如果你有一个更快的接口可用,利用它。
我不知道你的预算是多少,但你也应该计划一个JTAG调试器。只要目标上的gdbagent能够运行,gdbagent就很好。如果一切都崩溃了,你就完了。JTAG调试器非常昂贵,但可以租用。我过去使用过Corelis产品,也听说过Abatron的好消息。
我认为您最好与编译器的供应商合作,以获得设备模拟器。
Tessy据说是用那个芯片工作的。退房时间:http://www.hitex.us/products.html?con_186.html~内容
当计时很重要时,我喜欢使用一两个空闲的I/O引脚和一个示波器来检测代码。我也是用于源代码级调试的JTAG端口的粉丝。你也可以让微处理器存储一个数据向量,并通过第二个uart(如果你有)将其发送回电脑进行分析。
我在这类领域所做的事情就是单元测试。
不,我不是在开玩笑。
单元测试在主机PC的控制下在设备上运行。
您可以编写一个包装器,在单元测试控制下轻松地将程序加载到SRAM中。
然后你的电脑可以发送一个程序,运行它并检查输出。
如果你需要锻炼你的平板电脑,那就买一个labjack或类似的USB接口卡。
现在这是测试夹具中的硬件,所有这些都在您的主机PC上运行。
我所做的一件事取得了一些成功,那就是设计了一个PC环境,在这个环境中,可以用C++为PC编译代码并进行测试,然后用"直"C编译代码以在嵌入式系统上运行。I/O端口引用被#定义为I/O对象的属性访问,然后通过套接字发送到"硬件仿真"程序。系统的某些部分最终比我希望的要笨重,但我预计后续版本会不会那么笨重。