?

Log in

dron_gus [entries|archive|friends|userinfo]
dron_gus

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Интернет приемные и прочая мутотень [Oct. 19th, 2011|01:47 pm]
dron_gus
Как приемные различных гос учереждений борются с мешающими им пилить бюджет людишками, думаю, понятно любому человеку, хоть раз бывавшему в любой гос. структуре.
А как же боротся с электронными обращениями, которые обязали принимать через новомодные интернет порталы? Наподобие этого http://gov.spb.ru/contacts/obr_mail ? Они, хоть и не так яростно, как снующий по коридорам люд, но все же мешают избранным пилить, расскладывать пасьянс и посещать столовую.
А проще простого. Достаточно часть письма, которое уходит после заполнения формы отправлять в win-1251, а часть в koi8-r. Еще желательно, чтобы само обращение было нечитаемо. Для этого все статические поля ("Фамилия:", "Имя:") кодирум win-1251, а богомерзкое обращение в koi. Profit. Осталось ответить, что мол: "Возвращаем Ваше обращение, т.к. оно не поддается прочтению." и идем дальше поливать фикус на подоконнике, ездить по встречке с мигалкой и что там еще на повестке дня?
linkpost comment

noname LY-777, первое знакомство и вскрытие [Feb. 6th, 2011|05:45 pm]
dron_gus
Вчера, наконец-таки, мне в руки попала андроид таблетка LY-777. Чем примечательна? Тем, что продают ее по смешной цене $130. Правда верить красивым описаниям не стоит.  Акселерометра и функции поворота не имеет (тупо не распаян акселерометр). Зато проц работает не на 667 МГц. а разогнан до 800 МГц. при этом работает на вид стабильно. Мне, кстати, попался еще и без микрофона, но есть счастливчики, на которых еще не успели сэкономить (инфа 100%). Микрофон допилить  не проблема, ориентируясь на фото.
В целом состоянии устройство проработало менее 10 минут. Потом было безжалостно разобрано.
Read more...Collapse )
link5 comments|post comment

Нано-наука и наногранты дл нано-ученых [Dec. 14th, 2010|02:47 pm]
dron_gus
Как мне кажется сейчас в России три волшебных слова-приставки: "нано", "модернизация" и "энергоэффективность". На волне этой популярности многие начинают их использовать не к месту. Вот небольшая подборка интересных тем из списка заявок на грант Союза Инновационно-Технологических Центров России:
  1. Автоохранная  сигнализация инновационного типа с независимым видеонаблюдением    
  2. Наномеханизмы влияния гиподинамии и стресса на процесс обучения и памяти.
  3. Разработка энергосберегающей системы теплоснабжения удаленных сельскохозяйственных объектов и индивидуальных потребителей с использованием установки получения водорода и аппарата магнитной обработки воды. (торсионные поля is back?)
  4. Изготовление наноструктурированных материалов для скользящей поверхности лыж на основе сверхвысокомолекулярного полиэтилена и терморадиационно-модифицированного политетрафторэтилена с различными модифицирующими нанодобавками (аж два нано!)
  5. Сетевой нано инкубатор (простенько и со вкусом)
  6. Повышение сорбционных свойств нефтяных сорбентов на основе торфа с помощью метода механоактивации (прошу прощения, неправильно прочитал)

Постоянный адресс поставщика лулзов http://rus.unitc.ru/component/content/article/134-konkurs20122010.html
link2 comments|post comment

Internet radio on mini2440 [Apr. 26th, 2010|05:54 pm]
dron_gus
Специально для dlinyj  проверил, можно ли слушать интернет радио на мини. Можно. :)
Audio file file format detected.
==========================================================================
Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
AUDIO: 44100 Hz, 2 ch, s16le, 128.0 kbit/9.07% (ratio: 16000->176400)
Selected audio codec: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)
==========================================================================
AO: [alsa] 44100Hz 2ch s16le (2 bytes per sample)
Video: no video
Starting playback...
A:  22.4 (22.3) of -0.0 (unknown) 69.1% 43% $<50>

MPlayer interrupted by signal 2 in module: enable_cache


