Собираем u-boot 1.1.2

Понадобилось мне собрать u-boot для моей железки. По сути, это переразведённый и несколько модернизированный at91rm9200dk. Конфигурация такая:
- AT91RM9200CJ
- MT48LC16M16A2-75IT x2
- AT49BV642D-70TU
- RTL8201BL

И так, надо обеспечить поддержку 64Мб ОЗУ, новой микросхемы флэша, пришедшей на смену AT49BV6416, и микросхемы PHY.

1. Скачиваем u-boot-1.1.2 и патч.

2. Распаковываем

3. Настраиваем кросс-компиляцию. Приводим Makefile к такому виду:

export HOSTARCH
ARCH=arm
export ARCH


ifeq ($(ARCH),arm)
CROSS_COMPILE = /opt/arm/bin/arm-linux-

/opt/arm/bin/arm-linux- - это путь к моему тулчейну. не забудьте исправить на свой.

4. Конфигурируем исходники:
make at91rm9200dk_config


5. Поскольку флэш 642D от 6416 отличается незначительно, я просто исправил ID в файле include/flash.h
#define ATM_ID_BV6416 0x000001D6 /* 49BV642D ID */

Решение не очень красивое, но работает.

6. Удваиваем объем доступной ОЗУ. Правим файл include/configs/at91rm9200dk.h
#define PHYS_SDRAM_SIZE 0x4000000 /* 0x2000000 - 32 megs, 0x4000000 - 64 megs */


7. Интересный момент: в файле cpu/at91rm9200/config.mk указано, что этот процессор относится к arm7tdmi. Спорное утверждение. Мой конфиг выглядит так:

LATFORM_RELFLAGS += -fno-strict-aliasing -fno-common -ffixed-r8 -msoft-float
PLATFORM_CPPFLAGS += -mapcs-32 -march=armv4t -mtune=arm920t


8. На этом простая часть закончилась. Чтобы добавить поддержку PHY RTL8201BL нужно наложить соответствующий патч. Однако, он много чего меняет и я решил пойти обходным путём - добавить нужные изменения вручную. Имеет смысл разбить diff на отдельные файлы и убрать плюсики в первом столбце командой sed 's/^.//' oldfile > newfile.
- добавляем в дерево исходников u-boot файлы board/at91rm9200dk/rtl8201.c, include/rtl8201.h
- в файле board/at91rm9200dk/Makefile заменяем dm9161.o на rtl8201.o
- вносим 3 изменения в cpu/at91rm9200/at91rm9200_ether.c
- в файле include/configs/at91rm9200dk.h

#ifndef __CONFIG_H
#define __CONFIG_H
#define CONFIG_RM9200 /* for rtl8201 phy */


#define CONFIG_DRIVER_ETHER
#define CFG_PHY_MDI_ADDRESS 1
#define CONFIG_NET_RETRY_COUNT 20
#undef CONFIG_AT91C_USE_RMII


9. Собираем командой make, получаем u-boot.bin

10. Запускаем плату в режиме отладочной загрузки, загружаем loader.bin по протоколу X-modem. В ответ на предложение лоадера загрузить u-boot, отправляем по тому же X-modem'у собранный u-boot.bin.

Возвращаем аську к жизни

Первого июля изменился протокол ICQ, в связи с чем pidgin перестал соединяться с сервером. Как это исправить в Debian? К счастью, Philipp Dreimann выложил обновлённый пакет для Ubuntu. Этим я и воспользовался.

И так, скачиваем пакет с пропатченной libpurple. Нам нужен libpurple0_2.4.1-1ubuntu2-1 подходящей архитектуры. Далее, распаковываем его, а потом и вложенный data.tar.gz. Интересующий нас файл называется usr/lib/purple-2/liboscar.so.0.0.0. Его нужно переместить в аналогичную директорию корневого раздела. Не забудьте, что для этого нужны права администратора, а pidgin не должен быть запущен.

После успешного копирования запускаем pidgin и радуемся общению с друзьями :)

История команд

history|awk '{a[$2]++ } END{for(i in a){print a[i] " " i}}'|sort -rn|head

142 sudo
52 ls
24 aptitude
22 less
19 man
18 vim
17 ./b
15 cd
12 wget
8 rm


Подсмотрено здесь: ubuntero.blogspot.com

Ian Murdock & Spb LUG

Сегодня был на встрече питерских линуксоидов с основателем дистрибутива Debian, а ныне - сотрудником корпорации Sun Microsystems Яном Мёрдоком (Ian Murdock). Очень позитивный дядька :) Сначала он вкратце рассказал о том, как впервые познакомился с линуксом и как оказался в Sun. А затем, в течение полутора часов, отвечал на вопросы аудитории.

Очень удивил его ответ на мой вопрос: "Как по-вашему, open source - это просто интересное направление или же единственный способ быть успешным в будущем?" Ян сказал, что склоняется к последнему варианту, хотя и в менее категоричной форме.

А вот фото этого замечательного человека. Жаль, что не со мной в обнимку =)

Кафе Баттерфляй

Сегодня встречались с друзьями в кафешке Баттерфляй, что в Биржевом переулке. Приятная обстановка и низкие цены настраивали на оптимизм, но... Скромный выбор разливного пива, долгое ожидание горячего и неимоверно твёрдые стиксы разочаровали. Наверно, это неплохое место чтобы недорого пообедать, но пивные встречи здесь лучше не проводить.
В кафе есть вай-фай. По крайней мере так утверждает ужасного качества картинка Яndex WiFi на соседнем столике. На деле, мой eee pc поймал только точку Crystal, которая, видимо, принадлежит фирме с одноименным названием, расположенной в соседнем помещении. Точка открытая, но выхода в интернет, не имеет.
В общем, впечатления так себе.

