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

 
 
> Снова о самопрограммировании
Oless
сообщение Feb 2 2009, 10:28
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 4-12-08
Пользователь №: 42 204



Хочу сразу сказать, что перекопал уже весь форум и не только этот, прочитал avr106 но проблему устранить так и не смог.
Нужна помощь. Необходимо сделать обновление флеш программ. Для этого пытаюсь разместить код бутлоудера в отведенное ему пространство, но после программирования атмеги128 и последующего считывания код остается в начале прошивки. Как было рекомендовано в avr106, взял стандартный lnkm128s.xcl добавил в него
-D_..X_BOOTSEC_SIZE=2000 /* 4096 words */
-Z(FARCODE)BOOT_SECTION=(_..X_FLASH_END-_..X_BOOTSEC_SIZE-1)-
_..X_FLASH_END



в код программы void ExampleFunction() @ "BOOT_SECTION"{

for(ii=0;ii<100;ii++);// для теста

}


среда иар 2.31 , фьюзы BSIZ=0,BLB0=3,BLB1=3
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
GDI
сообщение Feb 4 2009, 13:47
Сообщение #2


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

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Это да, бутлоадер отдельно всегда пишется. Как вариант решения, сделать отдельный бут, отдельную прогу, зашить бут, бутом зашить прогу, считать программатором дамп и этим дампом прошивать девайсы при производстве. При внесении изменений, все операции повторить.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Feb 4 2009, 13:59
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(GDI @ Feb 4 2009, 16:47) *
сделать отдельный бут, отдельную прогу, зашить бут, бутом зашить прогу
Если рабочая программа подготавливает данные для загрузчика, то предложенное Вами - проблематично: некому подготавливать...
1) Некоторым программаторам можно сказать: перед прошивкой не делать стирания памяти.
2) Можно "слить" в один два hex-файла...

PS Кстати, если рабочая программа действительно подготавливает данные для загрузчика, то у такой методы заливки есть "ахиллесова пята": в случае повреждения рабочей программы заливка новой программы загрузчиком - невозможна.
Go to the top of the page
 
+Quote Post
Oless
сообщение Feb 4 2009, 14:27
Сообщение #4





Группа: Участник
Сообщений: 11
Регистрация: 4-12-08
Пользователь №: 42 204



Цитата(GDI @ Feb 4 2009, 15:18) *
Человек, видимо имеет ввиду, что он с помощью основной программы тянет откуда то прошивку и сохраняет ее , например , в ат45 на борту. Затем девайс ребутится и бутлоадер забирает код прошивки из ат45 и перешивает девайс. Судя по упоминанию "сети" заказчика, прошивка будет браться через Ethernet и обработка Ethernet-а не влезет в бутлоадер.

Да, Вы правы, именно так и обстоит дело



Цитата(Палыч @ Feb 4 2009, 15:59) *
Если рабочая программа подготавливает данные для загрузчика, то предложенное Вами - проблематично: некому подготавливать...
1) Некоторым программаторам можно сказать: перед прошивкой не делать стирания памяти.
2) Можно "слить" в один два hex-файла...

PS Кстати, если рабочая программа действительно подготавливает данные для загрузчика, то у такой методы заливки есть "ахиллесова пята": в случае повреждения рабочей программы заливка новой программы загрузчиком - невозможна.



Я таки соглашусь с Вами и буду делать загрузчик отдельным проектом, почему-то мне казалось, что это не обязательно
Думаю, что слить (заменить часть hex ) будет возможным, хотя это и извращение


Спасибо
Go to the top of the page
 
+Quote Post
IJAR
сообщение Feb 5 2009, 21:05
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 26-02-07
Из: г. Зеленоград
Пользователь №: 25 669



Цитата(Oless @ Feb 4 2009, 17:27) *
Да, Вы правы, именно так и обстоит дело






Я таки соглашусь с Вами и буду делать загрузчик отдельным проектом, почему-то мне казалось, что это не обязательно
Думаю, что слить (заменить часть hex ) будет возможным, хотя это и извращение


