Перейти к содержанию
    

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 12/6/2018 at 7:34 AM, VladislavS said:

прилинковывать внешние файлы.

Насколько я понимаю, речь шла о хексе. То есть о возможности присоединения файла на этапе прошивки.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 часов назад, my504 сказал:

Насколько я понимаю, речь шла о хексе

Какой хекс? Почему хекс? Где там хоть слово про хекс?

7 часов назад, my504 сказал:

достаточно подменять какой нибудь хедер.

Какой ещё хедер, где вы взяли  хедер? Просто данные, которые надо добавить в прошивку. Есть извращенский метод - перевести данные в исходный код в виде инициализированного массива и вставить в код, но это лишняя возня. Данные поменялись -  конвертируй заново. Проще линкером внешний файл подключить и всё.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 12/5/2018 at 1:52 PM, diman8911 said:

Мне нужно добавить файл данных (12кБ) в прошивку PIC.

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

"Прошивкой" называют hex или bin файл заливаемый через программатор. Иное называют исходником. Ну или объектным файлом.

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

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Причем тут количество сред, если в пределах ОДНОЙ среды (хотя их две: 8-ка и Х), помимо скрипта линкера, есть еще те самые ключи командной строки, установки которых интегрированы в среду и при обновлении среды восстанавливаются лишь при определенных условиях.

А еще у Микрочипа есть ЧЕТЫРЕ совершенно разных для поставленной задачи платформ самих МК и ТРИ совершенно разных компилятора. Автору вопроса нужно держать в голове специфику скриптов линкера использованной платформы, если потребуется через полгода 12Кбайт превратить в 20?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, my504 сказал:

если потребуется через полгода 12Кбайт превратить в 20?

 

Достаточно подменить файл данных.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не достаточно. Может не позволить исходная компоновка. Могут возникнуть проблемы с моделью памяти. 

Путь правки скрипта линкера в корне порочен. Он делает код зависимым от тонких настроек. Я еще могу понять, когда нет другого пути... Подготовка файла данных в текстовом формате - это вопрос примитивной утилиты не связанной ни с какой платформой.

Но в любом случае мы ведем беспредметный спор. Автору нужно НЕ ЭТО.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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,

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,

Костыль конечно, но работает

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, VladislavS сказал:

Даже боюсь спросить. На это ушёл ровно год?

Да не, на форуме редко бываю. Так, на всякий случай выложил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...