Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:2
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » Embedded Linux
Проблема чтения файлов с SD карты.
Smail
Добавлено 01.12.2011 19:59
0
Сообщение: 1
Smail
0

Пункты: 369
Регистрация: 06.06.2011
Пол: Мужчина
Доброго времени суток.
Имеется плата на AT91SAM9G45. На борту 128 МБ DDR2, MCI, Ethernet и т.д. На карте установлен Linux 3.1.0-rc4 и раздел с rootfs(buildroot).
Лог загрузки:
Цитата
-----------------------------------------------

| SD Card Loader Started

-----------------------------------------------

Config DDR2 Complete !!!

-Step 2
Image size: 0x335ce0, load_addr: 0x71008000, ep: 0x71008000
hdr->ih_size: 0xe05c3300, JUMP_ADDR : 0x74000000
relocating linux kernel to proper address, dst: 0x71008000, src: 0x74000040, len: 0x335ce0, machid: 0x8a4
... 0x335ce0 bytes data transferred!

Starting linux kernel ..., machid: 0x8a4, tags: 0x70000100

Linux version 3.1.0-rc4 (root@LinuxVBox-WOLF) (gcc version 4.2.0 20070413 (prerelease) (CodeSourcery Sourcery G++ Lite 2007q1-10)) #99 Thu Dec 1 19:41:22 NOVT 2011
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
CPU: VIVT data cache, VIVT instruction cache
Machine: Atmel AT91SAM9M10G45-EK
Memory policy: ECC disabled, Data cache writeback
AT91: Detected soc type: at91sam9g45
AT91: Detected soc subtype: Unknown
AT91: sram at 0x300000 of 0x10000 mapped at 0xfef68000
Clocks: CPU 400 MHz, master 133 MHz, main 12.000 MHz
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512
Kernel command line: mem=128M console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait
PID hash table entries: 512 (order: -1, 2048 bytes)
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 128MB = 128MB total
Memory: 126532k/126532k available, 4540k reserved, 0K highmem
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
DMA : 0xffa00000 - 0xffe00000 ( 4 MB)
vmalloc : 0xc8800000 - 0xfee00000 ( 870 MB)
lowmem : 0xc0000000 - 0xc8000000 ( 128 MB)
modules : 0xbf000000 - 0xc0000000 ( 16 MB)
.text : 0xc0008000 - 0xc0301c70 (3048 kB)
.init : 0xc0302000 - 0xc0320000 ( 120 kB)
.data : 0xc0320000 - 0xc033dce0 ( 120 kB)
.bss : 0xc033dce0 - 0xc034bff0 ( 57 kB)
NR_IRQS:192
AT91: 160 gpio irqs in 5 banks
Console: colour dummy device 80x30
console [ttyS0] enabled
Calibrating delay loop... 199.06 BogoMIPS (lpj=995328)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
bio: create slab <bio-0> at 0
at_hdmac at_hdmac: Atmel AHB DMA Controller ( cpy slave ), 8 channels
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
Switching to clocksource tcb_clksrc
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 4096 (order: 3, 32768 bytes)
TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
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
msgmni has been set to 247
io scheduler noop registered (default)
atmel_usart.0: ttyS0 at MMIO 0xfeffee00 (irq = 1) is a ATMEL_SERIAL
brd: module loaded
loop: module loaded
macb macb: invalid hw address, using random
MACB_mii_bus: probed
eth0: Atmel MACB at 0xfffbc000 irq 25 (12:2e:f6:77:c0:0e)
eth0: attached PHY driver [Davicom DM9161A] (mii_bus:phy_addr=ffffffff:00, irq=-1)
console [netcon0] enabled
netconsole: network logging started
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
atmel-ehci atmel-ehci: Atmel EHCI UHP HS
atmel-ehci atmel-ehci: new USB bus registered, assigned bus number 1
atmel-ehci atmel-ehci: irq 22, io mem 0x00800000
atmel-ehci atmel-ehci: USB 2.0 started, EHCI 1.00
usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: Atmel EHCI UHP HS
usb usb1: Manufacturer: Linux 3.1.0-rc4 ehci_hcd
usb usb1: SerialNumber: atmel-ehci
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
at91_ohci at91_ohci: AT91 OHCI
at91_ohci at91_ohci: new USB bus registered, assigned bus number 2
at91_ohci at91_ohci: irq 22, io mem 0x00700000
usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb2: Product: AT91 OHCI
usb usb2: Manufacturer: Linux 3.1.0-rc4 ohci_hcd
usb usb2: SerialNumber: at91
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 2 ports detected
mousedev: PS/2 mouse device common for all mice
rtc-at91sam9 at91_rtt.0: rtc core: registered at91_rtt as rtc0
rtc-at91sam9 at91_rtt.0: rtc0: SET TIME!
Linux video capture interface: v2.00
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
TCP cubic registered
NET: Registered protocol family 17
rtc-at91sam9 at91_rtt.0: hctosys: unable to read the hardware clock
atmel_mci atmel_mci.0: Using dma0chan0 for DMA transfers
atmel_mci atmel_mci.0: Atmel MCI controller at 0xfff80000 irq 11, 1 slots
Waiting for root device /dev/mmcblk0p2...
mmc0: host does not support reading read-only switch. assuming write-enable.
mmc0: new high speed SD card at address 0001
mmcblk0: mmc0:0001 00000 1.89 GiB
mmcblk0: p1 p2 p3
EXT2-fs (mmcblk0p2): warning: mounting unchecked fs, running e2fsck is recommended
VFS: Mounted root (ext2 filesystem) on device 179:2.
Freeing init memory: 120K
Starting logging: OK
Initializing random number generator... done.
Welcome to Buildroot
buildroot login: eth0: link up (100/Full)

