急急急!!!关于AT91SAM9260开发板的问题

[复制链接]
3358|8
 楼主| hrb_lingyb 发表于 2007-8-14 00:02 | 显示全部楼层 |阅读模式
<br />我有一块AT91SAM9260开发板,然后照着开发板一模一样又作了一块自己的开发板,除了将NAND&nbsp;FLASH换<br /><br />成NOR&nbsp;FLASH之外,其它都一样。我换的NOR&nbsp;FLASH是KH29LV640DT-B&nbsp;(4M&nbsp;x&nbsp;16bit),16位数据总线。<br /><br />我使用AT91SAM9260的NCS6做NOR&nbsp;FLASH的片选,NCS6的BANK地址为0X7000&nbsp;0000,NCS6是A13(即P13)的<br /><br />外围B功能(peripheral&nbsp;B&nbsp;function).<br />我使用A13(PC13)做NOR&nbsp;FLASH的CE#。<br />我可以在我做的板子上下载和正确地运行U-BOOT,但它总是取得错误的NOR&nbsp;FLASH厂商ID号和设备ID号。<br /><br />这就是我的问题。我问过我公司的一位资深硬件人员,他说我做的开发板的电路是没有问题的。<br />正确的厂商ID号和设备ID号都应该为0XC2,但是我获得的总是0XC。<br /><br />下面是我写的关于NOR&nbsp;FLASH(在U-BOOT里面)的主要代码:<br /><br />&nbsp;<br />#define&nbsp;AT91C_SM_NWE_SETUP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0&nbsp;&lt&lt&nbsp;0)<br />#define&nbsp;AT91C_SM_NCS_WR_SETUP&nbsp;&nbsp;&nbsp;(0&nbsp;&lt&lt&nbsp;8)<br />#define&nbsp;AT91C_SM_NRD_SETUP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0&nbsp;&lt&lt&nbsp;16)<br />#define&nbsp;AT91C_SM_NCS_RD_SETUP&nbsp;&nbsp;&nbsp;(0&nbsp;&lt&lt&nbsp;24)<br />#define&nbsp;AT91C_SM_NWE_PULSE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(5&nbsp;&lt&lt&nbsp;0)&nbsp;//lingyb&nbsp;Write<br />#define&nbsp;AT91C_SM_NCS_WR_PULSE&nbsp;&nbsp;&nbsp;(7&nbsp;&lt&lt&nbsp;8)&nbsp;//lingyb&nbsp;cs&nbsp;Write<br />#define&nbsp;AT91C_SM_NRD_PULSE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(5&nbsp;&lt&lt&nbsp;16)&nbsp;//lingyb&nbsp;Read<br />#define&nbsp;AT91C_SM_NCS_RD_PULSE&nbsp;&nbsp;&nbsp;(7&nbsp;&lt&lt&nbsp;24)&nbsp;//lingyb&nbsp;cs&nbsp;Read<br />#define&nbsp;AT91C_SM_NWE_CYCLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(12&nbsp;&lt&lt&nbsp;0)&nbsp;//lingyb&nbsp;Write<br />#define&nbsp;AT91C_SM_NRD_CYCLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(12&nbsp;&lt&lt&nbsp;16)&nbsp;//lingyb&nbsp;Read<br />#define&nbsp;AT91C_SM_TDF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1&nbsp;&lt&lt&nbsp;16)<br />&nbsp;<br />#define&nbsp;FLASH_BASE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x70000000<br />typedef&nbsp;volatile&nbsp;unsigned&nbsp;char&nbsp;vu_char;<br />&nbsp;<br />unsigned&nbsp;long&nbsp;nor_init&nbsp;(void)<br />{&nbsp;<br />&nbsp;vu_char*&nbsp;addr;&nbsp;<br />&nbsp;<br />&nbsp;&nbsp;/*&nbsp;Configure&nbsp;SMC&nbsp;CS6&nbsp;*/<br />&nbsp;&nbsp;AT91C_BASE_SMC-&gtSMC_SETUP6&nbsp;=&nbsp;(AT91C_SM_NWE_SETUP&nbsp;|&nbsp;AT91C_SM_NCS_WR_SETUP&nbsp;|<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AT91C_SM_NRD_SETUP&nbsp;|&nbsp;AT91C_SM_NCS_RD_SETUP);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;AT91C_BASE_SMC-&gtSMC_PULSE6&nbsp;=&nbsp;(AT91C_SM_NWE_PULSE&nbsp;|&nbsp;AT91C_SM_NCS_WR_PULSE&nbsp;|<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AT91C_SM_NRD_PULSE&nbsp;|&nbsp;AT91C_SM_NCS_RD_PULSE);<br />&nbsp;<br />&nbsp;&nbsp;AT91C_BASE_SMC-&gtSMC_CYCLE6&nbsp;=&nbsp;(AT91C_SM_NWE_CYCLE&nbsp;|&nbsp;AT91C_SM_NRD_CYCLE);<br />&nbsp;<br />&nbsp;&nbsp;AT91C_BASE_SMC-&gtSMC_CTRL6&nbsp;=&nbsp;(AT91C_SMC_READMODE&nbsp;|&nbsp;AT91C_SMC_WRITEMODE&nbsp;|<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AT91C_SMC_NWAITM_NWAIT_DISABLE&nbsp;|&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AT91C_SMC_DBW_WIDTH_SIXTEEN_BITS&nbsp;|&nbsp;AT91C_SM_TDF);<br />&nbsp;<br />&nbsp;/*&nbsp;enable&nbsp;the&nbsp;nor&nbsp;flash&nbsp;chip&nbsp;select&nbsp;*/<br />&nbsp;AT91C_BASE_PIOC-&gtPIO_PDR&nbsp;=&nbsp;AT91C_PIO_PC13;<br />&nbsp;AT91C_BASE_PIOC-&gtPIO_BSR&nbsp;=&nbsp;AT91C_PIO_PC13;<br />&nbsp;<br />printf(&quot;AT91C_BASE_PIOC-&gtPIO_ABSR&nbsp;&&nbsp;AT91C_PIO_PC13=0x%x&nbsp;
&quot;,AT91C_BASE_PIOC-&gtPIO_ABSR&nbsp;&&nbsp;<br /><br />AT91C_PIO_PC13);//lingyb<br />printf(&quot;AT91C_BASE_PIOC-&gtPIO_PSR&nbsp;&&nbsp;AT91C_PIO_PC13=0x%x&nbsp;
&quot;,AT91C_BASE_PIOC-&gtPIO_PSR&nbsp;&&nbsp;&nbsp;<br /><br />AT91C_PIO_PC13&nbsp;);//lingyb<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;get&nbsp;manufacturer&nbsp;ID&nbsp;and&nbsp;device&nbsp;ID&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;addr&nbsp;=&nbsp;(vu_char*)FLASH_BASE;<br />&nbsp;&nbsp;addr[0x555]&nbsp;=&nbsp;0xAA;<br />&nbsp;&nbsp;addr[0x2aa]&nbsp;=&nbsp;0x55;<br />&nbsp;&nbsp;addr[0x555]&nbsp;=&nbsp;0x90;<br />&nbsp;&nbsp;ID_manuf&nbsp;&nbsp;=&nbsp;(ulong)addr[0];<br />&nbsp;&nbsp;ID_device&nbsp;=&nbsp;(ulong)addr[1];<br />&nbsp;&nbsp;/*&nbsp;restore&nbsp;read&nbsp;mode&nbsp;*/<br />&nbsp;&nbsp;addr[0x0000]&nbsp;=&nbsp;0xF0;<br />&nbsp;<br />printf(&quot;Manuf.&nbsp;ID&nbsp;@&nbsp;0x%08lx:&nbsp;0x%08lx
&quot;,&nbsp;(ulong)addr,&nbsp;ID_manuf);<br />printf(&quot;Device&nbsp;ID&nbsp;@&nbsp;0x%08lx:&nbsp;0x%08lx
&quot;,&nbsp;(ulong)(&addr[1]),&nbsp;ID_device);<br />&nbsp;<br />}<br /><br />我实在是找不到是哪里出错了?难道是还有什么寄存器我没有设置?或者是SMC_PULSE6&nbsp;和&nbsp;SMC_CYCLE6的<br />时序我没有设对?我已经试过了SMC_PULSE6&nbsp;和&nbsp;SMC_CYCLE6时序的很多种组合,但获得的厂商ID总是0XC<br /><br />。<br />有哪位大侠能帮到我吗,真的是非常感激!!!<br />
wangkj 发表于 2007-8-14 07:03 | 显示全部楼层

