ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
3 декабря
1084579
RxTx (08.03.2021 23:40, просмотров: 1278)
dsPIC + строки или определение указателя на psv 

Есть dsPIC33EP256MU806, си-компилятор C30 v3.31 с опциями -g -fno-short-double -mlarge-code -mlarge-data -mconst-in-code

и определенная мной функция void OutputDebugString(char * str) { /* body omitted */ }

Вызываю функцию: OutputDebugString("Hello World\r\n"); после чего падаю в traps.c на _AddressError()

или просто получаю внутри OutputDebugString() некорректный указатель, по указателю не "Hello World\r\n".

При этом

char str[32] = "Hello World\r\n";
OutputDebugString(str);

работает.

Догадки есть. Константы хранятся не в адресном пространстве данных,

а в адресном пространстве кода, которое мэппится в PSV, компилятор этим мэппингом управляет сам.

Неясно другое. Как следует объявить void OutputDebugString(char * str) чтобы компилер понял что передаваемая строка лежит в PSV ?

Какой квалификатор, как должно выглядеть определение void OutputDebugString(char * str).

Спасибо, князь. Вы настоящий дворянин. И программист.