проблемы с загрузчиком не должны зависеть от размера скетча
"читал, много думал"(с)
Изучаю проблему уже в течении года с перерывами. В русскоязычном инете именно проблемы старта не обнаружено. А срабатывает он стабильно, запускается потом не всегда :) Как раз год назад даже оптибут "смейкал"(итить его душу этот линукс) т.к. в стандарте под 2560 его нет. И там, если не ошибаюсь, ещё веселее стало - добавилась зависимость от напряжения :О
Как выставишь все настройки один раз через программатор нажми "Записать загрузчик" - вместе с ним и фьюзы нужные запишутся. Потом можно смело тереть загрузчик и загружать бинарник.
:О Сейчас залил блинк через USBASP. Залилось, проверилось без ошибок, НО НЕРАБОТАЕТ. Это всё еще на MegaCore. А вот на родных помницца мне заливалось и фунциклировало. Правда непомню через что шил, т.к. была и дудка с графической оболочкой, и кодевижнавр и атмел студия с самодельным avrisp mk2.
может просто мега дохлая, у меня была такая надавишь на кристалл - работает, отпустил, иногда работает, иногда нет, все ноги пропаяны, в самом кристалле глюк
Что то ты делаешь не так, не может быть чтобы у, если не миллионов, но тысяч людей все работало без загрузчика, а у тебя нет. Я вообще с этим не сталкивался. Правда и от помигать встроенным диодом до шить без загрузчика у меня 3 года ушло, неспешно, по выходным иногда (2-3 часа в день) и иногда в будни (примерно так же). В сумме может быть 2-3 месяца по 8 часов, и то не факт.
Что-то ты делаешь не так. Как давно этим занимаешься?
Прикол в том, что типа шьётся, проверяется, а в конце выдаёт "Ой, всё"(с) Можно было грешить на IDE или программатор, но загрузчик то из неё и через него шьётся.
Время тут не показатель, тут важнее "нтелехт"(с) и необходимость Первый проект на CodeVisionAVR датирован десятым годом(поморгать диодиком, обработать кнопку, вывести "hello world" . Остальные не сильно сложнее. С ардуиной столкнулся года четыре назад и забил на голые камни(библиотеки наше ВСЁ)
Настрой через чувака фьюзы, там по сути только тактирование важно, остальное можно оставить по умолчанию. Скомпилируй прошивку по скрину выше (ту же тактовую с того же источника (внешний/внутренний) указывай), и загрузи через чувака .hex
ЗЫ: долго писал, ты уже ответил. Похоже что-то с камнем.
Думаю проблема в том что в 2560 несколько страниц flash и JMP 0x0000 срабатывает только внутри страницы и если она не нулевая, то выполняется не тот код.
Какая именно плата или "голый" чип? Почему никто не попросил считать фьюзы ???
To Komandir: Плата - готовая Arduino Mega2560 и, соответственно, фюзы от загрузчика родной IDE 1.8.12 т.е. "как у всех"(с)
По поводу 4-х страниц - круто! Знать бы теперь как решить. Я ведь эту дебильную теорию о влиянии размера на перезагрузку не из пальца высосал. начинал ещё с 1.8.5 и в какой-то момент решил добавить собаку, а то чё мы как ламмеры:) Заработало, ну и славненько. Код со временем увеличивался и в один прекрасный момент решил проверить собаку, а она того - сдохла. Помыкался, помучался, даже перешёл а оптибут(там-то и было самое интересное - нестабильность срабатывания, то работает то нет на одной и той-же заливке) что подтверждает о неправильном старте. В итоге забил, вернулся на родной загрузчик и продолжил множить говнокод. В какой- то не менее прекрасный момент проверил собака - а она "сабака страшная"(с) - РАБОТАЕТ!!! И это притом, что старые куски, при котором она не стартовала, остались в коде. И так было несколько раз.
Т.к. "добить скотину"(с) всё-же хочется, а идеи и сведения из интернета уже кончились - решил поспрашивать здесь.
To Boom: Хоть и отошли от главного вопроса, можно и эту "скотину добить". Всё же похоже на глюки компилятора именно для
меги(получается, что и миллионы и тысячи ни чего не доказывают :)
Подробности: восстановил родные фюзы через IDE, сделал хексы блинка, залил через дудку хехс без загрузчика - не работает(постоянно горит светодиод). Залил хекс с загрузчиком - видно что загрузчик отрабатывает, но программа не стартует (пара морганий, затем постоянное горение) А вот теперь самое интересное - подключаем плату к USB и заливаем скетч стандартным способом - РАБОТАЕТ. Т.е. загрузчик через SPI залился и работает, а программа залилась, но хрен там плавал
Поставил на bootrst, залил фюзы, перезапустил - не стартует. Повторно залил хекс - заблинкало. Круто.
А это как-то поможет в решении основного вопроса, т.к. шить через сторонние программы и менять фюзы обычный пользователь не будет(раньше спалит всё к чертям:)
Я бы залил внешним программатором HEX нужного мне загрузчика и также выставил верные фьюзы. Если в IDE просто заливать скетчи через загрузчик - фьюзы меняться не должны и скетч не должен затирать загрузчик. Что там и как IDE прописывает при заливке загрузчика - зависит много от чего !!!
(это если вообще нужен загрузчик)
А если не нужен (1-8 килобайт на дороге не валяются), то выставить D9 FF FD и лить скетчи внешним программатором не трогая больше фьюзы.
(в таком режиме как WDT себя ведет на вашем МЕГАскетче ???)
:О Про незатирание фюзов при заливке через UART это понятно, а вот вариантность заливки загрузчика из стандартного набора плат это как? Фюзы же жестко прописаны в файлах настройки, вариативности выбора во внешней среде практически нет(ну, разве что, выбор старого загрузцика для наны и 168 ядра).
И кстати задолбался перекидывать дрова на USBASP задигом на десятой винде. Под ардуино ИДЕ свой, под дудку свой. Может есть способ проще? Avrisp mk2 самолепный раньше ни с дудкой ни с ардуиной ИДЕ не работал, сейчай пока не пробовал.
Arduino IDE все манипуляции делает запуская консольную avrdude с разными текстовыми параметрами. Я графическими утилитами не пользуюсь обычно. Видимо сама avrdude разных версий.
Никак. Через дудку льётся, но не проходит верификацию(ругается на лок биты, хотя они "типа" такие же как в заводском голом чипе. А через UART вообще не шьётся. Загрузчик вроде залил через хекс с загрузчиком(масло, блин масляное), ресет пытался поймать - ничего. Бум разбираться.
В подтверждение дебильной теории - размер = глюк с перезагрузкой, вчера провел эксперимент. В скетче, гарантированно не перезапускающийся при срабатывании собаки, сделал следующее: В одном из меню программы, которые закопаны глубоко и в обычной работе не участвуют, закоментил кучу надписей(т.е. ни на что не влияющая хрень вроде) Скетч из чуть больше 240кБ стал чуть меньше. И вуаля - вачдог перезапускает.
Думаю проблема в том что в 2560 несколько страниц flash и JMP 0x0000 срабатывает только внутри страницы и если она не нулевая, то выполняется не тот код.
Какая именно плата или "голый" чип? Почему никто не попросил считать фьюзы ???
интересная мысль! WDT обязан уметь выбирать страницу 0 в таком случае...
C:\arduino-1.8.12\hardware\tools\avr/bin/avrdude -CC:\arduino-1.8.12\hardware\tools\avr/etc/avrdude.conf -v -patmega2560 -cusbasp -Pusb не меняем это все что касается программатора и платы.
А дальше можем использовать ключи и делать ВСЁ ЧТО УГОДНО.
Читай про пробелмы с загрузчиком
проблемы с загрузчиком не должны зависеть от размера скетча
Читай про пробелмы с загрузчиком
проблемы с загрузчиком не должны зависеть от размера скетча
"читал, много думал"(с)
Изучаю проблему уже в течении года с перерывами. В русскоязычном инете именно проблемы старта не обнаружено. А срабатывает он стабильно, запускается потом не всегда :) Как раз год назад даже оптибут "смейкал"(итить его душу этот линукс) т.к. в стандарте под 2560 его нет. И там, если не ошибаюсь, ещё веселее стало - добавилась зависимость от напряжения :О
Сотри загрузчик и зашей код без него - узнаешь он ли виноват или нет.
Когда то пробовал. По-моему программа вообще не стартовала изначально. Попробую ещё раз.
Смотреть нужно на то, чем сброс по WDT отличается от хардового. И/или софтового.
Думаю, ни чем, не считая флагов в регистре.
дык WDT может же просто прерывания генерировать без перезагрузки.
Или я не понял и вопрошающему что то другое нужно?
"Мкей"(с). В приведённом примере(в первом моём сообщении) что генерируется?
Сотри загрузчик и зашей код без него - узнаешь он ли виноват или нет.
Шил с IDE через USBASP. Скомпилировалось, залилось , проверялось и тадам
Ессесьно не стартует, загрузчик - затерся.
А у тебя MegaCore то вообще стоит? ( https://mcudude.github.io/MegaCore/package_MCUdude_MegaCore_index.json )
Только то, что в стандартном зипе.
Ну так поставь, компилировать нужно без загрузчика.
Спасибо, попробую. Но это не решение проблемы, а костыль всё же. Да и фюзы останутся родными.
Это не костыль - а понять в чем причина. Если в загрузчике - будешь уже им заниматься. А если ничего не изменится - значит что-то не то в коде.
Да и фюзы останутся родными.
Как выставишь все настройки один раз через программатор нажми "Записать загрузчик" - вместе с ним и фьюзы нужные запишутся. Потом можно смело тереть загрузчик и загружать бинарник.
Потому и уточнил. Пробую.
Прошил загрузчик, убедился в работоспособности залив блинк через USB.
И полная копия #58 http://arduino.ru/forum/apparatnye-voprosy/vsegda-li-wdt-perezagruzhaet-kontroller?page=1#comment-651916
:О Сейчас залил блинк через USBASP. Залилось, проверилось без ошибок, НО НЕРАБОТАЕТ. Это всё еще на MegaCore. А вот на родных помницца мне заливалось и фунциклировало. Правда непомню через что шил, т.к. была и дудка с графической оболочкой, и кодевижнавр и атмел студия с самодельным avrisp mk2.
Дичь какая-то, все должно работать. Ты загружаешь код с выставленными как в #61 настройками?
Ещё какая :)
Почти, всё же программатор надо установить USBASP.
Гружу по пути: Скетч > загрузить через программатор.
IDE - портабля(не установочная)
может просто мега дохлая, у меня была такая надавишь на кристалл - работает, отпустил, иногда работает, иногда нет, все ноги пропаяны, в самом кристалле глюк
Нет, проверено на разных мегах, глюк повторяется.
Что то ты делаешь не так, не может быть чтобы у, если не миллионов, но тысяч людей все работало без загрузчика, а у тебя нет. Я вообще с этим не сталкивался. Правда и от помигать встроенным диодом до шить без загрузчика у меня 3 года ушло, неспешно, по выходным иногда (2-3 часа в день) и иногда в будни (примерно так же). В сумме может быть 2-3 месяца по 8 часов, и то не факт.
Что-то ты делаешь не так. Как давно этим занимаешься?
Прикол в том, что типа шьётся, проверяется, а в конце выдаёт "Ой, всё"(с) Можно было грешить на IDE или программатор, но загрузчик то из неё и через него шьётся.
Время тут не показатель, тут важнее "нтелехт"(с) и необходимость Первый проект на CodeVisionAVR датирован десятым годом(поморгать диодиком, обработать кнопку, вывести "hello world" . Остальные не сильно сложнее. С ардуиной столкнулся года четыре назад и забил на голые камни(библиотеки наше ВСЁ)
Никто и не говорил отказываться от библиотек. И на асм переходить тем более. Приведи вывод «Ой все», включи полный вывод в настройках.
Воть, уже дважды приводил. http://arduino.ru/forum/apparatnye-voprosy/vsegda-li-wdt-perezagruzhaet-kontroller?page=1#comment-651916
Сейчас прошил блинк через USBASP уну и... РАБОТАЕТ. Беда похоже настройках ИДЕ для МЕГИ.
Вернул оригинальный загрузчик в МЕГУ. Залил блинк через USBASP и... проверка прошла но НЕ МОРГАИТЬ.
Настрой через чувака фьюзы, там по сути только тактирование важно, остальное можно оставить по умолчанию. Скомпилируй прошивку по скрину выше (ту же тактовую с того же источника (внешний/внутренний) указывай), и загрузи через чувака .hex
ЗЫ: долго писал, ты уже ответил. Похоже что-то с камнем.
Думаю проблема в том что в 2560 несколько страниц flash и JMP 0x0000 срабатывает только внутри страницы и если она не нулевая, то выполняется не тот код.
Какая именно плата или "голый" чип? Почему никто не попросил считать фьюзы ???
del
Хотелось бы увидеть фьюзы при залитом и неработающем hex блинка. Т.е. заливаем hex, проверяем что не работает, считываем фьюзы.
С такими фьюзами первым стартует загрузчик. Поменяйте HIGH на D9 - что бы первым стартовал скетч.
Удалил. То были фюзы после после хекса с загрузчиком(но ведь не должно быть разницы, правда?(мем с падмой)
Это после залитого хекса без загрузчика
Ничего не поменялось ! Пока D8 на D9 не поменяете - первым будет стартовать загрузчик !
Поставил на bootrst, залил фюзы, перезапустил - не стартует. Повторно залил хекс - заблинкало. Круто.
А это как-то поможет в решении основного вопроса, т.к. шить через сторонние программы и менять фюзы обычный пользователь не будет(раньше спалит всё к чертям:)
Я бы залил внешним программатором HEX нужного мне загрузчика и также выставил верные фьюзы. Если в IDE просто заливать скетчи через загрузчик - фьюзы меняться не должны и скетч не должен затирать загрузчик. Что там и как IDE прописывает при заливке загрузчика - зависит много от чего !!!
(это если вообще нужен загрузчик)
А если не нужен (1-8 килобайт на дороге не валяются), то выставить D9 FF FD и лить скетчи внешним программатором не трогая больше фьюзы.
(в таком режиме как WDT себя ведет на вашем МЕГАскетче ???)
:О Про незатирание фюзов при заливке через UART это понятно, а вот вариантность заливки загрузчика из стандартного набора плат это как? Фюзы же жестко прописаны в файлах настройки, вариативности выбора во внешней среде практически нет(ну, разве что, выбор старого загрузцика для наны и 168 ядра).
И кстати задолбался перекидывать дрова на USBASP задигом на десятой винде. Под ардуино ИДЕ свой, под дудку свой. Может есть способ проще? Avrisp mk2 самолепный раньше ни с дудкой ни с ардуиной ИДЕ не работал, сейчай пока не пробовал.
Arduino IDE все манипуляции делает запуская консольную avrdude с разными текстовыми параметрами. Я графическими утилитами не пользуюсь обычно. Видимо сама avrdude разных версий.
Как с D9 FF FD себя ведет WDR в вашем скетче ?
Никак. Через дудку льётся, но не проходит верификацию(ругается на лок биты, хотя они "типа" такие же как в заводском голом чипе. А через UART вообще не шьётся. Загрузчик вроде залил через хекс с загрузчиком(масло, блин масляное), ресет пытался поймать - ничего. Бум разбираться.
В подтверждение дебильной теории - размер = глюк с перезагрузкой, вчера провел эксперимент. В скетче, гарантированно не перезапускающийся при срабатывании собаки, сделал следующее: В одном из меню программы, которые закопаны глубоко и в обычной работе не участвуют, закоментил кучу надписей(т.е. ни на что не влияющая хрень вроде) Скетч из чуть больше 240кБ стал чуть меньше. И вуаля - вачдог перезапускает.
Может старая дудка не умеет правильно 2560 прошивать ???
Делаем Erase chip в AVRDUDE
Выставляем D9 FF FD в AVRDUDE
Прошиваем скетч в IDE через внешний программатор
(у меня нет под рукой физической 2560 для попробовать ...)
Думаю проблема в том что в 2560 несколько страниц flash и JMP 0x0000 срабатывает только внутри страницы и если она не нулевая, то выполняется не тот код.
Какая именно плата или "голый" чип? Почему никто не попросил считать фьюзы ???
интересная мысль! WDT обязан уметь выбирать страницу 0 в таком случае...
Я сейчас почитал ... JMP может 4М адресовать. Так что тут что то другое скорее всего.
Может старая дудка не умеет правильно 2560 прошивать ???
Делаем Erase chip в AVRDUDE
Выставляем D9 FF FD в AVRDUDE
Прошиваем скетч в IDE через внешний программатор
(у меня нет под рукой физической 2560 для попробовать ...)
Блинк шьётся и работает, моё шьётся, но не проходит проверку как и в #58
Снова залил родной загрузчик, D9(отличия только в установленых локах11 и 12) и... Блинк шьётся и работает, моё шьётся, не проходит проверку.
Попробую позже оживить avrisp mk2 и закинуть через студию и/или кодевижон.
Но, в любом случае, сдаётся мне что не там "собака порылась". О, каламбур про вачдог:)
У меня как-то было такое - Mega с прошивкой >64k периодически не шилась через IDE.
Вооть. Чуется, что чудит компилятор со встроенной дудкой.
А если LOCK биты оставить в покое (по дефолту) ?
У вас в логе есть:
C:\arduino-1.8.12\hardware\tools\avr/bin/avrdude -CC:\arduino-1.8.12\hardware\tools\avr/etc/avrdude.conf -v -patmega2560 -cusbasp -Pusb -Uflash:w:C:\Users\Bar\AppData\Local\Temp\arduino_build_825418/Blink.ino.hex:i
Это IDE вызывает консольную avrdude.
C:\arduino-1.8.12\hardware\tools\avr/bin/avrdude -CC:\arduino-1.8.12\hardware\tools\avr/etc/avrdude.conf -v -patmega2560 -cusbasp -Pusb не меняем это все что касается программатора и платы.
А дальше можем использовать ключи и делать ВСЁ ЧТО УГОДНО.
"А что есть истина"(с) :) дефолтные заводского чипа или дефолтные загрузчика Arduino IDE?
В любом случае, через дудку блинк шьётся и с установленными галками на 11 и 12 и без. А моё вот http://arduino.ru/forum/apparatnye-voprosy/vsegda-li-wdt-perezagruzhaet-kontroller?page=1#comment-652019
Я сейчас почитал ... JMP может 4М адресовать. Так что тут что то другое скорее всего.
шина адреса 22-х битная?