Например TDA7294

Форум РадиоКот • Просмотр темы - BootLoader Atmega128 Atmel Studio
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 23, 2024 22:51:49

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: BootLoader Atmega128 Atmel Studio
СообщениеДобавлено: Пт дек 16, 2016 16:11:31 
Родился

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Пт дек 16, 2016 15:51:05
Сообщений: 3
Рейтинг сообщения: 0
Нужен BootLoader для Atmega128A для Atmel Studio

Написал в последней версии Atmel Studio 4-килобайтную программу на С++, которая умеет через USART вытягивать шифрованные 120 килобайт данных, CRC сходятся, на экранчике проценты прошивки выводятся, переключение между бутлоадером и программой через джампер придумано и т.д. Фьюзы BOOTSZ 4096 words, BOOTRST вкл.

Но возникли проблемы:
1. Как записать программу в последние 4 килобайта прошивки? "-Wl,--section-start=.boot=0xF000" не компилируется.
2. Как записать во флеш 256 байт (размер страницы памяти)?
В #include <avr/boot.h> есть пример функции boot_program_page (uint32_t page, uint8_t *buf)
Я в него запихиваю любой адрес, массив, функция исполняется, но данные никуда не записывает.
Аналоги из чужих исходников типа static inline uint16_t writeFlashPage(uint16_t waddr, pagebuf_t size)
тоже не работают. Может дело в том, что программа расположена в секции программы, а не бутлоадера?
3. Что ещё надо сделать, чтобы получился полноценный бутлоадер. Как фьюзами закрыться и т.д.

В инете вообще исходники бутлоадера в Atmel Studio не находятся. На форуме тоже ничего не нашёл.

Кратко говоря, надо исходник на C++ для Atmega128 в Atmel Studio 7, который прошьёт себя в секцию бутлоадера и запишет по 0 адресу: "Hello World".


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BootLoader Atmega128 Atmel Studio
СообщениеДобавлено: Пт дек 16, 2016 16:51:30 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2694
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
viewtopic.php?p=2873909#p2873909

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BootLoader Atmega128 Atmel Studio
СообщениеДобавлено: Пт дек 16, 2016 17:39:48 
Родился

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Пт дек 16, 2016 15:51:05
Сообщений: 3
Рейтинг сообщения: 0
Z_h_e писал(а):
http://radiokot.ru/forum/viewtopic.php?p=2873909#p2873909

Добавил в alt -> Project -> Properties -> Toolchain -> AVR/GNU Linker -> Memory Settings ->FLASH segment
Запись: ".bootmem=0xF000".

В исходном коде пишу
Код:
void boot_program_page (uint32_t page, uint8_t *buf); __attribute__ ((section (".bootmem")))
либо
Код:
void boot_program_page (uint32_t page, uint8_t *buf){...} __attribute__ ((section (".bootmem")))

Открыл прошивку, действительно, часть программы сместилась к адресу :10E00000, но большая часть всё ещё в начале. Надо после каждой функции этот атрибут писать?


Вложения:
bootsection2.png [27.02 KiB]
Скачиваний: 365
Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: BootLoader Atmega128 Atmel Studio
СообщениеДобавлено: Сб дек 17, 2016 09:44:21 
Родился

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Пт дек 16, 2016 15:51:05
Сообщений: 3
Рейтинг сообщения: 1
Совет был неправильный, как и сотни других советов, которые я перелопатил в инете.

Дельных советов в инете нет, поэтому напишу, как сделать Бутлоадер в Atmel Studio 7 на C++ для Atmega128.

1. Добавляем в alt -> Project -> Properties -> Toolchain -> AVR/GNU Linker -> Memory Settings ->FLASH segment
Запись: ".text=0xF000". Теперь вся программа располагается с адреса 0x1E000. Совет использовать "__attribute__ ((section" на десятках форумов - подстава и пустая трата времени, он нужен, чтобы бутлоадер и основную программу писать в одном проекте.

2. Ставим фьюзы в alt -> Tools -> Device Programming -> Fuses
BOOTSZ $F000 для загрузчика размером 8 килобайт.
BOOTRST on, чтобы загрузка при включении начиналась с адреса 0xF000 words (0x1E000 bytes).

3. Добавляем
Код:
uint8_t temp=MCUCR;
MCUCR|=(1<<IVCE);
MCUCR=temp|(1<<IVSEL);
в самом начале программы. Тогда прерывания будут работать в бутлоадере. Другие модификации этого кода без temp не работают.

4. Оптимизация -Os по умолчанию.

5. PSTR, memcmp_P и прочие _P не работают по умолчанию и их нет смысла использовать, так как оперативки полно.

6. Переход в основную прошивку можно делать любой из команд:
Код:
void* mainprog= (void *) 0;
goto *mainprog;

((void (*)())0x0000)();

asm("jmp 0x0000");
Если переходить сразу после прошивки, то придётся откручивать MCUCR обратно.

7. Пример функции записи страницы в память есть в файле avr/boot.h, который всё равно придётся подключать.

8. На всякий случай к прошивке можно добавить пару сотен байт нулей или хотя бы до конца страницы памяти.

Если бы я сразу встретил этот пост, то сэкономил бы часов 50 своего времени и много нервов на перерывание даташитов и испытания неработающих советов.


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: BootLoader Atmega128 Atmel Studio
СообщениеДобавлено: Вт авг 22, 2017 03:29:25 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Сб дек 27, 2008 12:01:35
Сообщений: 580
Откуда: Россия, Екатеринбург
Рейтинг сообщения: 0
Tbrcat
Спасибо за комментарий, очень помог.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Eats и гости: 39


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y