Baser 5 4 августа, 2020 Опубликовано 4 августа, 2020 · Жалоба 3 часа назад, visht сказал: 17 часов назад, visht сказал: MRKII. так написал же ... Уотсон:) Сорри! Не был знаком с такой штукой, решил, что это очередной англицизм типа WTF или RTFM 32 минуты назад, visht сказал: Попробовал написать в него код - нет эффекта. Написал в нем абракадабру - нет эффекта. подключил cstartup к проекту, и ... то же самое. cstartup файл, приведенный в папке исходников библиотек, в ИАРе нужно самостоятельно модифицировать и подключать к проекту в явном виде. Если и при этом результата не видно, нужно копать дальше разбираясь с настройками. По главному вопросу, как вариант: обработчик прерывания handler_10 уже есть и используется в библиотеке СLIB. А можно ли его переопределить (помечен ли он в библиотеке как PUBWEAK или нет) нужно читать пресловутый RTFM Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
visht 0 4 августа, 2020 Опубликовано 4 августа, 2020 · Жалоба явно к проекту тоже подключал, но в нем тоже можно писать все что угодно, реакции никакой. И мысли, что оно где то там, в CLIB, меня тоже не покидают. Пошел читать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Baser 5 4 августа, 2020 Опубликовано 4 августа, 2020 · Жалоба К сожалению, сейчас сайт iar.com упал, и не отвечает, но в кэше Гугля есть статейка на How to override and redirect library modules without rebuilding the entire library Можно попытаться использовать опцию линковцика --redirect __write=__write_own или в старых версиях опция -e -enew=old [,old] Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
visht 0 4 августа, 2020 Опубликовано 4 августа, 2020 · Жалоба Спасибо, почитаю. частично все таки cstartup используется, если подключить к проекту. допускает написать несвязные буквы и при этом не ругается и компилит. В области векторов поведение его пока логике не поддается, с утра попробую выстроить всю картину. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 44 4 августа, 2020 Опубликовано 4 августа, 2020 · Жалоба 29 минут назад, visht сказал: частично все таки cstartup используется, если подключить к проекту. допускает написать несвязные буквы и при этом не ругается и компилит. В области векторов поведение его пока логике не поддается, с утра попробую выстроить всю картину. Я тоже попыталась добавить в проект копию cstartup.s52 (это ассемблер), закомметарить в нем строку PUBLIC ??handler_10 и метку ??handler_10: А собственную функцию обработки 16-го прерывания назвать handler_10 Однако от этого появились другие ошибки в другом модуле. Скажите, а на кой вам сдалось прерывание IVEC_RESET_TRANSPONDER ? Ведь со всеми другими векторами такой ошибки нет. От какого-то хоть события это прерывание? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
visht 0 4 августа, 2020 Опубликовано 4 августа, 2020 · Жалоба 15 hours ago, Xenia said: Скажите, а на кой вам сдалось прерывание IVEC_RESET_TRANSPONDER ? Ведь со всеми другими векторами такой ошибки нет. От какого-то хоть события это прерывание? Прерывание когда процессор понимает что появилось низкочастотное поле, и хорошо бы его как то начать обрабатывать. нашел файлик Interrupts.s52 в котором по идее и рождаются эти hundler_10 и прочие, но попытка присоединить его к проекту и закрыть в нем большую часть, все равно приводит к hundler_10. Вероятно все таки в CLIB ссылка на нее формируется. и пока продолжаю разбираться со статьей. Interrupts.s52 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
visht 0 5 августа, 2020 Опубликовано 5 августа, 2020 · Жалоба Ну вроде получилось. В Interrupts.s52 описано несколько сценариев поведения (модулей) INTERRUPTS_RETI_10 INTERRUPTS_FUNC_10 INTERRUPTS_RETI_14 INTERRUPTS_FUNC_14 Вероятно сама библиотека использует 10 и 14 в зависимости от размера таблицы векторов. В моем случае это будут INTERRUPTS_RETI_14 INTERRUPTS_FUNC_14 и тут, вероятно, если в библиотеке нет функции на обработчике то используется INTERRUPTS_RETI_14 иначе INTERRUPTS_FUNC_14; и так в моем случае это INTERRUPTS_RETI_14, а именно: MODULE ?INTERRUPTS_RETI_14 REPTI addr,02,04,06,08,0A,0C,0E,12,14 ASEGN INTVEC:CODE:ROOT,0x<addr> EXTERN transponder_interrupt // добавил PUBWEAK ??handler_<addr> ??handler_<addr>: RETI ENDR RSEG RESET2:CODE:ROOT(1) PUBWEAK ??handler_10 ??handler_10: JMP transponder_interrupt // добавил //RETI - закоментировал RSEG CODE:CODE:NOROOT(1) PUBLIC ??handle_ints_reti_14 ??handle_ints_reti_14: ENDMOD Ну и определяю себе в коде функцию Quote __root __interrupt void transponder_interrupt(void) По листингу видно что стек сохраняет, т.е. прерывание обрабатывает по феншую. Вероятно решение не самое правильное, жду критику. По поводу --redirect: Quote Fatal Error[e36]: Option --redirect does not exist Видимо на то время когда создавался этот IAR (последние апдейты 2010) эту возможность еще не планировали. Всем Спасибо за помощь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться