Цитата(d7d1cd @ Apr 26 2016, 08:47)

Для рассчета программным методом есть 2 функции: табличный расчет (быстрый) и без использования таблицы. При запуске в симуляторе и вычислении ЦИК программным методом по табличному расчету, полученное значение совпадает с ЦИК, вычисленным линкером. Когда же ЦИК определяется без использования таблицы, то он не совпадает со значением, вычисленным линкером.
Это означает только то, что ваши функции табличного и циклического расчета CRC считают различные контрольные суммы.
При расчете CRC различным может быть:
- начальное значение CRC
- полином
- сдвиг полинома влево или вправо (зеркальный полином)
- пост операция с CRC (инверсия или еще чего-нибудь)
- может еще чего забыл...
И при каждой комбинации получается другой результат.
ИАР может считать почти любую комбинацию из вышеперечисленного.
Комбинация задается ключами в скрипте линкера. RTFM

Вот для примера куски из файла .xcl одного проекта для AVR, но сути это не меняет, для MSP430 будет примерно также.
Обратите внимание на ключ -J , он задает тип полинома и метод расчета.
Также есть строки, которые задают область памяти для расчета CRC и куда помещать результат.
Код
/* Code (flash) segments */
....
-D_..X_FLASH_END=1FFFF /* End of flash memory */
-D_..X_APPFLASH_END=1DFFF /* End of Applications flash memory */
-D_..X_BOOTLOADER_BASE=1F000 /* Start of BootLoader flash memory */
-DBootVer=1FFF0 /* Start of Bootloader SW Version get function */
-DSerialNo=0x1FFF6 /* Start of Serial Number get function */
......
-Hff
-h(CODE)0-(_..X_APPFLASH_END-2)
-J2,crc16,m,,,,0=(CODE)0-(_..X_APPFLASH_END-4)
.....
/*
* Last 2 bytes of application flash don't use,
* because error in AES Bootloader program create.exe
*/
-Z(CODE)CHECKSUM#(_..X_APPFLASH_END-2)
-Z(CODE)BOOTCODE=_..X_BOOTLOADER_BASE-_..X_FLASH_END