Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Добавление в прошивку LPC17xx информации из внешнего файла
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Rev0.0
Привет!
Работаю в среде Keil с микроконтроллером LPC1766.
У меня есть большой бинарный файл, который находится на ПК. Я хочу его прошить во флеш МК по заданному адресу в неизменном виде, чтобы потом была возможность передать этот файл по какому-либо интерфейсу из микроконтроллера. Есть ли способы сделать это из среды Keil?
В голову пришел только один способ - редактировать HEX файл прошивки, но, может быть, проще можно?
aaarrr
Через ассемблерный файл:
Код
; ***************************************************************************
; *
    AREA      dat, DATA, READONLY

    EXPORT    my_data
    EXPORT    my_data_end

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

my_data
    INCBIN file.bin
my_data_end

    END
KSN
Советую воспользоваться утилитой Srecord. С ее помощью вы сможете объединить файл прошивки и бинарный файл в один, разместив данные из бинарного файла по необходимому адресу.
esaulenka
Лучше уж сконвертировать тем же srecord'ом в сишный файл и подключить его к проекту, чем "подклеивать" к готовому бинарнику. Меньше вероятность, что сломается при последующих изменениях программы.
KnightIgor
Цитата(Rev0.0 @ Nov 28 2013, 13:01) *
Привет!
Работаю в среде Keil с микроконтроллером LPC1766.
У меня есть большой бинарный файл, который находится на ПК. Я хочу его прошить во флеш МК по заданному адресу в неизменном виде

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

LOAD мой_бинарник.hex
LOAD мой_проект.axf
jcxz
Кейлом не пользуюсь, но в 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.
KSN
Цитата(jcxz @ Nov 29 2013, 11:01) *
Кейлом не пользуюсь, но в IAR всё просто - в линкёре есть соответствующая команда для подлинковки в проект в выбранную секцию бинарного файла.

Начиная с какой версии IAR появилась такая возможность?
jcxz
не знаю. Я ей не пользуюсь. Но в моём 6.50 имеется описание в мануале на компилёр (стр.282).
Rev0.0
Спасибо за подсказки. Конверсия бинарника в .h-файл как-то вылетела из головы. Скачал srecord... Наверное мощная утилита, но разобраться не удалось, почитал мануал, ввожу команды - не работает. Набираю -Help, выдает "can't find input file" - странно если честно.
В итоге нашел вот эту простую утилитку.
romas2010
Цитата(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))
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.