MPlayer interrupted by signal 2 in module: play_audio
A:  22.4 (22.4) of -0.0 (unknown) 69.1% 43% $<50>
Exiting... (Quit)
link7 comments|post comment

Корневая ФС (на примере mini2440) [Apr. 26th, 2010|03:46 pm]
dron_gus
С ядром более-менее разобрались. Но ядра мало. Нужна корневая файловая система. Самый простой вариант - скачать что-то готовое. Потом допилить под себя. Менеджер пакетов обычно присутствует, поэтому доустановить что-то не проблема.
Можно пойти более сложным путем и собрать рут-фс самому. Тут тоже есть вариации. Все зависит от дистрибьютива. Фанатов Ubuntu разочарую - на мини2440 не станет. Ибо ARM Ubuntu дистрибьютив собирается под ARMv7 - это всякие биглборды и тому подобные Cortex-A8. На мини же ARMv4. Это не ядра, это наборы инструкций.
Зато можно поставить debian. С ним и повозимся. Angstrom оставим на потом. Для него много пива надо.
Сразу говорю - никаких открытий делать не буду. Излагаю вот эту http://code.google.com/p/mini2440/wiki/Emdebian статью в своей интерпритации. С некоторыми вариациями по-ходу.
Создаем временную директорию. Заходим туда и делаем:
sudo debootstrap --arch=armel --foreign lenny grip/ http://www.emdebian.org/grip/
Возможно понадобиться доставить какие-то пакеты. С этим, надеюсь, разберетесь сами.
Как написанно в дэбиановской вики debootstrap это утилита для установки базовой системы Debian из под другой (не обязательно Debian) ОС. В нашем случае это еще и кросс-платформенная установка. По окончанию выполнения мы получаем базовый образ системы.
Запаковываем, что получилось:
(cd grip ;  tar jcf ../armel-debootstrap-lenny.tar.bz2 .)
Теперь нам нужна флешка. Я использую SD карту (если найду... что за бардак...), но пойдет и USB-свисток. Можно разбить на пару разделов (FAT + ext3 или ext2 + ext3). Можно все в кучу. Дело привычки. Если вы собираетесь грузить и ядро с внешнего носителя, то в качестве онного все же лучше выбрать SD карту.
Подготаливаем карточку (fdisk вам в помощь).
Маунтим рутовый раздел (должен быть ext3):
sudo mount /dev/sdc1 /mnt/arm/
(у меня один разде. на нем будет лежать все)
Переходим в него:
cd /mnt/arm/
и
sudo tar xvpf /home/mini2440/debian/armel-debootstrap-lenny.tar.bz2
Теперь у нас на карте имеется базовая система. Было бы неплохо скопировать туда же недостающие модули ядра (если какие-то драйвера компилировались в виде модулей). Даже если у вас все вкомпилированно в ядро, имеет смысл выполнить следующую команду, чтобы не видеть в процессе загрузки фатальные ошибки об отсутствующем файле зависимостей. Короче, из папки ядра делаем:
sudo xkmake INSTALL_MOD_PATH=/mnt/arm modules_install
(можно как make так и xkmake - без разницы, ибо никакого компилирования в процессе выполнения этой команды не происходит. конечно, если у вас ядро и модули уже собранны)
Потом из /mnt/arm с правами рута делаем
echo "proc /proc proc none 0 0" >>etc/fstab
echo "mini2440" >etc/hostname
mknod dev/console c 5 1
mknod dev/ttySAC0 c 204 64
echo 'deb http://www.emdebian.org/grip/ lenny main' >>etc/apt/sources.list

Смысл, я думаю, понятен из самих команд. Если ядро не прошито в NAND, то uImage было бы неплохо положить в /mnt/arm/boot/
После можно сделать:
sync
sudo umount /mnt/arm

Вставляем карточку в мини, запускаем убут и прописываем:
MINI2440 # setenv bootcmd mmcinit\; ext2load mmc 0:1 0x31000000 /boot/uImage\; bootm 0x31000000
MINI2440 # setenv bootargs console=ttySAC0,115200 noinitrd root=/dev/mmcblk0p1 rootwait=4 rw ip=dhcp init=/bin/sh
MINI2440 # saveenv

