如何做RAM和ROM完整性检查

描述

RAM测试时有点类似下面的程序(当然你可以修改它来使这个测试更全面些)——这里测试的RAM的数量是特定于PIC16C76的,如果要用于其它单片机型号,你需要查阅数据手册来确定相应型号的存储器范围。

#include

volatile unsigned char INDF @ 0x0; // not defined in pic.h

main()

{

IRP = 0;                /* select bank 0/1 */

    FSR = 0x20;             /* check bank 0 */
    do {
            INDF = 0x55;
    } while(++FSR != 0x80);

    FSR = 0x20;
    do {
            if(INDF != 0x55)
                    for(;;);
    } while(++FSR != 0x80);

    FSR = 0xA0;                // check bank 1
    do {
            INDF = 0x55;
    } while(++FSR != 0xF0);    // avoid the common area, already checked

    FSR = 0xA0;
    do {
            if(INDF != 0x55)
                    for(;;);
    } while(++FSR != 0xF0);

    IRP = 1;        /* select bank 2/3 */

    FSR = 0x10;     /* bank 2 RAM starts at 110 */
    do {
            INDF = 0x55;
    } while(++FSR != 0x70);  // last address is 170 (common is 170-17F)

    FSR = 0x10;
    do {
            if(INDF != 0x55)
                    for(;;);
    } while(++FSR != 0x70);  

    FSR = 0x90;                 // bank 3 RAM, 190-1EF
    do {
            INDF = 0x55;
    } while(++FSR != 0xF0);

    FSR = 0x90;
    do {
            if(INDF != 0x55)
                    for(;;);
    } while(++FSR != 0xF0);

}

ROM的校验和就要看情况而定了。并不是所有的PIC单片机都能够读它自己的程序存储器的。部分Flash的型号是可以读的,但是PIC16C76是不能够读的,请查看相应单片机的数据手册来确定。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分