Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как обратиться к значению директивы EQU
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
yurmala
В startup.s описана директива:
Код
SW_VER          EQU     0x01000001

Можно ли из основной программы обратиться к этому значению?
Сергей Борщ
CODE
startup.s:

                   public SW_VER
SW_VER          EQU     0x01000001

test.c:

extern int SW_VER;
void test()
{
  printf("version: %x", SW_VER);
}
как-то так. Вы не указали ассемблер, поэтому уточните по его описанию формат директивы public.
aaarrr
Под EQU память не выделяется, соответственно, extern int сработать бы не должен.
А вот DCD (в т.ч. с инициализацией через EQU) точно можно будет "зацепить" снаружи.
Сергей Борщ
QUOTE (aaarrr @ Sep 9 2011, 10:59) *
Под EQU память не выделяется, соответственно, extern int сработать бы не должен.
Да, прошляпил это как-то. Тогда так:
CODE
test.c:

extern int SW_VER;
void test()
{
  printf("version: %x", (int)&SW_VER);
}

yurmala
Использую компилятор Keil.

Вариант:
test.s
Код
SW_VER          EQU     0x02020001
SWVER           DCD     SW_VER

test.c
Код
extern int SWVER;
...
sprintf(s,"version: %x", SWVER);


не компилируется. Ошибка Error: L6218E: Undefined symbol SWVER

p.s. (int)&SWVER тоже пробовал
Rst7
QUOTE
Вариант ... не компилируется. Ошибка Error: L6218E: Undefined symbol SWVER


PUBLIC SW_VER кто будет добавлять?
aaarrr
В данном случае EXPORT SW_VER.
yurmala
Да, уже разобрался сам. Спасибо!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.