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

 
 
> uVision 5, ARM, вопрос о размещении переменной, как поместить в нужную область памяти
George_R
сообщение Dec 26 2016, 10:56
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 14-04-10
Из: Москва
Пользователь №: 56 636



Всем доброго дня!

Задался вопросом, как поместить переменную/массив точно по нужному адресу памяти

Сейчас делаю так - в скрипте линковщика объявляю секцию с нужным адресом, а при объявлении переменной пишу
__attribute__((section ("имя")))

Суть вопроса вот в чем: есть ли директива, позволяющая прямо в коде писать нужный адрес?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Mister_DSP
сообщение Jan 18 2017, 13:55
Сообщение #2


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

Группа: Участник
Сообщений: 133
Регистрация: 5-11-16
Пользователь №: 94 050



Цитата(George_R @ Dec 26 2016, 11:56) *
Задался вопросом, как поместить переменную/массив точно по нужному адресу памяти
Суть вопроса вот в чем: есть ли директива, позволяющая прямо в коде писать нужный адрес?

Всегда делал вот так:
Код
#define pseudo_char *(char*)0x20000000 /* символ по адресу 0x20000000*/
#define pseudo_float *(float*)0x10000000 /* одниночное плавающее по адресу 0x10000000*/


Где-то были такого же типа и вызов функций с аргументами по адресу... таким же способом! sm.gif

Сообщение отредактировал Mister_DSP - Jan 18 2017, 13:56


--------------------
SPY vs. SPY
Хорошо там, где нет ничего...
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Feb 1 2017, 09:28
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата(Mister_DSP @ Jan 18 2017, 16:55) *
Всегда делал вот так:
Код
#define pseudo_char *(char*)0x20000000 /* символ по адресу 0x20000000*/
#define pseudo_float *(float*)0x10000000 /* одниночное плавающее по адресу 0x10000000*/

Где-то были такого же типа и вызов функций с аргументами по адресу... таким же способом! sm.gif


А кто будет объяснять линкеру, что там должен лежать этот псевдо-чар?
Он имеет полное право положить туда что-то совершенно другое.


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
George_R
сообщение Feb 1 2017, 09:47
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 14-04-10
Из: Москва
Пользователь №: 56 636



Вероятно мне стоило отписаться о решении проблемы, чтобы не плодить бесполезные ответы
Всё замечательно работает следующим образом

CODE
__attribute__((at(USERPAGE1))) static const uint16_t fl_def[FLASH_FILE_SIZE][_N_CPY]=
{
{_ADC_DEFAULT,_ADC_DEFAULT,_ADC_DEFAULT},
{_TC1_DEFAULT,_TC1_DEFAULT,_TC1_DEFAULT},
{_S2_DEFAULT,_S2_DEFAULT,_S2_DEFAULT},
{_S2_RNG_DEF,_S2_RNG_DEF,_S2_RNG_DEF}
};


Сообщение отредактировал George_R - Feb 1 2017, 09:48
Go to the top of the page
 
+Quote Post



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

 


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


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