g-bios support S3C6410 NOR Flash
本帖最后由 voidjackjiang 于 2010-09-20 10:47 编辑
Description:
实现g-bios对S3C6410 NOR Flsah的支持
Team member:
Camel Luo、KunKa Lu、Baker
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
昨天相对前天来说没有什么新的进展,对NORFLASH进行READ操作都已实现,关键就是SPI总线上面的/WP PIN与NORFLASH的WRITE ENABLE操作相关, /WP PIN似乎默认把NORFLASH 进行写保护了。现在在S3C6410的DATASHEET上面暂时找不到如何控制/WP PIN的方法,还在进一步探讨中 。
我们尝试了几乎所有的read命令,都能顺利执行。但是打开写保护标志位(WEL)的命令不能被执行,以至于page program、erase等写命令不能使用。
我注意到nor flash的/WP引脚是和写保护标志位相关的,但是6410板子的原理图没有画出nor flash,当然也没有画出/WP引脚的接法。我认为有必要拿万用表测一下这个引脚的状态(它是低电平有效)。今天没来得及做。
本帖最后由 liqunfeifei 于 2010-09-30 01:05 编辑
spi nor flash已经可以执行读指令。目前采用手动片选的方式传输数据。
整个调试的过程泥泞坎坷、充满疑惑,不愿意相信任何一个寄存器的默认值,调通之后才豁然开朗。其中有几个值得注意的地方,也是一直牵绊我们的地方:
1. SPI总线是以数据交换的方式进行通信。每一个时钟周期内master和slave必定会发出并且接收到1bit的数据。也就是说,如果同时使能rx fifo和tx fifo,rx fifo收到数据的数量将等于tx fifo发出数据的数量。因此,master发出指令之后需要继续发送数据以换得slave传回的数据。
2. 片选信号的低电平和高电平控制一次指令执行的起始和结束。所以,为保证片选使能之后第一个周期就能发送有效的指令,需要先将指令存入fifo再执行片选。
3. 不知道这块芯片接在SPI总线的channel0还是channel1,还有不清楚其他一些寄存器的值。只有试了。不过到最后它们看上去都变得很自然。
接下来我们的工作可以分成两部分。一是尝试用auto方式传输数据,也许这种方式能大量简化操作;二是根据现有的操作方式完善api,完成page program和sector erase等方法,最终把nor flash注册到flash子系统。
##更正:
前面第二点有错误.片选信号确实是控制指令的起始和结束,尤其是某些指令结束后必须及时把片选拉高.但是,似乎决定数据交换的时钟信号只是在发送数据时才产生.因此先片选,再发送数据到rx fifo也能成功执行指令.而且这样更符合使用习惯,也使代码实现更方便.
Baker把NORFLASH ID 读出来了,我今天基本上没有什么进展
今天晚上终于有所进展,由Baker Feng 把NORFLASH的JEDEC_ID读出来了。发现NORFLASH的I/O方式与NANDFLASH有很大的不同,NORFLASH似乎是在一个clock周期里,先后完成了从缓冲区发送一个bit数据以及从缓冲区接收一个bit数据的过程. 明天应该能把NORFLASH其它的一些操作完成.
本帖最后由 liqunfeifei 于 2010-09-28 00:02 编辑
Today, I tested the spi bus with the "JEDEC ID" command of norflash.
I tryed to switch the spi controller to manual mode instead of auto mode. But the rx fifo received nothing, again.
Honestly, I can't figure out the value of NCS_TIME_COUNT in CS_REG register. And I tryed many different numbers,but it dosen't work.
这两天一直在编译linux内核,包括今天早上,不过状态很不错,遇到的几个问题都顺利的解决了(usb不能挂载,iso文件不能挂载和一些文件名乱码)。中午把ldm2写了一遍,但是没有什么感觉,请教了好几位同学才写了出来。下午和晚上都是各个小组之间互相交流前段时间做项目的总结。由于我们组(nor flash)和spi组一直都卡在state register中有数据接受到但读出来全部是0这个地方,所以就没有什么好说的了。
从明天开始继续做nor flash。不过本人觉得还是大家一起把spi做好,正确读取出nor flash的id,才能继续做nor flash的工作了。要不然写再多的代码也没有用。
完成page_program()函数.
spi接口仍旧没能调通.
编写了NORFLASH的nor_read_id()、nor_read()、nor_erase()函数,但是SPI总线还没能实现API.