реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Добавление в прошивку LPC17xx информации из внешнего файла, в среде Keil
Rev0.0
сообщение Nov 28 2013, 12:01
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 3-05-13
Пользователь №: 76 718



Привет!
Работаю в среде Keil с микроконтроллером LPC1766.
У меня есть большой бинарный файл, который находится на ПК. Я хочу его прошить во флеш МК по заданному адресу в неизменном виде, чтобы потом была возможность передать этот файл по какому-либо интерфейсу из микроконтроллера. Есть ли способы сделать это из среды Keil?
В голову пришел только один способ - редактировать HEX файл прошивки, но, может быть, проще можно?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 28 2013, 12:09
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Через ассемблерный файл:
Код
; ***************************************************************************
; *
    AREA      dat, DATA, READONLY

    EXPORT    my_data
    EXPORT    my_data_end

; ***************************************************************************
; *

my_data
    INCBIN file.bin
my_data_end

    END
Go to the top of the page
 
+Quote Post
KSN
сообщение Nov 28 2013, 16:06
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 404
Регистрация: 3-12-04
Из: Новосибирск
Пользователь №: 1 304



Советую воспользоваться утилитой Srecord. С ее помощью вы сможете объединить файл прошивки и бинарный файл в один, разместив данные из бинарного файла по необходимому адресу.
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Nov 28 2013, 17:18
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Лучше уж сконвертировать тем же srecord'ом в сишный файл и подключить его к проекту, чем "подклеивать" к готовому бинарнику. Меньше вероятность, что сломается при последующих изменениях программы.


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Nov 28 2013, 21:19
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(Rev0.0 @ Nov 28 2013, 13:01) *
Привет!
Работаю в среде Keil с микроконтроллером LPC1766.
У меня есть большой бинарный файл, который находится на ПК. Я хочу его прошить во флеш МК по заданному адресу в неизменном виде

1. Сделать из бинарника Intel HEX-32, естественно со смещением по адресу загрузки.
2. В опциях проекта в последней закладке Utilities в поле Init File указать на текстовый файл следующего содержания:

LOAD мой_бинарник.hex
LOAD мой_проект.axf

Сообщение отредактировал KnightIgor - Nov 28 2013, 21:20
Go to the top of the page
 
+Quote Post
jcxz
сообщение Nov 29 2013, 04:01
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Кейлом не пользуюсь, но в IAR всё просто - в линкёре есть соответствующая команда для подлинковки в проект в выбранную секцию бинарного файла.
Без всяких конверторов.
--image_input filename [,symbol,[section[,alignment]]]
Use this option to link pure binary files in addition to the ordinary input files. The file’s
entire contents are placed in the section, which means it can only contain pure binary
data.
Go to the top of the page
 
+Quote Post
KSN
сообщение Nov 29 2013, 04:13
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 404
Регистрация: 3-12-04
Из: Новосибирск
Пользователь №: 1 304



Цитата(jcxz @ Nov 29 2013, 11:01) *
Кейлом не пользуюсь, но в IAR всё просто - в линкёре есть соответствующая команда для подлинковки в проект в выбранную секцию бинарного файла.

Начиная с какой версии IAR появилась такая возможность?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Nov 29 2013, 05:47
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



не знаю. Я ей не пользуюсь. Но в моём 6.50 имеется описание в мануале на компилёр (стр.282).
Go to the top of the page
 
+Quote Post
Rev0.0
сообщение Nov 29 2013, 15:03
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 3-05-13
Пользователь №: 76 718



Спасибо за подсказки. Конверсия бинарника в .h-файл как-то вылетела из головы. Скачал srecord... Наверное мощная утилита, но разобраться не удалось, почитал мануал, ввожу команды - не работает. Набираю -Help, выдает "can't find input file" - странно если честно.
В итоге нашел вот эту простую утилитку.
Go to the top of the page
 
+Quote Post
romas2010
сообщение Dec 18 2013, 17:03
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 25-11-11
Пользователь №: 68 515



Цитата(Rev0.0 @ Nov 28 2013, 15:01) *
Привет!
Работаю в среде Keil с микроконтроллером LPC1766.
У меня есть большой бинарный файл, который находится на ПК. Я хочу его прошить во флеш МК по заданному адресу в неизменном виде, чтобы потом была возможность передать этот файл по какому-либо интерфейсу из микроконтроллера. Есть ли способы сделать это из среды Keil?
В голову пришел только один способ - редактировать HEX файл прошивки, но, может быть, проще можно?


Пацаны,все гораздо проще,чем вы думаете...Если у вас кейл, то в папке Keil/ARM/BIN есть програмка FCARM.EXE Она запускается из командной строки,и в результате ее работы появляется обычный С-файл,в котором объявлен массив с данными файла,переданного в качестве параметра этой утилите FCARM ..Я делаю так. например у меня есть файл со звуком,например voice.mp3.Я копирую его в каталог keil/ARM/BIN, запускаю командной строкой FCARM.EXE voice.mp3 и в получаю файл voice.c А там просто берете и копируйте этот массив в свой проект,если по заданному адресу,то через конструкцию __attribute(_at(ADDRESS))
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 21:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01446 секунд с 7
ELECTRONIX ©2004-2016