Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
romos_2010
1

А вот как можно закинуть в прошивку ее собственный CRC

11.08.2015, 00:02. Показов 3655. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Тема для тех,кто пользуется keil-ом.Иногда стоит задача следующего типа...При включении питания на моем изделии сначала стартует загрузчик,который по определенному алгоритму считает CRC,сравнивает его с числом,записанным по заранее известному адресу,и если равно,то собственно стартует сама программа,а иначе переходит в режим программирования.Что было "до":
-отдельный проект загрузчика
-отдельный проект самой программы на изделие,причем как отладочная,так и релизная версии
-после компоновки запускался elf,который делает из hex-файла бинарники загрузчика и самой программы
-внешняя самописная программа,которая соединяет эти два бинарника в один ,считает CRC и записывает его по этому самому заранее известному адресу
А вот "после"
- изучаем хелп keil-a mvision usirs guide-debug functions
- объявляем например в файле main.c
Код
const int crc __attribute__((at(0x800)));
пусть у нас до адреса 0х800 будет загрузчик,а с этого адреса будет программа
- редактируем файл 1.ini (этот файл вне проекта и к нему никак не относится) Пусть у нас к примеру,адрес конца Ftosh-памяти нашего микроконтроллера 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-поле initiotyzotion file" открываем этот файл
ну собственно говоря,компилируем,загружаем,наслаждаемся
ну а теперь надо бы еще и загрузчик и программу объединить в один проект
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.08.2015, 00:02
Ответы с готовыми решениями:

Как можно обойти проверку CRC или как можно распаковать поврежденный архив?
Есть старый архив. Но при попытке достать из него файл выдается сообщение о несовпадении CRC. Как...

сделал вот такой вот php css, походу я намудрил тут что голову можно сломать, можно ли это превести в чувство?
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;...

в Adobe Premiere Pro CS5 кроме формата MPEG - 4,а вот не получается закинуть видео форматов AVI,MKW,MOW,MPEG - 2
что мне делать,если нужно установить дополнительное ПО,то подскажите какую:help:

Можно ли установить ios 6, как кастомную прошивку на любой другой айфон?
глупый вопрос кончено,но ведь одна из прошивок на айфоне 2g основана на ios 3,её же взломали.

1
0 / 0 / 0
Регистрация: 07.02.2015
Сообщений: 186
11.08.2015, 10:35 2
Не особо понял зачем заливать прошивку и бутлоадер в 1 фаил. Хотя может и удобнее.
Можно попробовать написать бутлоадер на асме, поместив его в секцию и указать адрес этой секции. Это что первое пришло в голову.
0
11.08.2015, 10:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.08.2015, 10:35
Помогаю со студенческими работами здесь

как можно переписать вот это в с++
program lab4; var i,j,jmax:integer; a:array of real; b:array of real; k,max,s:real; begin...

Вот сижу и думаю как это можно сделать через функции. Как?
using System; namespace Test { class Program { static void Main(string args)...

Как вот это можно написать через лямбда выражение?
Есть функция и вней вот это: double ans; ans = ((((ilgis*2)+(plotis*2))*aukstis)*l)/10; return...

Как вот это можно написать через лямбда выражение
Есть функция и вней вот это: double ans; ans = ((((ilgis*2)+(plotis*2))*aukstis)*l)/10; return...

Как можно сделать вот такой поисковик товара на сайт???
Всем привет! Ребят, подскажите пожалуйста, как можно сделать вот такой поисковик Для поиска...

Объясните как можно сделать проще вот этот бред
#include &lt;stdio.h&gt; #include &lt;math.h&gt; int main() { double f = 0, x, c, z, s = 1, i, g; ...

Куда можно закинуть свои проги чтоб их скачивали и пользовались люди?
Здраствуйте! :) Я написал за пол года три программы. Вопрос такой - Куда можно закинуть свои проги...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru