1. 重新开机启动
- U-Boot 2010.06-rc1 (Sep 10 2012 - 09:34:54)
-
- DRAM: 64 MiB
- Flash: 512 KiB
- NAND: 256 MiB
- *** Warning - bad CRC or NAND, using default environment
-
- In: serial
- Out: serial
- Err: serial
- Net: dm9000
- SMDK2410 # printenv
- bootdelay=3
- baudrate=115200
- ethaddr=08:00:3e:26:0a:5b
- ipaddr=192.168.4.251
- serverip=192.168.4.250
- netmask=255.255.255.0
- stdin=serial
- stdout=serial
- stderr=serial
- ethact=dm9000
-
- Environment size: 175/65532 bytes
- SMDK2410 # setenv ipaddr 192.168.4.253
- SMDK2410 # saveenv
- Saving Environment to NAND...
- Erasing Nand...
- Warning: Erase size 0x00010000 smaller than one erase block 0x00020000
- Erasing 0x00020000 instead
- Erasing at 0x40000 -- 100% complete.
- Writing to Nand... done
Warning - bad CRC or NAND, using default environment
之前修改的环境变量没有保存,这是什么情况?
2.先判断是读出错还是写出错,因为己经可以进入uboot的命行行,可以利用里面的命令来进行判断.
2.1 判断读是否出错:
nand flash中从0-256存的是编译出来的u-boot.bin,可以显示出0x0-0x40000与u-boot.bin这个文件进行比较,如果不一样,则说明读出错.
- //a. 将nand中从0x40000-0x40000+0x100处的数据读到内存0x30000000处
- SMDK2410 # nand read 0x30000000 0x0 0x100
-
- NAND read: device 0 offset 0x0, size 0x100
- 256 bytes read: OK
//b. 按字节读取0x3000000,个数为0x100
- SMDK2410 # md.b 0x30000000 0x100
-
- 30000000: 12 00 00 ea 14 f0 9f e5 14 f0 9f e5 14 f0 9f e5 ................
- 30000010: 14 f0 9f e5 14 f0 9f e5 14 f0 9f e5 14 f0 9f e5 ................
- 30000020: 20 01 d8 33 80 01 d8 33 e0 01 d8 33 40 02 d8 33 ..3...3...3@..3
- 30000030: a0 02 d8 33 00 03 d8 33 60 03 d8 33 ef be ad de ...3...3`..3....
-
- //c. 跟u-boot.bin比较一下
- root@ubuntu:~/uboot/u-boot-2010.06-rc1_hw# od -tx1 ./u-boot.bin | head
-
- 0000000 12 00 00 ea 14 f0 9f e5 14 f0 9f e5 14 f0 9f e5
- 0000020 14 f0 9f e5 14 f0 9f e5 14 f0 9f e5 14 f0 9f e5
- 0000040 20 01 d8 33 80 01 d8 33 e0 01 d8 33 40 02 d8 33
- 0000060 a0 02 d8 33 00 03 d8 33 60 03 d8 33 ef be ad de
- 数值一样说明读没有出错
2.2 验证写是否出错
- //a. 紧接上一步把0x30000000处的数据写到0x40000处
- SMDK2410 # nand write 0x30000000 0x40000 0x10000
-
- NAND write: device 0 offset 0x40000, size 0x10000
- 65536 bytes written: OK
- //b.从nand中把0x400000-0x40000+0x100处的数据读取到内存0x30000000
- SMDK2410 # nand read 0x30000000 0x400000 0x100
- NAND read: device 0 offset 0x400000, size 0x100
- 256 bytes read: OK
- //c. 显示内存0x3000000处的数据
- SMDK2410 # md.b 0x30000000 0x100
- 30000000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
- 30000010: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
- 30000020: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
- 30000030: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
- 30000040: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
- 30000050: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
- 30000060: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
- 说明写有问题