Резетаем или даем команду boot.
Та-дам:
...
VFS: Mounted root (ext3 filesystem) on device 179:1.
Freeing init memory: 132K
sh-3.2#

Но это еще далеко не все. Это только первый этап. Теперь второй:
sh-3.2# mount /proc /proc -t proc
sh-3.2# export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
sh-3.2# /debootstrap/debootstrap --second-stage

И идем пить кофе/с друзьями в поход.
Это пошел второй этап. Он выполняется на целевой платформе, а она достаточно долхлая, так что будте терпеливы.
У меня ругнулся udev. не уверен, что это необходимо, но я его переставил:
sh-3.2# dpkg -i /var/cache/apt/archives/udev_0.125-7em1_armel.deb
Делаем:
sh-3.2# echo s3c2410_serial0 >>etc/securetty
sh-3.2# printf "T0:2345:respawn:/sbin/getty -L s3c2410_serial0 115200 vt100\n" >>etc/inittab
sh-3.2# printf "auto eth0\niface eth0 inet dhcp\n" >>etc/network/interfaces

И перезагружаемся.
В у-буте меняем строку ядра:
MINI2440 # console=ttySAC0,115200 noinitrd root=/dev/mmcblk0p1 rootwait=4 rw ip=dhcp
Загружаемся:
INIT: Entering runlevel: 2

Debian GNU/Linux 5.0 mini2440 s3c2410_serial0

mini2440 login:


Все. Можно мучить дальше...

З.Ы. только не стоит сразу же пробовать поставить туда кеды четвертые.

З.З.Ы. у вас тоже этот дохлый китайский блок питания пищит на грани слышимости? Да еще и мелодии исполняет в такт загрузке проца?

Update: у меня при попытке обновить список пакетов (apt-get update кто не знает), ругнулся на "http://debootstrap.invalid/", это хвосты дебутстрапа. Его нужно почикать в файле /etc/apt/sources.list
link17 comments|post comment

Как собрать ядро... [Mar. 25th, 2010|06:28 pm]
dron_gus
Обещал продолжение. Вот немного. :)
Что есть ядро стоит почитать на википедии. Некоторые путают образ корневой файловой системы (rootfs) и образ ядра (uImage-zImage и т.д.).
Грубо говоря ядро это драйвера для ресурсов и ПО разделяющее эти ресурсы. Без набора приложений ядро бесполезно. Наоборот, кстати, тоже.

Скачать vanilla ядро можно с сайта http://kernel.org/ (спасибо, КО!).
Ванильное ядро - это ядро без сторонних ихменений. Вполне вероятно, что оно может не поддерживать Ваше железо, особенно, если оно не х86. Новое железо обкатывается "в стороне" и как только его поддержка становится стабильной его вливают в основное. Все это треп. Качаем последнее ядро.
wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.34-rc2.tar.bz2
Кросс платформенную сборку стоит проводить на Linux машине. Иначе это будет уже дважды кросс-сборка.
Расспаковываем и "заходим внутрь".
tar -xvpf linux-2.6.34-rc2.tar.bz2
cd linux-2.6.34-rc2/
Чешем затылок. Начинаем с простого:
ARCH="arm" make mini2440_defconfig
Т.е. грузим стандартные настройки для mini2440. Файлы с дефолтными настройками лежат тут: arch/<arch>/configs/ . Т.е. для арма тут: arch/arm/configs/ (для арма аж 170 штук)
Теперь можно сделать:
ARCH="arm" make menuconfig
Вылезет меню. Можно походить, посмотреть настройки, какие функции включены, какие нет. Добавить что-нить от себя. :)
Теперь это ядро бы собрать. Для этого нам нужен кросс-компилятор (т.е. тот, что работает на х86, но бинарь выдает для другой архитектуры). Тут есть много путей, можно собрать самому, можно собрать с помошью OpenEmbedded. Но для начала проще скачать готовый http://www.codesourcery.com/sgpp/lite/arm/portal/release1033
Качаем инсталяшку, делаем ей chmod +x и запускаем. Устанавлваем (запоминаем куда!)
Этим кросс-компилятором можно собрать ядро. Для этого всего-то надо сделать
CROSS_COMPILE="/path_to_CodeSourcery/Sourcery_G++_Lite/bin/arm-none-eabi-" ARCH="arm" make -j 4
Этой командой мы соберем образ ядра и все модули. (опция -j 4 ускоряет сборку - запускается по 4 потока)
На выходе получаем образ zImage. Как мы помним, для u-boot'а нам нужен uImage. Для этого нам понадобится утилита mkimage от u-boot'а. Можно собрать у-бут и получить ее, но проще:
apt-get install uboot-mkimage
Можно в ручную преобразовать zImage в uImage, но там легко запутаться в настройках, поэтому делаем проще:
CROSS_COMPILE="/path_to_CodeSourcery/Sourcery_G++_Lite/bin/arm-none-eabi-" ARCH="arm" make -j 4 uImage
Вас еще не задолбало набирать такие длинные команды? Меня - да. Поэтому идем к бородатым гентушникам и подсматриваем занятный скрипт (http://www.gentoo.org/proj/en/base/embedded/cross-development.xml):
#!/bin/bash
make ARCH="arm" CROSS_COMPILE="
/path_to_CodeSourcery/Sourcery_G++_Lite/bin/arm-none-eabi-" $*
Сохраняем это под именем xkmake, делаем ему chmod +x и кладем куда-нить в PATH, например в /usr/bin/ . (можно и не класть, я собираю двумя разными компиляторами под разные архитектуры, поэтому у меня несколько таких файлов, в папках разных проектов)
Теперь, чтобы собрать ядро, достаточно сделать xkmake uImage
В скрипт можно еще добавить INSTALL_MOD_PATH=/path_to_rootfs указывающий на положение соответствующей рут-фс. Или сразу на подмонтированую флешку с ней же. Тогда сделав xkmake modules_install все собранные модули аккуратно лягут в соответствующее место рут-фс, да еще и файлик зависимостей сгенерируется. Я предпочитаю этот параметр явно указывать при вызове modules_install, а не вписывать в xkmake.
Все. На выходе Вы должны получить образ ядра в папке arch/arm/boot/ и набор модулей ядра там, куда Вы указали.
link1 comment|post comment

Положительный пост [Mar. 20th, 2010|06:20 pm]
dron_gus
[Tags|, ]

Посылку я таки забрал. А в посылке весьма занятна железяка devkit8000. В кратце это некий аналог Beagle Board на нехилом проце от TI. Проц совмещает в себе Cortex-A8, DSP ядро, кучу интерфейсов, ускоритель видео (OpenGL) ну и кучу других вкусностей.

Вчера только успел распокавать, включить и немного помучить Angstrom Linux. Почему то их demo идет абсолютно голым. Т.е. не то что никакой графической оболочки нет, так еще и opkg имеет пустой сурс-лист, т.е. ничего и не установить. Далье я уже слишком много пива выпил и решил таки не пытаться в таком состоянии обновить ядро (которое хреновато работало со скачанными новыми образами Angstrom). Сегодня продолжу. Так что извини dlinyj , я в эти выходные вряд ли напишу следующий пост-инструкцию по mini2440, тем более ту плату я отдал коллеге помучить.

Несмотря на то что гневный пост получился в разы больше положительного, в целом радость от новой железки перевесила негатив общения с гос. органами.
link2 comments|post comment

Отрицательный пост [Mar. 20th, 2010|06:11 pm]
dron_gus
[Tags|, ]

Сегодня будут два поста. Т.к. меня, вообщем то,  никто не читает, оба для себя. Т.с. выговориться.

Пост первый. Гневный. НЕНАВИЖУ НАШЕ ГОСУДАРСТВО. Не страну, а именно государство. Т.е. именно ту прослойку общества, что призвана заботиться об остальной. Нет, каждого из этих людей в отдельности я не ненавижу. Некоторых я прекрасно понимаю. Я уже давно перестал пытаться излить гнев на рядовых "винтиков машины".
Закончилась моя война с таможней. Предистория. Числа 15 февраля мной была заказана и оплачена железка из Китая. Про саму железку напишу позже. Как ктолько Китайцы протрезвели после своего нового года, а точнее 23 числа того же месяца, они послали мне эту железку грузоперевозчиком DHL.
До России она добралась буквально за 3 дня. Когда она уже с неделю провела в состоянии "таможенное оформление", я засомневался в удачном разрешении этого оформления и попытался связаться с DHL, где меня вежливо по цепочке из 3 операторов переключалии на все время неотвечающий телефон. Так прошло 3 дня. Потом мне позвонила девушка и быстро что-то пролепетала. Создалось впечатление, что я должен закончить таможенный институт, чтобы поддержать разговор. Суть такова. Китайцы указали лишь один адрес - адрес доставки. Я указал адрес конторы, где работаю (для удобства). Никогда не повторяйте эту ошибку. DHL автоматом посчитала эту посылку комерческой и предлажила растаможку, как комерческого груза в адресс фирмы. В стиле "собери 15 крышечек от люков канализации и получи п**ды от Водоканала". Мне эти ибумажки никто давать не стал бы. Я отказался. На пару дней погрузился в изучение чужого опыта. Потряс всех знакомых. В итоге забрал документы и пошел в таможню сам.
В общей сложности я посетил таможню 6 раз. В первый раз мне отказали в растаможке для личного пользования без обьяснения причин. Пришлось ехать к таможенному брокеру, советоваться, спасибо ему, оказалось, что этот же брокер работает с моей конторой, да и человек хороший оказался, терпеливо отвечал на все мои тупые вопросы. Но когда озвучил цену на свои услуги (15 К - больше стоимости железки!), пришлось отказаться от его услуг и думать дальше. На второй раз я привез отказное пись от конторы. что мол груз не нам, а в личное пользование сотрудника. Принять документы согласились. Оформление стоит 250 рэ. При этом надо вначале оплатить. Пришлось ехать в банк. "Дружественный" таможне банк за оформление платежа берет 100 рэ. Ждем три дня - деньги приходят. Идем в таможню, ставим печать на платежку, берем бланк заявления. Бланк я перезаполнял дважды. Потом писал заявление, что я не шпион, не буду с помошью этой железки шифровать и расшифровывать, вести внегласное наблюдение, работать в эфире и организовывать подводную, мать ее, связь. После этого из таможни перезванивают (хоть ехать не надо) и сообщают сумму пошлины. Пошлина уплачивается в дружественном банке и бланк снова отвозится в таможню. После этого ждем звонка, что деньги дошли и выпуск товара разрешен. Снова едем в таможню, пишем заявление на разрешения выдач, небольшойквест по кабинетам и забирать посылку со СВХ DHL.

Если вы задолбались то читать, представьте как я задолбался выполнять всю эту последовательность действий. В общей сумме прогулял 1.5 рабочих дня. Деньги - хрен с ними. Зато преобретен бесмысленный жизненный опыт. Т.к. благодаря этому опыту, я больше никогда не буду пользоваться услугами DHL и надеюсь больше не попадать с такую ситуация.
Кстати при пересылке обычной почтой такой геморой может быть исключен, т.к. почта - это почта, а DHL - это грузоперевозчик. И правила таможенного оформления отличаются.

З.Ы. а главное никто конкретно не виноват. Нельзя ни на кого показать пальце и сказать "это все из-за него". Разве что наверх.
link5 comments|post comment

Продолжаем сучить mini2440 [Mar. 18th, 2010|11:41 am]
dron_gus
[Tags|, , , ]

Предположим, у-бут залит и еще не убит. Теперь надо немного научиться с ним работать. Инструмент это достаточно функциональный и гибкий. Значительно отличается от биоса в стандартном понимании. Имеет значительно меньше настроек по железу, зато имеет значительно больше дополнительных функций.
Кстати, про настройки железа. Как Вы понимаете, s3c2440 контроллер достаточно сложный и имеет кучу настроек, начиная от настроек PLL и памяти, заканчивая скоростями uart'ов. Стоит заметить, что при старте SDRAM память недоступна, ибо соответствующий банк еще надо настроить в соответствии со спецификацией этой памяти. Всеми этими настройками занимается u-boot. Большинство из них жестко прошиты в коде. Кстати, в рунете есть патчик для убута (для исходников убута!), добавляющий возможность оверклочить проц из командной строки у-бута.
Тут стоит упомянуть, как происходит загрузка. Проц имеет возможность грузиться из NOR или из NAND. С NOR все достаточно просто, т.к. память эта не имеет бэд блоков, проста в доступе и т.д. С нандом сложнее, ибо он имеет страничную адресацию. Поэтому для загрузки с нанда проц предварительно читает первые 4 К с нанда в специальный буфер. И передает управление туда. Эти 4 К должны настроить sdram и прочитать туда остальную часть загрузчика. Подробнее в 6 главе юзермануала на проц. Кстати именно поэтому производители гарантируют, что нулевой блок НАНДа не битый и выдержит сколько-то там перезаписей. Ибо такой метод загрузки практикуется повсеместно.
U-boot грузит себя в начало банка SDRAM (0x30000000). Именно поэтому при загрузке образов ядра, rootfs и т.д. делается отступ от начала этого банка - чтобы загрузчик принимаемыми данными не затер сам себя.
Плавно переходим к методам загрузки образа ядра в ОЗУ. Их много. Можно грузить через:
1) последовательный порт. медленно
2) можно грузить с sd/mmc карты. Удобно. Можно иметь много карточек с разными ядрами, а если эту ракточку еще и монтировать как корень, то на каждой карточке будет своя система.
3) теоретически можно грузить с usb-флешки. Я немного помучил этот вариант, у меня он не пошел, ну и фиг с ним.
4) можно грузиться по сети. Образ ядра (да и ФС) u-boot может скачать по tftp протоколу. Очень удобно в процессе отладки - не надо перетыкать туда сюда флешки или утомительно лить образ по rs232. Если еще и корень монтировать по сети (nfs), то наступает полный кайф. :) Кстати, имя файла для загрузки можно как жестко прописать в настройках u-boot, так и получать по сети.
5) явно что-то упустил. ну да пофиг.
...
х) грузить ядро из NAND. Его туда предварительно надо записать. Т.е. как-то скачать его в ОЗУ одним из вышеперечисленных методов. А потом сделать
MINI2440 # nand write.e kernel
Во многих мануалах упущено ".e" а это весьма важно. Т.к. если в процессе записи попадется бэд-блок write.e обойдет его а write нет. Соответственно, в случае write, Вы получаете битый образ у которого не совпадает CRC.
В команде опущены некоторые необязательные параметры. Так можно указать адрес откуда брать образ (если не указывать используется дефолтное знаячение, прописанное в переменных окружения (printenv)). Опущен размер записываемого образа. Поэтому, теоретически, записывается весь раздел kernel. Стоит внимательно следить куда Вы качаете образ и откуда вы потом его записываете в nand или пытаетесь загрузить. Если сомневаетесь указывайте адрес во всех командах (0x31000000, как я уже говорил)
Кстати, чтобы посмотреть разбиение NAND на разделы, можно сделать:
MINI2440 # mtdparts
Внимание!!! Это разбиение актуально только для u-boot'а. На самой НАНДине никаких данных о разделах не храниться! Ядро линукса имеет свои представления о разделах на НАНД (они жестко прошиты в коде, но их можно поменять, передав соответствующий параметр ядру). Если представление ядра и u-boot'а о разделах отличаются, то могут возникнуть интересные проблемы.
Кстати, если соберетесь использовать SD/MMC карту для загрузки ядра... не все карты одинаково полезли.. в смысле, некоторые карты у меня отказались работать под у-бутом. Хотя после загрузки, в linux'е работали нормально. (т.е. в качестве корня их использовать можно!) Поэтому перед тем как кромсать карту по одному из мануалов в сети и лить на нее образы, советую воткнуть ее в плату, запустить у-бут и дать команду:
MINI2440 # mmcinit
Если ответ подобен:
trying to detect SD Card...
Manufacturer:       0x02, OEM "TM"
Product name:       "SD01G", revision 2.3
Serial number:      2486075243
Manufacturing date: 1/2002
CRC:                0x72, b0 = 1
READ_BL_LEN=15, C_SIZE_MULT=7, C_SIZE=365
size = 1642070016

