|
bootloader на ATMega48 |
|
|
|
Sep 25 2008, 15:29
|

Участник

Группа: Участник
Сообщений: 15
Регистрация: 25-09-08
Пользователь №: 40 478

|
Друзья. Сомнения мучают меня. Хотя начну попорядку. Появилась задумка сделать bootloader под Мегу48. В качестве среды програмирования выбрал IAR. Особенность 48 в том, что у нее нет bootsection. Приходится все описывать вручную. Для начала определяем местоположение загрузчика для чего в линкере прописываем Цитата -Z(CODE)MYSEGMENT=800-9FF Все вроде бы в порядке и в выходном файле появляется в нужном месте содержание загрузчика. И все вроде бы хорошо. Загрузчиком начинаю стирать память контроллера, и вроде бы даже хорошо получается, но когда дохожу до определенного положения стирание прекращается и цикл стирания страниц памяти вылетает. Под пристальным взглядом дизассемблера выясняется, что напоролся на инициализацию секции MYSEGMENT. Загрузчик начинается с адреса 0x0800, а инициализация секции загрузчика с 0x01C0. Кстати на этом месте заканчивается основная программа. Могу ли я расположить код инициализации секции MYSEGMENT уже после самого bootloadera.
|
|
|
|
|
 |
Ответов
|
Sep 27 2008, 07:28
|
Профессионал
    
Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387

|
Цитата Вопрос отнюдь не религиозный IMHO, именно религиозный. Я, например, с некоторым моральным усилием рихтую стартап. А в остальном компилятор делает отнюдь не худший по объёму код, если, конечно, бережно относиться к ресурсам. Зато делается это недолго. Вот на днях делал STK500v2-совместимый загрузчик с шифрованием - посмотрел пару ассемблерных реализаций кодера/декодера и увидел, что по сравнению с ассемблерным листингом ничем не лучше. А проект брал чужой (перебрал не один), написанный на Си. Для ужатия объёма (было после добавления шифрования актуально) кое-где ввёл локальные переменные, десяток функций сделал static inline, поправил пару прототипов функций, дабы вызовы были менее ресурсоёмкими - в результате за 10 минут затолкал исходные почти 4 кБ + шифрование (около 400 байт) в чуть больше 3.5 кБ кода. Да это на меге128, да там можно разгуляться - можно было выделить 8кБ загрузчику и забыть, но главное - время написания минимально - сам загрузчик взял в одном месте, функции шифрования в другом (исходно на пуре Си в аппликухе для PIC, правда их тоже быстренько оптимизировать пришлось), а если нужно будет поменять чего, то чтобы вспомнить будет нужно совсем мало времени. Я и на Си поначалу запутался с чехардой long-адресов при записи, а на асме так уж подавно потерялся бы. Так что случаи бывают разные. В мегу48 пихать загрузчик-то можно пытаться, только вряд ли оно того стОит, хоть на асме, хоть на Си. А в ту же 88-ю на Си спокойно ложится.
--------------------
aka Vit
|
|
|
|
|
Sep 27 2008, 11:30
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(sensor_ua @ Sep 27 2008, 11:28)  IMHO, именно религиозный. ............. А проект брал чужой Это не в счет, поскольку здесь - в чем исходник, в том и работаем. Я к тому, что к программе добавляется стартап, прописывается линкер, и в итоге, имхо писанины не меньше, к тому же все равно ведь чем меньше размер бута - тем лучше, и все это не портируется на другие семейства МК.  А может, и вправду религиозный вопрос. Только я тоже на атмеловском асме ужЕ давненько не пишу. Все больше winavr...
|
|
|
|
Сообщений в этой теме
РоманО bootloader на ATMega48 Sep 25 2008, 15:29 defunct Цитата(РоманО @ Sep 25 2008, 18:29) Появи... Sep 26 2008, 10:30 haker_fox Цитата(defunct @ Sep 26 2008, 19:30) Вы б... Sep 27 2008, 03:07 _Pasha Цитата(defunct @ Sep 26 2008, 14:30) Вы б... Sep 27 2008, 06:33 IgorKossak РоманО, у Вас бутлоадер и приложение в одном проек... Sep 26 2008, 12:10 sensor_ua Можно подсмотреть, как делать bootloader для ATmeg... Sep 27 2008, 03:57 defunct Цитата(sensor_ua @ Sep 27 2008, 10:28) IM... Sep 29 2008, 13:46 sensor_ua ЦитатаЭто не в счет,
Почему же? В чужом исходнике ... Sep 27 2008, 12:22 _Pasha Цитата(sensor_ua @ Sep 27 2008, 16:22) эт... Sep 27 2008, 12:37 РоманО Блин, я так и не увидел ответа. Может просто какой... Sep 29 2008, 14:12 defunct Цитата(РоманО @ Sep 29 2008, 17:12) Идея ... Sep 29 2008, 14:22  РоманО Цитата(defunct @ Sep 29 2008, 18:22) см. ... Sep 29 2008, 14:50   Огурцов Цитата(РоманО @ Sep 29 2008, 14:50) цикл ... Sep 30 2008, 05:44   Сергей Борщ Цитата(РоманО @ Sep 29 2008, 17:50) если ... Oct 1 2008, 20:21 sensor_ua ЦитатаОк, тогда затолкните эти 3.5k в 1k.
для (m8/... Sep 29 2008, 21:20 defunct Цитата(sensor_ua @ Sep 30 2008, 00:20) За... Sep 29 2008, 23:58 Rst7 ЦитатаСопровождение: кому придет в голову править ... Sep 30 2008, 04:55 sensor_ua ЦитатаЗатолкнул. ровно в 1k под жвак (1024). Аплод... Sep 30 2008, 06:25 GSG Если не критично для программы, то поменяйте места... Sep 30 2008, 10:40 bodja74 2PomanO
Короче
Здесь лежит готовый загрузчик п... Oct 1 2008, 14:40 Огурцов Цитата(bodja74 @ Oct 1 2008, 14:40) Прикр... Oct 1 2008, 17:03
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|