BMФ (10.02.2004 09:44, просмотров: 1) ответил =AlexD= на Давайте отделим мух от котлет
А, вообще-то, нужен ли тест ОЗУ? А внутреннее ОЗУ имеет ли смысл тестировать? Что то мне неисправности во внутреннем ОЗУ не встречались... Да и с внешним ОЗУ проблемы были связаны только с механическими причинами.
>> Опять же хотелось бы протестировать память до определения стека.
Ну и в чём смысл? Предположим, что память неисправна, и что Вы будете делать? main вызывать уже нельзя... и чё... ? Стек нужно определять в области внутреннего ОЗУ, и тогда спокойно идёте в main...
+++ Ну например, если устанавливается, что повреждение ОЗУ не позволяет нормально работать main, то организовать сообщение о неисправности на низком уровне (что-то типа писишного бипера)...
+++ Заманчиво так же, обнаружив неисправность в ОЗУ, повлиять на размещение переменных...
>> И результаты тестирования как передать, если переменные еще не объявлены?
1 Переменные объявляются в ИСХОДНИКЕ, РАЗМЕЩАЮТСЯ ликером, а в программе уже используются адреса.
2 Чтобы процедура обнуления ОЗУ, не испортила Ваш результат, используйте чёта вроде:
+++ Простите, дубанул:)), собственно из этого пункта тогда остается только вопрос, есть ли гарантия, что __low_level_init() пройдет раньше инициализации переменных. Пока подробно не вникал, но на первый взгляд кажется, что СиСтартап начинает что-то делать до ее вызова...
#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
}
}
+++ Эт понятна...