Что эквивалентно Keil _at_ в gcc

Есть ли в gcc ключевое слово, точно эквивалентное _at_ в Keil?

struct Location
{
  uint_32 x;
  uint_32 y;
  uint_32 z;
  char protocol[10];
};

struct link idata list _at_ 0x40;     /* list at idata 0x40 */

Примечание. Я вообще не хочу определять указатель. Я хочу точно такую ​​же переменную.

Примечание: idata здесь можно игнорировать.


person hadoop    schedule 09.01.2020    source источник
comment
Какую целевую платформу вы используете?   -  person the busybee    schedule 09.01.2020
comment
Связано: stackoverflow.com/questions/4067811/   -  person dragosht    schedule 09.01.2020
comment
Что такое link? Какое отношение Location имеет к остальным?   -  person Acorn    schedule 10.01.2020
comment
@Acorn, это гипотетический пример. На самом деле структура содержит информацию для отправки на хост-сервер, включая буфер шифрования. Эти данные должны быть прочитаны встроенной ОС, а затем отправлены. Вот почему приложение имеет такое обязательство.   -  person hadoop    schedule 10.01.2020


Ответы (1)


Нет, это не так. Эта страница поддержки Keil по этой теме также предполагает, что прямого эквивалента CARM нет. __at__ и __attribute__(at) armcc в gcc:

GNU GCC Compiler
Use only pointer definitions to access absolute memory locations. For example:

/* General Purpose Input/Output (GPIO) */
#define IOPIN0         (*((volatile unsigned long *) 0xE0028000))
.
.
.
IOPIN0 = 0x4;

В качестве альтернативы вы также можете определить свои собственные разделы, используя скрипт ld.

person dragosht    schedule 09.01.2020
comment
Тогда как вы гарантируете, что ваша переменная не столкнется с другой переменной? Забудьте об винде и линукс. Если у вас есть встроенная системная ОС, которая считывает определенные адреса в приложении для связи, то ваше приложение не может иметь чистый дизайн, но оно должно следовать правилам ОС. Тем не менее, мне нужно, чтобы моя структура была определена по указанному адресу. - person hadoop; 10.01.2020
comment
Пожалуйста, забудьте мой оригинальный пример struct. Это была копия/вставка без особой оценки. Я обновил его до лучшего. - person hadoop; 10.01.2020
comment
Я предполагаю, что такое столкновение возможно только в том случае, если раздел памяти, в котором находится ваша переменная, используется компилятором (например, где-то в .data). Но вы можете гарантировать, что компилятор не будет мешать, написав его в компоновщике, возможно, используйте для этого специальный раздел. - person dragosht; 10.01.2020
comment
Большое Вам спасибо. Не могли бы вы объяснить подробнее, как это сделать? - person hadoop; 13.01.2020
comment
Вероятно, вам нужно что-то вроде этого, адаптированного для вашей платы: electronics.stackexchange.com/questions/438488/ - person dragosht; 13.01.2020