移植3- uboot之nandflash驱动移植

2023-11-13

2014.8.18 在上一篇文章中,我们已经将uboot启动起来了,但是如何将uboot+spl搞到nandflash中去,这样可以拨动拨码开关选择nandflash启动,就可以从nandflash启动了呢?因此需要在uboot中实现nandflash driver,并将nandflash可用的spl+uboot拷贝到nandflash中去

2014.8.19 通过查看硬件电路图可知,我的ok210用的nand flash芯片为MT29F8G08ABABA, 大小为8Gbit, PAGE=4kByte+224Byte, 1Block=128pages, 1Plane=1024 blocks,共两个planes. command set :ONFI NAND Flash Protocol
NandFlash按照接口分为ONFI , toggle两种 , 两种接口都支持同步和异步的方式。这个flash 是onfi,只支持异步操作
NandFlash比较混乱,无法统一操作,NAND的工艺一直在更新,需要NAND controller也要配套更新,于是提出了eMMC标准,就是将flash controller and flash 封装在一起,使用SDIO指令来访问,于是以后nandflash驱动就不需要了,只要sdio驱动,简单,好用!
2014.8.23-8.24参考http://blog.csdn.net/xiaojiaohuazi/article/details/8289007来移植,但是最后发现2410与s5pv210的nandflash controller差别很大,作者做的有问题
于是重新参考ok210板子自带的uboot1.3.4中/cpu/s5pc1xx/nand.c 来移植,但是发现无法识别flash芯片,READ ID命令工作不正常!
我猜测由于与nandflash相连的端口是复用的,因此需要先把这些端口配置为nandflash可用的端口,然后在进行nandflash操作!
2014.8.25 查看datasheet section5中4.4 i/o description, 这里用到的端口全部是复用的,因此需要设置MP0相关寄存器。还有NFCONF和NFCONT做一些设置,特别注意片选信号,可以查看底板图来确定(CS0)。现在/drivers/mtd/nand/nand_base.c中nand_read_byte可以打印出onfi 信息了,READID打印的信息与flash datasheet中显示一样,但是还是报错!
2014.8.26 在drivers/mtd/nand/nand_ids.c要配置我们的nand flash, 我们的flash id 为0x38. 这样uboot就识别flash了,下面测试flash read/write, 经测试 ,工作ok
2014.8.31 实现了8bit hardware ecc, 但是好像什么地方有问题,报0x180000之前均为坏块!测试0x200000之后的块可以正常的读写,不知为啥?难道真的将nand flash搞坏了?
2014.9.14 将hardware ecc去掉后,读写nandflash,0x200000之前的确实坏掉了
2014.9.14 居然不是8bit ecc,是1bit ecc,继续捣鼓.......
2014.9.21经测试发现,write与erase时,有时会把快搞坏的情况,重启板子也不好用!我应该是哪里配置的有问题,特别是timing mode! 继续debug
2014.9.22 TACLS之类的设置为7,7,7呀,应该时序没有问题!但是为什么每次写还是错误呢?ECC中会对ecc本身和标识坏块的字节进行ecc校验吗?
2014.10.1 原来是samsung uboot中的flash驱动代码中8 bit hardware ecc 读写有问题,OOB写的不对,改正后就可以工作了,终于赶在十一将这个驱动调出来了
调完了,等我将代码整理一下,再上传





本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

移植3- uboot之nandflash驱动移植 的相关文章

