реклама на сайте
подробности

 
 
> bootloader на ATMega48
РоманО
сообщение Sep 25 2008, 15:29
Сообщение #1


Участник
*

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



Друзья. Сомнения мучают меня.
Хотя начну попорядку.
Появилась задумка сделать bootloader под Мегу48. В качестве среды програмирования выбрал IAR. Особенность 48 в том, что у нее нет bootsection. Приходится все описывать вручную. Для начала определяем местоположение загрузчика для чего в линкере прописываем
Цитата
-Z(CODE)MYSEGMENT=800-9FF

Все вроде бы в порядке и в выходном файле появляется в нужном месте содержание загрузчика. И все вроде бы хорошо. Загрузчиком начинаю стирать память контроллера, и вроде бы даже хорошо получается, но когда дохожу до определенного положения стирание прекращается и цикл стирания страниц памяти вылетает. Под пристальным взглядом дизассемблера выясняется, что напоролся на инициализацию секции MYSEGMENT.
Загрузчик начинается с адреса 0x0800, а инициализация секции загрузчика с 0x01C0. Кстати на этом месте заканчивается основная программа.
Могу ли я расположить код инициализации секции MYSEGMENT уже после самого bootloadera.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sensor_ua
сообщение Sep 27 2008, 07:28
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387



Цитата
Вопрос отнюдь не религиозный

IMHO, именно религиозный. Я, например, с некоторым моральным усилием рихтую стартап. А в остальном компилятор делает отнюдь не худший по объёму код, если, конечно, бережно относиться к ресурсам. Зато делается это недолго. Вот на днях делал STK500v2-совместимый загрузчик с шифрованием - посмотрел пару ассемблерных реализаций кодера/декодера и увидел, что по сравнению с ассемблерным листингом ничем не лучше. А проект брал чужой (перебрал не один), написанный на Си. Для ужатия объёма (было после добавления шифрования актуально) кое-где ввёл локальные переменные, десяток функций сделал static inline, поправил пару прототипов функций, дабы вызовы были менее ресурсоёмкими - в результате за 10 минут затолкал исходные почти 4 кБ + шифрование (около 400 байт) в чуть больше 3.5 кБ кода. Да это на меге128, да там можно разгуляться - можно было выделить 8кБ загрузчику и забыть, но главное - время написания минимально - сам загрузчик взял в одном месте, функции шифрования в другом (исходно на пуре Си в аппликухе для PIC, правда их тоже быстренько оптимизировать пришлось), а если нужно будет поменять чего, то чтобы вспомнить будет нужно совсем мало времени. Я и на Си поначалу запутался с чехардой long-адресов при записи, а на асме так уж подавно потерялся бы. Так что случаи бывают разные. В мегу48 пихать загрузчик-то можно пытаться, только вряд ли оно того стОит, хоть на асме, хоть на Си. А в ту же 88-ю на Си спокойно ложится.


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Sep 27 2008, 11:30
Сообщение #3


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(sensor_ua @ Sep 27 2008, 11:28) *
IMHO, именно религиозный.
.............
А проект брал чужой

Это не в счет, поскольку здесь - в чем исходник, в том и работаем.
Я к тому, что к программе добавляется стартап, прописывается линкер, и в итоге, имхо писанины не меньше, к тому же все равно ведь чем меньше размер бута - тем лучше, и все это не портируется на другие семейства МК. smile.gif А может, и вправду религиозный вопрос. Только я тоже на атмеловском асме ужЕ давненько не пишу. Все больше winavr...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- РоманО   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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 01:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.01395 секунд с 7
ELECTRONIX ©2004-2016