|
Как в Keil для ARM указать точное расположение процедуры в памяти FLASH |
|
|
|
 |
Ответов
|
Oct 3 2007, 13:01
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Romanello @ Oct 3 2007, 16:56)  Функция которая размещена по определенному адресу и основная программа компилируется в разное время и в разных местах. Тогда лучше SWI, или в таком решении что-то не устраивает? Цитата(Romanello @ Oct 3 2007, 16:56)  Из всего вышесказанного не понял как указать размещение программы в памяти по определееному адресу. Размещать лучше не программу, а таблицу переходов - это дает некоторую гибкость. Указать размещение этой таблицы нужно линкеру, делается это через scatter description file. Описание можно найти в документации.
|
|
|
|
|
Oct 3 2007, 16:09
|
Частый гость
 
Группа: Свой
Сообщений: 138
Регистрация: 10-03-05
Пользователь №: 3 204

|
Цитата(aaarrr @ Oct 3 2007, 17:01)  Тогда лучше SWI, или в таком решении что-то не устраивает? Размещать лучше не программу, а таблицу переходов - это дает некоторую гибкость. Указать размещение этой таблицы нужно линкеру, делается это через scatter description file. Описание можно найти в документации. ЧТо такое SWI и как это выглядит в KEIL компиляторе?
|
|
|
|
|
Oct 4 2007, 08:50
|
Частый гость
 
Группа: Свой
Сообщений: 138
Регистрация: 10-03-05
Пользователь №: 3 204

|
Цитата(aaarrr @ Oct 3 2007, 20:22)  SWI - это программное прерывание. Почитать про него можно в описании архитектуры ARM. В Keil выглядит так же, как и в любом другом месте. А как программное прерывание привязать к выполнению функции из определенного адреса. Можно же просто обратиться в определенный адрес. А мен нужно разместить функцию по определленному адресу. Зачем для этого создавать таюлицу переходов, да еще на ассемблере?
|
|
|
|
|
Oct 4 2007, 09:20
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Romanello @ Oct 4 2007, 12:50)  А как программное прерывание привязать к выполнению функции из определенного адреса. Не нужно ничего привязывать. Вся прелесть SWI в том, что вызов всегда будет одинаков. А разбираться, какая функция соответствует вызову будет обработчик SWI. Цитата(Romanello @ Oct 4 2007, 12:50)  Зачем для этого создавать таюлицу переходов, да еще на ассемблере? Затем, что никто не гарантирует, что функцию удастся разместить по нужному адресу. Особенно, если она не одна. Да и возни с каждой отдельной функцией будет слишком много. Это просто разумное решение для такой задачи.
|
|
|
|
Сообщений в этой теме
Romanello Как в Keil для ARM указать точное расположение процедуры в памяти FLASH Oct 2 2007, 14:32 aaarrr Цитата(Romanello @ Oct 2 2007, 18:32) Нуж... Oct 2 2007, 15:08 defunct Цитата(aaarrr @ Oct 2 2007, 18:08) Воспол... Oct 2 2007, 21:01  aaarrr Цитата(defunct @ Oct 3 2007, 01:01) Может... Oct 2 2007, 22:46  Сергей Борщ Цитата(defunct @ Oct 3 2007, 00:01) созда... Oct 3 2007, 20:34 romashko Цитата(Romanello @ Oct 3 2007, 01:32) ...... Oct 2 2007, 22:59     Сергей Борщ Цитата(Romanello @ Oct 4 2007, 11:50) Зач... Oct 4 2007, 09:41 Николай Z Цитата(Romanello @ Oct 2 2007, 18:32) Нуж... Oct 4 2007, 10:03 bodja74 Цитата(Николай Z @ Oct 4 2007, 13:03) А з... Oct 4 2007, 10:52  Romanello Цитата(bodja74 @ Oct 4 2007, 14:52) BootL... Oct 4 2007, 12:39   Сергей Борщ Цитата(Romanello @ Oct 4 2007, 15:39) Буд... Oct 4 2007, 13:02    Николай Z Цитата(Сергей Борщ @ Oct 4 2007, 17:02) Т... Oct 5 2007, 11:00 Wano А например если зашить во флэш где-нить в конец к ... Oct 4 2007, 17:58 Shkn Можно поиграться с прагмой, например
#pragma userc... Oct 5 2007, 04:52 iit Пример скаттер файла.
FLASH_LOAD 0x00 0x40000
{
... Oct 5 2007, 05:35 Romanello Спасибо за ответы буду разбираться и пробовать. Oct 5 2007, 07:03 VIRt Все очень просто. Описываеш например как:
void (*... Oct 5 2007, 10:45 Vitaliy_ARM Не стал плодить тем. Пишу в похожую.
Цитата(VIRt ... Jan 28 2008, 15:38  Vitaliy_ARM Победил!!! Так как адрес у функции 32-... Jan 30 2008, 22:20
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|