u-boot nand flash read/write cmd

IMX6ULL移植篇-Nand-Flash操作命令二 Nand-Flash 操作命令: nand erase 、nand read、nand write命令 阅读详情
2008/08/03 15:30

支援的命令函數說明
1. nand info/nand device
功能:顯示當前nand flash晶片資訊。
函數調用關係如下(按先後順序):
static void nand_print(struct nand_chip *nand) ;

2. nand erase
功能:擦除指定塊上的數據。
函數調用關係如下(按先後順序):
int nand_erase(struct nand_chip* nand, size_t ofs, size_t len, int clean);
3. nand bad
功能:顯示壞塊。
函數調用關係如下(按先後順序):
static void nand_print_bad(struct nand_chip* nand);
int check_block (struct nand_chip *nand, unsigned long pos);
4. nand read
功能:讀取nand flash信息到SDRAM。
函數調用關係如下(按先後順序):
int nand_rw (struct nand_chip* nand, int cmd,size_t start, size_t len, size_t * retlen, u_char * buf);
static int nand_read_ecc(struct nand_chip *nand, size_t start, size_t len,
size_t * retlen, u_char *buf, u_char *ecc_code);
static void NanD_ReadBuf (struct nand_chip *nand, u_char * data_buf, int cntr);
READ_NAND(adr);
5. nand write
功能:從SDRAM寫數據到nand flash中。
函數調用關係如下(按先後順序):
int nand_rw (struct nand_chip* nand, int cmd,size_t start, size_t len, size_t * retlen, u_char * buf);
static int nand_write_ecc (struct nand_chip* nand, size_t to, size_t len,
size_t * retlen, const u_char * buf, u_char * ecc_code);
static int nand_write_page (struct nand_chip *nand, int page, int col, int last, u_char * ecc_code);
WRITE_NAND(d , adr);

 

4.2.32 nand info
列印nand flash資訊
CRANE2410 # nand info
Device 0: Samsung K9F1208U0B at 0x4e000000 (64 MB, 16 kB sector)
4.2.33 nand device <n>
顯示某個nand設備
CRANE2410 # nand device 0
Device 0: Samsung K9F1208U0B at 0x4e000000 (64 MB, 16 kB sector)
... is now current device
4.2.34 nand bad
CRANE2410 # nand bad
Device 0 bad blocks:
4.2.35 nand read
nand read InAddr FlAddr size
InAddr: 從nand flash中讀到記憶體的起始位址。
FlAddr: nand flash 的起始位址。
size: 從nand flash中讀取的數據的大小。
CRANE2410 # nand read 0x30008000 0 0x100000
NAND read: device 0 offset 0, size 1048576 ...
1048576 bytes read: OK
4.2.36 nand erease
nand erase FlAddr size
FlAddr: nand flash 的起始位址
size: 從nand flash中擦除資料塊的大小
CRANE2410 # nand erase 0x100000 0x20000
NAND erase: device 0 offset 1048576, size 131072 ... OK
4.2.37 nand write
nand write InAddr FlAddr size
InAddr: 寫到Nand Flash中的資料在記憶體的起始位址
FlAddr: Nand Flash的起始位址
size: 數據的大小
CRANE2410 # nand write 0x30f00000 0x100000 0x20000

NAND write: device 0 offset 1048576, size 131072 ...
131072 bytes written: OK

 

4.2.37 nboot
u-boot-1.1.4代碼對於nboot命令的幫助不正確,修改如下:
正確的順序為:
nboot InAddr dev FlAddr
InAddr: 需要裝載到的記憶體的位址。
FlAddr: 在nand flash上uImage存放的地址
dev: 設備號
需要提前設置環境變數,否則nboot不會調用bootm
CRANE2410 #setenv autostart yes
CRANE2410 # nboot 30008000 0 100000
Loading from device 0: <NULL> at 0x4e000000 (offset 0x100000)
Image Name: Linux-2.6.14.3
Created: 2006-07-06 7:31:52 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 897428 Bytes = 876.4 kB
Load Address: 30008000
Entry Point: 30008040
Automatic boot of image at addr 0x30008000 ...
## Booting image at 30008000 ...
Starting kernel ...
4.3 命令簡寫說明
所以命令都可以簡寫,只要命令前面的一部分不會跟其他命令相同,就可以不用寫全整個命令.
save命令
CRANE2410 # sa
Saving Environment to Flash...
Un-Protected 1 sectors
Erasing Flash...Erasing sector 10 ... Erased 1 sectors
4.4 把文件寫入NandFlash
如果把一個傳到記憶體中的檔寫入到Nand Flash中, 如:新的uboot.bin, zImage(內核),
rootfs等, 如果做呢?我們可以用Nand Flash命令來完成. 但是Nand Flash寫時,必須先要把Nand
Flash的寫入區全部擦除後,才能寫. 下面以把記憶體0x30008000起長度為0x20000的內容寫到Nand
Flash中的0x100000為例.
CRANE2410 # nand erase 0x100000 20000
NAND erase: device 0 offset 1048576, size 131072 ... OK
CRANE2410 # nand write 0x30008000 0x100000 0x20000
NAND write: device 0 offset 1048576, size 131072 ...
131072 bytes written: OK

 

