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