Сергей Борщ 132 3 марта, 2008 Опубликовано 3 марта, 2008 · Жалоба А я часто сталкиваюсь с глюками ИАРа под МСП.А я не часто. За всю жизнь (а использую ИАР с 98 года) - 2 или 3 глюка именно ИАРа. И продолжаю спорить на ящик пива, что это глюки НЕ ИАРа. В sdcc наловил глюков 5 или 6 за один проект, но он еще довольно молодой и, увы, единственный свободный компилятор С для PIC/PIC18. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DiMonstr 0 3 марта, 2008 Опубликовано 3 марта, 2008 · Жалоба Всех приветствую!!! Я нашел причину :08: И она зарыта была не в коде и не в компиляторе. А в фуз битах, мать их... FUSE BITS - ЭТО ТАКАЯ ГЕММОРОЙНАЯ ПОДСТРОЙКА КОНТРОЛЛЕРА, ЧТО ВРЕМЕНАМИ ХОЧЕТЬСЯ НАПИТЬСЯ И ЗАБЫТЬСЯ Жалко, что вспомнил я про эти биты поздновато. Хотя я об этом и не жалею. Пока искал косяк, исправил множество ошибок в коде, оптимизировал его, а также изучил фишки компилятора IAR. Короче дернул меня черт посмотреть как организована FLASH память. Я знал, что она состоит из двух секций: загрузочной и прикладной программ. Так вот, в документе я обнаружил, что по умолчанию размер BOOT области памяти установлен максимальный посредством фузов BOOTSZ. Я прикинул побыстрому - аха, глюки начинаются как раз, когда прошивка превышает размер в 6 КБ. Не долго думая я сократил размер этой области до минимума. И заработало!!! :08: Оказывается у меня был запрограммирован фуз BOOTRST. Тем самым я переместил вектор сброса в BOOT сектор памяти, который и перетирался кодом прикладной программы. Только я вот до сих пор не понял, почему одна и таже прошивка могла запуститься, а могла и не запуститься. Наверное это зависило от того кода, который оказывался по адресу расположения вектора сброса. :a14: В общем всем огромное спасибо и уважуха! Я много узнал с вашей момощью. :a14: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться