Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AT91SAM9260EK + Linux 2.6.22
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Отладочные платы
mike20
Собрали плату с архитектурой похожей на AT91SAM9260EK. На плате имеется:
- NAND Flash,
- SDRAM 64M,
- SD/MMC-card,
- Ethernet на KS8721BL,
- SPI,
- TDM,
- USB device,
- Com порт debug,
- Собственное адресное пространство на NCS4

Проблем с о сборкой Bootstrup(LinuxLink by TimeSys) и uBoot 1.3.0 (LinuxLink by TimeSys) не было.
Все грузится.
Проблемы начались, когда стал ставить ядро Linux.
Использую Linux 2.6.22 (linux-2.6.22.tar.bz2 + 2.6.22-at91.patch.gz + 2.6.22-at91-exp.patch.gz)
взял на www.linux4sam.org.
Кросскомпилятор arm-2007q1-10-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 взял тоже на www.linux4sam.org.
Пробовал Bootstrup и uBoot брать на www.linux4sam.org, но результат практически тот-же.
Также уменьшил частоту SDRAM до 50 МГц предположив звоны на плате (хотя плата 6-ти слойка и
гонял я ее в HyperLinx), не помогло.
При сборке в menuconfig отключал модули и тоже безрезультатно.
Получаю с некоторыми вариациями такие результаты:

************************************************************

NAND read: device 0 offset 0x100000, size 0x300000
3145728 bytes read: OK
U-Boot> bootm 0x21500000
## Booting image at 21500000 ...
Image Name: linux-2.6
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2501012 Bytes = 2.4 MB
Load Address: 20008000
Entry Point: 20008000
Verifying Checksum ... OK
OK

Starting kernel ...

