S3C2440A的NAND FLASH驱动移植到S3C2410还是有些不一样的,最主要的这两个IC的NAND FLASH的寄存器有些不一样,请看下面的两者之间不同:
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
//------------------------------------------------------------------------------
//
// Header: s3c2410x_nand.h
//
// Defines the NAND controller CPU register layout and definitions.
//
#ifndef __S3C2410X_NAND_H
#define __S3C2410X_NAND_H
#if __cplusplus
extern 'C'
{
#endif
//------------------------------------------------------------------------------
// Type: S3C2410X_NAND_REG
//
// NAND Flash controller register layout. This register bank is located
// by the constant CPU_BASE_REG_XX_NAND in the configuration file
// cpu_base_reg_cfg.h.
//
typedef struct
{
UINT32 NFCONF; // configuration reg
UINT8 NFCMD; // command set reg
UINT8 pad1[3]; // pad
UINT8 NFADDR; // address set reg
UINT8 pad2[3]; // pad
UINT8 NFDATA; // data reg
UINT8 pad3[3]; // pad
UINT32 NFSTAT; // operation status reg
UINT32 NFECC; // error correction code 0
} S3C2410X_NAND_REG, *PS3C2410X_NAND_REG;
#if __cplusplus
}
#endif
#endif
上面的代码是S3C2410A的寄存器,我们在看看S3C2440A的寄存器地址说明:
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
//------------------------------------------------------------------------------
//
// Header: s3c2440a_nand.h
//
// Defines the NAND controller CPU register layout and definitions.
//
#ifndef __S3C2440A_NAND_H
#define __S3C2440A_NAND_H
#if __cplusplus
extern 'C'
{
#endif
//------------------------------------------------------------------------------
// Type: S3C2440A_NAND_REG
//
// NAND Flash controller register layout. This register bank is located
// by the constant CPU_BASE_REG_XX_NAND in the configuration file
// cpu_base_reg_cfg.h.
//
typedef struct
{
UINT32 NFCONF; // configuration reg
UINT32 NFCONT;
UINT8 NFCMD; // command set reg
UINT8 d0[3];
UINT8 NFADDR; // address set reg
UINT8 d1[3];
UINT8 NFDATA; // data reg
UINT8 d2[3];
UINT32 NFMECCD0;
UINT32 NFMECCD1;
UINT32 NFSECCD;
UINT32 NFSTAT; // operation status reg
UINT32 NFESTAT0;
UINT32 NFESTAT1;
UINT32 NFMECC0; // error correction code 0
UINT32 NFMECC1; // error correction code 1
UINT32 NFSECC;
UINT32 NFSBLK;
UINT32 NFEBLK; // error correction code 2
} S3C2440A_NAND_REG, *PS3C2440A_NAND_REG;
#if __cplusplus
}
#endif
#endif
这两者之间的差别是很大的。因此移植起来的难点主要是ECC部分,同时还有个别寄存器位地址不一样,需要修改,见下面:
// Use Macros here to avoid extra over head for c function calls
#define READ_REGISTER_BYTE(p) (*(PBYTE)(p))
#define WRITE_REGISTER_BYTE(p, v) (*(PBYTE)(p)) = (v)
#define READ_REGISTER_USHORT(p) (*(PUSHORT)(p))
#define WRITE_REGISTER_USHORT(p, v) (*(PUSHORT)(p)) = (v)
#define READ_REGISTER_ULONG(p) (*(PULONG)(p))
#define WRITE_REGISTER_ULONG(p, v) (*(PULONG)(p)) = (v)
以上的代码不论S3C2410还是S3C2440都可以用,我在移植的时候,这两部是一样的。当然至于S3C2443和S3C2450这部分的寄存器改变并不多,不过S3C2450的BSP中NAND FLASH驱动还是有很大的变化,那以后再来分析吧,现在还是分析这个,WINCE5.0下的。WINCE6.0的我还没有来得急移植呢。我一般喜欢动手自己移植一遍,这样能深入的了解WINCE的流程,同时对这颗IC,也更熟悉。看看两者之间的不同吧。
S3C2440A的寄存器宏定义:
// MACROS
#define NF_CE_L() WRITE_REGISTER_USHORT(pNFCONT, (USHORT) (READ_REGISTER_USHORT(pNFCONT) & ~(1<<1)))
上一篇:ARM Linux S3C2440之ADC驱动实现
下一篇:S3C2440硬件编程实例
- 热门资源推荐
- 热门放大器推荐
- REF196 精密微功率、低压差堆叠电压基准的典型应用电路
- LTC4367IMS8 用于滞后调节的过压电源控制器的典型应用
- CLRC663非接触式读写器IC的典型应用
- 使用 ON Semiconductor 的 CS-5621 的参考设计
- RSO-0515S 15V、67mA输出DC/DC转换器典型应用电路
- NCP51200 3 Amp VTT 终端稳压器 DDR1、DDR2、DDR3、LPDDR3、DDR4 的典型应用
- LR645大电流SMPS启动电路典型应用
- ADR420 可编程电流源的典型应用
- DC417B,使用 LT1806CS8 多尺寸单运算放大器原型的演示板
- DM300019,用于评估 dsPIC30F 和 dsPIC33F MCU 系列器件的 dsPICDEM 入门开发板



现代雷达系统的信号设计
ALD2701Z

BFR340T






京公网安备 11010802033920号