Tolyan 0 1 февраля, 2010 Опубликовано 1 февраля, 2010 · Жалоба Привет всем! Имеем AT91SAM9512E и Keil uVision4.0 Пользователю нужно будет иногда обновлять некоторые процедуры в прошивке. Вопрос: Можно ли в Keil откомпилировать только процедуры или создать проект для компиляции библиотеки, чтоб получить бинарник (или HEX) для прошивки не всей программы, а только части. Адрес изменяемых процедур вроде можно задать и область памяти, куда их располагать линковщику. Прошить тоже можно наяиная с определенного адреса. А вот можно ли прошивку сделать не всю, а только часть. Вообщем интересуют разные мнения, какие подводные камни на этом пути? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 68 1 февраля, 2010 Опубликовано 1 февраля, 2010 · Жалоба ...можно ли прошивку сделать не всю, а только часть. Вообщем интересуют разные мнения, какие подводные камни на этом пути? Можно сделать отдельный проект, содержащий нужные процедуры и таблицу с точками входов. В основной программе стоит предусмотреть проверку целостности дополнительной прошивки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tolyan 0 1 февраля, 2010 Опубликовано 1 февраля, 2010 · Жалоба Можно сделать отдельный проект, содержащий нужные процедуры и таблицу с точками входов. В основной программе стоит предусмотреть проверку целостности дополнительной прошивки. К сожалению не такой большой спец, как хотелось бы, поэтому хотелось бы уточнений. Проект я могу создать только с main функцией, так? Её пустой оставить? Тогда для компиляции надо оптимизацию вырубить. Ещё, если можно. пару строчек таблицы точек входа, что-то я плохо представляю, может потому что понедельник? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 68 1 февраля, 2010 Опубликовано 1 февраля, 2010 · Жалоба Проект я могу создать только с main функцией, так? Не обязательно. Достаточно поставить галочку "Don't Search Standard Libraries" в опциях линкера. При этом, правда, придется самому позаботиться о действительно нужных библиотеках (арифметика, например). Ну или оставить пустой main со всем мусором. Зачем только оптимизацию отключать? Ещё, если можно. пару строчек таблицы точек входа, что-то я плохо представляю, может потому что понедельник? Создаем ассемблерный файл с таблицей: AREA HEADER, DATA, READONLY IMPORT func1 IMPORT func2 IMPORT func3 ... DCD func1 DCD func2 DCD func2 ... END Как вариант, можно бренчи вместо адресов поставить. Затем в скрипте линкера ставим его в начало: * (HEADER, +First) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tolyan 0 1 февраля, 2010 Опубликовано 1 февраля, 2010 · Жалоба Как вариант, можно бренчи вместо адресов поставить. Затем в скрипте линкера ставим его в начало: * (HEADER, +First) В АРМовский Ассемблер я ещё не лазил, так что поэтому и не в курсе таблиц. Ладно, надо пробовать... Спасибо за ответ, начну что-то делать, буду спрашивать.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 1 февраля, 2010 Опубликовано 1 февраля, 2010 · Жалоба Пользователю нужно будет иногда обновлять некоторые процедуры в прошивке. Для этого есть хороший метод: интерпретатор скриптового языка. А пользователю даём возможность загружать и выполнять скрипты. Мне довелось для этого использовать Pawn (поищите в гугле). Впечатления остались очень хорошие. Однако, такое решение требует некоторого опыта от разработчика. Впрочем, как и частичное обновление прошивки, которое Вы предлагаете. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tolyan 0 1 февраля, 2010 Опубликовано 1 февраля, 2010 · Жалоба Для этого есть хороший метод: интерпретатор скриптового языка. А пользователю даём возможность загружать и выполнять скрипты. Мне довелось для этого использовать Pawn (поищите в гугле). Впечатления остались очень хорошие. Однако, такое решение требует некоторого опыта от разработчика. Впрочем, как и частичное обновление прошивки, которое Вы предлагаете. Насчет организации прошивки со стороны ПК проблем быть не должно т.к. все-равно пишу интерфейс работы с устройством, ну вставлю туда ещё и прошивку. Т.е. это в принципе представляю как делать, но меня интересуют тонкости для самого АРМа, чтобы там все работало.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 1 февраля, 2010 Опубликовано 1 февраля, 2010 · Жалоба Насчет организации прошивки со стороны ПК проблем быть не должно т.к. все-равно пишу интерфейс работы с устройством, ну вставлю туда ещё и прошивку. Т.е. это в принципе представляю как делать, но меня интересуют тонкости для самого АРМа, чтобы там все работало.. Тут специфики АРМа нет. В других процессорах стыковка кусков кода будет происходить аналогично. Я бы предложил задуматься над ещё одним вопросом: а как пользователь будет генерировать обновлённую прошивку? Он будет устанавливать у себя Keil MDK? А отлаживать как? Всё это может оказаться очень непрактичным. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tolyan 0 3 февраля, 2010 Опубликовано 3 февраля, 2010 · Жалоба Тут специфики АРМа нет. В других процессорах стыковка кусков кода будет происходить аналогично. Я бы предложил задуматься над ещё одним вопросом: а как пользователь будет генерировать обновлённую прошивку? Он будет устанавливать у себя Keil MDK? А отлаживать как? Всё это может оказаться очень непрактичным. Обновленную прошивку пользователю производитель даст ( или я). У меня тут возник ещё один вопрос. Как подключить библиотеку, созданную в Keil в IAR? Или вообще к любому дргугому проекту для АРМ. Или точнее Keil создает стандартные библиотеки, которые можно потом использовать в любом проекте АРМ или у него свой спецефический формат файла библиотек. Я просто кроме Кейла ни с чем больше не работал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 68 3 февраля, 2010 Опубликовано 3 февраля, 2010 · Жалоба У меня тут возник ещё один вопрос. Как подключить библиотеку, созданную в Keil в IAR? Нет, они не совместимы. А в контексте задачи не понятно, зачем это надо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tolyan 0 3 февраля, 2010 Опубликовано 3 февраля, 2010 · Жалоба Нет, они не совместимы. А в контексте задачи не понятно, зачем это надо. Это я попутно, это не связано с предыдущим вопросом. Мне надо как-то сделать библиотеку функций, чтоб её можно было к любому АРМ проекту подключить. Есть такая возможность. Может с gcc скомпилировать и слинковать? У линковщика Keil тоже какие-то опции есть, можно формат библиотек менять. Вообщем может подскажете какой формат библиотек универсальный ли такого нет и придется в каждом отдельном случае для конкретного компилятора делать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться