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

 
 
 
Reply to this topicStart new topic
> Частичная компиляция в Keil
Anatoly_P
сообщение Feb 1 2010, 07:47
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 3-05-08
Из: Minsk
Пользователь №: 37 240



Привет всем!
Имеем AT91SAM9512E и Keil uVision4.0 Пользователю нужно будет иногда обновлять некоторые процедуры в прошивке. Вопрос: Можно ли в Keil откомпилировать только процедуры или создать проект для компиляции библиотеки, чтоб получить бинарник (или HEX) для прошивки не всей программы, а только части. Адрес изменяемых процедур вроде можно задать и область памяти, куда их располагать линковщику. Прошить тоже можно наяиная с определенного адреса. А вот можно ли прошивку сделать не всю, а только часть. Вообщем интересуют разные мнения, какие подводные камни на этом пути?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 1 2010, 09:18
Сообщение #2


Гуру
******

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



Цитата(Anatoly_P @ Feb 1 2010, 10:47) *
...можно ли прошивку сделать не всю, а только часть. Вообщем интересуют разные мнения, какие подводные камни на этом пути?

Можно сделать отдельный проект, содержащий нужные процедуры и таблицу с точками входов. В основной программе стоит предусмотреть проверку целостности дополнительной прошивки.
Go to the top of the page
 
+Quote Post
Anatoly_P
сообщение Feb 1 2010, 09:31
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 3-05-08
Из: Minsk
Пользователь №: 37 240



Цитата(aaarrr @ Feb 1 2010, 11:18) *
Можно сделать отдельный проект, содержащий нужные процедуры и таблицу с точками входов. В основной программе стоит предусмотреть проверку целостности дополнительной прошивки.

К сожалению не такой большой спец, как хотелось бы, поэтому хотелось бы уточнений. Проект я могу создать только с main функцией, так? Её пустой оставить? Тогда для компиляции надо оптимизацию вырубить. Ещё, если можно. пару строчек таблицы точек входа, что-то я плохо представляю, может потому что понедельник?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 1 2010, 09:42
Сообщение #4


Гуру
******

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



Цитата(Anatoly_P @ Feb 1 2010, 12:31) *
Проект я могу создать только с main функцией, так?

Не обязательно. Достаточно поставить галочку "Don't Search Standard Libraries" в опциях линкера. При этом, правда, придется самому позаботиться о действительно нужных библиотеках (арифметика, например).

Ну или оставить пустой main со всем мусором. Зачем только оптимизацию отключать?

Цитата(Anatoly_P @ Feb 1 2010, 12:31) *
Ещё, если можно. пару строчек таблицы точек входа, что-то я плохо представляю, может потому что понедельник?

Создаем ассемблерный файл с таблицей:
Код
    AREA HEADER, DATA, READONLY

    IMPORT func1
    IMPORT func2
    IMPORT func3
    ...

    DCD        func1
    DCD        func2
    DCD        func2
    ...

    END

Как вариант, можно бренчи вместо адресов поставить.
Затем в скрипте линкера ставим его в начало: * (HEADER, +First)
Go to the top of the page
 
+Quote Post
Anatoly_P
сообщение Feb 1 2010, 10:03
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 3-05-08
Из: Minsk
Пользователь №: 37 240



Цитата(aaarrr @ Feb 1 2010, 11:42) *
Как вариант, можно бренчи вместо адресов поставить.
Затем в скрипте линкера ставим его в начало: * (HEADER, +First)

В АРМовский Ассемблер я ещё не лазил, так что поэтому и не в курсе таблиц. Ладно, надо пробовать...
Спасибо за ответ, начну что-то делать, буду спрашивать..
Go to the top of the page
 
+Quote Post
scifi
сообщение Feb 1 2010, 12:22
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Anatoly_P @ Feb 1 2010, 10:47) *
Пользователю нужно будет иногда обновлять некоторые процедуры в прошивке.

