У меня есть микроконтроллер 8051 с подключенным к нему внешним ОЗУ, и я хочу протестировать ОЗУ, чтобы убедиться, что он может правильно хранить и загружать данные (что, на мой взгляд, на данный момент не выполняется).
В моей программеУ меня есть это, где значение 80h записывается в 1-й байт памяти, и значение увеличивается по мере увеличения каждого адреса памяти, но значение обнуляется каждые 256 байтов, начиная со 128-го байта.
Это мойфункция:
;extended memory test. C=1=memory fault
memtest:
mov DPTR,#0h
mov R7,#80h
;fill with incrementing values
post1:
mov A,R7
movx @DPTR,A
inc R7
inc DPTR
mov A,DPH
orl A,DPL
jnz post1
;Test for incrementing values
mov DPTR,#0h
mov R7,#80h
post2:
clr C
movx A,@DPTR
subb A,R7
setb C
jnz isbadram
movx @DPTR,A
mov A,R7
inc R7
inc DPTR
mov A,DPH
orl A,DPL
clr C
jnz post2
isbadram:
ret
Но я думаю, что мне нужно сделать более строгий тест.Я думаю, что мне нужно многократно писать и читать разные значения в одних и тех же местах, но я не знаю, сколько раз проверять местоположение, и я не знаю лучших значений, которые можно попробовать.
Япросто боюсь, что если я проверю местоположение слишком много раз, то моя программа потратит вечное тестирование памяти, прежде чем начнет делать что-то полезное.
К счастью, у меня есть несколько микроконтроллеров, которые могут выполнять команды со скоростью около 40 нс каждый.У меня есть другие из того же семейства, которые выполняют инструкции примерно по 0,5 мкс каждый.
Итак, каков наилучший способ тестирования оперативной памяти, уже установленной в системе, не затрачивая слишком много времени на тестирование?