I've been familiarizing myself with TI's am335x EVM for over a week now.
Successes:
- boot EVM using the included Linux/Android SD cards.
- built 2nd and 3rd stage bootloaders from source code "u-boot-2011.09-psp04.06.00.03"
- built linux kernel from source code "linux-3.1.0-psp04.06.00.03.sdk"
- flashed self-built bootloaders to EVM's NAND and booted to them
- booted with TFTP/NFS using self-built kernel and rootfs
- flashed linux kernel to EVM
PROBLEMS:
- I've flashed root filesystem to NAND - I've tried both UBI and JFFS2 - these both work to some extent but there's obvious trouble.
* When booting (first time after flashing) with JFFS2 rootfs, at boot/mount time, following errors reported:
...
[ 22.734349] JFFS2 notice: (626) read_dnode: wrong data CRC in data node at 0x0005b7f8: read 0x28d41a51, calculated 0x850c5a22.
[ 30.493848] JFFS2 notice: (1362) check_node_data: wrong data CRC in data node at 0x0212076c: read 0x945940f9, calculated 0x3e86588a.
[ 32.516459] JFFS2 notice: (1362) check_node_data: wrong data CRC in data node at 0x021f8bf4: read 0xf65ecbd9, calculated 0x25e5f2b1.
[ 34.071718] JFFS2 notice: (1362) check_node_data: wrong data CRC in data node at 0x00487738: read 0xaf467a9a, calculated 0xd5496e91.
[ 38.625075] JFFS2 notice: (1362) check_node_data: wrong data CRC in data node at 0x01e67598: read 0xae8ce98c, calculated 0xff96c45a.
[ 40.805661] JFFS2 notice: (1362) check_node_data: wrong data CRC in data node at 0x016bccbc: read 0xa1936e3, calculated 0x658c5886.
[ 41.198161] JFFS2 notice: (1362) check_node_data: wrong data CRC in data node at 0x0155e780: read 0x7046e4be, calculated 0xd315ce96.
[ 42.010097] JFFS2 notice: (1362) check_node_data: wrong data CRC in data node at 0x01286afc: read 0x7001a90e, calculated 0xdf7c3004.
[ 47.529271] JFFS2 notice: (1362) check_node_data: wrong data CRC in data node at 0x02d1860c: read 0xcc59fc33, calculated 0x3f6c56d6.
[ 48.924694] JFFS2 notice: (1362) check_node_data: wrong data CRC in data node at 0x02c1e9dc: read 0x631dbdb4, calculated 0xce23febe.
[ 49.640718] JFFS2 notice: (1362) read_dnode: wrong data CRC in data node at 0x02cd3b40: read 0xeacf8a7e, calculated 0xc9c20e0c.
[ 52.418622] JFFS2 notice: (1362) check_node_data: wrong data CRC in data node at 0x02fad6b4: read 0x82947468, calculated 0xb9f3c207.
[ 55.128544] JFFS2 notice: (1362) check_node_data: wrong data CRC in data node at 0x033c42d0: read 0xe20134e9, calculated 0x127a544.
[ 59.288111] JFFS2 notice: (1362) read_direntry: header CRC failed on dirent node at 0x39e4bf0: read 0x8541237f, calculated 0xf3d461c
...
* When booting (first time after flashing) with UBI rootfs, at boot/mount time, following errors are reported:
...
[ 91.819221] UBI: run torture test for PEB 1507
[ 92.185899] UBI: PEB 1507 passed torture test, do not mark it as bad
[ 92.332445] UBI: run torture test for PEB 1507
[ 92.708611] UBI: PEB 1507 passed torture test, do not mark it as bad
[ 92.847639] UBI: run torture test for PEB 1507
[ 93.245844] UBI: PEB 1507 passed torture test, do not mark it as bad
[ 93.401034] UBI: run torture test for PEB 1507
[ 93.766578] UBI: PEB 1507 passed torture test, do not mark it as bad
[ 93.942744] UBI: run torture test for PEB 1507
[ 94.305433] UBI: PEB 1507 passed torture test, do not mark it as bad
[ 94.462394] UBI: run torture test for PEB 1507
[ 94.825511] UBI: PEB 1507 passed torture test, do not mark it as bad
[ 94.972736] UBI: run torture test for PEB 1507
[ 95.336975] UBI: PEB 1507 passed torture test, do not mark it as bad
[ 95.492495] UBI: run torture test for PEB 1507
[ 95.859982] UBI: PEB 1507 passed torture test, do not mark it as bad
...
In both JFFS2 and UBI cases, I've been (eventually) able to get to the shell prompt, but there is obvious trouble.
The rootfs NAND flashing has occurred from U-Boot and has been succesful with setting 'nandecc hw 2' - 'nandecc hw 0' didn't seem to work.
I've also tried flashing the NAND from tftp/nfs booted environment; it has been succesful for MLO and U-Boot, but when executing 'nandtest -m' for /dev/mtd6 or /dev/mtd7, the following kind of errors are always reported:
Marking bad blocks
ECC corrections: 0
ECC failures : 0
Bad blocks : 0
BBT blocks : 0
00540000: reading...
1 bit(s) ECC corrected at 00540000
00540000: checking...
compare failed. seed 986930424
Byte 0x5e01 is f6 should be f2
(nandtest binary is from package mtd-utils version 1.4.9)
I am currently uncertain where the badness occurs. My suspicion is that perhaps the ECC scheme of the provided linux kernel is somehow incompatible or inoperative. I was hoping that you could provide me an explanation and perhaps some pointers how to get over this problem.
My root filesystem images have been created with the command:
mkfs.jffs2 -x lzo --root=/path/to/crossroot --faketime \
--output=/path/to/image.jffs2 --pad --little-endian \
--eraseblock=0x20000 -n
for JFFS2, and:
mkfs.ubifs -r /path/to/crossroot -o /path/to/ubifs.img -F -m 2048 -e 126976 -c 1580
echo "
\[ubifs\]
mode=ubi
image=/path/to/ubifs.img
vol_id=0
vol_type=dynamic
vol_name=rootfs
vol_flags=autoresize" > ubinize.cfg
ubinize -o /path/to/image.ubi -m 2048 -p 128KiB -s 512 -O 2048 ubinize.cfg
for UBI.