Чтение из UART1 на BeagleBone Black: почему обратный порядок байтов? - PullRequest
0 голосов
/ 06 ноября 2019

Я хочу читать данные длиной в несколько байтов сразу из UART1 / ttyO1 на BeagleBone Black (Debian) с помощью функции read(2) (см. Мой прежний Q здесь ). Например:

uint32_t _integer32;
read(_fd_rx, &_integer32, 4u);

Но переменная назначения _integer32 будет хранить полученные байты данных в обратном порядке. Например, когда входящие байты идут в следующем порядке: 0x01, 0x02, 0x03, 0x04, тогда _integer32 будет содержать значение: 0x04030201 вместо 0x01020304.

Почемуэто происходит?

Порядок входящих байтов, безусловно, правильный, поскольку

  • многократные однобайтовые чтения read(_fd_rx, &_integer8, 1u); (и печати) показали, что входящий порядокправильно, и

  • Я тот, кто отправляет данные на BBB с помощью кабеля преобразователя USB-TTL.

Я могу представить, что ttyO1 представлен как FIFO, который заполнен правильно, только read() не действует соответственно.

Моя цель состояла бы в том, чтобыбыть в состоянии прочитать, может быть, даже 4 КБ (иначе N_TTY_BUF_SIZE) байтов одновременно с read() в предварительно выделенную область памяти. Требуемый размер неизвестен.

...