Easyelectronics.ru

Электроника для всех
Текущее время: 22 авг 2019, 21:02

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



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: А вот как можно закинуть в прошивку ее собственный CRC
СообщениеДобавлено: 12 авг 2015, 00:49 
Здравствуйте!

Зарегистрирован: 11 авг 2015, 23:52
Сообщения: 1
Тема для тех,кто пользуется keil-ом.Иногда стоит задача следующего типа...При включении питания на моем изделии сначала стартует загрузчик,который по определенному алгоритму считает CRC,сравнивает его с числом,записанным по заранее известному адресу,и если равно,то собственно стартует сама программа,а иначе переходит в режим программирования.Что было "до":
-отдельный проект загрузчика
-отдельный проект самой программы на изделие,причем как отладочная,так и релизная версии
-после компоновки запускался elf,который делает из hex-файла бинарники загрузчика и самой программы
-внешняя самописная программа,которая соединяет эти два бинарника в один ,считает CRC и записывает его по этому самому заранее известному адресу
А вот "после"
- изучаем хелп keil-a mvision user's guide-debug functions
- объявляем например в файле main.c
Код:
const int crc __attribute__((at(0x800)));

пусть у нас до адреса 0х800 будет загрузчик,а с этого адреса будет программа
- редактируем файл 1.ini (этот файл вне проекта и к нему никак не относится) Пусть у нас к примеру,адрес конца Flash-памяти нашего микроконтроллера 0х1000. также CRC считаем по простенькому алгоритму исключающего или,хотя можно запрограммировать и реальный crc32
Код:
map 0x800,0x800 read write

FUNC void calc_crc(void)
{
   int i;
   crc=0;
   for(i=0x804;i<0x1000;i+=4)
   crc^=_RDWORD(i);
}

calc_crc()

- подключаем этот файл 1.ini заходим в меню keil-a
"project-options fo target....-вкладка debug-поле initialization file" открываем этот файл
ну собственно говоря,компилируем,загружаем,наслаждаемся
ну а теперь надо бы еще и загрузчик и программу объединить в один проект


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: А вот как можно закинуть в прошивку ее собственный CRC
СообщениеДобавлено: 12 авг 2015, 11:22 
Старожил
Аватара пользователя

Зарегистрирован: 11 фев 2015, 18:08
Сообщения: 211
Не особо понял зачем заливать прошивку и бутлоадер в 1 фаил. Хотя может и удобнее.
Можно попробовать написать бутлоадер на асме, поместив его в секцию и указать адрес этой секции. Это что первое пришло в голову.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

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


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB