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).