При запуске простой программы чтения файла (размер около 20МБ) с карты ( fread в цикле ), ядро вылетает с ошибкой чтения mmc.
Код

# cd /home/
# ls
# mount /dev/mmcblk0p
/dev/mmcblk0p1 /dev/mmcblk0p2 /dev/mmcblk0p3
# mount /dev/mmcblk0p3 /home/
kjournald starting. Commit interval 5 seconds
EXT3-fs (mmcblk0p3): using internal journal
EXT3-fs (mmcblk0p3): mounted filesystem with ordered data mode
# cd /home/
# ls
TestApp signal.dat
# ./TestApp
*****************************
*****************************
(* - Один вызов fread....)
После оч много *, вываливается:
*****************************
****************attempt to access beyond end of device
*mmcblk0p3: rw=0, want=9127029024, limit=1863540
*attempt to access beyond end of device
*mmcblk0p3: rw=0, want=9261027624, limit=1863540
*attempt to access beyond end of device
*mmcblk0p3: rw=0, want=26306707760, limit=1863540
*attempt to access beyond end of device
*mmcblk0p3: rw=0, want=26575472952, limit=1863540
*attempt to access beyond end of device
*mmcblk0p3: rw=0, want=9127151936, limit=1863540
*attempt to access beyond end of device
*mmcblk0p3: rw=0, want=9261457736, limit=1863540
*attempt to access beyond end of device
*mmcblk0p3: rw=0, want=9395362128, limit=1863540
*attempt to access beyond end of device
*mmcblk0p3: rw=0, want=9395458392, limit=1863540
*attempt to access beyond end of device
*mmcblk0p3: rw=0, want=24427874656, limit=1863540
*attempt to access beyond end of device
*mmcblk0p3: rw=0, want=14898688360, limit=1863540
*attempt to access beyond end of device
*mmcblk0p3: rw=0, want=21340909936, limit=1863540
*attempt to access beyond end of device
*mmcblk0p3: rw=0, want=14227517816, limit=1863540
*attempt to access beyond end of device
*mmcblk0p3: rw=0, want=28857330048, limit=1863540
*attempt to access beyond end of device
*mmcblk0p3: rw=0, want=32078092680, limit=1863540
*attempt to access beyond end of device
*mmcblk0p3: rw=0, want=15569674640, limit=1863540
*attempt to access beyond end of device
*mmcblk0p3: rw=0, want=11543239064, limit=1863540
**************************

И ещё, после завершения работы программы, система как бы реагирует, но не работает. :-))
Код

***********
Complete.
#
#
# ls
Segmentation fault
# cat /proc/iomem

Welcome to Buildroot
buildroot login:

Есть ещё плата SK-AT91SAM9G45, при установке на которую этого же ядра и rootfs программа чтения файла работает отлично.
Разница между платами в том, что первая сделана по подобию Atmel-овской отладочной плате. Плата от starterkit появилась позже. (SK - Спасибо, что вы есть).
В чём может быть причина? В какую сторону рыть?
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 01.12.2011 20:04 Сообщение: 2
Pavel Ivanchenko
Admin
4.39

Пункты: 92788
Регистрация: 24.03.2009
Пол: Мужчина
Вывод вполне очевиден, если схематика подключения карты не отличается - нужно рыть в сторону поиска отличий в ядре ...
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 01.12.2011 20:15 Редактировалось 02.12.2011 00:05 Сообщение: 3
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Цитата
atmel_mci atmel_mci.0: Using dma0chan0 for DMA transfers


Попробуйте драйвер mci без dma - там есть подменю на выбор (имеется ввиду без DMAC ). Еще попробуйте карту отформатировать и записать корневую заново.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 01.12.2011 21:52 Сообщение: 4
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Разница между платами в том, что первая сделана по подобию Atmel-овской отладочной плате. Плата от starterkit появилась позже. (SK - Спасибо, что вы есть).
В чём может быть причина? В какую сторону рыть?

- попробуйте другую (физически) карточку, скопируйте туда эту же рутовую и грузаните..
- пуллапы на интерфейсе (sd/mmc) есть?
- мощности питания хватает? может БП шумит?

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 01.12.2011 21:58 Редактировалось 01.12.2011 22:09 Сообщение: 5
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Цитата

Есть ещё плата SK-AT91SAM9G45, при установке на которую этого же ядра и rootfs программа чтения файла работает отлично.


Слона то я и не заметил :) тогда мои советы скорей всего не актуальны. В таком случае в первую очередь memtester наверно нужно запускать и как уже говорил Юра проверить - есть ли подтягивающие резисторы.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 01.12.2011 23:07 Сообщение: 6
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Слона то я и не заметил :) тогда мои советы скорей всего не актуальны.

угу, слон был изрядно завуалирован.. (:

Цитата
В таком случае в первую очередь memtester наверно нужно запускать и как уже говорил Юра проверить - есть ли подтягивающие резисторы.

еще есть ощущения, что что-то накрутили в ядрах 3.хх для MCI, например в непаханом 3.1.2 вижу:
Код
atmel_mci atmel_mci.0: Atmel MCI controller at 0xfff80000 irq 11, 1 slots
Waiting for root device /dev/mmcblk0p2...
mmc0: host does not support reading read-only switch. assuming write-enable.
mmc0: new high speed SD card at address b368
mmcblk0: mmc0:b368 SDC 976 MiB
mmcblk0: p1 p2

и на пустом месте в логе:
Код
devtmpfs: mounted
Freeing init memory: 124K
------------[ cut here ]------------
WARNING: at kernel/irq/handle.c:130 handle_irq_event_percpu+0x6c/0x18c()
irq 11 handler atmci_interrupt+0x0/0x6e4 enabled interrupts
еще куча стонов

но тем не менее карточка работает (из проверенных синеньких 1Г)
и изредка вижу таймаут -110
такшта твоя идея с DMA вполне здравая - надо пробовать..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Smail
Добавлено 02.12.2011 07:11 Редактировалось 02.12.2011 07:14 Сообщение: 7
Smail
0

Пункты: 369
Регистрация: 06.06.2011
Пол: Мужчина
Разводку mmc проверил, подтягивающие резисторы заменил все на 10 кОм(как на SK плате),заменил на перемычки проходные резисторы, Добавил электролит по питанию карты, питание держится 3,25В. Напряжение питания карты получается от импульсника.
Загружал плату SK-AT91SAM9G45 с ядром по умолчанию и в качестве RootFS указывал эту же SD карту (изменил bootargs в UBOOT). То всё работает.
И ещё, когда выкинул LCD из ядра, то вроде стало лучше, но всё равно не идеально.
При копировании большого файла с/из карты по ftp, так же система "вылетает" с такими же сообщениями.
DMA оключал, не помогает. ;-(
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 02.12.2011 09:58 Редактировалось 02.12.2011 10:01 Сообщение: 8
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
есть еще два варианта:
- попробовать другую карточку? лучше раздобыть старую на 0.5-1ГБ
- взять ядро из "старых" 2.6.30-2.6.36, не трогая остальную периферию, настроить работу с SD и проверить стабильность

в светы вышеизложенного похоже хардварные проблемы на самодельной плате (на основе отключения LCD контроллера) и нормальной работе этой же карты на плате кита..

Цитата
И ещё, когда выкинул LCD из ядра, то вроде стало лучше, но всё равно не идеально.
При копировании большого файла с/из карты по ftp, так же система "вылетает" с такими же сообщениями.

в первом случае, вы улучшили времянки системы, во втором делаете "большую" нагрузку - вот система и падает, чего разумеется не должно быть..
нет ли наведенных помех на интерфейс MCI?

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Smail
Добавлено 04.12.2011 08:20 Сообщение: 9
Smail
0

Пункты: 369
Регистрация: 06.06.2011
Пол: Мужчина
Цитата

-попробовать другую карточку? лучше раздобыть старую на 0.5-1ГБ

Перепробывал на трёх разных картах - итог один.
Скорее всего, все мои проблемы имееют программный характер. :-)
Вчера получилась такая ситуация: Усиленно менял всё что можно было изменить в bootStape и ядре, так при очередной загрузке всё заработало, и программа чтения, и запись файла по FTP. И всё бы хорошо, но после выключения питания, обратно работать не стало.
Может поможет: На самопальной плате у меня нет SRAM и NAND памяти. EBI шина подключена к ПЛИС.
Медленно, но верно наступает паника.
Спуститься к концу Подняться к началу
Персональная информация
Smail
Добавлено 04.12.2011 08:38 Сообщение: 10
Smail
0

Пункты: 369
Регистрация: 06.06.2011
Пол: Мужчина
При строке в make_kernel
Код

../../loaders/u-boot-2010.09/tools/mkimage -A arm -O linux -T kernel -a 0x70008000 -e 0x70008000 -n "Linux Kernel Image" -d linux.bin image.bin

Ядро перестаёт грузиться:
Код

Starting linux kernel ..., machid: 0x8a4, tags: 0x70000100

Linux version 3.1.0-rc4 (root@linux-hhuc) (gcc version 4.2.0 20070413 (prerelease) (CodeSourcery Sourcery G++ Lite 2007q1-10)) #106 Sun Dec 4 11:13:52 NOVT 2011
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
CPU: VIVT data cache, VIVT instruction cache
Machine: Atmel AT91SAM9M10G45-EK
Memory policy: ECC disabled, Data cache writeback
AT91: Detected soc type: at91sam9g45
AT91: Detected soc subtype: Unknown
AT91: sram at 0x300000 of 0x10000 mapped at 0xfef68000
Clocks: CPU 400 MHz, master 133 MHz, main 12.000 MHz
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512
Kernel command line: mem=128M console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait
PID hash table entries: 512 (order: -1, 2048 bytes)
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 128MB = 128MB total
Memory: 125712k/125712k available, 5360k reserved, 0K highmem
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
DMA : 0xffa00000 - 0xffe00000 ( 4 MB)
vmalloc : 0xc8800000 - 0xfee00000 ( 870 MB)
lowmem : 0xc0000000 - 0xc8000000 ( 128 MB)
modules : 0xbf000000 - 0xc0000000 ( 16 MB)
.text : 0xc0008000 - 0xc03c1ef8 (3816 kB)
.init : 0xc03c2000 - 0xc03e2000 ( 128 kB)
.data : 0xc03e2000 - 0xc0406840 ( 147 kB)
.bss : 0xc0406840 - 0xc0418014 ( 70 kB)
NR_IRQS:192
AT91: 160 gpio irqs in 5 banks
Console: colour dummy device 80x30

И дальше ничего...

А при стоке
Код

../../loaders/u-boot-2010.09/tools/mkimage -A arm -O linux -T kernel -a 0x71008000 -e 0x71008000 -n "Linux Kernel Image" -d linux.bin image.bin

Ядро грузиться. Теперь совсем всё не понятно стало....
В bootstrape вроде никаких "пересечений" диапазонов нету.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux