|
|
  |
LPC2478 IAP |
|
|
|
Nov 17 2011, 15:54
|
Группа: Участник
Сообщений: 10
Регистрация: 22-08-11
Пользователь №: 66 820

|
Всем привет! Имеется устройство на основе LPC2478, которое, в том числе, умеет подключаться как Mass Storage Device и обрабатывать произвольные SCSI-команды с компьютера. Возникла необходимость сделать обновление прошивки через USB. Я узнал, что контроллер поддерживает IAP-функции, позволяющие модифицировать содержимое встроенной памяти. Таким образом, предполагается создать код, который будет либо подгружать прошивку, либо передавать на нее управление. Среда разработки - Keil uVision 4. Вопросы: 1) как корректно интрепретировать HEХ-файл, создаваемый кейлом? где про это можно прочитать? 2) Как правильно разместить прошивку в памяти? 3) У кого нибудь есть примеры кода с подобным функционалом? 4) Можно ли (если да, то как) скомпилировать кейлом код, который корректно разместится НЕ по нулевому адресу? Полдня гуглил, ничего не нашел  Заранее спасибо!
Сообщение отредактировал lecko - Nov 17 2011, 15:57
|
|
|
|
|
Nov 18 2011, 20:43
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (skripach @ Nov 18 2011, 14:44)  Всё писано на этом форуме много раз. Афигенно информативно. Ну так приведите хотя бы несколько ключевых слов, поиск по которым выведет вопрошающего на нужные обсуждения. Но предварительно потрудитесь убедиться, что поиск по этим ключевым словам дает необходимые результаты. А пока будете проверять поиск - сможете скопировать в ответ и несколько прямых ссылок. Может быть тема и обсуждалась, но прочитать весь форум прежде чем задать вопрос нереально физически, а чтобы воспользоваться поиском надо знать хотя бы часть ответа - ключевые слова. Для lecko: формат HEX-файла един для всех, погуглите на тему "Intel HEX". По вопросам 2 и 4 читайте документацию к компилятору, ключевое слово scatter (управляющий файл для линкера). По вопросу 3 - у меня есть, но не под кейл и не под 2478, хотя и под LPC. А у кейла в комплекте разве нет подобных примеров?
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Nov 19 2011, 11:57
|
■ ■ ■ ■
    
Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443

|
Цитата Афигенно информативно. более чем, все прошли путь ТС, ну или почти все. Цитата Ну так приведите хотя бы несколько ключевых слов В первом посте есть всё что нужно: HEХ-файл - первая ссылка из гугла ответ на первый вопрос http://ru.wikipedia.org/wiki/Intel_HEXIAP* - поиск по форуму даст ответы на след. вопросы. Цитата Полдня гуглил, ничего не нашел  думаю не искал.
--------------------
Делай что должен и будь что будет.
|
|
|
|
|
Nov 19 2011, 20:49
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (skripach @ Nov 19 2011, 14:57)  более чем, все прошли путь ТС, ну или почти все. И видимо именно skripach писал на форуме на эту тему много раз и ему лень написать еще раз (что можно понять)? Или все же не skripach, просто он проходил мимо и не упустил случая пнуть новенького?
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Nov 19 2011, 22:08
|
■ ■ ■ ■
    
Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443

|
Цитата И видимо именно skripach писал на форуме на эту тему много раз и ему лень написать еще раз (что можно понять)? Писал не я, я читал/искал, поэтому знаю что ответы на вопросы ТС имеются. Сам недавно писал USB-загрузчик для lpc2478 правда host и было не лень помочь ТС но Цитата Полдня гуглил, ничего не нашел  отбило желание помочь. Цитата Или все же не skripach, просто он проходил мимо и не упустил случая пнуть новенького? Жаль если вам так показалось, не в моих принципах пинать кого бы то ни было и уж тем более не за что.
--------------------
Делай что должен и будь что будет.
|
|
|
|
|
Dec 26 2011, 09:51
|
Группа: Участник
Сообщений: 10
Регистрация: 22-08-11
Пользователь №: 66 820

|
И еще раз всем привет!
Собственно, возник следующий вопрос. Прошивка по USB успешно выполняется. То есть почти успешно... Уточню детали реализации. Вся память с помощью scatter-файла разбита на 2 региона: 0x0-0x60000 и 0x60000-0x80000. В первом содержится, собственно, обновляемый код, а во втором - код, вызывающий IAP-функции и отключающий прерывания на время их работы. Основной код (в первом регионе) получает данные по USB и записывает их в RAM, а затем, опять же по команде с USB, управление передается на код, расположенный во второй области памяти, осуществляющий перепрошивку. После перепрошивки предполагается аппаратная перезагрузка.
Утилита для перепрошивки по СОМ (FlashMagic) сравнивает содержимое памяти с исходным хекс файлом и говорит что все ок. Однако контроллер до следующей перепрошивки по кому не работает. Вопрос: почему? Не надо ли помимо собственно перепрошивки дополнительно изменять какие-то служебные области? Или в чем еще может быть дело?
Сообщение отредактировал lecko - Dec 26 2011, 13:47
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|