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

Частичная компиляция в Keil

Привет всем!

Имеем AT91SAM9512E и Keil uVision4.0 Пользователю нужно будет иногда обновлять некоторые процедуры в прошивке. Вопрос: Можно ли в Keil откомпилировать только процедуры или создать проект для компиляции библиотеки, чтоб получить бинарник (или HEX) для прошивки не всей программы, а только части. Адрес изменяемых процедур вроде можно задать и область памяти, куда их располагать линковщику. Прошить тоже можно наяиная с определенного адреса. А вот можно ли прошивку сделать не всю, а только часть. Вообщем интересуют разные мнения, какие подводные камни на этом пути?

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


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

...можно ли прошивку сделать не всю, а только часть. Вообщем интересуют разные мнения, какие подводные камни на этом пути?

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

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


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

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

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

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


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

Проект я могу создать только с 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)

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


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

Как вариант, можно бренчи вместо адресов поставить.

Затем в скрипте линкера ставим его в начало: * (HEADER, +First)

В АРМовский Ассемблер я ещё не лазил, так что поэтому и не в курсе таблиц. Ладно, надо пробовать...

Спасибо за ответ, начну что-то делать, буду спрашивать..

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


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

Пользователю нужно будет иногда обновлять некоторые процедуры в прошивке.

Для этого есть хороший метод: интерпретатор скриптового языка. А пользователю даём возможность загружать и выполнять скрипты. Мне довелось для этого использовать Pawn (поищите в гугле). Впечатления остались очень хорошие.

Однако, такое решение требует некоторого опыта от разработчика. Впрочем, как и частичное обновление прошивки, которое Вы предлагаете.

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


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

Для этого есть хороший метод: интерпретатор скриптового языка. А пользователю даём возможность загружать и выполнять скрипты. Мне довелось для этого использовать Pawn (поищите в гугле). Впечатления остались очень хорошие.

Однако, такое решение требует некоторого опыта от разработчика. Впрочем, как и частичное обновление прошивки, которое Вы предлагаете.

Насчет организации прошивки со стороны ПК проблем быть не должно т.к. все-равно пишу интерфейс работы с устройством, ну вставлю туда ещё и прошивку. Т.е. это в принципе представляю как делать, но меня интересуют тонкости для самого АРМа, чтобы там все работало..

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


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

Насчет организации прошивки со стороны ПК проблем быть не должно т.к. все-равно пишу интерфейс работы с устройством, ну вставлю туда ещё и прошивку. Т.е. это в принципе представляю как делать, но меня интересуют тонкости для самого АРМа, чтобы там все работало..

Тут специфики АРМа нет. В других процессорах стыковка кусков кода будет происходить аналогично.

Я бы предложил задуматься над ещё одним вопросом: а как пользователь будет генерировать обновлённую прошивку? Он будет устанавливать у себя Keil MDK? А отлаживать как? Всё это может оказаться очень непрактичным.

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


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

Тут специфики АРМа нет. В других процессорах стыковка кусков кода будет происходить аналогично.

Я бы предложил задуматься над ещё одним вопросом: а как пользователь будет генерировать обновлённую прошивку? Он будет устанавливать у себя Keil MDK? А отлаживать как? Всё это может оказаться очень непрактичным.

Обновленную прошивку пользователю производитель даст ( или я).

 

 

У меня тут возник ещё один вопрос. Как подключить библиотеку, созданную в Keil в IAR? Или вообще к любому дргугому проекту для АРМ. Или точнее Keil создает стандартные библиотеки, которые можно потом использовать в любом проекте АРМ или у него свой спецефический формат файла библиотек. Я просто кроме Кейла ни с чем больше не работал.

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


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

У меня тут возник ещё один вопрос. Как подключить библиотеку, созданную в Keil в IAR?

Нет, они не совместимы. А в контексте задачи не понятно, зачем это надо.

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


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

Нет, они не совместимы. А в контексте задачи не понятно, зачем это надо.

Это я попутно, это не связано с предыдущим вопросом.

Мне надо как-то сделать библиотеку функций, чтоб её можно было к любому АРМ проекту подключить. Есть такая возможность. Может с gcc скомпилировать и слинковать? У линковщика Keil тоже какие-то опции есть, можно формат библиотек менять. Вообщем может подскажете какой формат библиотек универсальный ли такого нет и придется в каждом отдельном случае для конкретного компилятора делать?

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


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

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

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

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

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

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

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

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

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

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