随机推荐

  • java实现写大量数据到文件中

    生成 txt文件 生成 csv文件 生成 xls文件 import java io BufferedWriter import java io File import java io FileOutputStream import java
  • 【缓存】缓存,这么用才真正达到缓存的效果

    1 概述 转载 https zhuanlan zhihu com p 62508629 一 什么是缓存 平常的开发项目中 多多少少都会使用到缓存 因为一些数据我们没有必要每次查询的时候都去查询到数据库 一个形象的比喻 数据库是人的身体 缓存
  • 序列比对算法-计算生物学

    1 序列比对指将两个或多个序列排列在一起 标明其相似之处 序列中可以插入间隔 通常用短横线 表示 对应的相同或相似的符号 在核酸中是A T 或U C G 在蛋白质中是氨基酸残基的单字母表示 排列在同一列上 这一方法常用于研究由共同祖先进化而
  • CSS 3D转换——transform 属性的 rotatex() 方法和 rotatey() 方法

    目录 CSS 3D转换 浏览器支持 转换属性 3D Transform方法 常用方法 rotatex 方法 rotatey 方法 结语 CSS 3D转换 CSS3 允许我们使用 3D 转换来对元素进行格式化 浏览器支持 表格中的数字表示支持
  • 无线局域网下的远程控制、文件传输以及代理设置[Windows

    需求 在同一个路由器连接的局域网下 Ubuntu通过Windows端上网 Windows端远程控制Ubuntu系统 主机 Windows10 被操控端 Ubuntu18 04 在Windows方下载一个客户端 如Termius 远程控制和操
  • sql注入(报错注入)适用于union无法使用的情况

    extractvalue函数原理 这是一个对xml文件进行查询的函数 它的作用是 会从目标xml文件中返回所包含查询值的字符串 标准语法为 extractvalue XML document Xpath string extractvalu
  • for循环实现1-100之间偶数和

    package com itheima 04 需求 求出1 100之间偶数和 分析 A 定义求和变量 初始化值是0 B 获取1 100之间的数据 用for循环实现 C 把获取到的数据进行判断 看是否是偶数 如果是 就累加 D 输出求和结果
  • kernel:关于linux内核重要文件的基本描述

    linux Makefile 文件 这个Makefile文件的主要作用是指示make程序最终使用独立编译连接成的tools 目录中的build执行程序将所有内核编译代码连接和合并成一个可运行的内核映像文件 image 具体是对 boot 中
  • 协处理器cp15

    CP15访问CP15寄存器的指令 在基于ARM的嵌入式应用系统中 存储系统通常是通过系统控制协处理器CP15完成的 ARM处理器使用协处理器CP15的寄存器来控制cache 极高速缓存 TCM 高速缓存 和存储管理 CP15包含16个32位
  • anaconda的安装和常用指令

    1 下载anaconda之后 首先打开anaconda prompt 输入 conda version获取当前anaconda的版本 有可能会出现 首先要清理所有的包 conda clean packages tarballs 可以Win
  • 如何控制Spring bean的生命周期

    先了解下Spring bean的生命周期 创建 初始化 销毁 这对读懂Spring源码十分有帮助 控制Spring bean的生命周期有3种方式 下面分别用代码展示 方式一 Bean 注解上手动指定bean的初始化方法和销毁方法 Confi
  • 操作系统 存储管理 分页分段

    操作系统 存储管理 分页分段 分页存储管理 是将一个进程的逻辑地址空间分成若干个大小相等的片 称为页面或页 并为各页进行编号 从0开始 分页地址中的地址结构如下 页表实现了从页号到物理块号的地址映像 通过查找该表 即可找到每页在内存中的物理
  • c语言在线翻译器,【C语言】【window】--在线翻译器.doc

    C语言 Windows 在线翻译器 01 程序简介 程序名称 编译器 vs2010 其它也可以 程序大小 10K 文件包括 exe skinh she SkinH dll msvcr100 dll 程序界面 02 任务说明 光影队 任务 L
  • 自定义JSP中的Taglib标签之四自定义标签中的Function函数

    Java代码如下 自定义JSP中的Taglib标签之四自定义标签中的Function函数 package org lxh taglib import java util List public class FunctionTag publi
  • 报错"your evaluation license has expired, pycharm will now exit"

    1 修改C Windows System32 drivers etc hosts文件 将 0 0 0 0 account jetbrains com 添加到hosts文件的最后一行2 访问 http idea lanyus com 获取注册
  • NIO下载超大文件(支持20个G)

    服务端 nio将文件流写入response author zhanghp2017he foxmail com date 2022 8 22 param response return void exception RequestMappin
  • 【LeetCode75】第二十九题 删除链表的中间节点

    目录 题目 示例 分析 代码 题目 示例 分析 给我们一个链表 让我们把链表中间的节点删了 那么最直观最基础的办法是遍历两边链表 第一遍拿到链表长度 第二次把链表中间节点删了 这个暴力做法我没事过 不过貌似是可以解决问题的 所以我觉得这题的
  • React-router 5.0 利用高阶函数实现路由嵌套(web)

    如今 react router 已经升级到v5 0版本 v4 0版本做了较大的改革 代码中依然使用v3 0版本的写法 于是准备整改为v4 0以上版本 遇到了很多坑 于是做个笔记 首先 对比一下 v3 0 和 v4 0 版本 v4 0提供了r
  • librdkafka consumer封装的一点总结

    关于librdkafka producer可以看这里 consumer相较于producer需要注意的问题就少得多了 首先是初始化 string errstr unique ptr
  • 移植3- uboot之nandflash驱动移植

    2014 8 18 在上一篇文章中 我们已经将uboot启动起来了 但是如何将uboot spl搞到nandflash中去 这样可以拨动拨码开关选择nandflash启动 就可以从nandflash启动了呢 因此需要在uboot中实现nan