То, теоретически, с картой не должно быть проблем. Если Вам сказали что-то про таймаут, то лучше поискать другую карту.
Предположим, Вы нашли хорошую карту, разбили ее на разделы (FAT + ext3, например), записали на FAT раздел образ ядра (uImage). Втыкаем ее в плату:
MINI2440 # mmcinit
Должна определиться нормально, иначе о чем я тут распинался... :)
MINI2440 # fatload mmc 0:1 0x31000000 uImage
Грузим образ. Подумав, напишет мол типа все ок. (или нет, если на карте отсутствует образ, первый раздел не фат или еще что)
MINI2440 # nand write.e 0x31000000 kernel
Пишем ядро в соответствующее место нанда. Естественно, предварительно надо стереть это место нанда (MINI2440 # nand erase kernel), если Вы туда уже что-то писали.
Если пишет, что файл не найдем можно сделать:
MINI2440 # fatls mmc 0:1
И нам дадут полный список файлов на соответствующем разделе.
Если все записалось нормально можно попробовать загрузить ядро. Для чистоты эксперимента ресетим плату и даем пару команд:
MINI2440 # nboot.e kernel
MINI2440 # bootm

Т.е. читаем образ с флешки из раздела kernel и...
выполняем загрузку из памяти (ОЗУ).
Ядро начнет выплевывать кучу сообщений и в итоге ругнется, что не может подмонтировать корень. Это естественно, мы его еще не загрузили.
Для автоматизации такой загрузки при старте можно сделать:
MINI2440 # setenv bootcmd nboot.e kernel \; bootm
MINI2440 # saveenv

Т.е. мы присваиваем переменной окружения bootcmd строку nboot.e kernel \; bootm . Эту последовательность команд попытается выполнить у-бут при старте, если не нажать anykey в течении 3 сек.
Второй командой мы сохраняем настройки.
Все. Теперь после сброса ядро должно загрузиться само.
Чтобы сделать автозагрузку с SD/MMC:
MINI2440 # setenv bootcmd mmcinit \; fatload mmc 0:1 uImage \; bootm
MINI2440 # saveenv
(на железе последнее не проверял, но работать должно)

За сим пока все.
link2 comments|post comment

Мучаем mini2440 [Mar. 17th, 2010|05:05 pm]
dron_gus
[Tags|, , , ]

В связи с тем, что меня уже некоторое время аакуратно мучает вопросами тов.dlinyj, а так же потому что вчера мы таки запустили на работе вначале gpe, а потом и android на этой многострадальной плате, напишу ка я пост. :) Заодно, чтобы когда придется пройти этот путь еще раз, было куда заглядывать.