http://tw.myblog.yahoo.com/tzeng0152002/article?mid=326&prev=327&next=324

关于串口读写NAND闪存的用法 nandnand命令提供了对 NAND 闪存的直接访问,允许你执行读取、写入、擦除和格式化等操作。 阅读详情

相关推荐

MPC8313E NAND Flash启动全解析:FCM硬件ECC与U-Boot两阶段设计

在嵌入式系统开发中,从非易失性存储器可靠启动是产品稳定性的基石。NAND Flash凭借其高存储密度和低成本优势,成为嵌入式设备常用的启动介质,但其固有的位错误率问题需要通过错误检查与纠正机制来解决。硬件ECC引擎通过自动校验与纠错,将CPU从繁重的软件计算中解放,显著提升了启动可靠性。这一技术广泛应用于对成本敏感且要求高可靠性的工业控制、网络设备和消费电子等领域。本文以MPC8313E处理器的Flash控制机器为核心,深入剖析其硬件ECC原理与U-Boot两阶段启动流程,为开发者构建稳定的NAND Fla

weixin_30482181的博客 446

UBOOT

将Linux 系统移植到开发板上去,在移植 Linux之前我们需要先移植一个 bootloader 代码,这个 bootloader 代码用于启动 Linux 内核,bootloader有很多,常用的就是 U-Boot。移植好 U-Boot 以后再移植 Linux 内核,移植完 Linux 内核以后Linux 还不能正常启动,还需要再移植一个根文件系统(rootfs),根文件系统里面包含了一些最常用的命令和文件。 所以 U-Boot、Linux kernel 和 rootfs...

shirley的专栏 533

MPC8315E FCM控制器深度解析:从寄存器配置到NAND Flash驱动实战

在嵌入式系统开发中,存储控制器是连接处理器与外部存储设备的核心桥梁,其稳定性和效率直接影响系统可靠性。以NAND Flash控制器为例,它通过硬件自动处理复杂的协议时序和ECC校验,将CPU从繁琐的底层操作中解放出来,从而提升系统性能并保障数据完整性。这类控制器通常基于可编程的寄存器模型,开发者通过配置指令序列、时序参数和模式寄存器,实现对存储介质的精准控制。其技术价值在于为工业控制、网络通信等高可靠性领域提供了坚实的存储基础。本文将聚焦于MPC8315E处理器的增强型本地总线控制器(eLBC)中的Flas

459

uboot 中Nand flash 常用操作命令解析

uboot 支持nand flash的数据及oob数据的读写显示操作,也至此手动标记坏块的命令,当一般不建议手动修改flash的坏块标志。这里介绍在uboot中操作和查看flash数据的常用命令及方法。 说明: 本文测试使用的flash信息如下: SPI Nand(cs 0) ID: 0xc2 0x12 Name:"MX35LF1GE4AB" Block:128KB Page:2KB Ch......

Biao 1万+

嵌入式Linux NAND Flash驱动配置与UBIFS文件系统实践指南

在嵌入式系统开发中,存储方案的选择是影响产品性能与可靠性的关键。NAND Flash凭借其高密度和低成本,成为主流存储介质,但其独特的物理特性,如需要先擦后写、存在坏块等,对软件驱动和文件系统提出了特殊要求。Linux内核的MTD(Memory Technology Device)子系统为此提供了统一的抽象层,向下管理各类Flash控制器,向上为文件系统提供一致接口。基于此,UBIFS文件系统应运而生,它构建在UBI卷管理层之上,能有效处理NAND Flash的坏块管理和磨损均衡,显著提升数据可靠性。本文以