md 10000000

if&nbsp;all&nbsp;date&nbsp;is&nbsp;0xff?
szembed 发表于 2007-8-14 07:51 | 显示全部楼层

nor flash接到片选6?

nor&nbsp;flash接到片选6?<br /><br />那就要重新培植这个片选6了,这个里面配置起来比较麻烦。
 楼主| hrb_lingyb 发表于 2007-8-14 08:49 | 显示全部楼层

szembed,非常感谢您的回复!!

szembed:<br />&nbsp;&nbsp;&nbsp;非常感谢您的回复。那您能不能指导一下怎么配置这个NCS6呢?因为我们的硬件已经作出来了,可能不好改了。谢谢!
 楼主| hrb_lingyb 发表于 2007-8-14 08:54 | 显示全部楼层

wangkj,感谢您的关注

md&nbsp;命令的结果如下<br /><br />md&nbsp;10000000<br />30003000&nbsp;39bc39bc&nbsp;39bc39bc&nbsp;39bc39bc&nbsp;<br />&nbsp;39bc39bc&nbsp;39bc39bc&nbsp;39bc39bc&nbsp;39bc39bc<br />&nbsp;....&nbsp;.........&nbsp;......&nbsp;......&nbsp;&nbsp;...<br />&nbsp;39bc39bc&nbsp;39bc39bc&nbsp;39bc39bc&nbsp;39bc39bc<br /><br /><br />md&nbsp;70000000<br />&nbsp;39bc39bc&nbsp;39bc39bc&nbsp;39bc39bc&nbsp;39bc39bc<br />&nbsp;39bc39bc&nbsp;39bc39bc&nbsp;39bc39bc&nbsp;39bc39bc<br />&nbsp;....&nbsp;.........&nbsp;......&nbsp;......&nbsp;&nbsp;...<br />&nbsp;39bc39bc&nbsp;39bc39bc&nbsp;39bc39bc&nbsp;39bc39bc
wangkj 发表于 2007-8-14 09:06 | 显示全部楼层

