Спасибо за все ваши советы! Теперь это работает. .ld-файл:
SECTIONS
{
...
.data: {
...
}
...
var_name = 0x40010CA0;
}
.c-файл:
extern volatile int var_name;
После изучения документов, на которые я ссылался выше (пример раздела ввода), я попробовал также что-то вроде этого: файл .ld:
.hrd_map 0x40010CA0 :
{
main.o(.b_section)
}
Где .b_section была глобальной переменной с атрибутом:
int b __attribute__((section(".b_section")));
Но это не работает, я получил такую ошибку: множественное определение `main'. Я думаю, это потому, что ранее в файле .ld у меня было другое назначение, например: .data: {...} .bss .text. Может быть, кто-то знает, как это исправить или как получить доступ к некоторым переменным без использования атрибута section. Я пытался искать символы для переменных в файле main.o, но я не видел ничего похожего на имя символа для переменной, кроме .b_section, который я создал с использованием атрибута section и других (созданных по умолчанию). ? ) .data .bss .text и т.д.
@ Дэн Ты прав, я делаю это для обучения, и я с тобой согласен. Но, с другой стороны, я думаю, что этот код будет достаточно переносимым, поскольку для каждого чипа требуется .ld и файл запуска, а определение портов также включено в библиотеки.
person
qubu
schedule
06.01.2012