Суши

Вчера был в Планете Суши на Невском. Только не в той, что на углу улицы Маяковского, а чуть ближе к Литейному, в подвальчике. Очень приятная атмосфера, хорошее обслуживание и раздельные залы для курящих и не курящих. Было очень остро и вкусно :) Единственное, что не порадовало - цены. Всё же 150-180 р за 4 ролла - это многовато.

Peter Schöffer

Сегодня состоялась встреча питерских линуксоидов из конференции debian@conference.jabber.ru, которая прошла в замечательном месте - доме Петера Шоффера. Вкусное пиво, закуски и компания буйствующих линуксоидов - что может быть лучше? =)

Установка Debian по сети

Надоел мне Xandros, предустановленный на eee pc. Захотелось поставить родной Debian. Т.к. привода для дисков у eee нет, а делать загрузочную флэшку было лень, я решил использовать загрузку по сети. Сразу скажу, что затея провалилась, т.к. инсталлятор не смог определить встроенную сетевуху Atheros. Тем не менее, процесс установки опишу - наверняка кому-нибудь пригодится.

И так. Сначала нам нужны dhcp и tftp сервисы. Устанавливаем их командой
aptitude install dhcp3-server tftpd-hpa

Настройки такие:
/etc/dhcp3/dhcpd.conf

option domain-name-servers 192.168.0.1; #адрес dns-сервера
option routers 192.168.0.5; #адрес основного шлюза

default-lease-time 86400; # время лизинга IP адреса
max-lease-time 604800;

# простейший вариант конфигурации сети
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.10 192.168.0.20; # диапазон адресов
}

# конфигурация для нашей машины
host eee {
filename "pxelinux.0"; #файл начальной загрузки
hardware ethernet 00:1E:8C:99:BA:21; # MAC-адрес устройства
next-server 192.168.0.1; #адрес tftp-сервера
}


Мне было удобнее запустить tftp отдельным сервисом. Для этого надо закомментировать в /etc/inetd.conf строку, отвечающую за tftp и привести файл /etc/default/tftpd-hpa к следующему виду:

#Defaults for tftpd-hpa
RUN_DAEMON="yes"
OPTIONS="-l -s /tftpboot"

Я изменил директорию по умолчанию на /tftpboot и сделал её владельцем своего пользователя, чтоб не тратить в дальнейшем время на получение прав на запись в эту директорию.

Теперь нужно скачать загрузочные файлы. Например: netboot для etch.
Распаковываем полученный архив в корневую директорию tftp-сервера и запускаем его командой
/etc/init.d/tftpd-hpa start

Теперь нужно настроить bios целевой машины на загрузку по сети и через несколько секунд вы увидите приветствие установщика Debian.

ASUS Eee PC



Наконец-то он мой! Красавчик. Вот только у wifi подключения dns постоянно куда-то пропадает...

Sun Tech Days

Со 2-го по 4-е апреля в Санкт-Петербурге пройдут Sun Tech Days. Вообще-то эта область мне не интересна, но есть одно "но" - один из докладчиков - Ян Мёрдок (Ian Murdock), основатель моего любимого дистрибутива Debian. Его я бы с удовольствием послушал :) Вот раздумываю - идти или не идти?

Чайная Хижина





Очень приятное заведение. Рекомендую. Тихая уютная обстановка и богатый ассортимент чая. Цены приемлемые: чашка чая - 60р, горячий бутерброд - 40р.

UPD 1-04-2009: Вчера обнаружил, что кафе закрылось...

Локализация Rubrica

Rubrica - это мощный и удобный органайзер для контактов. Поигравшись немного с версией программы, доступной в репозитариях Debian Lenny я обнаружил 2 неприятных момента: перевод лишь частичный и присутствуют ошибки, приводящие к падению программы. Пообщавшись с Nicola Fragale - автором программы - я приступил к локализации.

Попробую расписать по шагам процесс локализации приложений, использующих gettext. Возможно, какие-то пункты будут специфичны именно для Rubrica или ошибочны. Не ругайтесь - это моя первая попытка :)

1. Получаем архив с исходным кодом Rubrica и распаковываем его

2. Заходим в директорию po. В ней находится шаблон для локализации rubrica2.pot и несколько файлов вида it.po, fr.po - это уже готовые локализации на итальянский и французский соответственно. Копируем rubrica2.pot в ru.po и открываем его любимым текстовым редактором или специализированной программой типа Kbabel или Gtranslator

3. Собственно перевод. Заполняем заголовок по имеющимся примерам и переводим строки. Пример:
#: ../src/app.c:1082
msgid "_Personal card"
msgstr "_Личная карточка"

Первая строка - комментарий с именем файла и номером строки, откуда взят переводимый текст.
Вторая строка - Идентификатор переводимой строки
Третья строка - Переведённый текст. Подчерк указывает на клавишу быстрого доступа

4. Открываем файл configure.in из корня дерева исходников и меняем строку ALL_LINGUAS="it uk de fr" на ALL_LINGUAS="ru it uk de fr"

5. Запускаем autoconf и automake. Теперь файл перевода будет учтён при сборке.

6. Стандартная процедура сборки и установки:
./configure --prefix=/usr/local
make
make install


7. Запускаем приложение и проверяем качество перевода

Достижения

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

Однако, название блога скоро, возможно, придётся менять, ибо железка со встроенным линуксом уже лежит на моём рабочем месте. Жаль, ковырять её некогда - надо заканчивать модуль сбора данных. Новая схема питания на MC34063 работает нормально. Прошивка уже готова и в первом приближении отлажена. Сейчас я собираю мелкую партию тестовых образцов. Как только будут решены все вопросы с корпусом они уйдут на тестирование в реальных условиях.

Вот, сделал себе аватарку :)