nor flash没配置的前提下读出来的都是ff

如果不是,可能你的硬件连接有问题!<br />这是9200的经验,如果是9260的话不知道是不是这样。<br />
 楼主| hrb_lingyb 发表于 2007-8-14 14:38 | 显示全部楼层

to wangkj

wangkj:<br />&nbsp;&nbsp;&nbsp;我在我的板子上试过,md&nbsp;70000000&nbsp;和&nbsp;md&nbsp;40000000&nbsp;得出的结果都是一样的:<br />39bc39bc&nbsp;39bc39bc&nbsp;39bc39bc&nbsp;39bc39bc<br />39bc39bc&nbsp;39bc39bc&nbsp;39bc39bc&nbsp;39bc39bc<br />....&nbsp;.........&nbsp;......&nbsp;......&nbsp;&nbsp;...<br />39bc39bc&nbsp;39bc39bc&nbsp;39bc39bc&nbsp;39bc39bc<br />其中40000000是NCS3的BAND地址,而NCS3是NAND&nbsp;FLASH专用的片选。我们没有装上<br />NAND&nbsp;FLASH,NCS3是空闲的<br />
wangkj 发表于 2007-8-14 14:59 | 显示全部楼层

0XC2,但是我获得的总是0XC??

你得到的是多少?<br />增加调试语句:得到类似结果,然后猜测原因<br />Manufacturer&nbsp;ID:&nbsp;0089<br />Manufacturer:&nbsp;Intel&nbsp;(not&nbsp;supported&nbsp;yet)<br />Device&nbsp;ID:&nbsp;0018<br />Unknown&nbsp;Device&nbsp;ID:&nbsp;0018<br />还有就是ncs的配置寄存器的值是否正确。<br />可能是这的原因。
 楼主| hrb_lingyb 发表于 2007-8-16 21:00 | 显示全部楼层

感谢各位的关注

非常感谢各位的关注,这个问题我请教了另一位高深人士,现在已解决。<br />现把一些关键信息给出如下:<br />该高深人士只是改了一下时序,同时又将vu_char改为vu_short问题就解决了,<br />说是什么A0地址线没使用,输入0XAAA到总线上就变成0X555。目前问题虽已<br />解决,但其中的道理我还没弄懂。但由于别的事情太忙,所以弄懂这个原理<br />就得等到以后较清闲时再做了。谢谢各位的关注!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

1

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