Перейти к содержанию
    

LPC32xx ошибки при старте Linux

Плата EA3250. Скачал LTIB, собрал u-boot.bin, rootfs.jffs2, uImage. Залил все в отладочную плату, поменял какие нужно параметры в u-boot, чтобы он все правильно грузил. Все запустилось как надо, но при повторном запуске появились ошибки CRC (при первом запуске ошибок не было). Повторно перешиваю rootfs.jffs2 в NAND - опять ошибок нет. Перегружаю - снова ошибки CRC. Лог загрузки с ошибками:

 

U-Boot 2009.03-rc1 (Sep 09 2010 - 16:43:56)

DRAM:  64 MB
NAND:  128 MiB
In:	serial
Out:   serial
Err:   serial
Hit any key to stop autoboot:  0

Loading from NAND 128MiB 3,3V 8-bit, offset 0xfe0000
  Image Name:   Linux-2.6.34
  Image Type:   ARM Linux Kernel Image (uncompressed)
  Data Size:	1880384 Bytes =  1.8 MB
  Load Address: 80008000
  Entry Point:  80008000
## Booting kernel from Legacy Image at 80100000 ...
  Image Name:   Linux-2.6.34
  Image Type:   ARM Linux Kernel Image (uncompressed)
  Data Size:	1880384 Bytes =  1.8 MB
  Load Address: 80008000
  Entry Point:  80008000
  Verifying Checksum ... OK
  Loading Kernel Image ... OK
OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
Linux version 2.6.34 (user@user-desktop) (gcc version 4.1.2) #2 PREEMPT Tue Sep 14 09:42:05 NOVST 2010
CPU: ARM926EJ-S [41069264] revision 4 (ARMv5TEJ), cr=00053177
CPU: VIVT data cache, VIVT instruction cache
Machine: Embedded Artists LPC3250 OEM board with the LPC3250 Microcontroller
Memory policy: ECC disabled, Data cache writeback
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 16256
Kernel command line: root=/dev/mtdblock4 rw rootfstype=jffs2 ip=192.168.5.234 ethaddr=00:1a:f1:00:00:00 console=ttyS0,115200n8
PID hash table entries: 256 (order: -2, 1024 bytes)
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 64MB = 64MB total
Memory: 60988k/60988k available, 4548k reserved, 0K highmem
Virtual kernel memory layout:
vector  : 0xffff0000 - 0xffff1000   (   4 kB)
fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
DMA	 : 0xffc00000 - 0xffe00000   (   2 MB)
vmalloc : 0xc4800000 - 0xf0000000   ( 696 MB)
lowmem  : 0xc0000000 - 0xc4000000   (  64 MB)
modules : 0xbf000000 - 0xc0000000   (  16 MB)
  .init : 0xc0008000 - 0xc0028000   ( 128 kB)
  .text : 0xc0028000 - 0xc039b000   (3532 kB)
  .data : 0xc039c000 - 0xc03c0ee0   ( 148 kB)