weixin_34245082的博客 308

MT29F4G08 NAND Flash驱动开发全解析:从物理架构到Linux适配实战

NAND Flash作为一种主流的非易失性存储介质,以其高密度、低成本的优势广泛应用于嵌入式系统、消费电子和工业控制领域。其核心原理基于浮栅晶体管存储电荷,通过复杂的地址复用机制访问由页、块、平面构成的立体存储阵列。这种结构带来了高容量,但也引入了必须由软件管理的特性,如坏块管理和ECC校验,以确保数据可靠性。在工程实践中,驱动开发者需要精确控制命令时序、配置硬件控制器,并适配文件系统层。本文以经典的SLC NAND芯片MT29F4G08为例,深入剖析其物理架构、操作时序,并重点结合全志T113平台,详解在

weixin_30787531的博客 318

u-boot nand flash read/write cmd 调用关系和用法

<br /><br />参考:http://blog.csdn.net/flylonginsky/archive/2008/08/22/2812242.aspx<br />支援的命令函數說明<br />1. nand info/nand device<br />功能:顯示當前nand flash晶片資訊。<br />函數調用關係如下(按先後順序):<br />static void nand_print(struct nand_chip *nand) ;<br />2. nand erase<br />功能

hadise的专栏 1786

实现Nand的读,写和擦除操作

1.CPU发送命令0x00到命令寄存器2.CPU发送列地址到地址寄存器3.CPU发送列地址到地址寄存器4.CPU发送行地址到地址寄存器5.CPU发送行地址到地址寄存器6.CPU发送行地址到地址寄存器7.CPU发送命令0x30到命令寄存器8.通过状态寄存器判断Nand是否准备就绪 9.CPU通过数据寄存器获取Nand发送过来的数据Nand的数据是:1可以变0,但是0不能变1(除非擦除) 。擦除Nand以后,Nand的数据都是1。读取Nand某个地址(例如0地址)开始连续1个页的数据到内存的0x20018

wangjie36的博客 1758

嵌入式NAND Flash驱动开发:基于IFC控制器的U-Boot与Linux内核配置实战

在嵌入式系统开发中,NAND Flash作为一种非易失性存储介质,因其高密度和低成本而被广泛应用。其工作原理基于电荷存储,通过页编程和块擦除进行操作,但存在擦写寿命有限和比特翻转等物理挑战。为了有效管理这些特性并提升系统可靠性,需要引入闪存转换层和坏块管理机制,其技术价值在于为上层应用提供稳定、可靠的块设备抽象。这一技术广泛应用于工业控制、网络设备和消费电子等需要本地数据存储的场景。本文聚焦于Freescale IFC控制器,深入解析其硬件抽象角色,涵盖时序生成和硬件ECC等核心功能,并详细演示了如何在U-

weixin_33831673的博客 438

通俗易懂的图解二叉搜索树、AVL树和红黑树

搜索是一种很常见的需求,当数据较多时,如何找到目标对象时,即需要搜索查找。 那么如何快速找到目标呢,最朴素的思想就是暴力查找,一个一个对比。 显然,当数据量增大时,我们需要优化查找方法获取更快的查找速度,我们可以通过维护一个有序数组,从而实现二分查找,查找速度从O(n)降为O(longn)。 但是数组并不便于插入和删除,链表便成为了最好的选择。 既然是采用二分查找,那么不如直接按照查找的步骤维护一种数据结构,于是二叉搜索树出现了。 二叉搜索树的性质为: 若左子树不为空,则左子树上所有节点值都小于根结点值;

暗色光的博客 758

shader基于高度的权重混合

