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

📄 main.c

📁 arm7 zlg lpc2219 bootloader
💻 C
📖 第 1 页 / 共 2 页
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			main.c
** Last modified Date:  2004-09-16
** Last Version:		1.0
** Descriptions:		The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by:			Chenmingji
** Created date:		2004-09-16
** Version:				1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#include "config.h"
#include "stdlib.h"

/*********************************************************************************************************
** 函数名称: GetDateTime
** 功能描述: 用户完成函数,获取当前的时间
**
** 输 入: Time  指向保存结果
**
** 输 出: 错误代码,RETURN_OK为正确
**         
** 全局变量: 无
** 调用模块: 无
**
** 作 者: 陈明计
** 日 期: 2004年12月29日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
   uint8    GetDataTime(DATE_TIME *GetTime)
{
    uint32 tmp;
    
    OS_ENTER_CRITICAL();
  
    tmp = CTC * 100;
    GetTime->ti_hund = tmp >> 16;
    GetTime->ti_sec  = SEC;
    GetTime->ti_min  = MIN;
    GetTime->ti_hour = HOUR;
    GetTime->da_dow  = DOW;
    GetTime->da_day  = DOM;
    GetTime->da_mon  = MONTH;
    GetTime->da_year = YEAR;
    
    tmp = CTC * 100;
    tmp = tmp >> 16;
    
    if (GetTime->ti_hund != tmp)
    {
        tmp = CTC * 100;
        GetTime->ti_hund = tmp >> 16;
        GetTime->ti_sec  = SEC;
        GetTime->ti_min  = MIN;
        GetTime->ti_hour = HOUR;
        GetTime->da_dow  = DOW;
        GetTime->da_day  = DOM;
        GetTime->da_mon  = MONTH;
        GetTime->da_year = YEAR;
    }
    OS_EXIT_CRITICAL();
    return RETURN_OK;
}


#define	TaskStkLengh	512	        //Define the Task0 stack length 定义用户任务0的堆栈长度
 
OS_STK	TaskStk [TaskStkLengh];		//Define the Task0 stack 定义用户任务0的堆栈

OS_STK	TaskFileStk [1024];		    //Define the FaleTask0 stack 定义文件系统任务0的堆栈

void 	Task0(void *pdata);			//Task0 任务0

/*********************************************************************************************************
**                            strupr
********************************************************************************************************/
        char *strupr(char *Str)
{
    char *cp;
    
    cp = Str;
    while (*cp != 0)
    {
        if (*cp >= 'a' && *cp <= 'z' )
        {
            *cp -=  'a' - 'A';
        }
        cp++;
    }
    return Str;
}

/*********************************************************************************************************
**                            main
********************************************************************************************************/
        int main (void)
{
	OSInit();																										
	OSTaskCreate(Task0,(void *)0, &TaskStk[TaskStkLengh - 1], 60);		
    OSTaskCreate(OSFileTask, (void *)0, &TaskFileStk[1023], 3);
	OSStart();
	return 0;															
}

/*********************************************************************************************************
**                            MyFormat
********************************************************************************************************/
        void MyFormat(void)

{
    unsigned int i,j;
    Disk_RW_Parameter parameter;
    Disk_Info *Disk;

    Disk = GetDiskInfo2(0);

    parameter.SectorIndex = 0;
    parameter.RsvdForLow = Disk->RsvdForLow;
    parameter.Buf = NULL;
    Disk->DiakCommand(DISK_GET_SECTOR_NUMBER, &parameter);
    i = parameter.SectorIndex;
    i = i * 95;
    i = i / 100;

    parameter.SectorIndex = 0;
    parameter.RsvdForLow = Disk->RsvdForLow;
    parameter.Buf = NULL;
    Disk->DiakCommand(DISK_GET_BYTES_PER_SECTOR, &parameter);
    j = parameter.SectorIndex;
    
    Format("a:", i, j);
    
}

/*********************************************************************************************************
**                            
********************************************************************************************************/

        int32 FindFile(char *Path, char *FileName, int32 index)
{
    uint32 i;
    uint32 PathClus;
    FDT FdtInfo;
    uint8 Drive;

    
    PathClus = OSGetDirClusIndex(Path);
    if (PathClus == BAD_CLUS)
    {
        return -1;
    }
    Drive = OSGetDrive(Path);
    
    while (1)
    {
        if (OSGetFDTInfo(&FdtInfo, Drive, PathClus, index++) != RETURN_OK)
        {
            return -1;
        }

        if (FdtInfo.Name[0] == DEL_FDT)
        {
            continue;
        }

        if ((FdtInfo.Attr & ATTR_VOLUME_ID) != 0)
        {
            continue;
        }

        if ((FdtInfo.Attr & ATTR_DIRECTORY) != 0)
        {
            continue;
        }

        if (FdtInfo.Name[0] == EMPTY_FDT)
        {
            return -1;
        }
        
        if (FdtInfo.Name[8] != 'I')
        {
            continue;
        }

        if (FdtInfo.Name[9] != 'N')
        {
            continue;
        }

        if (FdtInfo.Name[10] != 'I')
        {
            continue;
        }
        
        break;
    }

    for (i = 0; i < 8; i++)
    {
        if (FdtInfo.Name[i] == ' ')
        {
            break;
        }
        *FileName++ = FdtInfo.Name[i];
    }
    
    *FileName++ = '.';
    *FileName++ = 'I';
    *FileName++ = 'N';
    *FileName++ = 'I';
    return index;   
}

/*********************************************************************************************************
**                            boot_sel
********************************************************************************************************/
		uint8 boot_sel(void )
{
    HANDLE Handle;
    char Ch;
    int i, j;
    int32 index;
    char FileName[7][24];
    char show[80];
    
    CommInit();
    while(1)
    {
        for (i = 0; i < 7; i++)
        {
            FileName[i][0] = 'a';
            FileName[i][1] = ':';
            FileName[i][2] = '\\';
            FileName[i][3] = 'b';
            FileName[i][4] = 'o';
            FileName[i][5] = 'o';
            FileName[i][6] = 't';
            FileName[i][7] = '\\';
            
            for (j = 8; j < 24; j++)
            {
                FileName[i][j] = 0;
            }
        }
        PrintString("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
        SendChar(0x0c);
        PrintString("       ZLG/BOOT V1.0 for MagicARM2200\n\n");
        PrintString("     Guangzou ZLG-MCU Development Co.,LTD.\n");
        PrintString("               graduate school\n");
        PrintString("            http://www.zlgmcu.com\n\n");
        PrintString("Chiose Function:\n");
        PrintString("1: run ZLG/FTP-S V1.0 ( user    ip) \n");
        PrintString("2: run ZLG/FTP-S V1.0 ( default ip) \n");

        i = 0;
        Handle = OSFileOpen("a:\\boot\\zlg_boot.ini", "R");
        if (Handle != Not_Open_FILE)
        {
            OSFileRead(show, 80, Handle);
            for (j = 0; j < 78; j++)

⌨️ 快捷键说明

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