0

我正在使用 uCsim 对 SDCC 项目进行单元测试。

在 uCsim/S51 中,您可以通过以下方式模拟串行线路流量

s51 -s /dev/tty PROGRAM.ihx

或者

s51 -S in=testdata.in,out=testdata.out PROGRAM.ihx

在后一种形式中,数据会立即发送到模拟器,这会导致大量帧丢失。因此,不要在普通文件中给出测试数据,而是使用管道:

s51 -S in=<(cat testdata.in),out=testdata.out PROGRAM.ihx

现在,如何控制“cat”实用程序的输出波特率?或者是否有其他实用程序可以用来以特定速率输出位?

4

2 回答 2

2

您输入 in= 文件的速率不是设置速率的方式。模拟器无法知道您的应用程序何时初始化串行端口并准备好读取。您可能会丢失数据,因为模拟器会在您的串行初始化代码执行之前提供模拟的串行端口。

您需要做的是使用(参见手册页)设置一个 fifo 文件,mkfifo然后将其用作您的 in= 参数。然后在您的模拟应用程序启动并运行后向该 fifo 文件提供数据。

于 2010-07-15T19:10:08.533 回答
1

答案 1 不正确。没有人将文件的内容“馈送”到串行线路。uCsim 在必要时从文件中读取。波特率由定时器和 uart 的 SFR 控制。当模拟必要的滴答计数时,将从文件中读取一个字节。

于 2010-07-15T22:17:10.897 回答