ads调试2410,从nandflash读数据,读出的全部是零,大侠指导呀

[复制链接]
4008|10
 楼主| lxxxr 发表于 2007-4-3 10:45 | 显示全部楼层 |阅读模式
我按vivi写的,一段汇编程序初始化2410板子,然后将nandflash(k9f1208)上128k数据复制到sram中,读的程序用vivi带的nand_read_ll函数,可是读出的数据全是零,望大侠指导,我将相关程序贴出<br />
btiger2000 发表于 2007-4-3 10:50 | 显示全部楼层

先读出ID

  
 楼主| lxxxr 发表于 2007-4-3 11:12 | 显示全部楼层

id是什么?

btiger2000您说的id是什么呢?<br /><br />我将详细的相关程序贴在下面<br /><br />;reset&nbsp;nand<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;r1,=0x4E000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;NFCONF<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;r2,=0xf830&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;TWRPH0=3,TACLS=0,NAND&nbsp;CHIP&nbsp;INACTIVE,INITIALIZE&nbsp;ECC<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;r2,[r1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;r2,[r1]<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;bic&nbsp;r2,r2,#0x800&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;NAND&nbsp;CHIP&nbsp;ACTIVE,ENABLE&nbsp;NAND&nbsp;FLASH&nbsp;CONTROLER<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;r2,[r1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;r2,#0xff<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;strb&nbsp;r2,[r1,#0x04]&nbsp;&nbsp;&nbsp;&nbsp;;NFCMD<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;r3,#0<br />&gt1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;r3,r3,#0x1<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;r3,#0xa<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;blt&nbsp;%b1<br />&gt2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;r2,[r1,#0x10]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;NFSTAT<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;TST&nbsp;r2,#0X1<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;beq&nbsp;%b2<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;r2,[r1]<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;r2,r2,#0x800&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;disable&nbsp;chip<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;r2,[r1]<br />&gt<br />&gt<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;sp,=0x33df6ffb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;DW_STACK_START&nbsp;******&nbsp;&nbsp;setup&nbsp;stack&nbsp;pionter<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;fp,#0<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;r0,=0x33f00000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;VIVI_RAM_BASE&nbsp;&nbsp;&nbsp;<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;r1,#0x0<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;r2,#0x20000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;要拷贝128k<br />&gt;*******************************************************************************&nbsp;&nbsp;&nbsp;&nbsp;<br />&gt<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;bl&nbsp;nand_read_ll&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;nand_read_ll函数将nand的从0地址处开始的128k的内<br />&gt<br />&gt<br />&gt容读到&nbsp;ram的指定处<br />下面是nand_read_ll函数:<br /><br />#define&nbsp;NFCONF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*(volatile&nbsp;unsigned&nbsp;char&nbsp;*)0x4e000000)<br />&gt#define&nbsp;NFCMD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*(volatile&nbsp;unsigned&nbsp;char&nbsp;*)0x4e000004)<br />&gt#define&nbsp;NFADDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*(volatile&nbsp;unsigned&nbsp;char&nbsp;*)0x4e000008)<br />&gt#define&nbsp;NFDATA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*(volatile&nbsp;unsigned&nbsp;char&nbsp;*)0x4e00000c)<br />&gt#define&nbsp;NFSTAT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*(volatile&nbsp;unsigned&nbsp;char&nbsp;*)0x4e000010)<br />&gt#define&nbsp;BUSY&nbsp;1<br />&gt&nbsp;void&nbsp;wait_idle(void)&nbsp;{<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i;<br />&gt<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;while(!(NFSTAT&nbsp;&&nbsp;BUSY))<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;&nbsp;i&lt10;&nbsp;i++);<br />&gt}<br />&gt<br />&gt#define&nbsp;NAND_SECTOR_SIZE&nbsp;&nbsp;&nbsp;&nbsp;512<br />&gt#define&nbsp;NAND_BLOCK_MASK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(NAND_SECTOR_SIZE&nbsp;-&nbsp;1)<br />&gt<br />&gt/*&nbsp;low&nbsp;level&nbsp;nand&nbsp;read&nbsp;function&nbsp;*/<br />&gtint&nbsp;nand_read_ll(unsigned&nbsp;int&nbsp;*buf,&nbsp;unsigned&nbsp;long&nbsp;start_addr,&nbsp;int&nbsp;size)<br />&gt{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//(0x33f00000,#0x0,#0x20000)<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i,&nbsp;j;<br />&gt<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((start_addr&nbsp;&&nbsp;NAND_BLOCK_MASK)&nbsp;||&nbsp;(size&nbsp;&&nbsp;NAND_BLOCK_MASK))<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;invalid&nbsp;alignment&nbsp;*/<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;}<br />&gt<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;chip&nbsp;Enable&nbsp;*/<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;NFCONF&nbsp;&=&nbsp;~0x800;<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;&nbsp;i&lt10;&nbsp;i++);<br />&gt<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;for(i=start_addr;&nbsp;i&nbsp;&lt&nbsp;(start_addr&nbsp;+&nbsp;size);)&nbsp;{<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;READ0&nbsp;*/<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NFCMD&nbsp;=&nbsp;0;<br />&gt<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Write&nbsp;Address&nbsp;*/<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NFADDR&nbsp;=&nbsp;i&nbsp;&&nbsp;0xff;<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NFADDR&nbsp;=&nbsp;(i&nbsp;&gt&gt&nbsp;9)&nbsp;&&nbsp;0xff;<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NFADDR&nbsp;=&nbsp;(i&nbsp;&gt&gt&nbsp;17)&nbsp;&&nbsp;0xff;<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NFADDR&nbsp;=&nbsp;(i&nbsp;&gt&gt&nbsp;25)&nbsp;&&nbsp;0xff;<br />&gt<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait_idle();<br />&gt<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(j=0;&nbsp;j&nbsp;&lt&nbsp;NAND_SECTOR_SIZE;&nbsp;j++,&nbsp;i++)&nbsp;{<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;*buf&nbsp;=&nbsp;(NFDATA&nbsp;&&nbsp;0xff);<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;buf++;<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;}<br />&gt<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;chip&nbsp;Disable&nbsp;*/<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;NFCONF&nbsp;|=&nbsp;0x800;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;chip&nbsp;disable&nbsp;*/<br />&gt<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />&gt&nbsp;&nbsp;&nbsp;&nbsp;<br />&gt}<br />
 楼主| lxxxr 发表于 2007-4-3 16:18 | 显示全部楼层

没有大侠给俺建议吗?好失望

没有大侠给俺建议吗?好失望
阿南 发表于 2007-4-3 17:57 | 显示全部楼层

re:btiger2000已建议你先读k9f1208的ID了,

如果ID都没读正确,那肯定不行<br />可以去三星网站下公版的Nandflash的boot程序参考参考
 楼主| lxxxr 发表于 2007-4-3 18:18 | 显示全部楼层

先谢谢上面两位大侠的指导,我参考vivi源代码写的

先谢谢上面两位大侠的指导,我参考vivi源代码写的,vivi的源代码里并没有读nandflash的id的程序指令呀?也是上来设置寄存器然后就复制数据,并没有读它的id,难道不先读id就不能将里面的数据读出吗?请上面两大侠详细说一下,不胜感激!!!
wgj_fly 发表于 2007-4-4 00:57 | 显示全部楼层

驱动有问题?

  
阿南 发表于 2007-4-4 13:31 | 显示全部楼层

读id只是让你验证一下你的硬件,及读写程序是否正确。

假如你的硬件本身就有问题,你看这一堆的代码又有何用?
 楼主| lxxxr 发表于 2007-4-4 22:50 | 显示全部楼层

怎么读id?请给一段示例程序,我在实验室上不了国外的网

那位大侠给一个三星网站公布的Nandflash的boot源程序,俺的邮箱是:lxxxr@bit.edu.cn<br />大侠们也是过来人,都知道新手的郁闷,那位真正的大牛请帮帮忙,没有资料的顶一下<br />谢谢了
 楼主| lxxxr 发表于 2007-4-6 09:25 | 显示全部楼层

感谢

  
 楼主| lxxxr 发表于 2007-4-6 09:26 | 显示全部楼层

感谢greathead_2000,非常感谢您的帮助。

谢谢牛人!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

9

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部