Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LPC32xx ошибки при старте Linux
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
alvy
Плата EA3250. Скачал LTIB, собрал u-boot.bin, rootfs.jffs2, uImage. Залил все в отладочную плату, поменял какие нужно параметры в u-boot, чтобы он все правильно грузил. Все запустилось как надо, но при повторном запуске появились ошибки CRC (при первом запуске ошибок не было). Повторно перешиваю rootfs.jffs2 в NAND - опять ошибок нет. Перегружаю - снова ошибки CRC. Лог загрузки с ошибками:

CODE
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?
sasamy
Цитата(alvy @ Sep 17 2010, 12:25) *
Повторно перешиваю rootfs.jffs2 в NAND - опять ошибок нет. Перегружаю - снова ошибки CRC.


А как заливаете ? Тут похоже ошибка в драйвере nand либо шьете чем-то не тем.
alvy
Файлы rootfs.jffs2 и uImage скидываю в корень USB-флешки (FAT32), далее в u-boot:

Код
run update_fs


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

CODE
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-флешки). Ошибок никаких не наблюдаю. После перезагрузки - появляются.
sasamy
Цитата(alvy @ Sep 17 2010, 13:52) *
далее в u-boot:


Если через u-boot то нормально. Насколько криво портирован Linux на этот контроллер я не знаю - не приходилось работать с ним, очень похоже на ошибки драйвера при работе с ECC. Не пробовали полностью затереть nand из u-boot ? правда это может оказаться чревато плохими последствиями..
alvy
Цитата(sasamy @ Sep 17 2010, 17:15) *
Не пробовали полностью затереть nand из u-boot ? правда это может оказаться чревато плохими последствиями..
Пока еще не пробовал - там расположен в частности загрузчик S1L, сейчас только читаю как его можно прошить после стирания NAND
sasamy
Цитата(alvy @ Sep 17 2010, 14:19) *
Пока еще не пробовал - там расположен в частности загрузчик S1L, сейчас только читаю как его можно прошить после стирания NAND


С затиранием лучше не спешить конешно, я бы посмотрел драйвер nand - можно ли там отладочную информацию включить - в частности удостовериться что он тайминги для этого слмсунга правильно определяет ну или вручную выставить железобетонные, пусть тормозит пока но главное найти причину.
ra9ftm
Пожалуйста проверьте, если завершать работу Linux правильно (shutdown -h 0 или reboot), появляются ли данные ошибки?
alvy
Цитата(ra9ftm @ Sep 18 2010, 16:55) *
Пожалуйста проверьте, если завершать работу Linux правильно (shutdown -h 0 или reboot), появляются ли данные ошибки?
Про shutdown пишет "-/bin/sh: shutdown: not found", а после reboot ошибки также появляются (причем с каждым разом все больше).
ra9ftm
У меня на phy3250 подобное. При первом пуске все нормально, потом есть ошибки. Но если нормально завершить работу после первого пуска, такого не наблюдается.
Вобщем не известно пока как с этим бороться. В uboot при загрузке ставлю quite и всё работает.

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

alvy
Цитата(ra9ftm @ Sep 20 2010, 11:49) *
В uboot при загрузке ставлю quite и всё работает.
За что этот ключ отвечает? За вывод в терминал?
ra9ftm
Да, вывод данных при загрузке. Загружается значительно быстрее. Ошибки можно посмотреть после загрузки командой dmesg.
dch
Это у Вас сильно напоминает знаете что, в начале она запустилась и всё нормально CRC везде та, а в процессе работы файловая система перезаписывается, и при перезаписи пишется не тот CRC, это может быть когда под файловой системой лежит какбы не та флэш, те у Вас jffs2, под ним лежит MTD, а там есть файлец которые непосредственно работает с флэшью, и вот это файлец задаёт какими кусками и как можно затирать флэш, её перезаписывать, её читать. У Вас нанд флэш я не очень помню как там сделано, а на параллельной сделано так.
AlexandrY
Цитата(dch @ Sep 22 2010, 17:19) *
Это у Вас сильно напоминает знаете что, в начале она запустилась и всё нормально CRC везде та, а в процессе работы файловая система перезаписывается, и при перезаписи пишется не тот CRC, это может быть когда под файловой системой лежит какбы не та флэш, те у Вас jffs2, под ним лежит MTD, а там есть файлец которые непосредственно работает с флэшью, и вот это файлец задаёт какими кусками и как можно затирать флэш, её перезаписывать, её читать. У Вас нанд флэш я не очень помню как там сделано, а на параллельной сделано так.


Как минумум у LPC3250 есть два разных контроллера NAND : SLC и MLC.
При этом, как ни странно, их ROM загрузчик для SLC NAND использует MLC контроллер и это работает.
А у этих контроллеров принципиально разные подходы к расчету ECC и его размещению непосредственно в блоке.
Т.е. записать можно одним, а прочитать другим, но ECC будет естественно с ошибкой и данные будут повреждены даже если отключить контроль ECC при чтении.
ra9ftm
такого рода ошибки по моему мнению могли возникнуть еще после выпуска патча ядра 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