Hierarchical RCU implementation.
NR_IRQS:96
Console: colour dummy device 80x30
Calibrating delay loop... 103.83 BogoMIPS (lpj=519168)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
LPC32XX unique ID: 00000000000000000000000000000000
bio: create slab <bio-0> at 0
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
Advanced Linux Sound Architecture Driver Version 1.0.22.1.
Switching to clocksource lpc32xx_clksrc
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP reno registered
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
NetWinder Floating Point Emulator V0.97 (double precision)
JFFS2 version 2.2. (NAND) В© 2001-2006 Red Hat, Inc.
msgmni has been set to 119
alg: No test for stdrng (krng)
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
serial8250.0: ttyS0 at MMIO 0x40090000 (irq = 9) is a 16550A
console [ttyS0] enabled
brd: module loaded
loop: module loaded
NAND device: Manufacturer ID: 0xec, Chip ID: 0xf1 (Samsung NAND 128MiB 3,3V 8-bit)
Scanning device for bad blocks
Bad eraseblock 0 at 0x000000000000
Bad eraseblock 100 at 0x000000c80000
Bad eraseblock 934 at 0x0000074c0000
Creating 5 MTD partitions on "lpc32xx_nand":
0x000000000000-0x000000320000 : "ea3250-boot"
0x000000320000-0x000000fa0000 : "ea3250-uboot"
0x000000fa0000-0x000000fe0000 : "ea3250-ubt-prms"
0x000000fe0000-0x0000013e0000 : "ea3250-kernel"
0x0000013e0000-0x000008000000 : "ea3250-jffs2"
lpc_mii_bus: probed
eth0: using RMII interface
eth0: LPC mac at 0x31060000 irq 29
eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=0:01, irq=-1)
usbmon: debugfs is not available
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
ISP1301 Vendor ID  : 0x04cc
ISP1301 Product ID : 0x1301
ISP1301 Version ID : 0x0210
usb-ohci usb-ohci: at 0xf3120000, irq 0
usb-ohci usb-ohci: pnx4008 OHCI
usb-ohci usb-ohci: new USB bus registered, assigned bus number 1
usb-ohci usb-ohci: irq 59, io mem 0xf3120000
usb usb1: New USB device found, idVendor=1d6b, idProduct=0001
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: pnx4008 OHCI
usb usb1: Manufacturer: Linux 2.6.34 ohci_hcd
usb usb1: SerialNumber: usb-ohci
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
usbcore: registered new interface driver libusual
mice: PS/2 mouse device common for all mice
rtc-lpc32xx rtc-lpc32xx: rtc core: registered rtc-lpc32xx as rtc0
i2c /dev entries driver
PNX4008-WDT: PNX4008 Watchdog Timer: heartbeat 19 sec
cpuidle: using governor ladder
cpuidle: using governor menu
No device for DAI lpc3xxx-i2s0
No device for DAI lpc3xxx-i2s1
ALSA device list:
 No soundcards found.
TCP cubic registered
NET: Registered protocol family 17
ssp-pl022 dev:ssp0: ARM PL022 driver, device ID: 0x00041022
pl022: mapped registers from 0x20084000 to c4882000
ads7846 spi0.0: touchscreen, irq 64
input: ADS7846 Touchscreen as /class/input/input0
CLCD: Embedded Artists 3.2 inch LCD hardware, QVGA portrait display
Console: switching to colour frame buffer device 30x40
VFP support v0.3: implementor 41 architecture 1 part 10 variant 9 rev 1
rtc-lpc32xx rtc-lpc32xx: setting system clock to 1970-01-01 15:47:28 UTC (56848)
usb 1-1: new full speed USB device using usb-ohci and address 2
usb 1-1: New USB device found, idVendor=0951, idProduct=1614
usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-1: Product: DataTraveler 400
usb 1-1: Manufacturer: Kingston
usb 1-1: SerialNumber: 200706200000000059188553
scsi0 : usb-storage 1-1:1.0
IP-Config: Guessing netmask 255.255.255.0
IP-Config: Complete:
 device=eth0, addr=192.168.5.234, mask=255.255.255.0, gw=255.255.255.255,
 host=192.168.5.234, domain=, nis-domain=(none),
 bootserver=255.255.255.255, rootserver=255.255.255.255, rootpath=