Предположим, есть у нас плата mini2440 с 3.5" или 7" лсд. Кстати большинство ядер, что валяются в сети, если не указать обратного стартуют с расчетом на 3.5 экран или вообще без поддержки онного. Если у вас 7 или вообще vga адаптер, ядру надо передать соответствующий параметр. Для 7: mini2440=1tb, для VGA: mini2440=2tb. Для 3.5: mini2440=0tb. Как передавать ядру параметры далее. Изначально (в старых ядрах) этот параметр передавался в несколько другом виде, поэтому если возникает какая-то проблема - читайте лог загрузки. Там будет указани о текущем и теоретиески возможных режимах.

Далее предполагаем что плата еще не совсем зад... заюзана. И на ней сохранился загрузчик в NOR. Тот, что vivi. Его вообще сложновато убить. Теоретически только через jtag - так что лучше отлажите этот шнурок подальше. Нас вполне устроит заводской вариант vivi. Тем более он нужен только чтобы загрузить u-boot. U-boot это более функциональный (на мой взгляд) загрузчик. Во вторых это стандарт для большинства встраеваемых решений. Тут мы плавно переходим к процессу прошивки u-boot в NAND.

Инструкция http://labs.kernelconcepts.de/Publications/Micro24401/ альтернативная - http://wiki.linuxmce.org/index.php/Mini2440

