Спасибо за все ваши советы!Теперь это работает..ld файл:
SECTIONS
{
...
.data: {
...
}
...
var_name = 0x40010CA0;
}
.c файл:
extern volatile int var_name;
После изучения документов, на которые я ссылался выше (пример раздела ввода), я попробовал также что-то подобное: .ld file:
.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 и т. д.
@ Dan Вы правы, я делаю это для обучения, и я с вами согласен.Но, с другой стороны, я думаю, что этот код будет достаточно переносимым, поскольку каждый чип требует .ld и Startup-файл, а определение портов также включено в библиотеки.