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

 
 
> IAR C++
MALLOY2
сообщение Oct 24 2010, 19:27
Сообщение #1


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Есть шаблонный класс FIFO для периферии его отличия от обычного в том что буфер статический.

Код
template <typename T,int TCOUNT>
class THwFIFO
{
private:
  static T buff[TCOUNT];
  volatile uint32_t size;
  T first;
  T last;
public:
...
}


Дальше объявляем переменные
Код
template <typename T, int FSIZE>
T THwFIFO<T,FSIZE>::buff[FSIZE];


Все работает, но теперь нужно buff положить в специальную секцию и тут засада

Код
#pragma location = ".not_cached"
template <typename T, int FSIZE>
T THwFIFO<T,FSIZE>::buff[FSIZE];


На что получил
Цитата
Warning[Pe609]: this kind of pragma may not be used here C:\Temp\1\main.cpp 16
detected during implicit definition of "char THwFIFO<T, FSIZE>::buff[100] [with T=char, FSIZE=100]"

Естественно данные не попали в секцию.

Если сделать класс не шаблонным, то прагма работает на статические данные класса.
Как можно выкрутиться из этой ситуации ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MALLOY2
сообщение Oct 25 2010, 07:55
Сообщение #2


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Не радует, что в IAR не работает, а в шаблон указатель передавать нельзя.

Пока вижу вариант создания специального алокатора для этого класса который динамически будет выделять память с специальной области.
Go to the top of the page
 
+Quote Post



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

 


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


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