Спасибо


Вариантов решения Вашей задачи достаточно много: приведу 1.
Лучше делать 2 проекта:
1. BootLoader
2. USER proram

Boot естественно размещаете в секции Boot, USER с адреса 0x0000. В секции векторов прерывания ставие
jmp на соответствующие адреса секции USER, кроме USART-a (он исп-ся для закачки програамы USER)
Старт на BootrLoader - он настраивает USART и разрешает прерывания от него, инициализирует свои
переменные (min 16-20 ячеек RAM ими придется пожертвовать в USER а если USER уже написан, то поскать в нем). После инициализации BootLoader отдается USER-у на адрес 0x0000. При замене программы USER -
дергаете USART - преравание от него попадут BootLoader-у и он обработав его на всякие ошибко и
пароли вернется не к USER-у а в свой main и тогда весь RAM будет в его распоряжении. Дальнейшее -
дело техники и Вашей фантазии.


--------------------
Вяжешь - вой, а поедешь - песни пой.
Между "хочу" и "можно" всегда есть дистанция
Go to the top of the page
 
+Quote Post
defunct
сообщение Feb 5 2009, 22:39
Сообщение #6


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(IJAR @ Feb 5 2009, 23:05) *
jmp на соответствующие адреса секции USER, кроме USART-a (он исп-ся для закачки програамы USER)

Как-то закручено и неестественно получается.
Почему бы просто не выставить фуз BOOTRST, а вектора переключать в BOOT секцию с помощью бита IVSEL. Получатся два абсолютно независимых проекта.
Из BOOT'а в основную программу переходить - jmp 0x0, наоборот (из USER в BOOT) - по WDT сбросу.
Сигналить из основной программы бутлоадеру о наличии обновленной прошивки через оговоренную ячейку EEPROM.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Oless   Снова о самопрограммировании   Feb 2 2009, 10:28
- - arttab   как предположение: задайте в адрес в явном виде, а...   Feb 3 2009, 10:01
- - Oless   Получилось у меня загнать функцию в область бутлоу...   Feb 4 2009, 09:56
|- - sergik_vrn   Цитата(Oless @ Feb 4 2009, 12:56) Получил...   Feb 4 2009, 11:05
|- - Oless   Цитата(sergik_vrn @ Feb 4 2009, 13:05) а ...   Feb 4 2009, 11:13
|- - Палыч   Цитата(Oless @ Feb 4 2009, 14:13) ... к э...   Feb 4 2009, 12:08
|- - Oless   Цитата(Палыч @ Feb 4 2009, 14:08) Имхо, в...   Feb 4 2009, 12:40
|- - Палыч   Цитата(Oless @ Feb 4 2009, 15:40) ... а т...   Feb 4 2009, 13:16
- - arttab   значит компилятор не понял Вашего указания где раз...   Feb 4 2009, 10:34
- - GDI   Человек, видимо имеет ввиду, что он с помощью осно...   Feb 4 2009, 13:18
|- - Палыч   Цитата(GDI @ Feb 4 2009, 16:18) с помощью...   Feb 4 2009, 13:29
|- - IJAR   Цитата(defunct @ Feb 6 2009, 01:39) Как-т...   Feb 6 2009, 08:59
|- - defunct   Цитата(IJAR @ Feb 6 2009, 10:59) Преимуще...   Feb 6 2009, 11:34
|- - Dog Pawlowa   Цитата(defunct @ Feb 6 2009, 15:34) BOOT ...   Feb 6 2009, 12:48
|- - defunct   Цитата(Dog Pawlowa @ Feb 6 2009, 14:48) Я...   Feb 6 2009, 14:05
- - GDI   А надо всегда держать образ программы во внешней п...   Feb 4 2009, 14:28
- - Prime   Я делал так: Отдельно заливал бутлодер, настраивал...   Feb 5 2009, 18:56


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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 20:13
Рейтинг@Mail.ru


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