Посмотрел с утра - код работать не будет. Не учел, что переменные ИАР располагает в сегментах от конца к началу, и что адресация флеш-памяти вдвое больше.
Этот код прошел в отладчике:
CODE
char __low_level_init()
{
register char* point=(char*)SP;
register char* pointtest=(char*)__segment_begin("RSTACK");
while(1)
{
*point='R';
point--;
if(point<pointtest) break;
}
return 1;
}
Для частных случаев работоспособен.
P.S. оказалось, что первоначальный вариант тоже работал, сбило то , под сегмент стека ИАР выделил "страницу" памяти и сам стек занимал в нем лишь половину. В том примере нужно лишь добавть инициализацию a[0]='R';
Сообщение отредактировал aiwa - Apr 20 2016, 10:09