Вкрадце опишу наши действия:
Про подключение RS232 к плате понятно. Еще нам понадобиться шнурок usb a - usb b. Ethernet по желанию. Ваша любимая терминалка по желанию (minicom@linux / putty@windows)

Запускаем плату с загрузкой из NOR. У нас грузится vivi. Выходим в командную строку (клавиша q). Вводим:
load ram 0x31000000 239016 u
Этой командой (по порядку): грузим в рам по адресу 0x31000000 239016 байт через USB. Про карту памяти и почему именно такой адресс стоит почитать в мануале на проц. Естественно, если ваш бинарь у-бута отличается размером - подставляете свой.
Далее подключаете USB шнурком мини к десктопной машине и:
$ sudo ./s3c2410_boot_usb u-boot.bin

Из команды ясно, что мы шлем файл. :) Утилита для отправки и образ у-бута на официальном (или не очень) сайте.
Тут могут возникнуть некоторые проблемы. Передача может так и не начаться. Тогда надо немного поплясать с бубном, перетыкая шнурок и перезапуская передачу.
Для винды существует аналогичная утилита с (о Боже!) дружественным графичским интерфейсом. я ей не пользовался, но работать должна.
В ответ в консоль вывалится что-то подобное:
Now, Downloading [ADDRESS:31000000h,TOTAL:239026]
RECEIVED FILE SIZE: 239026 (116KB/S, 2S)
Downloaded file at 0x31000000, size = 23901
6 bytes
Мы ей в ответ:
go 0x31000000

