ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
6 мая
1276719
Toчкa oпopы (17.01.2023 23:57 - 18.01.2023 06:47, просмотров: 6633)
Передача указателя в функцию. Как внутри функции можно понять, на что он указывает - Flash (pgm) или RAM? 

Просматривая avr-libc вижу некую магическую константу 0x800000. Но чую, что это не тот случай. Это - про линкер.

Я, конечно, могу по контексту (другим параметрам функции) понять указатель на что получен. Но, может быть, есть более изящный способ, который следует освоить?


uint_8_t	array[];
void blah_blah(uint8_t CMD1, uint8_t CMD2, uint8_t CMD3, uint16_t Size, uint8_t *origin) {
	.....;
}
void main() {
	blah_blah(0, 1, 2, 0x200, array);
	blah_blah(0, 3, 4, 0x200, pgm_array);
}
asm (	// Включение файла.
    ".global pgm_array \n"
    "pgm_array: \n"
    ".incbin \"file.bin\""
);
Заказать импортные ЭК - https://shop.fulcrum.ru/buy