Jump to content

    
Sign in to follow this  
diman8911

Добавить файл данных в проект (прошивку)

Recommended Posts

Здравствуйте! Мне нужно добавить файл данных (12кБ) в прошивку PIC, чтобы PIC мог эти данные использовать в процессе работы.

Можно конечно загнать файл во флешку в процессе работы, но хотелось бы, чтобы этот файл программировался в PIC вместе с прошивкой.

Edited by diman8911

Share this post


Link to post
Share on other sites

Нет, такого способа. Можно только использовать сериализацию в оболочке MPLAB IPE, где вместе с имеющимся хексом прошивается обозначенная область флеша неким кодом, определяемым файлом .num. Но там код формируется либо инкрементным (с произвольным шагом), либо рандомным способом.

Я использую имеющийся у устройства на МК интерфейс и специальную утилиту не доступную пользователю устройства в дальнейшем.

Share this post


Link to post
Share on other sites
L_SMB		;таблица символов
	DB	00,0A,15,11,11,0A,04,00	;00
	DB	00,0A,1F,1F,1F,0E,04,00	;01
	DB	0E,11,11,11,0E,0E,04,00	;02
	DB	08,08,08,0E,09,09,0E,00	;03

можно, если данные в файле будут в нужном формате

Share this post


Link to post
Share on other sites
On 12/5/2018 at 1:51 PM, diman8911 said:

хотелось бы, чтобы этот файл программировался в PIC вместе с прошивкой. 

Есть три варианта решения проблемы:

  • Через linker, чтобы автоматом в момент сборки на выходе получить готовый файл прошивки. Как это сделать, зависит от компилятора который Вы используете и о котором нам не известно.
  • Предварительно преобразовав ваш image в С массив(используя стороннюю тулзу, на выходе будет image.h) и подключив его к проекту через #include, и опять же средствами линкера разместить его по указанному адресу. Это все справедливо если Вы используете С о чем мы тоже не знаем, если ASM подход тотже но с таблицей символов как написано выше.
  • После компиляции склеить выходной bin(или hex) с вашим image по нужному смещению, тоже используя сторонний инструмент

Последних два пункта можно привязать к пре или пост билду, что избавит Вас от дополнительных движений.

Share this post


Link to post
Share on other sites

В итоге написал программку, которая преобразует мой бинарник в массив вида

const unsigned int ldr_size=16312;
const unsigned char ldr[16312] = {
0x01, 0x50, 0x34, 0xAD, 0x00, 0x00, 0xA0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x3F, 0x00, 0x00, 
0x01, 0x00, 0xD7, 0xAD, 0x00, 0x00, 0x80, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, .....

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this