Да, я собираюсь производить десятками. Ссылки хорошие, посмотрю на устройства.
Только мне нужно кнопочное поле и индикатор для управления устройством через иерархическое меню. Я пока не находил нужного мне вида конструктива, а Controllino - это фантик просто бессмысленный.
Я планирую вот такой вид, т.к. к нему у меня уже и софт практически есть готовый.
Вложения
2017-09-13_13-01-36.png (273.32 КБ) 11381 просмотр
запрещено исполнение команд LPM и SPM в секции приложения
я имел ввиду что второй загрузчик помещается вместе с основной программой в конце пространства памяти.
Нужно ещё отделить модуль CPU от остального, чтобы я потом мог безболезненно перейти на arm, заменив плату CPU.
сделайте взаимодействие с аппаратной частью через HAL,когда вам будет нужен другой процессор заменяете HAL и все будет работать.
Со вторыми загрузчиками не всё так просто. Нужно предусмотреть удобную логику совместной их работы в разных ситуациях. Дело в том, что порядок их расположения в boot секции влияет на поведение платы в случае отсутствия программы и при наличии конфигурационного файла на карте. Сами вторые загрузчики тоже имеют свою логику и нужно тестировать разные варианты их поведения. Например, Arduino загрузчик выполняет только одну операцию и переходит на запуск программы. Это неудобно при работе с ним из AVR Studio, так как утилита прошивки там не умеет сбрасывать мк перед своей работой (переходе между вкладками). В общем, нужен тюнинг всей этой загрузочной системы.
Хочу ещё свой загрузчик в IAR'e пересобрать, т.к. он ровно в 4096 байт укладывается для AVR GCC, а мне нужна ещё небольшая логика (указать адрес для прошиваемого файла).
А пока разбираюсь с примерами нативной работы с W5100.
Мой загрузчик состоит из двух частей: работа с файловой системой FAT32 (PetitFS) и операции записи во флеш (стандартные из avr/boot.h). Не встречал пока библиотек, которые поддерживали бы FAT32 с меньшим размером кода.
Это в основной части. Ещё есть управление светодиодом программирования и чтение конфигурационного файла. Также есть проверки наличия кода перед переходом на него. Не так просто оказалось найти C инструкцию для дальнего перехода (так и не нашёл, сделал асм вставку).
Название: Загрузчик, использующий sd-карту
Автор: Вячеслав Мезенцев <[email protected]>
Плата: Arduino Mega2560
Лицензия: GNU General Public License
Дата: 11 Сентября 2017
Компилятор: AVR GCC
Описание:
Загрузчик позволяет загружать программу во флеш мк, используя
sd-карту (FAT32). Размер загрузчика укладывается в 4 Кб.
Имя файла должно быть указано в файле BOOT.CFG.
Если загружается пользовательская программа, то в файле BOOT.CFG
должна находиться строка (без перевода строки) следующего формата:
FILE=FILENAME.BIN
Если загружается второй загрузчик, то в файле BOOT.CFG
должна находиться строка (без перевода строки) следующего формата:
BOOT=FILENAME.BIN
Имя файла должно быть в верхнем регистре и иметь формат 8.3.
Второй загрузчик (при его использовании) будет записан в boot-секцию
выше основного. Для его активации не нужно изменять фьюзы, достаточно
в файле конфигурации BOOT.CFG указать строку:
BOOT=RUN
Замечания:
Если sd-карта отсутствует или нет файла BOOT.CFG, или в файле находится
строка: FILE=RUN, то управление сразу передаётся пользовательскому коду,
если он есть (перед переходом это проверяется).
Перед переходом на второй загрузчик также проверяется его наличие.
Если нет пользовательской программы или загрузчика, то управление переходит
в вечный цикл (ожидается перезапуск).
На время записи флеш зажигается светодиод PROGLED.
Работу загрузчика можно протестировать, если собрать его отладочную версию,
раскомментировав DEBUG. При этом отключится запись во флеш, а по USART0
будут передаваться символы состояний (см. код ниже).