2008-10-09 55 views
3

我正在用C++写一个没有OS支持的嵌入式系统的项目;几乎没有图书馆支持。非常裸机。因此,相当数量的我的代码是紧密耦合的(例如,软件触发的中断以及它们正上方的层)。裸机系统的软件测试

我正在做的一部分包括更改串口配置,从而驱动PC端(UI端)和微处理器(活动端)的并发更改。 到目前为止,我在做一个超级小心的增量式开发(逐块装配)方面表现不错。不过,我想对我的代码在工程意义上工作更有信心。

你会为这种情况推荐什么样的方法/框架?

编辑:

我使用上的ACore86板通过燕鸥,Inc.的编译器进行的AMD186 ES:范式,免费版(附带的板)。不幸的是,我没有办法改变自己的工作。

回答

2

在裸机环境中缺乏基础设施非常具有挑战性。我建议你专注于调试工具。即使非常谨慎和优秀的方法,你也需要调试的能力。

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

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

1

我认为你最好打赌是与你的编译器的供应商合作得到一个设备模拟器。

Tessy可能与该芯片一起工作。退房:http://www.hitex.us/products.html?con_186.html~content

+0

不幸的是,Keil和Paradigm(编译器公司)都没有从我所知道的设备模拟器中提取 – 2008-10-09 19:51:23

+0

Tessy可能与该芯片一起工作。签出:http://www.hitex.us/products.html?con_186.html~内容 – NotMe 2008-10-09 20:05:54

1

当时间很重要时,我喜欢使用一个空闲的I/O引脚或两个以及一个示波器来组合代码。我也是JTAG端口的源代码级调试迷。您还可以让微处理器存储一个数据矢量,然后通过第二个uart(如果有)发送回PC进行分析。

0

我在这方面看到的一些东西是单元测试。

不,我不是在开玩笑。

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

在单元测试控制下,您编写了一个封装程序,将ley加载程序写入SRAM。

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

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

现在,这是测试夹具中的硬件,所有运行于您的主机PC上。

0

我做了一件成功的事情之一是设计一个PC环境,其中代码可以用C++编译并测试,然后用“直线”C编译在嵌入式系统上运行。 I/O端口引用被#defined作为I/O对象的属性访问,然后通过套接字发送到“硬件仿真”程序。系统的一部分最终比我想象的要笨重,但我希望成功的版本不会太笨重。