📄 flash_dev.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 + -