Как я искал методику поиска "улета" программы. Делал отладку по следующей инструкции:
https://www.iar.co …n-in-stand-alone-mode/
1) Файл ReportCheckFailedStdout.c не удалось прикрутить
Error[Li006]: duplicate definitions for "__iar_ReportCheckFailedStdoutAbort"; in "E:\Halt\maisb_s6\KPA_MAIS\firmware\Debug\Obj\ReportCheckFailedStdout.o", and
"ReportCheckFailedStdout.o(as4l.a)"
Error while running Linker
2)Исключил файл из проекта, IAR сам взял в библиотеке as4l.a.
Получил в окошке "Terminal I/O" ошибку
CRUN_ERROR: 0x7000005 0x103849 0x20335C 0x20339D 0x20335C 0x20339C 0x102A10
Записал ее в файл "catch_1.out"
Начал пробовать ее декодировать
3)По ссылке предлагается подредактировать .bat файл
"Append -–rtc_filter after --rtc_enableand save the file."
В сгенерированом .bat файл Нету "--rtc_enableand"
4) При запуске даю имя файла с сохраненым текстом
emu_pouo.Debug.cspy.bat catch_1.out
Failed to generate .sim file from debug file: catch_1.outFlash loading failed
CSpyBat terminating.
5) Запустил батник без ничего - расшифровки нет:
execUserReset()
Enable Main Oscillator
Set PLL to 96MHz
Set Master Clock to 48MHz
CRUN_ERROR: 0x7000005 0x103849 0x20335C 0x20339D 0x20335C 0x20339C 0x102A10
К тому же запускается программа на выполнение
6)Перечитал инструкцию еще раз
Понял(решил), что нужно подсовывать не файл с кодами ошибок, а выходной файл линкера
Все равно выводит запускает программу, выводит строку с ошибкой.
Кроме того в примере курсор нарисован в конце строки, у меня сразу строка переводиться
куросор в начале строки на клавишу enter не реагирует, только ctrl^C.
7)Открыл файл emu_pouo.Debug.general.xcl который как оказалось вместо параметров передается, нашел
--rtc_enable добавил
-–rtc_filter
Получил ошибку и перечень команд:
...
--rtc_enable Enable C-Run runtime checking
--rtc_output <output file>
The name of the file to which C-RUN messages will be written.
Use .xml extension to get xml format, any other extension for text
--rtc_raw_to_txt <file>
The name of the raw C-RUN messages file that should be converted to text
...
8) Задал имя для
--rtc_output - не помогло: файл создается но пустой
9) Дал имя
--rtc_raw_to_txt
Наконец-то получил:
crun_fail Access out of bounds
-- Access outside pointer bounds:
-- Access 0x0020335c - 0x0020339d
-- Bounds 0x0020335c - 0x0020339c, char com_bufer[64]; main.c\71:6-14
-- DLib_Product_string.h\57:5-30
-- emu_real.c\206:6-51
10) Ищу 206 строку
memcpy(target_buf, emu_rx_read_pointer, bytes);
11 ;-)
12 - Как оперативно(без файла) подставлять коды для анализа, я так и не понял.
P.S. Поиск в Google "__iar_ReportCheckFailed" lftn 4 ссылки: три на EWARM_DebuggingGuide.ENU.pdf
одна на ту что в начале поста.
P.P.S RTFM - меньше голова болит.
P.P.P.S Где предпросмотр страницы перед отсылкой на сервер?