Linux version 2.6.22 (user@debianBox) (gcc version 4.2.0 20070413 (prerelease) (CodeSourcery Sourcery G++ Lite 2007q1-10)) #14 Mon Feb 11 16:31:56 MSK 2008
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
Machine: Atmel AT91SAM9260-EK (CP.11 BSS)
Memory policy: ECC disabled, Data cache writeback
Clocks: CPU 198 MHz, master 66 MHz, main 18.432 MHz
CPU0: D VIVT write-back cache
CPU0: I cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets
CPU0: D cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets
Built 1 zonelists. Total pages: 16256
Kernel command line: mem=64M console=ttyS0,115200 initrd=0x21100000,3145728 root=/dev/ram0 rw
AT91: 96 gpio irqs in 3 banks
PID hash table entries: 256 (order: 8, 1024 bytes)
Console: colour dummy device 80x30
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: 59184KB available (2240K code, 260K data, 104K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
Init Hard CP.11
End Init CP.11
Unhandled fault: alignment exception (0x001) at 0x739d53c6
Internal error: : 1 [#1]
Modules linked in:
CPU: 0 Not tainted (2.6.22 #14)
PC is at kfree+0x7c/0xc4
LR is at kobject_set_name+0xac/0xbc
pc : [<c0071d7c>] lr : [<c01040b0>] psr: 00000093
sp : c03d7ec0 ip : c03d7ee0 fp : c03d7edc
r10: c02515cc r9 : c03d7f4b r8 : c0221ff4
r7 : c03d7f10 r6 : 6e72656b r5 : 20000013 r4 : c03e81a0
r3 : 33cc33c0 r2 : 019ce4c0 r1 : bfe95000 r0 : 739d53c6
Flags: nzcv IRQs off FIQs on Mode SVC_32 Segment kernel
Control: 0005317f Table: 20004000 DAC: 00000017
Process swapper (pid: 1, stack limit = 0xc03d6260)
Stack: (0xc03d7ec0 to 0xc03d8000)
7ec0: c03d7f10 c03e81a0 c0221ff8 c0221ff8 c03d7f08 c03d7ee0 c01040b0 c0071d10
7ee0: c001da10 c03d7f10 c03e81a0 c03d7f4b 00000001 00000007 c02515cc c03d7f3c
7f00: c03d7f18 c0012604 c0104018 c03d7f4b 00000000 c025810c c03d7f3c 00000006
7f20: c02580c8 00000008 00000001 c02515e0 c03d7f8c c03d7f40 c0012750 c00125bc
7f40: 00000002 0000002d 70000000 746e6972 0000006b 00000000 00000000 00000000
7f60: c012e558 00000000 00000000 00000000 c03d6000 c001da10 00000000 c001e000
7f80: c03d7ff4 c03d7f90 c0008920 c001266c 33cc318c 334433cc 00000000 00000000
7fa0: 00000000 c03d7fb0 c0022e64 c0034c40 00000000 00000000 c0008870 c003a820
7fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
7fe0: 00000000 00000000 00000000 c03d7ff8 c003a820 c0008880 3308134c 43cc33c8
Backtrace:
[<c0071d00>] (kfree+0x0/0xc4) from [<c01040b0>] (kobject_set_name+0xac/0xbc)
r6:c0221ff8 r5:c0221ff8 r4:c03e81a0
[<c0104004>] (kobject_set_name+0x0/0xbc) from [<c0012604>] (kernel_param_sysfs_setup+0x58/0xb0)
r3:c025810c r2:00000000 r1:c03d7f4b
r8:c02515cc r7:00000007 r6:00000001 r5:c03d7f4b r4:c03e81a0
[<c00125ac>] (kernel_param_sysfs_setup+0x0/0xb0) from [<c0012750>] (param_sysfs_init+0xf4/0x1a4)
r8:c02515e0 r7:00000001 r6:00000008 r5:c02580c8 r4:00000006
[<c001265c>] (param_sysfs_init+0x0/0x1a4) from [<c0008920>] (kernel_init+0xb0/0x26c)
[<c0008870>] (kernel_init+0x0/0x26c) from [<c003a820>] (do_exit+0x0/0x7c4)
Code: e59f004c e3a01e25 ebfed488 e5900018 (e5904000)
Kernel panic - not syncing: Attempted to kill init!

*****************************************************************

NAND read: device 0 offset 0x100000, size 0x300000
3145728 bytes read: OK
## Booting image at 21500000 ...
Image Name: linux-2.6
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2501012 Bytes = 2.4 MB
Load Address: 20008000
Entry Point: 20008000
Verifying Checksum ... OK
OK

Starting kernel ...

Linux version 2.6.22 (user@debianBox) (gcc version 4.2.0 20070413 (prerelease) (CodeSourcery Sourcery G++ Lite 2007q1-10)) #14 Mon Feb 11 16:31:56 MSK 2008
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
Machine: Atmel AT91SAM9260-EK (CP.11 BSS)
Memory policy: ECC disabled, Data cache writeback
Clocks: CPU 198 MHz, master 66 MHz, main 18.432 MHz
CPU0: D VIVT write-back cache
CPU0: I cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets
CPU0: D cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets
Built 1 zonelists. Total pages: 16256
Kernel command line: mem=64M console=ttyS0,115200 initrd=0x21100000,3145728 root=/dev/ram0 rw
AT91: 96 gpio irqs in 3 banks
PID hash table entries: 256 (order: 8, 1024 bytes)
Console: colour dummy device 80x30
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: 59184KB available (2240K code, 260K data, 104K init)
kernel BUG at mm/slab.c:1372!
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c0004000
[00000000] *pgd=00000000
Internal error: Oops: 805 [#1]
Modules linked in:
CPU: 0 Not tainted (2.6.22 #14)
PC is at __bug+0x20/0x2c
LR is at release_console_sem+0x1cc/0x1e4
pc : [<c0026fbc>] lr : [<c0037ec8>] psr: 60000053
sp : c0253f68 ip : 00000000 fp : c0253f74
r10: 2001d630 r9 : 41069265 r8 : 00000000
r7 : c02940c0 r6 : 00000000 r5 : c001f6f4 r4 : c033eae0
r3 : 00000000 r2 : c025721c r1 : 000004e8 r0 : 00000021
Flags: nZCv IRQs on FIQs off Mode SVC_32 Segment kernel
Control: 0005317f Table: 20004000 DAC: 00000017
Process swapper (pid: 0, stack limit = 0xc0252260)
Stack: (0xc0253f68 to 0xc0254000)
3f60: c0253f94 c0253f78 c0072d30 c0026fac c033f6e0 c025b330
3f80: c025b48c c025b330 c0253fcc c0253f98 c0014c50 c0072d04 00000000 00000000
3fa0: 000008c0 00000040 00000068 00000000 c026ae0c c0255cd4 c029338c 2001d664
3fc0: c0253ff4 c0253fd0 c0008ce8 c0014994 c0008554 00000000 00000000 c001ef2c
3fe0: 00053175 c026b320 00000000 c0253ff8 20008030 c0008aec 00000000 00000000
Backtrace:
[<c0026f9c>] (__bug+0x0/0x2c) from [<c0072d30>] (init_list+0x3c/0x11c)
[<c0072cf4>] (init_list+0x0/0x11c) from [<c0014c50>] (kmem_cache_init+0x2cc/0x380)
r7:c025b330 r6:c025b48c r5:c025b330 r4:c033f6e0
[<c0014984>] (kmem_cache_init+0x0/0x380) from [<c0008ce8>] (start_kernel+0x20c/0x2c4)
r8:2001d664 r7:c029338c r6:c0255cd4 r5:c026ae0c r4:00000000
[<c0008adc>] (start_kernel+0x0/0x2c4) from [<20008030>] (0x20008030)
r5:c026b320 r4:00053175
Code: e1a01000 e59f000c eb004513 e3a03000 (e5833000)
Kernel panic - not syncing: Attempted to kill the idle task!

Может кто сталкивался с такой ситуацией?
slava2005
Цитата(mike20 @ Feb 12 2008, 09:51) *
Собрали плату с архитектурой похожей на AT91SAM9260EK. На плате имеется:


А готовое ядро с linux2sam не пробовали запускать ?
mike20
Цитата(slava2005 @ Feb 12 2008, 10:50) *
А готовое ядро с linux2sam не пробовали запускать ?

Пробовал от Linux4sam ядро linux-2.6.22-at91sam9260ek.bin.
Правда у меня не стоит DataFlash а толко NAND-Flash.
Результат похожий:

Starting kernel ...

Uncompressing Linux...........................................................................
.............. done, booting the kernel.
Linux version 2.6.22 (pvilchez@bendor) (gcc version 4.2.0 20070413 (prerelease) (CodeSourcery Sourcery G++ Lite 2007q1-10)) #1 Thu Sep 13 16:03:16 CEST 2007
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
Machine: Atmel AT91SAM9260-EK
Memory policy: ECC disabled, Data cache writeback
Clocks: CPU 198 MHz, master 99 MHz, main 18.432 MHz
CPU0: D VIVT write-back cache
CPU0: I cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets
CPU0: D cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets
Built 1 zonelists. Total pages: 16256
Kernel command line: mem=64M console=ttyS0,115200 initrd=0x21100000,3145728 root=/dev/ram0 rw
AT91: 96 gpio irqs in 3 banks
PID hash table entries: 256 (order: 8, 1024 bytes)
Console: colour dummy device 80x30
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: 58940KB available (2504K code, 233K data, 112K init)
Unable to handle kernel paging request at virtual address e3843080
pgd = c0004000
[e3843080] *pgd=00000000
Internal error: Oops: 5 [#1]
Modules linked in:
CPU: 0 %(%.*s)
PC is at do_tune_cpucache+0x78/0x264
LR is at alloc_arraycache+0x24/0x3c
pc : [<c0074ec4>] lr : [<c0074e34>] psr: a00000d3
sp : c0297f08 ip : c037c360 fp : c0297f2c
r10: 00000028 r9 : 00000000 r8 : 00000000
r7 : 00000078 r6 : c0378680 r5 : c037f6c0 r4 : e3843080
r3 : 00000000 r2 : c037a400 r1 : e3843090 r0 : c0378680
Flags: NzCv IRQs off FIQs off Mode SVC_32 Segment kernel
Control: 0005317f Table: 20004000 DAC: 00000017
Process swapper (pid: 0, stack limit = 0xc0296260)
Stack: (0xc0297f08 to 0xc0298000)
7f00: c0378680 c0378680 c02bbec4 00040000 00000010 00000028
7f20: c0297f44 c0297f30 c007527c c0074e5c c0378680 c0378680 c0297f64 c0297f48
7f40: c0212a08 c0075234 c0378680 c0378680 00000008 00000190 c0297fb4 c0297f68
7f60: c00759f8 c02129f0 c0297f80 c0297f84 00000003 c0260038 fffffff8 00000001
7f80: 00000010 0000005c c0297fb4 c02bbe98 c02b31ec c0299d54 c02d04a4 2001eee4
7fa0: 41069265 2001eeb0 c0297fcc c0297fb8 c0012824 c0075640 00000000 00000000
7fc0: c0297ff4 c0297fd0 c0008d08 c00127b4 c0008554 00000000 00000000 c0020f2c
7fe0: 00053175 c02b3700 00000000 c0297ff8 20008030 c0008aec 00000000 00000000
Backtrace:
[<c0074e4c>] (do_tune_cpucache+0x0/0x264) from [<c007527c>] (enable_cpucache+0x58/0x7c)
[<c0075224>] (enable_cpucache+0x0/0x7c) from [<c0212a08>] (setup_cpu_cache+0x28/0x130)
r5:c0378680 r4:c0378680
[<c02129e0>] (setup_cpu_cache+0x0/0x130) from [<c00759f8>] (kmem_cache_create+0x3c8/0x46c)
r6:00000190 r5:00000008 r4:c0378680
[<c0075630>] (kmem_cache_create+0x0/0x46c) from [<c0012824>] (pidmap_init+0x80/0xa0)
[<c00127a4>] (pidmap_init+0x0/0xa0) from [<c0008d08>] (start_kernel+0x22c/0x2c4)
[<c0008adc>] (start_kernel+0x0/0x2c4) from [<20008030>] (0x20008030)
r5:c02b3700 r4:00053175
Code: e121f003 e3a03000 e1a00006 e2841010 (e5942000)
Kernel panic - not syncing: Attempted to kill the idle task!
aaarrr
А глючит всегда по-разному? На память похоже. Я бы советовал протестировать ее отдельно.
slava2005
Вот у меня тоже осталось подозрение только на память. Может инициализация неправильная ?
SerjT
Как решили проблему? У меня такая же проблема, но только с самодельными ядрами, готовые грузятся на ура.
MTh
Я что-то не вижу строки инициализации ядра...

UPD: вижу...
andron86
тоже подключаюсь, думаю что память.
demitry
Сталкивался с таким, и уже насобирал вагон логов...
http://projects.org.ua/forum/viewtopic.php...ight=at91sam9xe
Unable to handle kernel NULL pointer dereference at virtual address 0000001a
pgd = c0004000
[0000001a] *pgd=00000000
Ну и после этого соответственно Internal error: Oops: 1 [#1]
Оно (ядро) может валиться на любой из initcall-функций или сразу после инициализации памяти,
может валиться в функциях, кот. вызываются из kernel_init()...
Если разрулю, напишу, если разрулите - пишите. 05.gif

А память-то из убута тестировалась без проблем......
demitry
Цитата
Прочитал Ваше сообщение http://electronix.ru/forum/index.php?showt...st&p=700127

Дело не в памяти. С железкой как правило все в порядке. И данное сообщение - не более чем сообщение ядра. Может вывалиться когда по указател. неправильно полезли и т.д. Обычно при сборке ядра забывается что-нить включить и получается упс. ))


Да, это так, но в данном случае, как я, так и автор темы столкнулись с ситуацией, когда нуль-поинтер появляется не в одном месте, а "ПЛАВАЕТ" по всему коду инициализации ядра., в таком случае начинаешь грешить буквально на все - проверять нанд, память, блокировки, систему управления задачами, конфиги....
demitry
Пробовал плату с 2-я блоками питания - получил 2 разные картины... Может все дело в питании?
dch
там командоча есть mtest в uboot -е есть смысл запустить и запустить отдельно стоящую програмку тестирования памяти, советуют memtester - но его нужно переделать из под Linux-а в отдельно стоящую програмку.
demitry
Цитата
там командоча есть mtest в uboot -е есть смысл запустить и запустить отдельно стоящую програмку тестирования памяти, советуют memtester - но его нужно переделать из под Linux-а в отдельно стоящую програмку.


Конечно, память тестировалась с помощью mtest, а также самописными тестами на базе кода mtest еще из бутстрапа... все ок. А вот memtester делает все то же, что и mtest, только не в режиме ядра, а в режиме пользователя.
dch
Цитата(demitry @ Dec 31 2009, 11:37) *
memtester делает все то же, что и mtest

была у меня ситуация когда mtest проходит а memtester выдает ошибку, партия sdram была такой
Gorobey
Народ проблему удалось как-то решить? А то проблема такая-же пристутсвует. Притом ядро грузится через раз. Память memtesterom из под линукс проверялась, ошибок нет. Что интересно, что игрался с источником регулируемым. Если ставиш питание 3.30 В ядро грузится ну с раза 5-го, а если 3.4 то грузится почти всегда.
Притом проверялось ядро на другой плате, там работает без проблем. Тое явно не ядро smile.gif
Drozd2
Ответ мой, конечно, не слишком своевременный, но, может, кому пригодится. Сам задавал тему на форуме. http://electronix.ru/forum/index.php?showtopic=72263
До победы три шага.
В приложенном выводе не увидел информации по NAND flash. В ее подключении есть одна вольность. Это нога READY/BUSY. В фирменном ките она подключена к AT91_PIN_PC13. Файл board-sam***.c в каталоге linux-2.6.***/arch/arm/mach-at91. Если в собственной разработке она подключена к другой ноге контроллера, то надо переобозначить.
Второе, для теста задать самый медленный режим работы NAND. В файле at91sam9260_devices.c в том же каталоге в функции void __init at91_add_device_nand(struct at91_nand_data *data) вставить
Цитата
at91_sys_write(AT91_SMC_SETUP(3),
AT91_SMC_NWESETUP_(0x1f)
| AT91_SMC_NCS_WRSETUP_(0x10)
| AT91_SMC_NRDSETUP_(0x1f)
| AT91_SMC_NCS_RDSETUP_(0x10));

at91_sys_write(AT91_SMC_PULSE(3),
AT91_SMC_NWEPULSE_(0x1f)
| AT91_SMC_NCS_WRPULSE_(0x3f)
| AT91_SMC_NRDPULSE_(0x1f)
| AT91_SMC_NCS_RDPULSE_(0x3f));

at91_sys_write(AT91_SMC_CYCLE(3),
AT91_SMC_NWECYCLE_(0x7f)
| AT91_SMC_NRDCYCLE_(0x7f));

if (data->bus_width_16)
mode = AT91_SMC_DBW_16;
else
mode = AT91_SMC_DBW_8;

at91_sys_write(AT91_SMC_MODE(3),
mode | AT91_SMC_READMODE
| AT91_SMC_WRITEMODE
| AT91_SMC_EXNWMODE_DISABLE
| AT91_SMC_TDF_(15));


вместо того, что там есть. После этого шага можно попробовать перезагрузить плату.
И последнее, к переменной окружения bootargs u-boot-а добавить параметр mem=56M для памяти 64М. В общем, немного меньше, чем реально присутствует. Именно это мне помогло. Пока не разобрался, почему, но linux не запускался при указании правильного объема памяти.
И не увлекайтесь patch-ами. Заплатка нужна только на дыре. Где нет дыры, она не несет никакой смысловой нагрузки. В моем случае понадобился только patch на u-boot, чтобы появилась поддержка контроллера sam9g20. Больше никаких patch-ей не накладывал. Ядро брал из своей оси. 2.6.27.7.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.