Jump to content

    

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

Здравствуйте! Мне нужно добавить файл данных (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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this