Почему в Arduino Pro Mini указано меньше памяти?
- Войдите на сайт для отправки комментариев
Пт, 30/10/2020 - 18:24
Всем привет! В создании одного проекта я столкнулся с весьма неожиданным "подводным камнем". Изначально проект тестировался на Ардуино Уно, так как на ней было проще сделать отладку, но конечный проект будет компиллироваться для 8-ми МГц Ардуино про мини (Atmega 328P).
При компиллировании для UNO получаю следующее:
Скетч использует 31204 байт (96%) памяти устройства. Всего доступно 32256 байт. Глобальные переменные используют 939 байт (45%) динамической памяти, оставляя 1109 байт для локальных переменных. Максимум: 2048 байт.
Много места занимают Битмапы. 31204 байт (96%) памяти устройства. Всего доступно 32256 байт.
При попытке компиллирования этого же скетча для Ардуино про мини получаем:
Скетч использует 31204 байт (101%) памяти устройства. Всего доступно 30720 байт.text section exceeds available space in board Глобальные переменные используют 939 байт (45%) динамической памяти, оставляя 1109 байт для локальных переменных. Максимум: 2048 байт. Скетч слишком большой; прочитайте http://www.arduino.cc/en/Guide/Troubleshooting#size Ошибка компиляции для платы Arduino Pro or Pro Mini.
То есть, скетч занимает все те же 31204 байт, А вот с памятью что-то не то: Всего доступно 30720 байт. Куда делись 1536 байт???? Как это можно исправить?
Ну, это же Мини - что от него требовать?
P.S. Про Optiboot слышал что-нить?
в этих платах одинаковое число программной памяти - 32768 байт. просто, кроме вашего скетча, в этой же памяти лежит загрузчик, который помогает вам прошивать плату через USB. Размер этого загрузчика в Уно и про мини разный. поэтому и свободной памяти после него оставется разное число байт.
Решение простое - прописать в про мини загрузчик меньшего обьема, например оптибут. Или вообще обойтись без него (но тогда ардуину надо будет прошивать через программатор)
И в Ардуино Про Мини и в UNO используется один и тот же микроконтроллер: Atmega328, с 32К памяти.
А в Uno тоже есть загрузчик. Загрузчик везде должен быть одинаков: 500 байт. В уно как раз и получается: 32768 - 32256 = 512
А вот с Про мини (вместе с загрузчиком) теряется не 512 байт а 2 Кило байта!
И это не зависимо от того что на самом деле "зашито" в МК. Я использую "голые" Atmega328P, прошиваю их программатором. Загрузчик мне вообще не нужен. По этому после компиляции проекта я беру hex-файл без загрузчика (Ардуино Иде создает два файла прошивки, с загрузчиком и без).
Вопрос в том как решить прблему с тем что Ардуино Иде изначально пишет что у МК гораздо меньше памяти и не компиллирует проект нормально?
Загрузчик везде должен быть одинаков: 500 байт. В уно как раз и получается: 32768 - 32256 = 512
А вот с Про мини (вместе с загрузчиком) теряется не 512 байт а 2 Кило байта!
Никому он ничего не должен. В нано и про мини зашит другой загрузчик, нежели в уно
Откуда вы такие безапелляционные приходите - от гайвера что ли? Загрузчик всегда был жирным в Ардуине. И только когда начали тудыть оптибут лить - он стал потоньше. Выбери Уно, скомпилируй и залей через ICSP-программатор в Миньку, если другое лень делать - МК-то одинаковые.
Я использую "голые" Atmega328P, прошиваю их программатором. Загрузчик мне вообще не нужен. По этому после компиляции проекта я беру hex-файл без загрузчика (Ардуино Иде создает два файла прошивки, с загрузчиком и без).
Вопрос в том как решить прблему с тем что Ардуино Иде изначально пишет что у МК гораздо меньше памяти и не компиллирует проект нормально?
Вопрос в другом - если вы используете голые МК - какого же лешего вы выбираете в Ардуино ИДЕ плату "Про мини"? Создайте в меню Адуино ИДЕ запись для "голого контроллера", пропишите в нем обьем памяти 32768 байт - и ИДЕ не будет ругаться.
А уж как это сделать - разберитесь, давйте-ка, сами! Задолбали новички, которым все подробно обьясняешь - а они нифига не зная начинают еще и спорить. решайте ее сами.
Вопрос в другом - если вы используете голые МК - какого же лешего вы выбираете в Ардуино ИДЕ плату "Про мини"? Создайте в меню Адуино ИДЕ запись для "голого контроллера", пропишите в нем обьем памяти 32768 байт - и ИДЕ не будет ругаться.
Ну или записать в про мини загрузчик от наны, и станет она наной.
Дак он и так прошивает программатором, куда уж меньше! Просто сообщение компилятора о 101% у человека выносит последний мозг.)))
Дак он и так прошивает программатором, куда уж меньше! Просто сообщение компилятора о 101% у человека выносит последний мозг.)))
Это точно, именно эти 101% меня и смущают.
А уж как это сделать - разберитесь, давйте-ка, сами! Задолбали новички, которым все подробно обьясняешь - а они нифига не зная начинают еще и спорить. решайте ее сами.
А зачем тогда форум? Где же мне тогда спрашивать?
Ок. Я так понял есть какие-то настройки для конкретного камня. Посмотрел в файлах IDE. Это оно?
C:\Users\Игорь\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3\boards.txt
Вот установки для Uno:
А вот установки для Arduino Pro Mini 8 Mhz:
Подскажите, как правильно описать голый Камень Atmega328P +без использования бутлоадера (если это возможно) + с выбором частоты 8Mhz / 16Mhz / внутренняя RC цепочка ?
Подскажите, как правильно описать голый Камень Atmega328P +без использования бутлоадера (если это возможно) + с выбором частоты 8Mhz / 16Mhz / внутренняя RC цепочка ?
скачай аддон miniCore, там у тебя всё будет и частоты любые и на внутреннем RC генераторе
О, спасибо! Попробую.
О, спасибо! Попробую.
пробовать не надо, просто пользуй )))
А зачем тогда форум? Где же мне тогда спрашивать?
если вы не знаете и пришли на форум спрашивать - нафига вы полезли спорить что "это точно не загрузчик , загрузчики у всех ардуино одинаковы". Тут так - если хотите с гордым видом нести чушь - то и будьте достаточно горды, чтоб решить свою задачу сами.
Вообще, после того как вы нашли параметры в файле boards.txt - найти как их редактировать. справился бы уже каждый школьник. И не обязательно ставить для этого пакет MiniCore
Вообще, после того как вы нашли параметры в файле boards.txt - найти как их редактировать. справился бы уже каждый школьник. И не обязательно ставить для этого пакет MiniCore
А вы сами можете отредактировав board.txt получить то, что хочет ТС - "правильно описать голый Камень Atmega328P +без использования бутлоадера (если это возможно) + с выбором частоты 8Mhz / 16Mhz / внутренняя RC цепочка ?". И если да, то уверены, что это сможет любой школьник?
В miniCore конфигурирование сделано красиво и, правильно, загрузчики скомпилированы под все предлагаемые частоты, эталон так сказать, для сравнения посмотрите к примеру ядро Гайвера
И лезть и править файл боард в IDE это костыль в чистом виде, не надо учить ТС плохому
А вы сами можете отредактировав board.txt получить то, что хочет ТС - "правильно описать голый Камень Atmega328P +без использования бутлоадера (если это возможно) + с выбором частоты 8Mhz / 16Mhz / внутренняя RC цепочка ?". И если да, то уверены, что это сможет любой школьник?
у меня в ардуино ИДЕ это настроено, причем настроено вручную. И сделал я это сам примерно через полгода после того как первый раз взял ардуино в руки.
ТС. как видно по регистрации - "увлекается ардуиной" с 2015 года... то есть примерно вдвое дольше, чем я :) поэтому я думаю, что он может с этим справится... если захочет.
Проблема в том. что он не имеет привычки решать проблемы сам, ему надо чтобы его кто-то под локоток взял и провел самым прямым и простым путем.
В miniCore конфигурирование сделано красиво и, правильно...
И лезть и править файл боард в IDE это костыль в чистом виде, не надо учить ТС плохому
Хочешь сказать, что в миникоре это сделано как-то принципиально иначе, чем правка текстового файла boards ? :)
Спасибо всем! То что нужно!
В miniCore конфигурирование сделано красиво и, правильно...
И лезть и править файл боард в IDE это костыль в чистом виде, не надо учить ТС плохому
Хочешь сказать, что в миникоре это сделано как-то принципиально иначе, чем правка текстового файла boards ? :)
а ты сам посмотри, недаром автор Гайвера попинал )))
PS там в файле, но подход иной...вот завтра выпустят 328 проц по 3 наномикронной технологии и как ты один гигагерц прикрутишь? )))