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

 
 
> Как в Keil для ARM указать точное расположение процедуры в памяти FLASH
Romanello
сообщение Oct 2 2007, 14:32
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 138
Регистрация: 10-03-05
Пользователь №: 3 204



Нужно расположить функцию в заанее известном месте в памяти контроллера и потом обращаться к ней, кстати как потом можно будет обратиться к этой функции из другой функции?

Заранее спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Romanello
сообщение Oct 3 2007, 12:56
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 138
Регистрация: 10-03-05
Пользователь №: 3 204



Функция которая размещена по определенному адресу и основная программа компилируется в разное время и в разных местах. Из всего вышесказанного не понял как указать размещение программы в памяти по определееному адресу.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 3 2007, 13:01
Сообщение #3


Гуру
******

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



Цитата(Romanello @ Oct 3 2007, 16:56) *
Функция которая размещена по определенному адресу и основная программа компилируется в разное время и в разных местах.

Тогда лучше SWI, или в таком решении что-то не устраивает?

Цитата(Romanello @ Oct 3 2007, 16:56) *
Из всего вышесказанного не понял как указать размещение программы в памяти по определееному адресу.

Размещать лучше не программу, а таблицу переходов - это дает некоторую гибкость.
Указать размещение этой таблицы нужно линкеру, делается это через scatter description file. Описание можно найти в документации.
Go to the top of the page
 
+Quote Post
Romanello
сообщение Oct 3 2007, 16:09
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 138
Регистрация: 10-03-05
Пользователь №: 3 204



Цитата(aaarrr @ Oct 3 2007, 17:01) *
Тогда лучше SWI, или в таком решении что-то не устраивает?
Размещать лучше не программу, а таблицу переходов - это дает некоторую гибкость.
Указать размещение этой таблицы нужно линкеру, делается это через scatter description file. Описание можно найти в документации.



ЧТо такое SWI и как это выглядит в KEIL компиляторе?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 3 2007, 16:22
Сообщение #5


Гуру
******

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



Цитата(Romanello @ Oct 3 2007, 20:09) *
ЧТо такое SWI и как это выглядит в KEIL компиляторе?

SWI - это программное прерывание. Почитать про него можно в описании архитектуры ARM. В Keil выглядит так же, как и в любом другом месте.
Go to the top of the page
 
+Quote Post
Romanello
сообщение Oct 4 2007, 08:50
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 138
Регистрация: 10-03-05
Пользователь №: 3 204



Цитата(aaarrr @ Oct 3 2007, 20:22) *
SWI - это программное прерывание. Почитать про него можно в описании архитектуры ARM. В Keil выглядит так же, как и в любом другом месте.


А как программное прерывание привязать к выполнению функции из определенного адреса. Можно же просто обратиться в определенный адрес. А мен нужно разместить функцию по определленному адресу. Зачем для этого создавать таюлицу переходов, да еще на ассемблере?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 4 2007, 09:20
Сообщение #7


Гуру
******

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



Цитата(Romanello @ Oct 4 2007, 12:50) *
А как программное прерывание привязать к выполнению функции из определенного адреса.

Не нужно ничего привязывать. Вся прелесть SWI в том, что вызов всегда будет одинаков. А разбираться, какая функция соответствует вызову будет обработчик SWI.

Цитата(Romanello @ Oct 4 2007, 12:50) *
Зачем для этого создавать таюлицу переходов, да еще на ассемблере?

Затем, что никто не гарантирует, что функцию удастся разместить по нужному адресу. Особенно, если она не одна. Да и возни с каждой отдельной функцией будет слишком много.
Это просто разумное решение для такой задачи.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 06:49
Рейтинг@Mail.ru


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