Здравствуйте!
Вчера пришёл iMX233.
Посмотрел что на диске. Посмотрел документацию. Почитал форум.
Вопросы:
Вопрос №1 - источник питания.
В документации IMX23RM.pdf в Table 2-3. Recommended Power Supply Operating Conditions написано:
VDD5V Supply Voltage (5V current < 100 ma) 5.00 - 5.25V
Тут написано http://starterkit.ru/html/index.php?name=forum&op=view&id=7550, что лучше питать от 6В из-за падения на диоде VD1 в 0.2-0.3В. Так 6В-0.3В=5.7В - как бы многовато.
У меня источник импульсный 5Вx4А выдаёт на холостом ходу 5.3В. Пойдёт или нет? 5.3-0.3=5В Вроде нормально должно быть.
Может ли что-то аппаратно выйти из строя из-за и в каком случае?
Какой диапазон питающих напряжений допустим?
А потребление у платы какое? Что-то нигде не написано.
Вопрос №2 - загрузка.
На плате установлена DD3 - RAM и DD4 - ROM или NAND FLASH. http://starterkit.ru/html/index.php?name=forum&op=view&id=7548
NAND flash - J7,J8,J6 разомкнуты, J9 замкнут
SD/MMC карта - J6,J7,J8 замкнуты, J9 разомкнут
А если USB, то J6-8 разомкнуты, а J9 тоже разомкнут?
Не понятно.
Надо полагать, что в NAND flash всё прошито как надо и при подаче питания всё должно работать. Правильно?
По поводу загрузки с SD/MMC есть вопросы.
Как я понял из http://www.starterkit.ru/html/index.php?name=forum&op=view&id=7655 для того, чтобы загрузиться с SD/MMC не достаточно просто замкнуть J6-J8, а J9 разомкнуть - надо ещё и при помощи утилиты BitBurner изменить некоторые однократно программируемые биты. Правильно? Или нет? Или это для каких-то старых версий? Есть ли какие-то подводные камни сдесь? Например, изменю я эти биты, а потом не смогу грузиться с NAND Flash.
По поводу USB тоже не понятно.
Если J6-J8 разомкнуть, то это тоже самое фактически, что и загрузка с NAND - там такая же конфигурация.
Чтобы загрузиться с USB - надо просто воткнуть FLASH'ку загрузочную в USB порт?
А USB-жёсткие диски поддерживаются типа 320-640 Gbyte?
Я так полагаю, что у FLASH носителей всё-таки ограниченный цикл записей/стираний и лучше тренироваться на USB-FLASH или SD/MMC карточках - их легко заменить, а вот NAND FLASH DD4 не очень. Вот поэтому хочется загрузиться с чего-то другого.
Вопрос №3 - вопросы о ПО.
Можно сконфигурировать всю программную часть на VMware - поставить нужное ПО из официальных репозиториев, сконцигурировать сетевые интерфейсы и т.д. Потом делаем образ и перемещаем его командой dd на SD/MMC или USB-flash. Эти действия делаем на компьютере. После этого вгоняем полученную SD/MMC или USB-flash в плату и по идее всё должно загрузиться и работать. Правильно?
Но, на диске есть утилита MfgTool.exe. Как я понял из форума, она служит для прошивки NAND FLASH DD4. Правильно?
А ещё на диске в папке /Boot/Images есть файлы:
linux_mmc.sb linux_nand.sb readme.txt uboot.sb
Не совсем пока понял что это. Видимо, это готовые прошивки для NAND. А загружаются в NAND они с помощью MfgTool.exe?
Правильно?
Вопрос №4 - видео выход.
Впринципе видео и не нужно. Оно только для отладки пригодилось бы. И всё. Я и дисплей покупать не стал. Тем более есть коаксиальный выход.
Как я понял из беглого просмотра документации - бешеный PDF на 1600 страниц в 19-20 главе видеовыход у нас то ли PAL то ли NTSC с несущей на 108 МГц и шириной спектра в 5.1МГц. Суём коаксиальный кабель в телевизор - настраиваем какой-нибудь канал на 108МГц и типа должны что-то увидеть.
Правильно?
А драйвера для этого композитного видеовыхода уже встроены в ядро, как я понял.
Ну, пока всё.
Не могли бы вы просветить эти вопросы?
1) 5.00 - 5.25V это номинальне значения, от 6В она не сгорит.
Просто я решил, что требовать от людей питание 5,5-5,7В будет излишне пунктуально.
Если подадите меньше, ничего естественно не сгорит, но и работать не будет, а если питать меньше чем от 5,3-5,5В, возможны глюки.
2) NAND прошита готовой системой, сорцы, скрипты сборки и образы, это все на диске.
Загрузка с SD описана здесь.
Я с некоторыми моментами разобрался.
В частности взял блок питания, поднастроил его, и он стал давать 5.9 В. Вроде, всё работает.
Воткнул Шнурок в COM порт компьютера и в Hyper Terminal увидел загрузочные сообщения.
Включаю. 192.168.0.2 не только пингается, но там ещё и http сервер есть - вижу картинку в браузере.
Потом, чтобы загрузиться с SD/MMC карточки я сделал как тут: http://starterkit.ru/html/index.php?name=forum&op=view&id=7655
Как на этой картинке: http://starterkit.ru/html/uploads/forum/forum-UbRJStqMTT-7.jpg Но есть вопросы:
В VMware запустил гостевую ОС с Debian.
Перешёл в /home/usr/src/что-то там/linux-2.6.31/
Запустил meake_menuconfig и выбрал конфигурацию config_initramfs_mmc. После этого вышел.
Затем запустил:
sh make_system, который вначале запускает script из buildroot-2009.10.
В результате в /tftpboot у меня появились файлы:
[root@Linux SK-iMX233]# ls
linux.sb mnt zImage zlinux
Это я их уже вынул из виртуальной машины в реальную и создал папочку mnt.
По идее linux.sb - это ядро с поддержкой SD/MMC.
zImage - это по идее корневая файловая система.
Но она не монтируется через mount -o loop.
[root@Linux SK-iMX233]# mount -o loop -t ext2 zImage mnt
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
[root@Linux SK-iMX233]# mount -o loop -t ext2 zlinux mnt
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
Получилось вот так.
Я не особо понимаю откуда взять корневую файловую систему.
Скопировать из виртуального Debian'а?
Что-то типа rsync -Pav ...
Вот в этой теме: http://starterkit.ru/html/index.php?name=forum&op=view&id=7655
Вы грузитесь с NAND Flash размыкаете J9 вставляете SD/MMC и с помощью script'а непосредственно копируете из NAND в SD/MMC файловую систему.
Можно ли образ как-то слить по USB с NAND Flash?
Да, и ещё я не понимаю вот этих манипуляций:
dd if=/dev/zero of=/dev/sdd1 bs=512 count=4
Заполняем 4 сектора нулями.
dd if=linux.sb of=/dev/sdd1 bs=512 seek=4 conv=sync,notrunc
Закидываем ядро linux.sb поверх этих нулей в первый раздел.
Зачем мы вообще нули писали?
В результатие этих действий файловая система в первом разделе отсутствует! Это нормально?
А загрузчик в MBR где? Когда он создаётся?
Про загрузчик ничего нигде не написано.
А можно ли воткнуть эту SD/MMC карточку через cardreader в компьютер и загрузиться с неё, чтобы проверить? Или ARM9 грузиться с первого раздела и ему нет дела до MBR?
Как-то плохо документирован и объяснён процесс загрузки с SD/MMC. Приходится много думать.
Форум я читал, а потом важные моменты сохранил и распечатал и перечитывал несколько раз.
Бинарники не смотрел.
Смотрел скрипты, поэтому пришёл к выводу, что достаточно запустить make_system - этот скрипт все остальные запускает. Мне бы вначале по минимуму разобраться.
Кажется нашёл я корневую ФС.
Эта ФС находится в /home/user/src/buidroot-2010.02/output/target.
Там /usr /home /mnt /bin /root /lib /etc и т.д.
Попробую сделаю сегодня rsync -Pav /home/user/src/buidroot-2010.02/output/target/ "на SD/MMC 2-ой раздел", чтобы сохранить все права, и попробую загрузиться.
Не, ну, на самом деле. Вы платы продаёте эти, а с документацией туго. Приходится в качестве документации использовать форум.
Разберусь, найду время - напишу вам инструкцию пользователя с картинками по этой плате, а вы где-нибудь её повесьте на сайте.
Понятно. Это правильно, значит.
Ясно. То есть этой плате всё равно, что находится в MBR. Эта плата определяет где первый раздел и передаёт управление первому разделу. Ему и файловая система не нужна - там всё в образе, который залит в начало раздела. В итоге получается RAM FS - ядро в ОЗУ. А второй раздел подмонтируется и используется - там должна быть корневая ФС. А её можно взять, как я догадался из /home/user/src/buidroot-2010.02/output/target/
Буду пробовать.
не занудства ради - приведите слова, где обещана полная документация..
суппорт на форуме - это нормальная практика. кстати, так же нормой стало со многими товарами - не прикладывать бумажное руководство и диски, а отправлять на сайт производителя в раздел download - экономия для конечного пользователя..
:)
за ~15 лет инета я эту фразу читал "стотыщразпицот".. редкая птица долетит до середины Днепра..
Возможно, получилось...
Сделал всё как по форуму + смотрел документацию официальную, но если честно, по большей части помог разобраться форум.
Вначале выдал в HyperTerminal вот это при втыкании SD/MMC карточки:
0x80501003
А это:
#define ERROR_ROM_LDR_SIGNATURE (ERROR_ROM_GROUP | ERROR_ROM_LOADER_GROUP | 0x3)
0x80501003 The file signature or file version is incorrect.
Нашёл вот такой ответ:
Попробовал.
Потом решил взять образ с диска.
SK-iMX233/Boot/Images/linux_mmc.sb
Сделал так:
[root@Linux_USB SK-iMX233]# dd if=/dev/zero of=/dev/sdg1
dd: writing to `/dev/sdg1': No space left on device
37820+0 records in
37819+0 records out
19363328 bytes (19 MB) copied, 7.13017 s, 2.7 MB/s
А потом так:
[root@Linux_USB Images]# dd if=linux_mmc.sb of=/dev/sdg1 ibs=512 seek=4 conv=sync,notrunc
9822+1 records in
9823+0 records out
5029376 bytes (5.0 MB) copied, 1.27957 s, 3.9 MB/s
Вроде, пропёрло.
Теперь по адресу http://192.168.0.136/ вижу не картинку с платой, которая появлялась при загрузке с NAND Flash, а вот такой текст:
Видимо, плата загрузилась всё-таки с SD/MMC карточки!
Ну, вот и я поучавствовал. Купил плату. Почитал документацию. Почитал форум. Понапрягал мозги.
Напишу какое-нибудь руководство.
Информация по форуму разрознена. Согласитесь это так.
И лазить по всем темам и читать разные темы, где кто-то что-то спрашивает, да ещё не факт, что это подходит именно для моего случая, - это муторно. Приходится вдумываться, анализировать и примерять к себе.
Многие моменты вообще нигде не упоминаются или очень редко о них говорится.
Вот, пример:
Где-то видел разговор о терминале. Думал долго что за терминал. Предположил, что это пользователь экран подключил к плате - вот и терминал, а оказывается это HyperTerminal и подключаться надо к COM порту платы.
Я напишу вам инструкцию. Пускай не полную. Но, по крайней мере, обобщающую в некоторой степени тот материал, который разбросан здесь, в кучку, чтоб проще было начинать с этой платой работать.
Вроде, грузится, но при загрузке выдаёт вот это:
0x8020A01D
Ждёт несколько секунд, а потом начинает грузиться.
Вот, что означает:
#define ERROR_DDI_SD_MBR_NOT_FOUND (ERROR_DDI_GROUP | ERROR_DDI_SD_DRIVER_GROUP | 0x1D)
0x8020A01D ?
Не знаю очень ли это критично.
Ещё вопрос:
На диске есть файлик linux_mmc.sb - ядро(2.6.31)+корневая initramfs, драйвер NAND в ядре отключен, возможность монтировать SD/MMC карты.
На компе через CardReader делаю что-то типа этого:
Грузится и работает.
Беру linux_mmc.sb - всё классно.
Подключаюсь к плате через telnet - вижу командную строку. Вижу /mnt, а в ней mmcblk0p2 - вижу там файлы.
Делаю touch 12345 - файл появляется на MMC карточке - всё нормально.
В /dev есть устройства /dev/mmcblk0p1 и mmcblk0p2.
Но сам через ./make_menuconfig почему-то никак не могу сделать образ ядра, чтоб раздел MMC карточки монтировался.
Там есть config_mmc_rootfs - по идее rootfs должна браться из раздела mmcblk0p2, но получается почему-то ramfs и даже mmcblk0p2 не монтируется почему-то и в /dev/mmcblk0p2 его почему-то нет, хотя судя по конфигурации он должен быть - в разделе divece driver включена поддердка SD/MMC.
В boot options, кстати прописано это в параметрах:
root=mmcblk0p2
Не подскажите что надо править конфигурации ядра, чтоб rootfs была на mmcblk0p2? Или я что-то не так делаю. Не пойму.
В виртуальном Debian'е:
Запускаю вначале ./make_menuconfig.
Выхожу из него. Потом делаю ./make_system.
У меня появляется в /tftpboot файл linux.sb.
Его я беру и заливаю командой dd в первый раздел так, как описывал в самом начале.
По идее на немонтируемость и отсутствие в /dev раздела mmcblk0p2 влияет ядро. Т.е. надо править ./make_menuconfig. Правильно?