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

📄 flash_dev.h

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 H
字号:
/*
$Log: flash_dev.h,v $
Revision 1.8  2008/01/18 08:53:26  Lingzhaojun
no message

Revision 1.7  2007/12/12 02:39:04  Fangzhenfu
文件系统更新! FLASH 底层更新!

Revision 1.6  2007/11/27 14:01:34  Huangshilin
修改 音频刷屏噪音,系统反应慢的 BUG.

Revision 1.5  2007/11/21 13:13:46  Fangzhenfu
删除旧的升级工具!统一采用新的工具跟文件系统、USB

Revision 1.4  2007/11/07 07:25:50  Fangzhenfu
USB 提速(小文件提速,目前速度写 3M 左右,读 6.5M左右, 4K PAGE FLASH 可到 5M,8M),
文件系统修改!
加入 FLASH 访问时序 API ! 见 flash_dev.h 中
FlashTimingCfg(uint32 Freq) Freq 为总线频率---打包
第一次调用 FlashTimingCfg()时请在 FS_Init() 之后调用,其它在总线频率变化时调用!

Revision 1.3  2007/10/08 02:58:36  Lingzhaojun
添加版本自动注释脚本

*/
#ifndef _FS_FLASH_DEV_H_
#define _FS_FLASH_DEV_H_

#include "stdio.h"
#include "string.h"

#undef EXT
#ifdef _IN_FS_FLASH_DEV_
#define EXT
#else
#define EXT extern
#endif

/*
*******************************************************************************
Flash 相关的配置信息
注:使用 Lib 文件时,下面的宏定义并不起作用,只提供一个参考当前所用的库的配置
*******************************************************************************
*/

#define  DISK_SYS            0
#define  DISK_FLASH          1
//1可配置参数
#define     MAX_FLASH_NUM   4               /*最大支持的FLASH数*/
#define     DATA_LEN       (8192/4)          //数据块单位word
#define     SPARE_LEN       (256/4)           //校验数据长度
#define     PAGE_SIZE       (DATA_LEN+SPARE_LEN) //每个数据单位的长度


#define  BOOT_ONLY               //定义只生成中间件引导代码, 不定义则是完整的文件系统
#ifndef     BOOT_ONLY
#define  DEBUG_FLASH    //定义FLASH调试模式使能
//#define  IN_SYSTEM   //嵌入到系统软件时定义
//#define  OS_FILE    //定义OS下的文件系统
#endif

#ifndef SETUP
#define  USB         //定义使能USB
#endif
#define  DUAL_PLANE    //定义NAND FLASH DUAL PLANE擦写使能
//#define  SYS_PROTECT   //定义系统保留区写使能
//#define     VIRTUAL_MEMORY  0x400000  //定义虚拟内存2GB
#define     SYS_DISK_HID    0       //系统盘使能, 1=隐藏, 0=显示



#if(RK27XX_IO_MEMMAP == LDK_MMU_DISABLE)
#define  RegNandCtrlBase   0x1E740000   //from mail.h
#define  INTC0_VIR_ARRD          0x19C40000
#define     UDC_BASE    0x19CC0000
#define     ARM7_CACHE_CON_BASE  0xEFFF0000
#define     HDMA_BASE               0x1E700000
#define  SRAM_BASE_ADDR      0x18200000  //SRAM的最后512B
#define  SDRAM_BASE_ADDR      0x17000000
#elif(RK27XX_IO_MEMMAP == LDK_MMU_ENABLE)
#define  RegNandCtrlBase   0x02440000   //from mail.h
#define  INTC0_VIR_ARRD          0x02040000
#define     UDC_BASE    0x020C0000
#define     ARM7_CACHE_CON_BASE  0xEFFF0000
#define     HDMA_BASE               0x02400000
#define  SRAM_BASE_ADDR      0x18200000  //SRAM的最后512B
#define  SDRAM_BASE_ADDR      0x01000000
#elif(RK27XX_IO_MEMMAP == PORSCHE9_IO_MEMMAP)
#define  RegNandCtrlBase   0x180E8000   //from mail.h
#define  INTC0_VIR_ARRD          0x18080000
#define     UDC_BASE    0x180A0000
#define     ARM7_CACHE_CON_BASE  0xEFFF0000
#define     HDMA_BASE               0x18090000
#define  SRAM_BASE_ADDR      0x18200000  //SRAM的最后512B
#define  SDRAM_BASE_ADDR      0x60000000
#else
#undef      RegNandCtrlBase
#undef      INTC0_VIR_ARRD
#undef     UDC_BASE
#undef      ARM7_CACHE_CON_BASE
#undef      HDMA_BASE
#undef      SRAM_BASE_ADDR
#undef      SDRAM_BASE_ADDR
#endif

#define  FMCTL     (RegNandCtrlBase+0x00)
#define  FMWAIT     (RegNandCtrlBase+0x04)
#define  FLCTL     (RegNandCtrlBase+0x08)
#define  BCHCTL     (RegNandCtrlBase+0x0C)
#define  BCHST     (RegNandCtrlBase+0xd0)

#define  FLASH0_DATA       (RegNandCtrlBase+0x0200)
#define  FLASH0_ADDR       (RegNandCtrlBase+0x0204)
#define  FLASH0_CMD       (RegNandCtrlBase+0x0208)
#define  FLASH0_0    (RegNandCtrlBase+0x0a00)
#define  SPARE0_0    (RegNandCtrlBase+0x1200)

/*
*******************************************************************************
下面的变量及函数在 Flash.lib 中声明,Flash 驱动及 FTL 层的 H 文件不提供只
提供 FlashVxxx.lib  (xxx 为版本号)
*******************************************************************************
*/
extern uint32 GetCapacity(uint8 Drive);
extern void   FlashTimingCfg(uint32 Freq);
extern uint8  FlashInit(void);
extern uint8  GetRemapTbl(void);
extern void   LowFormat(uint8 area);
extern int    FlashWriteSecs(uint8 Drive, uint32 Index, void *pData, uint16 nSec);
extern int    FlashReadSecs(uint8 Drive, uint32 Index, void *pData, uint16 nSec);
extern void   FlashCacheCloseAll(void);
extern uint32 ReadNandReg(uint32 NandReg);
extern void SpareCpy(uint8 *pDest, uint32 Src, uint32 ByteCnt);

#define  FLASH_PROTECT_ON()  /*write_XDATA32(FMCTL, ReadNandReg(FMCTL) & (~0x10))*/
#define  FLASH_PROTECT_OFF()  write_XDATA32(FMCTL, ReadNandReg(FMCTL) | 0x10)
#endif

⌨️ 快捷键说明

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