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

📄 main.c

📁 arm7 zlg lpc2219 bootloader
💻 C
📖 第 1 页 / 共 2 页
字号:
            {
                if (show[j] == '\n')
                {
                    break;
                }
            }
            show[j + 1] = 0;
            PrintString("3: ");
            PrintString(show + 1);
            FileName[0][8] = 'z'; 
            FileName[0][9] = 'l'; 
            FileName[0][10] = 'g'; 
            FileName[0][11] = '_'; 
            FileName[0][12] = 'b'; 
            FileName[0][13] = 'o'; 
            FileName[0][14] = 'o'; 
            FileName[0][15] = 't'; 
            FileName[0][16] = '.'; 
            FileName[0][17] = 'i'; 
            FileName[0][18] = 'n'; 
            FileName[0][19] = 'i'; 
            i++;
            OSFileClose(Handle);
        }
        
        index = 0;
        
        for (; i < 7; i++)
        {
            index = FindFile("a:\\boot", FileName[i] + 8, index);
            if (index < 0)
            {
                break;
            }            
            if (FileName[i][8] == 'Z')
            if (FileName[i][9] == 'L')
            if (FileName[i][10] == 'G')
            if (FileName[i][11] == '_')
            if (FileName[i][12] == 'B')
            if (FileName[i][13] == 'O')
            if (FileName[i][14] == 'O')
            if (FileName[i][15] == 'T')
            if (FileName[i][16] == '.')
            if (FileName[i][17] == 'I')
            if (FileName[i][18] == 'N')
            if (FileName[i][19] == 'I')
            {
                i--;
                continue;
            }
            Handle = OSFileOpen(FileName[i], "R");
            if (Handle != Not_Open_FILE)
            {
                OSFileRead(show, 80, Handle);
                for (j = 0; j < 78; j++)
                {
                    if (show[j] == '\n')
                    {
                        break;
                    }
                }
                show[j] = '\n';
                show[j + 1] = 0;
                SendChar(i + 3 + '0');
                SendChar(':');
                SendChar(' ');
                PrintString(show + 1);
                OSFileClose(Handle);
            }
            else
            {
                i--;
            }
        }
        
        PrintString("\n\n\nF: Format Disk \n\n\n");

        PrintString("                              default choise is 3\n");
        PrintString("    Please choise....         default choise delay  ");
        
        i = 9;
        do
        {
            if (GetCh(&Ch) == TRUE)
            {
                PrintString("\b \n");
                SendChar(Ch);
                break;
            }
            SendChar('\b');
            SendChar(i + '0');
            OSTimeDly(OS_TICKS_PER_SEC);
        } while (--i > 0);
        

        if (i <= 0 || Ch == 0x0d)
        {
            Ch = '3';
        }
        switch(Ch)
        {
            case '1':
                PrintString("\nStart ZLG/FTP-S (user ip)...");
                return (1);
                break;
            case '2':
                PrintString("\nStart ZLG/FTP-S (default ip)...");
                return (0);
                break;
            case '3':
            case '4':
            case '5':
            case '6':
            case '7':
            case '8':
            case '9':
                PrintString("\nStart User's Program...");
                
                Boot(FileName[Ch - '3']);
                break;
            case 'f':
            case 'F':
                PrintString("\n Warning: Disk' data will lost!!\n Are you ontinue?('y' or 'n')");
                while (GetCh(&Ch) == FALSE)
                {
                }
                if (Ch == 'y' || Ch == 'Y' )
                {
                    PrintString("\n start format...");
                    MyFormat();
                }
                
                break;
            default:
                PrintString("\nDon't Find this Command !\n");
                OSTimeDly(OS_TICKS_PER_SEC);
                OSTimeDly(OS_TICKS_PER_SEC);
                OSTimeDly(OS_TICKS_PER_SEC);
                break;
        }
    }
    return 0;    
}


/*********************************************************************************************************
**                            Task0 任务0
********************************************************************************************************/
extern uint8 tcpipinit (void);
FFSDisk FFSDiskInfo[1];
uint8 FFSbuf[512];


const K9fXX08Hardware ChipInfo[1] = 
        {
            {
                K9F28_CLE, 
                K9F28_ALE, 
                K9F28_DATA, 
                FFSbuf, 
                512, 
                16, 
                32, 
                1024, 
                K9fxx08EmptyFunction, K9fxx08EmptyFunction
            }
        };