Т.е. запускаем выполнение с адреса, куда загрузили образ у-бута. Теперь главное успеть выйти из шока от того, что у-бут таки заработал, и клацнуть клавишу пока у-бут не начал автоматическую загрузку.
Теперь мы находимся в коммандной строке у-бута. Его бы хорошо прошить в NAND, чтобы он автоматически грузился при старте. Для этого:
MINI2440 # nand scrub

Что такое скраб спросите у своей подруги. В данном контексте мы стираем всю нандину. А заодно херим все данные о бэд-блоках. О чем нас честно предупреждает у-бут. Жмякаем Y.
В процессе выполнения операции выскочит несколько сообщений о битых блоках. Это нормально. Это не USB (SD etc) флешка в которой встроен контроллер и которая внутири себя сама следит за bad-блоками и сама их подменяет. Тут все делается софтово. Об этом далее. Пока же:
MINI2440 # nand createbbt

Что есть create bad block table. Создается и сохраняется список плохих блоков. Это необходимо чтобы при записи ядра или файловой системы правильно обходить bad-блоки.
Процес длительный (пара минут). В ходе процесса никаких сообщений не выводится. Оно не висит!

После этого можно со спокойной совестью сделать:
MINI2440 # nand write 0x31000000 u-boot
Т.е. записываем образ из RAM памяти на флешку в партишн называемый u-boot. После этого, если все прошло нормально, можно выключить плату, перевести переключатель в положение загрузки с NAND и снова включить плату. Должен загрузиться u-boot.
Делаем:
MINI2440 # dynenv set 40000

Этой командой устанавливаем адресс, где у нас будут храниться все настройки. Сами настройки можно посмотреть командой:
MINI2440 # printenv

Из всего этого нас интересуют параметры ядра (bootargs) и команда загрузки (bootcmd). Чтобы посмотреть, что еще умеет u-boot наберем:
MINI2440 # help
Тут все должно быть понятно без лишних слов. На этом первый пост завершаю. Рабочий день заканчивается. надо бы еще поработать.
link6 comments|post comment

navigation
[ viewing | most recent entries ]
[ go | earlier ]