Как `cat 'файл в определенном бод? - PullRequest
0 голосов
/ 15 июля 2010

Я использую 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 '? Или есть другая утилита, которую я могу использовать для вывода битов с определенной скоростью?

Ответы [ 2 ]

2 голосов
/ 15 июля 2010

Скорость, которую вы вводите в файл in =, не соответствует установленной.У симулятора нет возможности узнать, когда ваше приложение инициализировало последовательный порт и готово к чтению.Возможно, вам не хватает данных, потому что симулятор передает имитированный последовательный порт до того, как ваш код последовательной инициализации будет выполнен.

Вам нужно настроить файл fifo с помощью mkfifo (см. Страницу man), а затем использоватьэто как ваш параметр in =.Затем загрузите этот файл fifo с данными после того, как ваше смоделированное приложение будет запущено и запущено.

1 голос
/ 16 июля 2010

Ответ 1 неверен.Никто не «подает» содержимое файла на последовательную линию.uCsim читает из файла, когда это необходимо.Скорость в бодах контролируется SFR таймера и UART.Когда будет смоделировано необходимое количество тактов, из файла будет считан один байт.

...