Перейти к содержанию
    

SIM5215 & Xmodem

Пытаюсь залить файл в модуль по протоколу Хмодем. После посылки первого блока модуль отвечает NAK(0x15).

Есть подозрение что у меня неправильно считается CRC.

Сведения из разных источников противоречивы. В одних говотиться, что в протоколе используется CRC-CCITT(полином 0х1021) в других CRC-XMODEM (полином 0х8408).

Пробовал и тот и другой, что то ничего не получилось.

Также непонятно поведение модуля при старте передачи.

После "AT+CRXFILE="ххх.ххх",0" модуль выдает три раза С(0х43) затем начинает выдавать NAK(0x15).

Толковых описаний Xmodem протокола не нашел, везде какие то обрывки и нестыковки.

Какую именно версию модема использует 5215? И может уже у кого есть наработки? Поделитесь, плз.

 

 

Вот например.

Ссылка: http://electronix.ru/forum/lofiversion/index.php/t52779.html

Цитата:

CRC-XMODEM calculation. Polynomial: x^16 + x^12 + x^5 + 1 (0x1021) Initial value: 0x0

CRC-CCITT calculation. Polynomial: x^16 + x^12 + x^5 + 1 (0x8408) Initial value: 0xffff

 

Ссылка: http://www.zorc.breitbandkatze.de/crc.html

Цитата:

CRC-CCITT: 0x1021 = x16 + x12 + x5 + 1

CRC-XMODEM: 0x8408 = x16 + x15 + x10 + x3

Какому бреду верить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все, разобрался. Дело было действительно в CRC.

Путем перебора разных вариантов выяснил.

Полином CCITT: 0x1021

 

const unsigned short crc16_table[256] = { 0x0000, 0x1021, 0x2042, 0x3063, ...

int crc16_xmodem( char* data, char len) {

int crc = 0;

char* ptr = data;

while (len--) crc = (crc << 8) ^ crc16_table[((crc >> 8) ^ *ptr++) & 0x00ff];

return crc;

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Новый вопрос для гуру.

После команды AT+CRXFILE модуль начинает отвечать, что готов к приему через 10 секунд. Можно это время как то уменьшить?

 

И еще. Как правильно закончить передачу файла по х-модем, если его размер не кратен 128?

Цитата: "If the last packet contains less than 128-byte data with the specification of [sOH 04 0xFB Data[100] CPMEOF[28] CRC CRC], write 0x1A (^Z) to fill the rest space of CPMEOF[28]."

Получаю файл кратный 128 с допиской 0х1А. Косяк 5215?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И еще. Как правильно закончить передачу файла по х-модем, если его размер не кратен 128?

Добить мусором (0x1A) до 128 байт.

 

Цитата: "If the last packet contains less than 128-byte data with the specification of [sOH 04 0xFB Data[100] CPMEOF[28] CRC CRC], write 0x1A (^Z) to fill the rest space of CPMEOF[28]."

Получаю файл кратный 128 с допиской 0х1А. Косяк 5215?

Где косяк?

 

Кстати, CRC была не обязательна - если через некоторое время модуль начинает говорить NAK, в этот момент его уже можно кормить классическим вариантом с checksum. Но в твоем случае это была бы лишняя задержка перед передачей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добить мусором (0x1A) до 128 байт.

Где косяк?

Так в этом и косяк. Добиваю мусором, а этот мусор сохраняется в файле.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все, разобрался. Дело было действительно в CRC.

Путем перебора разных вариантов выяснил.

Полином CCITT

А не кажется ли странным, что полином для xmodem называется не CRC-XMODEM, а CRC-CCITT? Возможно правы все же те, кто называет CRC с полином 0x11021 CRC-XMODEM?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так в этом и косяк. Добиваю мусором, а этот мусор сохраняется в файле.

Ну дык это же XModem. Он такой уродец с рождения. Зато простой. Забей, короче.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И зачем тогда этого уродца засунули в 5215? Ничего более умного не придумали?

 

ЗЫ.

Отправляю файл по почте, а на другой стороне его невозможно открыть средствами виндов, мусор мешает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...