arm7 zlg lpc2219 bootloader
源代码在线查看: empty.c
/****************************************Copyright (c)**************************************************
** Guangzou ZLG-MCU Development Co.,LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name: empty.c
** Last modified Date: 2005-4-16
** Last Version: 1.0
** Descriptions: empty driver for ZLG/FS 1.0
**
**------------------------------------------------------------------------------------------------------
** Created by: Chenmingji
** Created date: 2005-4-16
** Version: 1.0
** Descriptions: The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#define IN_EMPTY /* "EMPTY" 为文件的主文件名 */
#include "config.h"
/*********************************************************************************************************
** 函数名称: Empty ---> 使用您自己的函数名称
** 功能描述: 底层驱动程序与上层的接口程序
**
** 输 入: Cammand:define DISK_INIT: 初始化,必须实现
** define DISK_CLOSE: 关闭,必须实现
** define DISK_READ_SECTOR: 读扇区,必须实现
** define DISK_WRITE_SECTOR: 写扇区,必须实现
** define DISK_DRIVER_VER: 查看驱动程序接口版本号,必须实现
** define DISK_CHECK_CMD: 查看命令是否实现,必须实现
** define DISK_LOW_FORMAT: 低级格式化,可选命令
** define DISK_FREE_SECTOR: 释放扇区,可选命令
** define DISK_GET_SECTOR_NUMBER: 获得设备总扇区数,可选命令
** define DISK_GET_BYTES_PER_SECTOR: 获得每扇区字节数,可选命令
** define DISK_CHECK_CHANGE: 查看介质是否改变,可选命令
** define DISK_GET_SECTORS_PER_BLOCK:获取每块扇区数,可选命令
** define DISK_READ_BLOCK: 读数据块,可选命令
** define DISK_WRITE_BLOCK: 写数据块,可选命令
** Parameter: 剩余参数,其中Parameter->RsvdForLow用于存储驱动程序支持的物理设备相关信息,
** 如使用的资源等。使用它可以使一个驱动支持多个物理设备。
** 输 出: DISK_READ_OK: 读扇区完成
** DISK_READ_NOT_OK: 读扇区失败
** DISK_WRITE_OK: 写扇区完成
** DISK_WRITE_NOT_OK: 写扇区失败
** DISK_INIT_OK: 初始化完成
** DISK_INIT_NOT_OK: 初始化失败
** DISK_FALSE: 真
** DISK_TRUE: 假
** BAD_DISK_COMMAND: 无效的命令
** 全局变量: 无
** 调用模块: 无
**
** 作 者: 陈明计
** 日 期: 2005-4-16
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint16 Empty(uint8 Cammand, void *Parameter) /*使用您自己的函数名称 */
{
uint16 rt;
Disk_RW_Parameter * Dp;
FFSDisk *Disk;
Dp = (Disk_RW_Parameter *)Parameter;
Disk = (FFSDisk *) Dp->RsvdForLow;
OS_ENTER_CRITICAL(); /* 关中断,根据需要添加 */
/* 可选命令如果没有实现,则rt = BAD_DISK_COMMAND*/
switch (Cammand)
{
case DISK_INIT:
/* 初始化驱动程序,必须实现 */
/* Parameter没有使用 */
/* rt=DISK_INIT_OK或DISK_INIT_NOT_OK*/
break;
case DISK_CLOSE:
/* 关闭驱动程序,必须实现 */
/* Parameter没有使用 */
rt = DISK_RETURN_OK;
break;
case DISK_READ_SECTOR:
/* 读物理扇区,必须实现 */
/* Dp->Buf:存储读到的数据 */
/* Dp->SectorIndex:物理扇区索引 */
/* rt=DISK_READ_OK或DISK_READ_NOT_OK*/
break;
case DISK_WRITE_SECTOR:
/* 写物理扇区,必须实现 */
/* Dp->Buf:需要写的数据 */
/* Dp->SectorIndex:物理扇区索引 */
/* rt=DISK_WRITE_OK或DISK_WRITE_NOT_OK*/
break;
case DISK_DRIVER_VER:
Dp->SectorIndex = 110; /* 版本为1.10,指的是ZLG/FS的版本 */
rt = DISK_RETURN_OK;
break;
case DISK_CHECK_CMD:
rt = DISK_FALSE;
/* 以下那个命令没有实现就注释掉相应的语句 */
if ((Dp->SectorIndex == DISK_INIT)
|| (Dp->SectorIndex == DISK_CLOSE)
|| (Dp->SectorIndex == DISK_READ_SECTOR)
|| (Dp->SectorIndex == DISK_WRITE_SECTOR)
|| (Dp->SectorIndex == DISK_DRIVER_VER)
|| (Dp->SectorIndex == DISK_CHECK_CMD)
|| (Dp->SectorIndex == DISK_LOW_FORMAT)
|| (Dp->SectorIndex == DISK_FREE_SECTOR)
|| (Dp->SectorIndex == DISK_GET_SECTOR_NUMBER)
|| (Dp->SectorIndex == DISK_GET_BYTES_PER_SECTOR)
|| (Dp->SectorIndex == DISK_CHECK_CHANGE)
|| (Dp->SectorIndex == DISK_GET_SECTORS_PER_BLOCK)
|| (Dp->SectorIndex == DISK_READ_BLOCK)
|| (Dp->SectorIndex == DISK_WRITE_BLOCK)
)
{
rt = DISK_TRUE;
}
break;
case DISK_LOW_FORMAT:
/* 低级格式化,可选命令 */
/* Dp->SectorIndex:0:一般低级格式化 */
/* Dp->SectorIndex:其它:第一次低级格式化 */
rt = DISK_RETURN_OK;
break;
case DISK_FREE_SECTOR:
/* 释放扇区,可选命令,ZLG/FFS使用此命令 */
/* 此命令让驱动程序知道哪些扇区不再保存有用数据 */
/* Dp->SectorIndex:物理扇区索引 */
rt = DISK_RETURN_OK;
break;
case DISK_GET_SECTOR_NUMBER:
/* 获得设备总扇区数,可选命令 */
Dp->SectorIndex = 有效的物理扇区总数;
rt = DISK_RETURN_OK;
break;
case DISK_GET_BYTES_PER_SECTOR:
/* 获得每扇区字节数,可选命令 */
Dp->SectorIndex = 每扇区字节数;
rt = DISK_RETURN_OK;
break;
case DISK_CHECK_CHANGE:
/* 查看介质是否改变,可选命令 */
if (介质改变(如更换了SD卡))
{
rt = DISK_TRUE;
}
else
{
rt = DISK_FALSE;
}
case DISK_GET_SECTORS_PER_BLOCK:
/* 获取每块扇区数,可选命令 */
Dp->SectorIndex = 每块扇区数;
rt = DISK_RETURN_OK;
break;
case DISK_READ_BLOCK:
/* 读数据块,可选命令 */
/* Dp->Buf:存储读到的数据 */
/* Dp->SectorIndex:块的第一个物理扇区索引 */
/* rt=DISK_READ_OK或DISK_READ_NOT_OK*/
break;
case DISK_WRITE_BLOCK:
/* 写数据块,可选命令 */
/* Dp->Buf:需要写的数据 */
/* Dp->SectorIndex:块的第一个物理扇区索引 */
/* rt=DISK_WRITE_OK或DISK_WRITE_NOT_OK*/
break;
default:
rt = BAD_DISK_COMMAND;
break;
}
OS_EXIT_CRITICAL(); /* 开中断,如果前面使用了OS_ENTER_CRITICAL(),则添加 */
return rt;
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
|
相关资源 |
|
-
arm7 zlg lpc2219 bootloader
-
ARM7 ZLG Ucos 源码
ARM7 ZLG Ucos 源码
-
S3C4510(ARM7)开发板bootloader实现及板载硬件测试代码
-
sharp arm7 bootloader code
-
arm7 bootloader source, very good
-
一位大侠写的ARM7DTMI模拟器,功能强大,可以模拟按键,彩色液晶,触摸屏,中断,异常等ARM7内核模块和外设,其中包含了bootloader代码,可以用ADS直接编译,是您没有ARM硬件条件下学习
-
armboot-1.1.6.zip
一个包含很全的arm bootloader。
适用arm7,9,xscale
-
杭州立宇泰arm7的bootloader程序
|