S3C2440A的NAND FLASH驅(qū)動移植到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驅(qū)動還是有很大的變化,那以后再來分析吧,現(xiàn)在還是分析這個,WINCE5.0下的。WINCE6.0的我還沒有來得急移植呢。我一般喜歡動手自己移植一遍,這樣能深入的了解WINCE的流程,同時對這顆IC,也更熟悉??纯磧烧咧g的不同吧。
S3C2440A的寄存器宏定義:
// MACROS
#define NF_CE_L() WRITE_REGISTER_USHORT(pNFCONT, (USHORT) (READ_REGISTER_USHORT(pNFCONT) & ~(1<<1)))
上一篇:ARM Linux S3C2440之ADC驅(qū)動實現(xiàn)
下一篇:S3C2440硬件編程實例
推薦閱讀最新更新時間:2025-04-17 02:10



設計資源 培訓 開發(fā)板 精華推薦
- iTOP-i.MX6開發(fā)板設備數(shù)驅(qū)動Menuconfig的用法
- 迅為IMX6ULL開發(fā)板Qt for Android搭建開發(fā)環(huán)境
- 迅為i.MX8M mini開發(fā)板Windots QT系統(tǒng)開發(fā)環(huán)境搭建
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)使用Gstarwmra(一)
- 迅為IMX8M mini開發(fā)板Linix系統(tǒng)修改默認屏幕
- iTOP-4412開發(fā)板支持4G以上文件系統(tǒng)擴展
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)設置開機自啟動
- 迅為IMX6Q開發(fā)板 Buildroot文件系統(tǒng)mqtt測試
- 迅為IMX8MM開發(fā)板Linux系統(tǒng)修改默認屏幕
- LT1171CT、5V/2.5A 升壓轉(zhuǎn)換器的典型應用
- RSO-123.3S 3.3V、300mA輸出DC/DC轉(zhuǎn)換器典型應用電路
- 【訓練營】物聯(lián)網(wǎng)時鐘
- LT1021BCN8-10 的典型應用從 5V 電源運行 5V 基準
- 具有 5V 輸出的 LT1074CT 正負轉(zhuǎn)換器的典型應用
- 【訓練營】基于OpenHarmony開源開發(fā)的機器狗
- pwm-voltage
- SI535x-20QFN-EVB,用于 Si5350 任意頻率 <125 MHz CMOS 時鐘發(fā)生器 + VCXO 的評估板
- ADR363A、3V 低功耗、低噪聲負參考電壓的典型應用
- DC2423A-A,基于具有遙測功能的 LTM9100 隔離式 48V 開關控制器的演示板
- 英特爾攜海信發(fā)布端側(cè)會議領域垂域模型解決方案,讓商務會議更安全更智能
- 英特爾攜手MAXHUB聯(lián)合發(fā)布企業(yè)級AI PC, 加速AI大模型在端側(cè)落地
- 助力低碳數(shù)字未來 英飛凌攜多款創(chuàng)新成果亮相2025慕尼黑上海電子展
- ?日清紡微電子科技賦能產(chǎn)業(yè)升級,亮相慕尼黑上海電子展
- 泰克閃耀 2025 慕尼黑上海電子展,引領測試技術新變革
- 破局AI眼鏡性能、續(xù)航、成本“不可能三角”:芯原推出高集成度參考設計方案
- 人形機器人成下一風口,各大車企紛紛入局,比智能汽車潛力更大?
- 業(yè)績最高 TDK為汽車應用推出電容值達100V的MLCC
- 微型柔性機器人:開啟智能救援與精準醫(yī)療新紀元
- 人工智能加速芯片設計:動態(tài)自適應流程引領高效創(chuàng)新
- 直播已結(jié)束【ADI 低噪聲 Buck 穩(wěn)壓器如何減小電源噪聲】
- Vicor 更好的供電方式,更高的性能、功能性及可靠性
- 免費申請 | Nordic Semiconductor nPM1300-EK PMIC 評估套件
- 看是德科技汽車電子精彩專題,為你的出行安全打call, 下載贏好禮!
- 芯幣競拍:感恩教師節(jié)專場
- 【社區(qū)大講堂】ARM+DSP雙核處理器應用程序開發(fā)
- 【爆款推薦】4路輸出、超簡約電源開發(fā)板,只需1塊錢!
- 一道題,測試你是不是MSP430的真愛粉兒~
- 閱讀Microchip多種連接接口SAM單片機精彩專題,參與活動贏好禮
- MPS 隔離式穩(wěn)壓 DC/DC 模塊——MIE系列首發(fā),邀你一探究竟!
- 安卓各版本分布情況:Android奧利奧已達到4.6%
- Android P最新UI及多任務界面曝光
- vivo聯(lián)合高通演示5G網(wǎng)絡:下載1.2G電影僅需8秒
- 新型iPhone破解器出現(xiàn) 美國警方紛紛剁手
- 美國出口禁令將帶來糟糕影響:投行下調(diào)中興通訊評級
- 三星S10真機再曝光 或全球首發(fā)屏下攝像頭技術
- 學會這些iPhone XR拍攝技巧 菜鳥也能拍大片
- 傳榮耀V20已量產(chǎn):配麒麟980處理器 或2699起
- 首款雙攝側(cè)面指紋翻蓋手機,三星W2019發(fā)起高端商務市場反擊
- 雷軍:創(chuàng)業(yè)過程猶如在風沙中穿越沙漠找水源