效果图: 基于高度的权重混合 , 效果描述: (1)混合:三层混合, 例如 第一层是草,第二层是石头,第三层是沙子,三者混合显示 (2)权重: 三层的权重的和 为1, 三者是此消彼长的关系 (3)高度:高度会限制或者说是 束缚 着 效果 关于混合,再多说几句: (1)基于权重的混合:权重 ,跟顺序没有关系 只跟权重的大小有关系(在一层一层界限不清晰的地方,特别适用!!效果极好!!!!) (2)基于叠加的混合: 叠加 就是 一层一层的往上加。。。。 所以顺序特别重要(在雪地等效果中使用:因为

木马人 1118

zynq在u-boot中导入导出nand文件

正常情况下,只用到flash前面1MB这里只写flash的前面1MB。

qq_26074053的博客 98

两轮差速移动机器人运动分析、建模和控制

两轮差速运动分析及建模运动学分析三种运动状态分析函数模型仿真验证直线验证曲线验证旋转验证运动控制 运动学分析 运动特性为两轮差速驱动,其底部后方两个同构驱动轮的转动为其提供动力,前方的随动轮起支撑作用并不推动其运动,如图1两轮差速驱动示意图所示。 定义其左右驱动轮的中心分别为Wl和Wr,且对应线速度为Vl和Vr,该值可以通过电机驱动接口输出的角转速ωl,ωr2和驱动轮半径r求得,即: Vl=r⋅...

启小新的博客 8万+

u-boot的nand层次分析

s3c2440 u-boot-1.1.6 移植过u-boot-1.1.6的都知道我们只是在/cpu/arm/s3c24x0/目录下新建一个nand_flash.c 写好这个程序后,我们在uboot循环模式的时候就能够使用nand read等命令,那么这之间是怎么联系起来的呀??? 其实由于s3c2440的特点,

红娃子 1715

STM32无线遥控小车的设计

基于SPI通信的无线摇杆小车的设计

weixin_69414084的博客 2928

kivy--入门(一)(Windows)python

从零开始学习kivy 由于课程需要写一个app,还要写报告,这就很愁人,头秃,脑壳大。 虽然学过Android,但是小编对于Java就像对牛弹琴似的,不能说完全不懂,只能说Java这个语言不太适合我,不学还不行,还是先利用python的kivy编写一个吧。 在各大网站搜索开发app,发现适合写手机app的除了Android还有kivy,所以还是先学习如何使用吧! 文章目录从零开始学习kivy前言一、安装二、添加按钮+标签三、文本输入(TextInput)总结 前言 首先推荐这篇博客kivy的安装和使用

刘念卿的博客 9970

zynq的nand启动

【代码】zynq的nand启动。

qq_26074053的博客 252

ENVI-met新手必看:从零开始创建城市微气候模型(附详细步骤+底图制作技巧)

本文为ENVI-met新手提供从零开始创建城市微气候模型的详细指南,包括环境准备、参数配置、底图制作技巧和三维模型构建步骤。特别针对常见问题提供解决方案,帮助初学者快速掌握城市微气候模拟技术,提升建模效率。

weixin_29269441的博客 407

移植u-boot学习笔记7-----修改代码之支持nand flash

支持了nand flash启动并不是说支持了以后对nand flash的读写操作,支持nand flash启动只需要在重定位时(把代码从nand flash拷贝到SDRAM的函数copy_code_to_sdram)x写出一个nand flash的读函数nand_read_ll(),吧代码从nand flash复制到sdram里面去就可以了, 1、修改UBOOT支持NAND FLASH

qingkongyeyue的博客 2080

华为OD机试新系统真题【计算电动车续航里程】

华为OD机试 新系统真题【计算电动车续航里程】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【计算电动车续航里程】多语言题解。

qq_45776114的博客 785

ElectrolyteGPT:首个电池电解液逆向设计的生成式 AI 系统 —— 算法原理与复现解析

数据驱动的重要性:1100 万→100 万的精心筛选,比单纯增大模型更有效领域适配:fLine 表示法、正则分词、化学感知的数据增强(SMILES randomization)都是关键小模型的力量:6M 参数在特定化学空间的表现,远超通用大模型在相同任务上的零样本能力条件生成的极限:10 维条件导致模型崩溃,提示我们需要更好的条件编码策略(如 diffusion guidance、RLHF-style 偏好优化)未来方向配方实验验证。

ASKCOS博客 124

第一次移植uboot(2)(NAND中环境变量读写) .

原文出处:http://blog.csdn.net/ll_0520/article/details/6043675 /*在第一次移植的基础上增加了S3C2440对NAND FLASH(k9f2g08u0a)中环境变量的读取和保存,写页的软件ECC扩展到了2KB*/ /*2010.11.21--2010.11.28*/ /*交叉编绎工具:cross-3.3.2.tar.bz2*/ /*默认当

周欢的优快云 860

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: yaffs2源代码情景分析
下一篇: 從u-boot傳bootargs給kernel
张志龙
博客等级 码龄24年 412粉丝 131原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值