Ви не увійшли.
Добрый день.
Имеется Arduino Pro Mini 3.3V 8MHz.
Мне нужно убрать загрузчик, тем самым снизить время загрузки до минимума.
Подскажите, может я что не так делаю...
После компиляции скетча, беру .hex файл прошивки из системной папки Temp (тот, что без бутлоадера).
Сторонним программатором загружаю по ICSP прошивку в Arduino. При этом фьюз BOOTRST=1 (убрал), тем самым сделав загрузку после ресета с места начала программы, а не бутлоадера.
Удалось снизить время загрузки с 2-3 секунд до 1 сек. Но это все равно много.
Подскажите, какие должны быть фьюзы в моём случае? Что я не так сделал?
Спасибо.
Неактивний
Даже если не переустановить флаг BOOTRST и записать hex без загрузчика - время старта будет несколько милисек, пока проц "пробежит" область загрузчика, но ни как не 1 сек.
Попробуй создать hex через "Скетч - экспорт бинарного файла"
Неактивний
Ни кто не запрещает программировать плату как обычный МК через SPI интерфейс, на большинстве плат он даже оформлен в виде отдельного разъема. При этом не обязательно разработку делать в Arduino IDE где при компиляции учитывается наличие загрузчика.
Неактивний
Даже если не переустановить флаг BOOTRST и записать hex без загрузчика - время старта будет несколько милисек, пока проц "пробежит" область загрузчика, но ни как не 1 сек.
Попробуй создать hex через "Скетч - экспорт бинарного файла"
Откройте секрет что это за hex без загрузчика . И пока проц где то бегает я стою в лыжи обутый
Неактивний
Откройте секрет что это за hex без загрузчика . И пока проц где то бегает я стою в лыжи обутый
Выбираем:
Получаем:
Берем файлик без бутлоадера и заливаем любым программатором. Желательно также переустановить флаг старта. Если этого не сделать, программа будет стартовать с области бутлоадера, но так область бутлоадера забита "nop", проц пройдет по nop-ам до конца памяти и начнет сначала. Времени тратится примерно 2К / 16МГц = 0,0001 сек = 0.1 мсек.
Неактивний
Nefreemen пише:Откройте секрет что это за hex без загрузчика . И пока проц где то бегает я стою в лыжи обутый
Выбираем: http://forum.arduino.ua/img/members/429/1123.jpg
Получаем: http://forum.arduino.ua/img/members/429/1122.jpg
Берем файлик без бутлоадера и заливаем любым программатором. Желательно также переустановить флаг старта. Если этого не сделать, программа будет стартовать с области бутлоадера, но так область бутлоадера забита "nop", проц пройдет по nop-ам до конца памяти и начнет сначала. Времени тратится примерно 2К / 16МГц = 0,0001 сек = 0.1 мсек.
Вот я блин наивный , все время думал что бутлоадер находится во флеш МК и прописывается один раз а фьюзы указывают размер и область бут-ра. При старте сначала стартует бут и потом передает управление программе (если нет команды на "заливку"). А оказывается хекс программы уже содержит бут, капец .
Неактивний
Вот я блин наивный , все время думал что бутлоадер находится во флеш МК и прописывается один раз а фьюзы указывают размер и область бут-ра. При старте сначала стартует бут и потом передает управление программе (если нет команды на "заливку"). А оказывается хекс программы уже содержит бут, капец .
Если прочитать первое сообщение - там как раз и идет речь о заливке hex не содержащего бутлоадер сторонним программатором, а не о стандартных средствах ардуино. Ваши рассуждения относятся к стандартным средствам ардуино, но никто не запрещает работать с платой ардуино через ICSP.
Если использовать программатор, то:
бутлоадер находится во флеш МК - согласен, изначально он там есть, но я вместо него могу записать программатором что хочу.
прописывается один раз а фьюзы указывают размер и область бут-ра - а что мешает переписывать бутлоадер хоть по сто раз на день? В самой IDE есть пункт "записать бутлоадер".
старте сначала стартует бут и потом передает управление программе - опять же если он там есть, я могу его область заполнить "nop"ами или переписать фьюзы на старт с нулевого адреса, а не с бутлоадера.
Для ТС было важно выиграть время, которое бутлоадер тратит на ожидание команды на "заливку". Делал он вроде правильно, но "что-то пошло не так".
Я не вижу смысла развивать дискуссию дальше, мы говорим о разных вещах и похоже ТС тема уже не интересна.
Неактивний
Как работает загрузчик я прекрасно знаю. Вопрос в другом. Для меня стало открытием то что IDE создает два файла один из них содержит загрузчик. Логично понять какой он пишет при стандартной заливке (с загрузчиком или без), и собственно нафиг вообще кекс с загрузчиком если есть отдельная опция записать загрузчик.
alex_dol, но это же Вы написали:
"Даже если не переустановить флаг BOOTRST и записать hex без загрузчика - время старта будет несколько милисек, пока проц "пробежит" область загрузчика, но ни как не 1 сек.
Попробуй создать hex через "Скетч - экспорт бинарного файла""
Вам не кажется что что то не так написано? Слово "даже" поменяло весь смысл Вами написанного. Собственно коротко: МК пофиг с бутом кекс или без все рулит флаг .
Неактивний
Этой фразой я хотел сказать, что если программатором залить скетч без бутлоадера и оставить фьюз старта без изменений (старт останется с области бутлоадера), то проц сначала обработает 2К "nop"ов, затем перейдет к основной программе. Время обработки 2К "nop"ов будет намного меньше 1 сек. Сам не раз забывал переустанавливать фьюз старта - что так, что с переустановленым - старт мгновенный.
Неактивний
Как работает загрузчик я прекрасно знаю. Вопрос в другом. Для меня стало открытием то что IDE создает два файла один из них содержит загрузчик. Логично понять какой он пишет при стандартной заливке (с загрузчиком или без), и собственно нафиг вообще кекс с загрузчиком если есть отдельная опция записать загрузчик.
Да ну? И откуда ж ему (загрузчику) там взяться? Просветите, коль всё "прекрасно" знаете.
Неактивний
Nefreemen пише:Как работает загрузчик я прекрасно знаю. Вопрос в другом. Для меня стало открытием то что IDE создает два файла один из них содержит загрузчик. Логично понять какой он пишет при стандартной заливке (с загрузчиком или без), и собственно нафиг вообще кекс с загрузчиком если есть отдельная опция записать загрузчик.
Да ну? И откуда ж ему (загрузчику) там взяться? Просветите, коль всё "прекрасно" знаете.
Извините, где ему взяться (загрузчику) как его записать в том числе как править исходник загрузчика под частоту, конкретный АВР (размер флэша), адреса, события, ожидание вэлкам гугл . Мне это уже не интересно. А если Вы считаете что каждый раз при заливке кода в ИДЭ (через сериал) прописывается вместе с кодом загрузчик то это очень глубокое заблуждение.
Остання редакція Nefreemen (2016-07-27 15:10:12)
Неактивний
Ага, ага. Соседи по форуму.))
Вы о чем? Если Вы написали "Такое впечатление что кто-то бухает..." относительно моего поста. Тогда ссоры, я не обижаюсь (честно мне пофиг) и я ничего против не имею если Вы считаете что бутлоадер родится вместе с МК и что он переписывается каждый раз при записи скетча это Ваше право . Мне просто приснилось наверное кода я правил (под Atmega32) optiboot загрузчик для использования в Arduino IDE и как то ни один скетч его не убил .
Неактивний
... если Вы считаете что бутлоадер родится вместе с МК и что он переписывается каждый раз при записи скетча это Ваше право
И где ж я такую ахинею писал?
Мне просто приснилось наверное кода я правил (под Atmega32) optiboot загрузчик для использования в Arduino IDE и как то ни один скетч его не убил lol .
"Да кто ж его посадит, это ж ПАМЯТНИК!"
Да кто ж его убъёт, это ж ЗАГРУЗЧИК!
Он ведь сам скетчи грузит и себя не трогает. А убьёт его только программатор (экзотические варианты не рассматриваем).
В Arduino IDE же скетчи записывать можно и так, и эдак - и через загрузчик, и через программатор (но тогда загручику того-сь). Очевидно же...
"Такая вот фигня, малята."))
А кто рано встаёт, тому... Не так ли, NoName?))
Неактивний
Green, тогда я не понимаю вокруг чего ломаем копья. Почему после моего #16 последовал Ваши "намеки" #17 и #21? Ваша фраза :"Он ведь сам скетчи грузит и себя не трогает. А убьёт его только программатор (экзотические варианты не рассматриваем)." , не совсем правильна, загрузчики бывают разные . Есть у меня замечательная книга (можно сказать настольная) по которой я учился писать "программки" еще на ASM лет 10 назад. Открываем книгу А.В. Евстифеева: Микроконтроллеры AVR семейств Tiny и Mega фирмы Atmel, глава 26. Самопрограммирование микроконтроллеров семейства Mega, и читаем (фрагмент) "...Сразу отметим, что загрузчик может изменять содержимое обеих секций (поскольку вырвано с текста, то имеется ввиду секции памяти Application Section и Boot Loader Section) . Это позволяет ему модифицировать собственный код и даже удалять себя из памяти, если надобность в нем отпадет". Вот теперь можно окончательное: "Такая вот фигня, малята."))
Неактивний
ОК.
"Мы по разному видим мир". (С) О.Бендер.
Это позволяет ему модифицировать собственный код и даже удалять себя из памяти, если надобность в нем отпадет".
Вот это, как раз, "экзотические варианты".))
Неактивний