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

 
 
 
Reply to this topicStart new topic
> Автономный программатор, программатор для серийной прошивки без компьютера
shemmer
сообщение Feb 7 2008, 17:36
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 23-09-07
Из: Томск
Пользователь №: 30 759



Приветствую всех

В общем возникла необходимость в сборке автономного программатора
который прошивает однотипные контроллеры attiny26L
Я с алгоритмом SPI вроде разобрался, есть алгоритм считывания из флеш-памяти
(программа-прошивки должна распологаться во влеш-памяти контроллера-программатора)
А вот как разместить прошивку во Flash программатора не знаю.
Если вставить ее со свободного адреса в текстовом редакторе
то при загрузке программа пишет invalid data in flash. Может есть какой-нибудь способ размещения прошивки?
Работаю в CVAVR.
Помогите пожалуйста
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 7 2008, 17:44
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(shemmer @ Feb 7 2008, 20:36) *
В общем возникла необходимость в сборке автономного программатора
....
Помогите пожалуйста

http://www.triton-prog.ru/v5_4.html

Цитата
А вот как разместить..

Безумно избитая тема. Воспользуйтесь поиском.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
GDI
сообщение Feb 8 2008, 10:20
Сообщение #3


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

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



Может стоит разместить прошивку во внешней дата-флешь, тогда можно организовать замену прошивки без перешивания МК самого программатора.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
shemmer
сообщение Feb 8 2008, 17:58
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 23-09-07
Из: Томск
Пользователь №: 30 759



Так вот как-раз хотелось бы без внешней памяти. Искал по форуму нашел что:
1. Можно подставить в hex файл программатора hex-файл прошивки убрав в первом строку :00000001FF
-Вопрос:нужно ли при этом менять адреса у файла-прошивки?
-Как указать при этом адрес начала прошивки?
Допустим после соединения я получаю:
:1001A80080ED97E00197F1F7A8953197C9F7089581 //последняя строчка прошивки программатора
:0E00000013C0FECFFDCFFCCFFBCFFACFF9CF60 //первая строчка прошивки-клона
:10000E00F8CFF7CFF6CF38C0F4CFF3CFF2CFF1CF92 //вторая строка
Адрес в программе я должен указать 000E?

2.Вариант. Получается что можно разместить массив с данными прямо в программе?
А как тогда указать адрес с которого этот массив должен храниться?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 8 2008, 18:47
Сообщение #5


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(shemmer @ Feb 8 2008, 22:58) *
2.Вариант. Получается что можно разместить массив с данными прямо в программе?
А как тогда указать адрес с которого этот массив должен храниться?


Да, так проще.

Код
char __attribute__ ((progmem)) proshivka[] = {
23, 12, ....
}

чтение байтов:
Код
{
    u16 i;
    for(i = 0; i < sizeof(proshivka) / proshivka[0]; i++)
        program_byte(pgm_read_byte(&proshivka[i]));
}


Байты для прошивки брать из бинарника.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Feb 9 2008, 08:49
Сообщение #6


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(shemmer @ Feb 8 2008, 19:58) *
2.Вариант. Получается что можно разместить массив с данными прямо в программе?
А как тогда указать адрес с которого этот массив должен храниться?

Или если работаете в IAR, присоединить к программе программатора бинарный файл прошивки, как обсуждалось здесь.
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Feb 15 2008, 10:16
Сообщение #7


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

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Принимаешь, что программа которую надо зашить будет лежать с фиксированного адреса (скажем - 400h). Пишешь "прошивальщик" который по объему меньше 1кБ и располагаешь его в начале памяти. Прошивальщик компилируешь в Intel-hex. Программу которую надо прошить компилируешь в Intel-hex.
Ну а далее воспользуйся парой программ hex2bin и bin2hex и обычным копированием с добавлением.
У меня в частности .BAT-файл для записи двух программ (тестовой и основной) выглядит так:

--------summ_hex.bat---------------------
rem берет три hex-файла (загрузчик, программа и тест) и совмещает в одном hex-е
rem размер загрузчика - до 1кБ, программа пишется со смещением 1024 байт (1кБ), тест пишется со смещением 5120 байт (5кБ)
rem Служебные файлы - end.* (end.bin end.hex)

rem Создание пустого end.hex
del end.*
HEX2BIN.EXE end.hex
BIN2HEX.EXE END.BIN

rem Собственно совмещение
HEX2BIN.EXE /p255 /L8192 end.hex
HEX2BIN.EXE /M %1 end.bin
HEX2BIN.EXE /M /O1024 %2 end.bin
HEX2BIN.EXE /M /O5120 %3 end.bin
BIN2HEX.EXE END.BIN
--------summ_hex.bat---------------------

Набор комманд может отличаться для разных конвертеров...
В крайнем случае можно конвертировать два бинарника (прошивальщик размером 1кБ) и тупо сложить коммандой
COPY load.bin /B +prg.bin /B end.BIN /B

Сообщение отредактировал ArtemKAD - Feb 15 2008, 10:21
Go to the top of the page
 
+Quote Post
shemmer
сообщение Feb 16 2008, 04:20
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 23-09-07
Из: Томск
Пользователь №: 30 759



Говорят что в IАR до какой-то версии не корректно работает линковщик. Или нормально?
Go to the top of the page
 
+Quote Post

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

 


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


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