Давайте отделим мух от котлет >> Опять же хотелось бы протестировать память до определения стека.
Ну и в чём смысл? Предположим, что память неисправна, и что Вы будете делать? main вызывать уже нельзя... и чё... ? Стек нужно определять в области внутреннего ОЗУ, и тогда спокойно идёте в main...
>> И результаты тестирования как передать, если переменные еще не объявлены?
1 Переменные объявляются в ИСХОДНИКЕ, РАЗМЕЩАЮТСЯ ликером, а в программе уже используются адреса.
2 Чтобы процедура обнуления ОЗУ, не испортила Ваш результат, используйте чёта вроде:
#pragma dataseg=SEGMENT_IN_RAM_ON_CHIP
__no_init char TestRAMresult;
#pragma dataseg=default
__low_level_init()
{
// ... bla-bla-bla ...
if (test == ok)
TestRAMresult = 0;
else
TestRAMresult = 1;
}
C_task void main(void)
{
if (TestRAMresult)
{
// bla-bla-bla
}
}