alvy
Цитата(ra9ftm @ Sep 24 2010, 11:00) *
такого рода ошибки по моему мнению могли возникнуть еще после выпуска патча ядра v1.02.

Там был произведен переход на работу с NAND через DMA и использование ECC на "железном" (hardware) уровне. Я постараюсь это проверить на phytec 3250.
Есть какие-нибудь успехи? У меня до выходных времени не будет проверить - пытаюсь telnet запустить, а он все "permission denied" sad.gif
alvy
Собрал ядро 2.6.27.8, u-boot остался прежний, проблемы с чтением NAND исчезли...
ra9ftm
Я пока этим не занимался, а посмотрите пожалуйста если вы под LTIB собираете какие патчи используются, командой ls -l /opt/ltib/pkgs/kernel*
dch
Цитата(AlexandrY @ Sep 22 2010, 18:41) *
Как минумум у LPC3250 есть два разных контроллера NAND : SLC и MLC.

Это зря ECC вынесено в аппаратную часть, это надо считать програмно.
alvy
Цитата(ra9ftm @ Sep 30 2010, 12:46) *
Я пока этим не занимался, а посмотрите пожалуйста если вы под LTIB собираете какие патчи используются, командой ls -l /opt/ltib/pkgs/kernel*

Для версии ядра 2.6.27.8:
CODE
user@user-desktop:~/ltib$ ls -l /opt/ltib/pkgs/kernel*
-rw-r--r-- 1 user root 27126 2009-07-15 10:28 /opt/ltib/pkgs/kernel-arm-2.6.27.8-lpc32xx_armtskit_update2.patch
-rw-r--r-- 1 user root 84 2009-07-15 10:28 /opt/ltib/pkgs/kernel-arm-2.6.27.8-lpc32xx_armtskit_update2.patch.md5
-rw-r--r-- 1 user root 65412 2009-10-13 05:21 /opt/ltib/pkgs/kernel-arm-2.6.27.8-lpc32xx_ea3250.patch
-rw-r--r-- 1 user root 74 2009-10-13 05:21 /opt/ltib/pkgs/kernel-arm-2.6.27.8-lpc32xx_ea3250.patch.md5
-rw-r--r-- 1 user root 885 2009-11-24 01:22 /opt/ltib/pkgs/kernel-arm-2.6.27.8-lpc32xx_ea3250_update1.patch
-rw-r--r-- 1 user root 82 2009-11-24 01:22 /opt/ltib/pkgs/kernel-arm-2.6.27.8-lpc32xx_ea3250_update1.patch.md5
-rw-r--r-- 1 user root 519770 2009-01-15 00:45 /opt/ltib/pkgs/kernel-arm-2.6.27.8-lpc32xx.patch
-rw-r--r-- 1 user root 67 2009-01-15 00:45 /opt/ltib/pkgs/kernel-arm-2.6.27.8-lpc32xx.patch.md5
-rw-r--r-- 1 user root 6786 2009-04-15 05:29 /opt/ltib/pkgs/kernel-arm-2.6.27.8-lpc32xx_update2.patch
-rw-r--r-- 1 user root 75 2009-04-15 05:29 /opt/ltib/pkgs/kernel-arm-2.6.27.8-lpc32xx_update2.patch.md5
-rw-r--r-- 1 user root 65078 2009-07-03 04:49 /opt/ltib/pkgs/kernel-arm-2.6.27.8-lpc32xx_update3.patch
-rw-r--r-- 1 user root 75 2009-07-03 04:49 /opt/ltib/pkgs/kernel-arm-2.6.27.8-lpc32xx_update3.patch.md5
-rw-r--r-- 1 user root 148412 2009-10-15 07:45 /opt/ltib/pkgs/kernel-arm-2.6.27.8-lpc32xx_update4.patch
-rw-r--r-- 1 user root 75 2009-10-15 07:45 /opt/ltib/pkgs/kernel-arm-2.6.27.8-lpc32xx_update4.patch.md5
-rw-r--r-- 1 user root 25087 2009-11-07 06:07 /opt/ltib/pkgs/kernel-arm-2.6.27.8-lpc32xx_update5.patch
-rw-r--r-- 1 user root 75 2009-11-07 06:07 /opt/ltib/pkgs/kernel-arm-2.6.27.8-lpc32xx_update5.patch.md5
-rw-r--r-- 1 user root 56148 2009-02-07 03:43 /opt/ltib/pkgs/kernel-arm-2.6.27.8-update1.patch
-rw-r--r-- 1 user root 67 2009-02-07 03:43 /opt/ltib/pkgs/kernel-arm-2.6.27.8-update1.patch.md5


alvy
Собрал последнюю версию из CVS (Linux version 2.6.34), ошибок JFFS2 на вскидку меньше стало, но там вообще не конфигурируется eth0 - в стартовом логе есть строчка:

...
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"
eth%d: Invalid ethernet MAC address. Please set using ifconfig
lpc_mii_bus: probed
...

Как такое победить? Попытки установить MAC адрес вручную с помощью ifconfig не принесли успеха
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.