ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
23 июля
1239857 Топик полностью
Nikolay_Po (15.09.2022 20:11, просмотров: 130) ответил SciFi на Тема раскрыта в мануале >>>
Спасибо. Нарочно вас провоцировал, чтобы ткнули носом. Собственно, из последнего примера: 

extern char start_of_ROM[], end_of_ROM[], start_of_FLASH[];

memcpy (start_of_FLASH, start_of_ROM, end_of_ROM - start_of_ROM);

Ясно, что полученные таким методом символы являются указателями. И их можно использовать лишь как адреса и нельзя пытаться получить значения.

В своё время, получал таким образом адреса данных в памяти для передачи параметров ассемблерным вставкам.

Но меня удивляет отсутствие процедуры передачи из линкера произвольных значений, типа размеров областей:


"Hence when you are using a linker script defined symbol in source code, you should always take the address of the symbol and never attempt to use its value."


Получается, так можно передать только адреса. Нули нельзя.

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