Перейти к содержанию
    

Использование в Keil Region-related symbols

Здравствуйте Все!

 

Хотелось бы разобраться с использованием Linker-defined symbols в проекте Keil.

http://www.keil.com/support/man/docs/armli...62065951495.htm

 

Меня конкретно интересует возможность использования переменной Load$$LR$$load_region_name$$Length

http://www.keil.com/support/man/docs/armli...62065953823.htm

 

Почему при сборке проекта линковщик выдает ошибку, что символ не определен....

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Берете и используете

extern uint32_t * Load$$LR$$LR_IROM1$$Length;
...
{
  uint32_t * r = Load$$LR$$LR_IROM1$$Length;
}

 

Видимо не те буквы используете, поэтому и не находит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, действительно линкуется без ошибок.

А эти переменные обязательно использовать через указатель?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для проверки использовал следующий код:

 

/*----------------------------------------------------------------------------

Main Program

*----------------------------------------------------------------------------*/

int main (void) { /* main entry for program */

 

uint32_t test[4];

extern uint32_t Load$$LR$$LR_IROM1$$Limit;

extern uint32_t Load$$LR$$LR_IROM1$$Base;

extern uint32_t Load$$LR$$LR_IROM1$$Length;

 

......

 

test[0] = (uint32_t)&Load$$LR$$LR_IROM1$$Limit;

test[1] = (uint32_t)&Load$$LR$$LR_IROM1$$Base;

test[2] = (uint32_t)&Load$$LR$$LR_IROM1$$Length;

 

test[3] = test[0] - test[1];

 

....

 

}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А результат проверки - какой?

Здесь главное extern.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все работает.

 

Кроме extern необходимо использовать &

 

6.3.7 Methods of importing linker-defined symbols in C and C++

 

You can import linker-defined symbols into your C or C++ source code. They are external symbols and you must take the address of them.

The only case where the & operator is not required is when the array declaration is used, for example extern char symbol_name[];.

 

 

http://www.keil.com/support/man/docs/armli...62065956104.htm

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...