Warning: touch() [function.touch]: Unable to create file /home/starterkit/starterkit.ru/html/error.log because Permission denied in /home/starterkit/starterkit.ru/html/errorhandler.php on line 51
Проблема чтения файлов с SD карты. - Embedded Linux - Форум - starterkit.ru
Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » Embedded Linux
Проблема чтения файлов с SD карты.
Jury093
Добавлено 04.12.2011 10:37 Сообщение: 11
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
после строк:
Код
NR_IRQS:192
AT91: 160 gpio irqs in 5 banks
Console: colour dummy device 80x30

должны быть строки типа:
Код
console [ttyS0] enabled
Calibrating delay loop... 199.47 BogoMIPS (lpj=997376)

куда у вас отладочный порт подключен? в ядре опцию dbgu правили? в файле борды уарты отключали?
более вероятно, что ядро работает дальше, но вывод диагностики перенастроен..

Цитата
Скорее всего, все мои проблемы имееют программный характер. :-)

т.о. железо исправно - дело за малым, запилить ядро. проверьте частоты и делители и побольше диагностики для sd/mmc

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Smail
Добавлено 05.12.2011 19:32 Редактировалось 05.12.2011 19:36 Сообщение: 12
Smail
0

Пункты: 369
Регистрация: 06.06.2011
Пол: Мужчина
ЧУДНЫ ДЕЛА ТВОИ Linux!!!
Проблема не решилась, но обойти удалось...
При создании image.bin командой:
Код
../../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
и аргументе ядра mem=128M
Ядро при загрузке зависает... При том зависает в разных местах и не отвечает совсем :-(.
А При строке ... -a 0x71008000 -e 0x71008000 -n ... и аргументе MEM=128M запускается, но возникает проблема чтения с карты. Скорее всего причина в том, что cat /proc/iomem показывает диапазон RAM: 0х71000000-0x78ffffff.
Всё стало хорошо, когда ядру указал MEM=64M. Памяти стало в два раза меньше, чем есть на самом деле(0х71000000-0x74ffffff), зато всё работает :-)
Как то не хочется потерять половину памяти.
З.Ы. Пробовал на разных ядрах, от 2.6.36-rc4(на диске SK) до 3.1.4, - всё одинаково.
З.З.Ы. Всем Огромное Спасибо, а то неделю по кругу ходил и делал одно и тоже.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 05.12.2011 22:23 Редактировалось 05.12.2011 22:29 Сообщение: 13
sasamy
4.70

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

З.З.Ы. Всем Огромное Спасибо, а то неделю по кругу ходил и делал одно и тоже.


Еще долго будете ходить потому что судя по логу у вас проблемы с загрузчиком - он неправильно параметры памяти передает :)

0х71000000-0x78ffffff
0х71000000-0x74ffffff

у DDRSDRC0 начальный адрес (физичесский) 0х70000000 (см Figure 6-1 AT91SAM9G45 Memory Mapping). Возможно в ядре наковыряно - там тоже можно испортить. Поэтому на полном размере 128М виснет - процессор обращается к несуществующей памяти, которая при правильном раскладе должна располагаться по адресам 0х70000000-0x77ffffff. Может конечно как-то память уникально распаяна :) но я такое впервые вижу. Что за плата у вас - схема есть ?
Спуститься к концу Подняться к началу
Персональная информация
Smail
Добавлено 06.12.2011 19:22 Редактировалось 06.12.2011 19:25 Сообщение: 14
Smail
0

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

Еще долго будете ходить потому что судя по логу у вас проблемы с загрузчиком - он неправильно параметры памяти передает :)

Загрузчик брал от atmel-a, брал SK, ничего особо не менял. Ведёт себя так же.

В BootStrape добавлял код теста памяти, физ. адрес с 0х70000000 по 0х77ffffff доступны и корректны.
А как загрузчик передаёт начальный адрес оперативной памяти ядру???
Не отсюда ли?
Код
mkimage -A arm -O linux -T kernel [b]-a 0x71008000 -e 0x71008000[/b] -n "Linux Kernel Image" -d linux.bin image.bin

Цитата

Поэтому на полном размере 128М виснет - процессор обращается к несуществующей памяти, которая при правильном раскладе должна располагаться по адресам 0х70000000-0x77ffffff.

Это понятно, поэтому и при MEM=64M, ядро не виснет, и SD работает отлично.
Цитата

Может конечно как-то память уникально распаяна :) но я такое впервые вижу. Что за плата у вас - схема есть ?

Плата собственная, память распаяна как на ARM-кой отладочной плате, две микрухи... :-)
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 06.12.2011 21:09 Сообщение: 15
sasamy
4.70

Пункты: 76882
Регистрация: 14.08.2009
Загрузчик передает параметры ядру через укзатель на список специальных структур, где в том числе содержатся сведения о физической памяти, например в bootstrap атмеловском

/* it is allowed to have multiple ATAG_MEM nodes */
#define ATAG_MEM 0x54410002

struct tag_mem32 {
u32 size;
u32 start; /* physical start address */
};

подробней можете прочитать тут
http://www.simtec.co.uk/products/SWLINUX/files/booting_article.html

но когда-то я ковырялся с атмеловским ядром и заметил что оно особо не смотрит на ATAG_MEM и берет базовый адрес из своего конфига, например для g45
arch/arm/mach-at91/include/mach/at91sam9g45.h:
#define CONFIG_DRAM_BASE AT91_CHIPSELECT_6

arch/arm/mach-at91/include/mach/hardware.h:
/* External Memory Map */
#define AT91_CHIPSELECT_0 0x10000000
#define AT91_CHIPSELECT_1 0x20000000
#define AT91_CHIPSELECT_2 0x30000000
#define AT91_CHIPSELECT_3 0x40000000
#define AT91_CHIPSELECT_4 0x50000000
#define AT91_CHIPSELECT_5 0x60000000
#define AT91_CHIPSELECT_6 0x70000000
#define AT91_CHIPSELECT_7 0x80000000

откуда у вас берется 0x71000000 - вам наверно лучше знать :)
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux