2015.3.27星期五 晴 链接脚本定义代码的排放顺序 硬件系统初始化:一:arm核初始化:(里面有指令)初始化ARM核的时候需要看arm核的手册指令:1.异常向量(最起码有个复位异常,初始化模式-svc) ldr r0, =_start mcr p15, 0, r0, c12, c0, 0 2.处理器模式-SVC3.关闭中断 mrs r0, cpsr bic r0, r0, #0x1f orr r0, r0, #0xd3 @1101 0011 //关闭irq,fiq和设置SVC msr cp…
u-boot分析(九) 上篇博文我们按照210的启动流程,分析到了初始化串口,由于接下来的取消存储保护不是很重要,所以我们今天按照u-boot的启动流程对nand flash初始化进行分析. 今天我们会用到的文档: 1.        2440芯片手册:http://download.csdn.net/detail/wrjvszq/8358949 2.        6410芯片手册:http://download.csdn.net/detail/wrjvszq/8358965 3.      …
简单制作一个Nand Flash驱动(只需要初始化Flash以及读Flash) 打开2440芯片手册,K9F2G08U0M芯片手册(因为2440中Nand Flash是用的256MB(2Gb)内存,8个数据引脚) 在芯片手册中得到K9F2G08U0M=2048块Block=128K页Pages=256MB=2Gb 1块Block=64页Pages 1页=(2K+64)B            (因为每个地址里都存放了一个字节,所以用B表示) 其中64B是存放ECC的OOB地址,(ECC:存放判断…
S3C2440对Nand Flash操作和电路原理(基于K9F2G08U0A) 转载自:http://www.cnblogs.com/idle_man/archive/2010/12/23/1915303.html S3C2440内部集成了一个Nand flash控制器.S3C2440的Nand flash控制器包含了如下的特性: l        一个引导启动单元 l        Nand Flash存储器接口,支持8位或16位的每页大小为256字,512字节,1K字和2K字节的Nand f…
初始化 NAND FLASH: 1)寄存器 NFCONT,用于开启 NAND FLASH控制器: 2)向寄存器NFCMD写入命令: 3)向寄存器NFADDR写入地址: 4)使用寄存器NFDATA进行数据的读写,在此期间需要不断的检测寄存器NFSTAT来获知 NAND FLASH的状态(忙/闲): 写 NAND FLASH: 1)发送页写入命令0x80: 2)发送页地址: 3)发送要写入的数据: 4)发送写入确定命令0x10: 5)检测忙信号: 读 NAND FLASH: 1)发送页读取命令0x0…
https://www.crifan.com/files/doc/docbook/linux_nand_driver/release/html/linux_nand_driver.html#nand_driver_mechanism [详解]如何编写Linux下Nand Flash驱动 版本:v2.2.1   Crifan Li 摘要 本文先解释了Nand Flash相关的一些名词,再从Flash硬件机制开始,介绍到Nand Flash的常见的物理特性,且深入介绍了Nand Flash的一些高级…
本章目标  了解NAND Flash 芯片的接口 掌握通过NAND Flash控制器访问NAND Flash的方法 8.1 NAND Flash介绍和NAND Flash控制器使用     NAND Flash在嵌入式系统中的地位与PC上的硬盘类似,用于保存系统运行所需的操 作系统.应用程序.用户数据.运行过程中产生的各类数据.与内存掉电数据丢失不同, NAND Flash中的数据在掉电后仍可永久保存. 8.1.1 Flash介绍     常用的Flash类型由NOR Flash和NAND Fl…
Flash名称的由来,Flash的擦除操作是以block块为单位的,与此相对应的是其他很多存储设备,是以bit位为最小读取/写入的单位,Flash是一次性地擦除整个块:在发送一个擦除命令后,一次性地将一个block,常见的块的大小是128KB/256KB,全部擦除为1,也就是里面的内容全部都是0xFF了,由于是一下子就擦除了,相对来说,擦除用的时间很短,可以用一闪而过来形容,所以,叫做Flash Memory.所以一般将Flash翻译为 (快速)闪存. NAND Flash 在嵌入式系统中有着广…
2.       软件方面 如果想要在Linux下编写Nand Flash驱动,那么就先要搞清楚Linux下,关于此部分的整个框架.弄明白,系统是如何管理你的nand flash的,以及,系统都帮你做了那些准备工作,而剩下的,驱动底层实现部分,你要去实现哪些功能,才能使得硬件正常工作起来. [内存技术设备,MTD(Memory Technology Device)] MTD,是Linux的存储设备中的一个子系统.其设计此系统的目的是,对于内存类的设备,提供一个抽象层,一个接口,使得对于硬件驱动设…
一.NAND Flash介绍和NAND Flash控制器的使用 NAND Flash在嵌入式系统中的作用,相当于PC上的硬盘 常见的Flash有NOR Flash和NAND Flash,NOR Flash上进行读取的效率非常高,但是擦除和写操作的效率很低,容量一般比较小:NAND Flash进行擦除和写操作的效率更高,并且容量更大.一般NOR Flash用于存储程序,NAND Flash用于存储数据. 1)NAND Flash的物理结构 笔者用的开发板上NAND Flash型号是K9F1G08,…
驱动可以参考At91_nand.c,这个比S3c2410.c (drivers\mtd\nand)简单多了 NAND FLASH是一个存储芯片那么: 这样的操作很合理"读地址A的数据,把数据B写到地址A" 问1. 原理图上NAND FLASH和S3C2440之间只有数据线, 怎么传输地址?答1.在DATA0-DATA7上既传输数据,又传输地址 当ALE为高电平时传输的是地址, 问2. 从NAND FLASH芯片手册可知,要操作NAND FLASH需要先发出命令 怎么传入命令?答2.在D…
在读者学习本章之前,最好了解Nand Flash读写过程和操作,可以参考:Nand Flash裸机操作. 一开始想在本章写eMMC框架和设备驱动,但是没有找到关于eMMC设备驱动具体写法,所以本章仍继续完成Nand Flash设备驱动,eMMC这个坑留在以后填.如果读者开发板为eMMC,本节驱动可能无法正常执行. 在裸机操作中,读者应了解Nand Flash时序图.Nand Flash片选.读写和擦除等操作,在此不再赘述. 一.Nand Flash驱动分析 Nand Flash设备驱动放在dri…
1.为什么NAND FLASH不能直接运行程序     NAND FLASH本身是连接到了控制器上而不是系统总线上.CPU运行机制为:CPU启动后是要取指令执行的,如果是SROM.NOR FLASH 等之类的,CPU 通过地址线发个地址就可以取得指令并执行,NAND FLASH不行,因为NAND FLASH 是管脚复用,它有自己的一套时序,这样CPU无法取得可以执行的代码,也就不能初始化系统了.     NAND FLASH是顺序存取设备,不能够被随机访问,程序就不能够分支或跳转,这样你如何去设…
关于nandflash的说明,请参考其他. 现在先贴出来韦东山先生的代码,作我学习之用. @************************************************ @ File:head.s @ 功能:设置SDRAM,将程序复制到SDRAM,然后跳到SDRAM继续执行 @************************************************ .text .global _start _start: @函数disable_watch_dog, m…
一.NAND FLASH的特点 S3C6410的NAND FLASH控制器有如下特点 1.自导入模式:复位后,引导代码被送入到8KB的STEPPINGSTONE中,引导代码移动完毕,引导代码将在STEPPINGSTONE中执行.导入期间,NAND FLASH控制器不支持ECC矫正. 2.NAND FLSH 控制器I/F:支持512字节和2KB页 3.软件模式:用户可以直接访问nand flash 控制器,该特性可以用于读/檫/编程nand flash 存储器. 1)写命令寄存器=NAND FLA…
概述 Flash名称的由来,Flash的擦除操作是以block块为单位的,与此相对应的是其他很多存储设备,是以bit位为最小读取/写入的单位,Flash是一次性地擦除整个块:在发送一个擦除命令后,一次性地将一个block,常见的块的大小是128KB/256KB,全部擦除为1,也就是里面的内容全部都是0xFF了,由于是一下子就擦除了,相对来说,擦除用的时间很短,可以用一闪而过来形容,所以,叫做Flash Memory.所以一般将Flash翻译为 (快速)闪存. NAND Flash 在嵌入式系统中…
4.1 nand flash启动u-boot nand flash 启动的时候,CPU 需要将 nand flash 中前面 4KB 的内容复制到 SRAM 中执行,然后将 NAND Flash 中的所有内容拷贝到 SDRAM中. 前4 KB 的拷贝 是硬件自动执行的. 4.1.1 地址空间 原理图如下: nand flash 只有数据总线,并没有像 SDRAM 一样有地址总线.这样就有两种寻址方式就不同. SDRAM 或 网卡.片内4K内存 都是地址总线接到 2440 上,他们的地址都是 CP…
一.s3c2440启动后会将nand flash的前4K程序复制到内部的sram中,这个过程是硬件自动完成的,但是如果我们的程序远远大于4K,这个时候就需要将程序从flash拷贝到内存中来运行了. 二.nand flash 接线图可以看出,nand flash没有地址总线,是八根数据线,SDRAM和网卡有地址总接到s3c2440的地址总线了,而nand flash没有地址线,所以他们的寻址方式不一样,SDRAM和网卡的地址是CPU可以看得见的,也就是CPU统一编址,而nand flash呢?也有…
注册 driver_register 通过 module_init(s3c2410_nand_init);注册 Nand Flash 驱动. 在 s3c2410_nand_init ()中通过 driver_register()注册 s3c2410_nand_driver 驱动程序,如下所示: static struct device_driver s3c2410_nand_driver = { .name          = "s3c2410-nand", .bus        …
1.NAND FLASH的硬件连接: 实验用的NAND FLASH芯片为K9F2G08U0C,它是三星公司的存储芯片,它的大小为256M.它的接线图如下所示: 它的每个引脚的分别为LDATA0-LDATA7为数据引脚.CLE为发送命令使能引脚.ALE为发送地址使能引脚.CE为芯片使能引脚.WE为写使能引脚.WP为写保护引脚.R/B为芯片是否繁忙的状态指示引脚,如下图所示: 2.NAND FLASH的操作: 根据NAND FLASH的芯片手册可以知道需要操作NAND FLASH一般的流程是发出命令…
NAND FLASH是一个存储芯片. 在芯片上的DATA0-DATA7上既能传输数据也能传输地址. 当ALE为高电平时传输的是地址. 当CLE为高电平时传输的是命令. 当ALE和CLE都为低电平时传输的是数据. 将数据发给nand Flash后,在发送第二次数据之前还要判断芯片是否处于空闲状态.一般是通过引脚RnB来判断,一般是高电平代表就绪,低电平代表正忙. 操作Nand Flash的一般步骤是: 1. 发命令 选中芯片 CLE设置为高电平 在DATA0-DATA7上输出命令值 发出一个写脉冲…
1, 要求:在4K 的代码以内,完成 NOR NAND 类型判断,初始化 NAND 复制自身到 SDRAM ,重定向. 2, 在 /arch/arm/cpu/arm920t/ 文件夹里 添加一个 inic.c 的文件,要在这个文件里面做上面说的事情. 修改 /arch/arm/cpu/arm920t/Makefile 加入 inic.c 的 编译. extra-y = start.o obj-y += init.o obj-y += cpu.o init.c 最后有补丁文件 3, 在 start…
关于NAND FLASH的结构是以页为单位写,以块为单位来擦除: 1Gb     为大页   page=2048Kb    BLOCK=128K 512Mb 为小页   page=512byte    BLOCK=16K PS:一页还有额外64字节OOB块,通常不计入读取范围. 另一个区别就是ECC的验证: ECC是每256个字节生产一个24位的值.NAND FLASH在写的时候会生成一个原始的ECC值保存在页的SPARE区,当要读页时也会生产一个ECC值,会跟SPARE的值进行异或比较,看结果…
1. 简要说明 JLink的调试功能.烧写Flash的功能都很强大,但是对于S3C2410.S3C2440的Flash操作有些麻烦:烧写Nor Flash时需要设置SDRAM,否则速率很慢:烧写Nand Flash只是从理论上能够达到,但是还没有人直接实现这点. 本文使用一个间接的方法来实现对S3C2410.S3C2440开发板的Nor.Nand Flash的烧写.原理为:JLink可以很方便地读写内存.启动程序,那么可以把一个特制的程序下载到开发板上的SDRAM去,并运行它,然后使用这个程序来…
1 nand flash的操作 目的:读地址A的数据,把数据B写到地址A. 问1. 原理图上NAND FLASH和S3C2440之间只有数据线,怎么传输地址?答1.在DATA0-DATA7上既传输数据,又传输地址,当ALE为高电平时传输的是地址. 问2. 从NAND FLASH芯片手册可知,要操作NAND FLASH需要先发出命令     怎么传入命令?答2.在DATA0-DATA7上既传输数据,又传输地址,也传输命令     当ALE为高电平时传输的是地址,     当CLE为高电平时传输的是…
start_armboot()分析:在start.S初始化后跳转到start_armboot实现第2阶段硬件相关的初始化(烧写擦除flash,网卡驱动,usb驱动,串口驱动,从FLASH读内核,启动内核等)然后调用main_loop();实现u-boot环境参数设置(print),读内核,启动内核等 start_armboot函数代码如下(位于u-boot-1.1.6/lib_arm/borad.c) void start_armboot (void) { ... for (init_fnc_p…
NAND Flash 关于NAND FlashS5PV210的NAND Flash控制器有如下特点:1) 支持512byte,2k,4k,8k的页大小2) 通过各种软件模式来进行NAND Flash的读写擦除等3) 8bit的总线4) 支持SLC和MCL的NAND Flash5) 支持1/4/8/12/16bit的ECC6) 支持以字节/半字/字为单位访问数据/ECC寄存器,以字为单位访问其他寄存器.注意:在此使用的Mini210S的NAND Flash类型为SLC,大小为1G,型号为K9K8G…
NAND FLASH是一个存储芯片那么: 这样的操作很合理"读地址A的数据,把数据B写到地址A" 问1. 原理图上NAND FLASH和S3C2440之间只有数据线,     怎么传输地址?答1.在DATA0-DATA7上既传输数据,又传输地址     当ALE为高电平时传输的是地址, 问2. 从NAND FLASH芯片手册可知,要操作NAND FLASH需要先发出命令     怎么传入命令?答2.在DATA0-DATA7上既传输数据,又传输地址,也传输命令     当ALE为高电平时…
flash是存储芯片的一种,通过特定的程序可以修改里面的数据.FLASH在电子以及半导体领域内往往表示Flash Memory的意思,即平时所说的“闪存”,全名叫Flash EEPROM Memory.flash存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还可以快速读取数据(NVRAM的优势),使数据不会因为断电而丢失. flash相对于EEPROM做的改进就是擦除时不再以字节为单位,而是以块为单位,一次简化了电路,数据密度更高,降低了成本.上M…
U-BOOT 对 Nand Flash 命令的支持 在 U­BOOT 下对 Nand Flash 的支持主要是在命令行下实现对 nand flash 的操作.对 nand flash 实现的命令 为:nand info.nand device.nand read.nand write.nand erease.nand bad. 用到的主要数据结构有:struct nand_flash_dev.struct nand_chip.前者包括主要的芯片型号.存储容量. 设备 ID.I/O 总线宽度等信息…