Для этого есть хороший метод: интерпретатор скриптового языка. А пользователю даём возможность загружать и выполнять скрипты. Мне довелось для этого использовать Pawn (поищите в гугле). Впечатления остались очень хорошие.
Однако, такое решение требует некоторого опыта от разработчика. Впрочем, как и частичное обновление прошивки, которое Вы предлагаете.
Go to the top of the page
 
+Quote Post
Anatoly_P
сообщение Feb 1 2010, 12:37
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 3-05-08
Из: Minsk
Пользователь №: 37 240



Цитата(scifi @ Feb 1 2010, 14:22) *
Для этого есть хороший метод: интерпретатор скриптового языка. А пользователю даём возможность загружать и выполнять скрипты. Мне довелось для этого использовать Pawn (поищите в гугле). Впечатления остались очень хорошие.
Однако, такое решение требует некоторого опыта от разработчика. Впрочем, как и частичное обновление прошивки, которое Вы предлагаете.

Насчет организации прошивки со стороны ПК проблем быть не должно т.к. все-равно пишу интерфейс работы с устройством, ну вставлю туда ещё и прошивку. Т.е. это в принципе представляю как делать, но меня интересуют тонкости для самого АРМа, чтобы там все работало..
Go to the top of the page
 
+Quote Post
scifi
сообщение Feb 1 2010, 13:25
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Anatoly_P @ Feb 1 2010, 15:37) *
Насчет организации прошивки со стороны ПК проблем быть не должно т.к. все-равно пишу интерфейс работы с устройством, ну вставлю туда ещё и прошивку. Т.е. это в принципе представляю как делать, но меня интересуют тонкости для самого АРМа, чтобы там все работало..

Тут специфики АРМа нет. В других процессорах стыковка кусков кода будет происходить аналогично.
Я бы предложил задуматься над ещё одним вопросом: а как пользователь будет генерировать обновлённую прошивку? Он будет устанавливать у себя Keil MDK? А отлаживать как? Всё это может оказаться очень непрактичным.
Go to the top of the page
 
+Quote Post
Anatoly_P
сообщение Feb 3 2010, 07:59
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 3-05-08
Из: Minsk
Пользователь №: 37 240



Цитата(scifi @ Feb 1 2010, 15:25) *
Тут специфики АРМа нет. В других процессорах стыковка кусков кода будет происходить аналогично.
Я бы предложил задуматься над ещё одним вопросом: а как пользователь будет генерировать обновлённую прошивку? Он будет устанавливать у себя Keil MDK? А отлаживать как? Всё это может оказаться очень непрактичным.

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


У меня тут возник ещё один вопрос. Как подключить библиотеку, созданную в Keil в IAR? Или вообще к любому дргугому проекту для АРМ. Или точнее Keil создает стандартные библиотеки, которые можно потом использовать в любом проекте АРМ или у него свой спецефический формат файла библиотек. Я просто кроме Кейла ни с чем больше не работал.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 3 2010, 09:56
Сообщение #10


Гуру
******

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



Цитата(Anatoly_P @ Feb 3 2010, 10:59) *
У меня тут возник ещё один вопрос. Как подключить библиотеку, созданную в Keil в IAR?

Нет, они не совместимы. А в контексте задачи не понятно, зачем это надо.
Go to the top of the page
 
+Quote Post
Anatoly_P
сообщение Feb 3 2010, 10:42
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 3-05-08
Из: Minsk
Пользователь №: 37 240



Цитата(aaarrr @ Feb 3 2010, 11:56) *
Нет, они не совместимы. А в контексте задачи не понятно, зачем это надо.

Это я попутно, это не связано с предыдущим вопросом.
Мне надо как-то сделать библиотеку функций, чтоб её можно было к любому АРМ проекту подключить. Есть такая возможность. Может с gcc скомпилировать и слинковать? У линковщика Keil тоже какие-то опции есть, можно формат библиотек менять. Вообщем может подскажете какой формат библиотек универсальный ли такого нет и придется в каждом отдельном случае для конкретного компилятора делать?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 23:56
Рейтинг@Mail.ru


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