scsi 0:0:0:0: Direct-Access	 Kingston DataTraveler 400 1.00 PQ: 0 ANSI: 2
sd 0:0:0:0: [sda] 3915776 512-byte logical blocks: (2.00 GB/1.86 GiB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Assuming drive cache: write through
sd 0:0:0:0: [sda] Assuming drive cache: write through
sda: sda1
sd 0:0:0:0: [sda] Assuming drive cache: write through
sd 0:0:0:0: [sda] Attached SCSI removable disk
mtd->read(0x1ef34 bytes from 0x2e10cc) returned ECC error
mtd->read(0x1830c bytes from 0x2e7cf4) returned ECC error
Empty flash at 0x002e7cf0 ends at 0x002e8000
jffs2_scan_inode_node(): CRC failed on node at 0x002e80f4: Read 0xc9241539, calculated 0xfa92ba2f
VFS: Mounted root (jffs2 filesystem) on device 31:4.
Freeing init memory: 128K
mtd->read(0x784 bytes from 0x2ea07c) returned ECC error
mtd->read(0x784 bytes from 0x2e807c) returned ECC error
init started: BusyBox v1.11.2 (mtd->read(0x784 bytes from 0x2ea07c) returned ECC error
)
mtd->read(0x784 bytes from 0x2e807c) returned ECC error
starting pid 379, tty '': '/etc/rc.d/rcS'
Mounting /proc and /sys
Setting the hostname to nxp
Mounting filesystems
mtd->read(0x7d4 bytes from 0x2ea02c) returned ECC error
mount: mounting usbfs on /proc/bus/usb failed: No such file or directory
Starting syslogd and klogd
Running sysctl
Setting up networking on loopback device:
Setting up networking on eth0:
/etc/rc.d/init.d/network: line 162: udhcpc: not found
Starting inetd:
Starting the boa webserver:
mtd->read(0x714 bytes from 0x2ea0ec) returned ECC error
mtd->read(0x714 bytes from 0x2e98ec) returned ECC error
mtd->read(0x714 bytes from 0x2e90ec) returned ECC error
mtd->read(0x714 bytes from 0x2e88ec) returned ECC error
mtd->read(0x44 bytes from 0x2ea0ec) returned ECC error
mtd->read(0x758 bytes from 0x2ea0a8) returned ECC error
mtd->read(0x758 bytes from 0x2e98a8) returned ECC error
mtd->read(0x758 bytes from 0x2e90a8) returned ECC error
mtd->read(0x758 bytes from 0x2e88a8) returned ECC error
mtd->read(0x750 bytes from 0x2e80b0) returned ECC error
mtd->read(0x44 bytes from 0x2ea0a8) returned ECC error
starting pid 435, tty '': '-/bin/sh'
[root@nxp /]#

 

 

Как побороть эти ошибки CRC?

Изменено пользователем alvy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Повторно перешиваю rootfs.jffs2 в NAND - опять ошибок нет. Перегружаю - снова ошибки CRC.

 

А как заливаете ? Тут похоже ошибка в драйвере nand либо шьете чем-то не тем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Файлы rootfs.jffs2 и uImage скидываю в корень USB-флешки (FAT32), далее в u-boot:

 

run update_fs

 

Получаю в логе:

 

uboot> run update_fs
(Re)start USB...
USB:
ISP1301 Vendor ID  : 0x04cc
ISP1301 Product ID : 0x1301
ISP1301 Version ID : 0x0210
scanning bus for devices... 2 USB Device(s) found
   scanning bus for storage devices... 1 Storage Device(s) found
reading rootfs.jffs2
.
.
................................................................................
................................................................................
.
................................................................................
.
................................................................................
.
................................................................................
.
................................................................................
.
.........................
.

5242880 bytes read
stopping USB..

NAND erase: device 0 offset 0x13e0000, size 0x500000
Erasing at 0x18c0000 -- 100% complete.
OK

NAND write: device 0 offset 0x13e0000, size 0x500000
5242880 bytes written: OK
uboot>

Далее run mtdboot (ядро считывается с USB-флешки). Ошибок никаких не наблюдаю. После перезагрузки - появляются.

Изменено пользователем alvy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

далее в u-boot:

 

Если через u-boot то нормально. Насколько криво портирован Linux на этот контроллер я не знаю - не приходилось работать с ним, очень похоже на ошибки драйвера при работе с ECC. Не пробовали полностью затереть nand из u-boot ? правда это может оказаться чревато плохими последствиями..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не пробовали полностью затереть nand из u-boot ? правда это может оказаться чревато плохими последствиями..
Пока еще не пробовал - там расположен в частности загрузчик S1L, сейчас только читаю как его можно прошить после стирания NAND

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пока еще не пробовал - там расположен в частности загрузчик S1L, сейчас только читаю как его можно прошить после стирания NAND

 

С затиранием лучше не спешить конешно, я бы посмотрел драйвер nand - можно ли там отладочную информацию включить - в частности удостовериться что он тайминги для этого слмсунга правильно определяет ну или вручную выставить железобетонные, пусть тормозит пока но главное найти причину.

Изменено пользователем sasamy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пожалуйста проверьте, если завершать работу Linux правильно (shutdown -h 0 или reboot), появляются ли данные ошибки?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пожалуйста проверьте, если завершать работу Linux правильно (shutdown -h 0 или reboot), появляются ли данные ошибки?
Про shutdown пишет "-/bin/sh: shutdown: not found", а после reboot ошибки также появляются (причем с каждым разом все больше).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня на phy3250 подобное. При первом пуске все нормально, потом есть ошибки. Но если нормально завершить работу после первого пуска, такого не наблюдается.

Вобщем не известно пока как с этим бороться. В uboot при загрузке ставлю quite и всё работает.

 

Про shutdown пишет "-/bin/sh: shutdown: not found", а после reboot ошибки также появляются (причем с каждым разом все больше).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В uboot при загрузке ставлю quite и всё работает.
За что этот ключ отвечает? За вывод в терминал?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, вывод данных при загрузке. Загружается значительно быстрее. Ошибки можно посмотреть после загрузки командой dmesg.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это у Вас сильно напоминает знаете что, в начале она запустилась и всё нормально CRC везде та, а в процессе работы файловая система перезаписывается, и при перезаписи пишется не тот CRC, это может быть когда под файловой системой лежит какбы не та флэш, те у Вас jffs2, под ним лежит MTD, а там есть файлец которые непосредственно работает с флэшью, и вот это файлец задаёт какими кусками и как можно затирать флэш, её перезаписывать, её читать. У Вас нанд флэш я не очень помню как там сделано, а на параллельной сделано так.

Изменено пользователем dch

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это у Вас сильно напоминает знаете что, в начале она запустилась и всё нормально CRC везде та, а в процессе работы файловая система перезаписывается, и при перезаписи пишется не тот CRC, это может быть когда под файловой системой лежит какбы не та флэш, те у Вас jffs2, под ним лежит MTD, а там есть файлец которые непосредственно работает с флэшью, и вот это файлец задаёт какими кусками и как можно затирать флэш, её перезаписывать, её читать. У Вас нанд флэш я не очень помню как там сделано, а на параллельной сделано так.

 

Как минумум у LPC3250 есть два разных контроллера NAND : SLC и MLC.

При этом, как ни странно, их ROM загрузчик для SLC NAND использует MLC контроллер и это работает.

А у этих контроллеров принципиально разные подходы к расчету ECC и его размещению непосредственно в блоке.

Т.е. записать можно одним, а прочитать другим, но ECC будет естественно с ошибкой и данные будут повреждены даже если отключить контроль ECC при чтении.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

такого рода ошибки по моему мнению могли возникнуть еще после выпуска патча ядра v1.02.

mtd->read(0x758 bytes from 0x2e88a8) returned ECC error

mtd->read(0x750 bytes from 0x2e80b0) returned ECC error

mtd->read(0x44 bytes from 0x2ea0a8) returned ECC error

Там был произведен переход на работу с NAND через DMA и использование ECC на "железном" (hardware) уровне. Я постараюсь это проверить на phytec 3250.

Чтобы проверить нужно вручную скачать патч отсюда ftp://lpclinux.com/lpc32x0/linux/linux-2....0.patch.tar.bz2 и попробовать.

У меня еще есть подозрение, что и u-boot нужно тоже откатить на более раннюю версию ftp://lpclinux.com/lpc32x0/u-boot/u-boot-...0.patch.tar.bz2. Там тоже в 1.02 этой же датой (16.07.2010) добавили hardware ECC + DMA для работы с NAND.

Подробнее история версий здесь

http://lpclinux.com/Downloads/Release32xxLinux2_6_34

http://lpclinux.com/Downloads/Release32xxUboot2009_03

 

А проблема похожая на вашу обсуждается здесь http://lpclinux.com/Forums/ForumLPC32xx0016

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

такого рода ошибки по моему мнению могли возникнуть еще после выпуска патча ядра v1.02.

 

Там был произведен переход на работу с NAND через DMA и использование ECC на "железном" (hardware) уровне. Я постараюсь это проверить на phytec 3250.

Есть какие-нибудь успехи? У меня до выходных времени не будет проверить - пытаюсь telnet запустить, а он все "permission denied" :(

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...