const FlashDriver FlashDriverInfo[1] = 
        {
            {
                512,
                32,
                1024 * 32,
                1024,
                FFSbuf, 
                (void *)ChipInfo, 
                (uint8 (*)(void *Index, void *Buf, uint32 Addr)) K9fxx08SectorRead,
                (uint8 (*)(void *Index, void *Buf, uint32 Addr)) K9fxx08SectCRead,
                (uint8 (*)(void *Index, void *Buf, uint32 Addr)) K9fxx08SectorProgram,
                (uint8 (*)(void *Index, void *Buf, uint32 Addr)) K9fxx08SectorCProgram,
                (uint8 (*)(void *Index, uint32 Addr)) K9fxx08BlockErase,
                //(uint8 (*)(void *Index, uint32 SourAddr, uint32 DestAddr)) K9fxx08SecCopy,
                (uint8 (*)(void *Index, uint32 BlockIndex)) K9fxx08BlockCheck,
                (uint8 (*)(void *Index, void *Buf, uint32 Addr)) K9fxx08SectorCheck,
                (uint8 (*)(void *Index, void *Buf, uint32 Addr)) K9fxx08SectCCheck
            }
        };

		void Task0(void *pdata)
{
    HANDLE Handle;
    char Buf[256];
    unsigned int temp[6];
    uint32 f;
    char Ch;

    extern unsigned int Readline(char *Buf, HANDLE Handle);

    extern uint8 My_Ip_1ID[4];
    extern uint8 My_Gateway_1ID[4];
    extern uint8 MY_IP_MARK_1ID[4];
    extern uint8 MY_MAC_1ID[6];
    
	pdata = pdata;

    (*((volatile unsigned int *) 0x80f00000)) = 0;
    
	TargetInit();

    OSTimeDly(20);

    FFSDiskInfo[0].Drive = &(FlashDriverInfo[0]);
    OSAddFileDriver(ZLG_FFS, FFSDiskInfo);	/*增加ATA设备0*/


    f = boot_sel();

    if (f != 0)
    {
        Handle = OSFileOpen("a:\\zlg_ftp.ini", "r");
        if (Handle != Not_Open_FILE)
        {

            Readline(Buf, Handle);
            sscanf(Buf, "IP=%d.%d.%d.%d", temp, temp + 1, temp + 2, temp +3);
            My_Ip_1ID[0] = temp[0];
            My_Ip_1ID[1] = temp[1];
            My_Ip_1ID[2] = temp[2];
            My_Ip_1ID[3] = temp[3];
            Readline(Buf, Handle);
            sscanf(Buf, "GATEWAY=%d.%d.%d.%d", temp, temp + 1, temp + 2, temp +3);
            My_Gateway_1ID[0] = temp[0];
            My_Gateway_1ID[1] = temp[1];
            My_Gateway_1ID[2] = temp[2];
            My_Gateway_1ID[3] = temp[3];
            Readline(Buf, Handle);
            sscanf(Buf, "IPMARK=%d.%d.%d.%d", temp, temp + 1, temp + 2, temp +3);
            MY_IP_MARK_1ID[0] = temp[0];
            MY_IP_MARK_1ID[1] = temp[1];
            MY_IP_MARK_1ID[2] = temp[2];
            MY_IP_MARK_1ID[3] = temp[3];
            Readline(Buf, Handle);
            sscanf(Buf, "MACID=0X%X,0X%X,0X%X,0X%X,0X%X,0X%X", temp, temp + 1, temp + 2, temp + 3, temp + 4, temp + 5);
            MY_MAC_1ID[0] = temp[0];
            MY_MAC_1ID[1] = temp[1];
            MY_MAC_1ID[2] = temp[2];
            MY_MAC_1ID[3] = temp[3];
            MY_MAC_1ID[4] = temp[4];
            MY_MAC_1ID[5] = temp[5];
        }
        OSFileClose(Handle);
    }

	ZlgipInitial();

	InitFtp();

    PrintString("\n\n\n Please press \"R\" to reset... \n\n\n");

    while (1)
    {
        if (GetCh(&Ch) == TRUE)
        if (Ch == 'R' || Ch == 'r')
        {
            ChangeToSYSMode();
            Reset();
        }        
    }
    OSTaskDel(OS_PRIO_SELF);
}
   
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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