⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flashimage.c

📁 CIRRUS 公司EP93XX系列CPU的WINCE下的BSP
💻 C
字号:
//#include "csbin.h"

static volatile unsigned long *LED=(unsigned long *)0x80840020;

int OEMReadData(int size, unsigned char *pDest, unsigned char **pSrc)
{
    int i;
    unsigned int *pWDest, *pWSrc;

    *LED |= 1;

    pWDest = (unsigned int *)pDest;
    pWSrc = (unsigned int *)*pSrc; 

    for (i=0;i<size>>2;i++)
    {
        if(!(i & 0x3FFFF))
        {
            *LED ^= 3;
        }
        *pWDest++ = *pWSrc++;
    }

    *pSrc = (unsigned char *)pWSrc;

    *LED &= ~3;
    return(1);
}

int ValidHeader(unsigned char *pHdr)
{
    if((pHdr[0]==0xaa) &&
       (pHdr[1]=='B') &&
       (pHdr[2]=='0') &&
       (pHdr[3]=='0') &&
       (pHdr[4]=='0') &&
       (pHdr[5]=='F') &&
       (pHdr[6]=='F') &&
       (pHdr[7]==0xa))
    {
        return(1);
    }
    return(-1);
}



int CopyNGo(unsigned char *pData)
{
    unsigned char hdr[8];
    unsigned char *dwImageStart;
    unsigned char *dwImageLength;
    int dwRecLen, dwRecChk, dwRecAddr;

    //
    // Clear the LEDs
    //
    *LED &= ~3;
    
    OEMReadData (8, hdr, &pData);

    // read the 8 byte "magic number"
    if (ValidHeader(hdr) < 0)
    {
        //
        // Set RED LED
        //
        *LED |= 2;

        return 0;
    }                   

    // read image start/length
    OEMReadData (sizeof (int), (unsigned char *)&dwImageStart, &pData);
    OEMReadData (sizeof (int), (unsigned char *)&dwImageLength, &pData);

    // read records (start with address, length, and checksum)
    while (1)
    {
        OEMReadData(sizeof(dwRecAddr), (unsigned char *)&dwRecAddr, &pData);
        OEMReadData(sizeof(dwRecLen), (unsigned char *)&dwRecLen, &pData);
        OEMReadData(sizeof(dwRecChk), (unsigned char *)&dwRecChk, &pData); 

        // check for last record
        if (!dwRecAddr && !dwRecChk)
        {

            // update launch address
            return dwRecLen;
        }

        //
        // read data block
        //
        OEMReadData(dwRecLen, (unsigned char *)dwRecAddr, &pData);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -