4

我正在用 C++ 为不支持操作系统的嵌入式系统编写一个项目;几乎没有库支持。非常裸机。因此,我的相当多的代码是紧密耦合的(例如,软件触发的中断和它们正上方的层)。

我正在做的部分工作涉及更改串行端口配置,从而驱动 PC 端(UI 端)和微处理器(活动端)的并发更改。到目前为止,我在一个非常小心的增量类型开发中做得很好(一块一块地安装它)。但是,我希望对我的代码在工程意义上的工作更有信心。

对于这种情况,您会推荐什么样的方法/框架?

编辑:

我在 Tern, Inc. 制造的 ACore86 板上使用 AMD186 ES。编译器:Paradigm,免费版(随板提供)。不幸的是,我没有选择改变我正在做的事情。

4

5 回答 5

2

在裸机环境中缺乏基础设施是相当具有挑战性的。我建议您专注于调试工具。即使非常小心和出色的方法,您也需要调试事物的能力。

你应该让 gdbagent 工作。您需要自己实现它,但它是一个简单的基于文本的协议。您在外部机器上运行 gdb 并与目标上的 gdbagent 通信。您当然可以通过串行端口运行 gdbagent 协议,但是当需要检查大量数据时,这很快就会变得乏味。如果您有更快的界面可用,请利用它。

我不知道你的预算是多少,但你也应该计划一个 JTAG 调试器。只要目标上的 gdbagent 能够运行,gdbagent 就很棒。如果一切都崩溃了,你就完蛋了。JTAG 调试器非常昂贵,但可以租用。我过去使用过Corelis产品,并且听说过关于Abatron的好消息。

于 2008-10-09T19:58:56.110 回答
1

我认为最好的办法是与编译器供应商合作以获得设备模拟器。

Tessy 应该可以使用该芯片。查看:http ://www.hitex.us/products.html?con_186.html~content

于 2008-10-09T19:43:34.130 回答
1

当时间很重要时,我喜欢使用一个或两个空闲 I/O 引脚和一个示波器来检测代码。我也是用于源代码级调试的 JTAG 端口的粉丝。您还可以让微处理器存储数据向量,并通过第二个 uart(如果有的话)将其发送回 PC 进行分析。

于 2008-10-13T19:58:56.813 回答
1

我在这类领域看到的一些事情是单元测试。

不,我不是在开玩笑。

单元测试在主机 PC 的控制下在设备上运行。

您编写了一个包装器,以便在单元测试控制下将程序加载到 SRAM 中。

然后你的电脑可以发送一个程序,运行它并检查输出。

如果您需要锻炼您的电路板,请使用 labjack 或类似的 USB 接口卡。

现在这是测试夹具中的硬件,全部从您的主机 PC 运行。

于 2009-12-12T06:21:06.293 回答
0

我取得了一些成功的一件事是设计了一个 PC 环境,其中代码可以用 C++ 为 PC 编译和测试,然后用“直接”C 编译以在嵌入式系统上运行。I/O 端口引用被#定义为对 I/O 对象的属性访问,然后通过套接字将其发送到“硬件仿真”程序。系统的某些部分最终变得比我想要的更笨重,但我预计后续版本会不那么笨重。

于 2011-02-01T17:23:04.647 回答