TI中文支持网
TI专业的中文技术问题搜集分享网站

关于GPMC的CS0接nand时,地址配置的问题

    使用自己做的am3358板子,ti sdk 8.0,gpmc的cs0接nand,dts配置之后,linux能够正常运行,

能够挂载nand上的ubi文件系统,但是读gpmc_config7_0的值与配置的不一样。

    下面是dts中的配置:

&gpmc {
status = "okay";
pinctrl-names = "default", "sleep";
pinctrl-0 = <&nandflash_pins_default>;
pinctrl-1 = <&nandflash_pins_sleep>;
ranges = <0 0 0x08000000 0x10000000>; /* CS0: NAND */

nand@0,0 {
reg = <0 0 0>; /* CS0, offset 0 */

    下面是linux起来后,读出的寄存器值:

Arago 2015.02 am335x-evm /dev/ttyO0

am335x-evm login: root
root@am335x-evm:~# devmem2 0x50000078
/dev/mem opened.
Memory mapped at address 0xb6f51000.
Read at address 0x50000078 (0xb6f51078): 0x00000F41
root@am335x-evm:~#

    此外,当我在gpmc的cs1上配置了另外的设备后,gpmc_config7_0还是0x00000f41,而gpmc_config7_1是和

我设置的参数一致的。两个设备的dts配置如下:

&gpmc {
status = "okay";
pinctrl-names = "default", "sleep";
pinctrl-0 = <&nandflash_pins_default>;
pinctrl-1 = <&nandflash_pins_sleep>;
ranges = <0 0 0x08000000 0x10000000 /* CS0: NAND */
1 0 0x18000000 0x1000000 /* CS1: dual_business 16M*/
>;
nand@0,0 {
reg = <0 0 0>; /* CS0, offset 0 */

…….

nor@1,0 {
#address-cells = <1>;
#size-cells = <1>;
reg = <1 0 0x1000000>; /* CS1, offset 0 */

    linux起来后,读出的值如下:

root@am335x-evm:~#root@am335x-evm:~# devmem2 0x50000078
/dev/mem opened.
Memory mapped at address 0xb6f19000.
Read at address 0x50000078 (0xb6f19078): 0x00000F41
root@am335x-evm:~# devmem2 0x500000a8
/dev/mem opened.
Memory mapped at address 0xb6fe3000.
Read at address 0x500000A8 (0xb6fe30a8): 0x00000F58

    请问下:

1、是不是我的配置哪里不对呢?

2、nand配置中“reg = <0 0 0>; /* CS0, offset 0 */”是不是需要改成“reg = <0 0 0x10000000>; /* CS0, offset 0 */” ?

3、gpmc挂两个设备后,当我访问(读/写)了cs1的地址后,再读/写nand上的文件系统时,会出错,信息如下:

root@am335x-evm:~# rmmod dualram_dev.ko 
[ 693.100338] UBI warning: ubi_io_read: error -74 (ECC error) while reading 176 bytes from PEB 45:55712, read only 176 bytes, retry
[ 693.113791] UBI warning: ubi_io_read: error -74 (ECC error) while reading 176 bytes from PEB 45:55712, read only 176 bytes, retry
[ 693.126891] UBI warning: ubi_io_read: error -74 (ECC error) while reading 176 bytes from PEB 45:55712, read only 176 bytes, retry
[ 693.139917] UBI error: ubi_io_read: error -74 (ECC error) while reading 176 bytes from PEB 45:55712, read 176 bytes
[ 693.150868] CPU: 0 PID: 1208 Comm: sh Tainted: G O 3.14.26-g07d13c6-dirty #7
[ 693.159164] Backtrace: 
[ 693.161759] [<c0011268>] (dump_backtrace) from [<c0011404>] (show_stack+0x18/0x1c)
[ 693.169690] r6:dda9b000 r5:000000b0 r4:ffffffb6 r3:00000000
[ 693.175638] [<c00113ec>] (show_stack) from [<c04ba7f0>] (dump_stack+0x20/0x28)

    (说明:我输入命令ls/sync/lsmod等,都可能出现上面这种现象。)

谢谢!

reg = <0 0 0>; /* CS0, offset 0 */

Jian Zhou:

CS1上接的是什么设备呢?另外CS0上的NAND的dts是按照TI SDK的dts修改的么?

QingKai Ji1:

回复 Jian Zhou:

Jian Zhou:您好!

    CS1上接的是个双口RAM(IDT 70T3339)。

    CS0上的nand是按照ti sdk的am335x-evm.dts修改的(主要是修改了分区部份,时序这些都没改)。

谢谢!

QingKai Ji1:

回复 QingKai Ji1:

    看sdk8.0的内核代码,gpmc这块,对于nand的地址分配,似乎是直接按照默认的16M配置的,

并没有使用dts中ranges参数;而对于普通的gpmc设备,会使用dts中的ranges参数重新配置

(gpmc_cs_remap)。是吗?

Jian Zhou:

回复 QingKai Ji1:

gpmc连接nand的这部分驱动不要改动,因为涉及到Linux系统内存分配的问题。在NAND空间分配的基础上,给SRAM分配地址空间。

QingKai Ji1:

回复 Jian Zhou:

Jian Zhou:您好!

    你是指的“ranges = <0 0 0x08000000 0x10000000 /* CS0: NAND */”不改吧?

这样的话,我新增加的设备(我需要增加多个设备)地址空间在0x08000000之前和

0x18000000之后分配都可以吧,地址空间和片选号间有没有限制?

(如小的片选,地址空间要求用小的地址空间之类)

谢谢!

Jian Zhou:

回复 QingKai Ji1:

新增加的设备,要在CS0之后的空间分配,不能在之前的空间分配。

QingKai Ji1:

回复 Jian Zhou:

Jian Zhou:您好!

    我现在一共要用到5个片选,一个异步nand,另外4个是同步双口RAM。其中两个16M,

两个64M。我现在有以下问题:

1、我们新增设备可以用的地址空间,只能是0x1800 0000到0x1FFF FFFF吗?

2、你提到的linux系统地址空间分配是需要0x0800 0000到0x17FF FFFF,这是用于什么的呢?

3、cs0接的nand的地址空间是否能修改,象我现在5个设备的情况,应该如何分配地址空间?

 

谢谢!

 

Jian Zhou:

回复 QingKai Ji1:

cs0 NAND的地址空间不要做修改,剩下的4个设备,在NAND占用空间之后分配就可以。

QingKai Ji1:

回复 Jian Zhou:

Jian Zhou:您好!

    nand地址空间不修改,能说下原因吗?内核代码中,gpmc这块,nand的实际配置的

地址空间是:0x0100 0000到0x01FF FFFF。

    如果新增的设备只能用0x1800 0000之后的地址空间,不能满足我们的地址空间要求。

我们需要64M * 2 + 16M * 2的地址空间,而0x1800 0000之后只有128M地址空间了。

谢谢!

QingKai Ji1:

回复 QingKai Ji1:

Jian Zhou:您好!

    我看到你在这个帖子里面说的:“对NAND的访问分个最小的CS空间即可,只要保证CS使能就可”,

不知道如何理解?

http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/85755.aspx

谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » 关于GPMC的CS0接nand时,地址配置的问题
分享到: 更多 (0)