Расширить пространство программы, избавившись от загрузчика на NANO
У меня просто есть сложная программа, которая работает на НАНО. Теперь, когда я использую свои printlns для отладки, у меня заканчивается память.
Я читал об использовании программатора, чтобы избавиться от загрузчика, который использует пространство 2K на NANO. Я купил USBtinyISP и заставил его успешно работать... почти я могу запрограммировать nano так, как хотел, но я не получаю никакого дополнительного пространства.
При программировании с помощью debug printlns я сталкиваюсь с тем же сообщением, что и раньше, в котором указано то же максимальное пространство внутри (я думаю, это было 30700).
Почему это так? Я думал, что загрузчик переопределяется при использовании программатора и таким образом освобождает 2K программируемого пространства.
Обратите внимание: я не спрашиваю, как оптимизировать мой программный код! Спасибо, что обратили внимание ;)
Большое вам спасибо.
@MrNats86, 👍3
Обсуждение1 ответ
Лучший ответ:
Он применяет эту строку из arduino: avr boards.txt
nano.menu.cpu.atmega328.upload.maximum_size=30720
Чтобы было ясно, предполагается, что плата имеет загрузчик, даже если вы не используете его для загрузки кода на плату, то есть загрузки через программатор.
Вы могли бы отредактировать его и сами поменять некоторые предохранители. Но вы также можете просто использовать MCUdude MiniCore, выбрав опцию, которая не использует загрузчик, например ATmega328P
без загрузчика
, что дает вам максимальную загрузку 32768:
328.menu.bootloader.no_bootloader.upload.maximum_size=32768
Имейте в виду, что в любом случае вам нужно будет установить предохранители для отсутствия загрузчика. Как бы странно это ни звучало, выбор опции No Bootloader
в MCUdude MiniCore для ATmega328P
, а затем выполнение Burn Bootloader
устанавливает эти предохранители для вас, несмотря на то, что в этом случае имя фактически не сжигает загрузчик. Если бы вы изменили максимальный размер загрузки для платы Nano, вам нужно было бы вручную установить предохранители аналогично тому, что делает Burn "Bootloader" для MiniCore ATmega328P с опцией No-bootlader.
Большое вам спасибо! Только что попробовал свой первый пункт, который сработал как по волшебству! Сэкономил мне кучу времени, я должен тебе пиво!, @MrNats86
Дополнительная информация: Поскольку у меня была переустановка моей системы, мне также пришлось перенастроить boards.txt . Я наткнулся на этот блог, в котором довольно хорошо объясняются предохранители: http://www.martyncurrey.com/arduino-atmega-328p-fuse-settings/, @MrNats86
Я бы на вашем месте предпочел ознакомиться с таблицей данных, а не с этим. Во-первых, в нем говорится: "Я полагаю, что RSTDISBL реализован по соображениям безопасности, чтобы остановить перепрограммирование чипа или загрузку прошивки". Нет, не совсем, для этого есть и другие возможности. RSTDISBL
существует в основном для того, чтобы позволить этому контакту функционировать как обычному GPIO. В любом случае, прочтите техническое описание для получения более точных описаний., @timemage
- Не могу записать загрузчик с помощью avrisp
- Arduino Nano не отвечает, желтый светодиод быстро мигает
- Как запрограммировать чип ATmega328 au tqfp32 (SMD)?
- Использовать Arduino Nano V3 для программирования другого Arduino (Pro Mini)?
- Arduino Nano - программатор не отвечает
- Arduino Nano использует контакты SPI в качестве контактов ввода-вывода? а еще можно сделать ISP?
- Одновременно записать загрузчик arduino и скомпилированный скетч
- Можно ли обновить загрузчик Arduino (Nano) через себя и Arduino IDE или требуется ISP?
"Новый загрузчик" имеет всего 0,5 КБ, но arduino не изменил nano.menu.cpu.atmega328.upload.maximum_size, @Juraj
Когда я попаду в space crunch, я сделаю код на mega, а затем, когда он будет отлажен, уменьшу его до nano. Не идеальный ответ, но вполне осуществимый., @Gil