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

 
 
> Доступ к коду в программном загрузчике, C++, templates, bootloader
segment
сообщение Jan 27 2011, 12:35
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 352
Регистрация: 10-08-06
Из: Санкт-Петербург
Пользователь №: 19 471



Есть простой программный загрузчик. В нем присутствует шаблонный класс со статическими методами для работы с какой-нибудь периферией. К примеру:
Код
template <class T>
class A
{
public:
    static T read( void );
    static void write( T value );
};

В коде загрузчика используются его методы, к примеру:
Код
...
int var = A<int>::read();
A<int>::write(var);
...

Соответственно эти методы получили свое законное место во flash пространстве бутлоадера.

Теперь ближе к делу. Программа которая загружается с помощью этого бутлоадера в свою очередь тоже использует этот ресурс (класс А и его методы). Соответственно, если этот класс и его методы занимают много памяти, то целесообразно в программе адресоваться уже к имеющимся методам.

- Как указать чтобы методы этого класса и его члены находились с заданного адреса?
- Как в программе указать, что класс А (статические методы и члены) находятся где-то там во flash?

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
akimych
сообщение Jan 28 2011, 22:06
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 7-01-11
Пользователь №: 62 073



А это обязательно надо делать на шаблонах?
Даже если отвлечься от шаблонов. Через таблицу указателей или точку входа - это понятно.
А вот если просто есть несколько функций и хочется их вызывать?
Надо как-то сказать линкеру, что есть такие символы и находятся по таким адресам.
Применительно к кейлу для переменных есть атрибут _at, но не для функций.



Go to the top of the page
 
+Quote Post



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

 


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


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