使用自己做的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 */