Linux™

Linux™ — семейство UNIX-подобных ОС основанных на ядре Linux™. В США Linux™ является зарегистрированной торговой маркой, принадлежащей Линусу Торвальдсу.

Ядро

Для получения сборки (образа) ядра необходимы:

  • Архив с исходными кодами ядра соответствующей версии с www.kernel.org
  • Патч или набор патчей
  • Установленный компилятор, ассемблер и линковщик (редактор связей) для целевой платформы
  • Установленные программы: make, patch, sed, awk и др.

Наложение патча

  1. Распакуйте исходные коды ядра соответствующей версии в директорию с условным названием linux-kernel:
    tar xjf linux-kernel.tar.bz2
    или
    tar xzf linux-kernel.tar.gz
  2. Распакуйте файл патча kernel.patch
    gunzip kernel.patch.gz
  3. Перейдите в директорию linux-kernel
    cd linux-kernel
  4. Наложите патч
    patch -p0 < ../kernel.patch

Подразумевается, что файл патча kernel.patch располагается в той же директории, что и директория исходных кодов ядра linux-kernel. Номер в параметре p может быть другим, см. документацию по утилите patch.

Патчи ядра

Для плат на основе EP93xx

ФайлРазмерИзменение
linux-2.6.20.21_tion_svn1084_201007071644.tar.gz5625372010/07/07 20:48
linux-2.6.20.21_tion_svn922_201003181631.tar.gz5604212010/03/18 20:26
linux-2.6.20.21_tion_svn861_200912021805.tar.gz5607772010/01/31 19:20

Более старые

Для плат на основе PXA270

Сборка ядра

  1. Установите переменные окружения
    export ARCH=arm
    export CROSS_COMPILE=arm-linux-gnu-
    где arm-linux-gnu- — префикс используемого инструментария
  2. Перейдите в директорию исходных кодов ядра соответствующей версии и наложенными патчами
    cd linux-kernel
  3. Выберите одну из конфигураций по умолчанию
    • make tion_defconfig
    • make tion-pro1_defconfig
    • make tion-pro2_defconfig
    • make tion270_defconfig
    • make tion-pro270_defconfig
  4. Если необходимо, выполните дальнейшую конфигурацию, для этого требуется установить пакет ncurses-dev
    make menuconfig
  5. Выполните сборку
    make

Также см. создание образа ядра для загрузчика U-Boot

Модули ядра

Модуль — объектный код, который может быть добавлен к ядру во время работы (выполнения) для расширения функциональности. Например, драйвер устройства может быть включён в ядро или собран в виде модуля. Существуют как преимущества, так и недостатки использования модулей в ядре для встроенных систем.

Собранные модули должны быть установлены в КФС целевой платформы в директории /lib/modules/<version>/, где <version> — версия ядра.

  1. Сборка модулей
    make modules
    сборка модулей также выполняется при сборке ядра командой make
  2. Установка модулей в директорию <mod_dir>
    export INSTALL_MOD_PATH=<mod_dir>
    make modules_install

Загрузка модуля (на целевой платформе) выполняется командами modprobe или insmod, удаление — rmmod, отображение информации о модуле — insmod.

Различные сборки ядра

Сборки выполнены с конфигурацией по умолчанию (defconfig).

Для плат на основе EP93xx

ФайлРазмерИзменение
md5.sum4262010/08/19 12:01
uImage-2.6.20.21_tion_svn889_eabi17109762010/02/15 19:44
uImage-2.6.20.21_tion_svn787_oabi17440282010/01/31 19:20
uImage-2.6.20.21_tion-pro_svn889_eabi17110322010/02/15 19:44
uImage-2.6.20.21_tion-pro_svn787_oabi17440002010/01/31 19:20
uImage-2.6.20.21_tion-pro2_svn889_eabi17434882010/02/15 19:43
uImage-2.6.20.21_tion-pro2_svn787_oabi17649722010/01/31 19:20

Более старые

Для плат на основе PXA270

ФайлРазмерИзменение
uImage-2.6.22.19_svn818_tion270_eabi15265482010/01/31 19:20
uImage-2.6.22.19_svn818_tion-pro270_eabi14653202010/01/31 19:20
uImage-2.6.22.19_svn746_tion270_oabi15423002010/01/31 19:20
uImage-2.6.22.19_svn746_tion-pro270_oabi14791202010/01/31 19:20
md5.sum2832010/01/31 19:20

Более старые

Корневая файловая система

В процессе загрузки ядро Linux™ выполняет монтирование корневой файловой системы (КФС).

КФС является необходимой частью для работы системы и содержит:

  • Модули ядра (/lib/modules/)
  • Библиотеки (/lib/)
  • Файлы устройств (/dev/)
  • Скрипты инициализации (/etc/inittab, /etc/init.d/)
  • Стандартные UNIX-утилиты (/sbin, /bin, /usr/sbin)
  • Файлы конфигурации (/etc/)
  • Различные программы (в том числе и ваши) (/usr/bin)
  • Прочее

Flash

Размещение КФС на Flash позволяет сэкономить оперативную память не используя Ramdisk и сохранить данные при отключении питания/перезагрузке. На Flash должна размещаться предназначенная для этого файловая система, например, JFFS2.

  1. Включить в ядро поддержку MTD-устройств и файловой системы JFFS2
  2. В загрузчике
    1. Полностью стереть соответствующую область Flash для размещения файловой системы
      (т.е. стереть весь будущий mtd-раздел для КФС)
    2. Скопировать в эту область образ файловой системы JFFS2 с соответствующим Flash размером блока стирания (erase block)
      • Тион, Тион-Про: erase block size = 0x20000
      • Тион-Про2, Тион-Модуль: erase block size = 0x40000
      • Тион270, Тион-Про270: erase block size = 0x40000
  3. Указать в параметрах ядра: root=/dev/mtdblock2 rootfstype=jffs2, где mtdblock2 — соответствующее блочное устройство для КФС с файловой системой JFFS2

Также можно в параметрах ядра указать ro, при этом КФС будет смонтирована в режиме только для чтения. Перемонтировать КФС в режиме для записи можно командой: mount -o remount,rw /

JFFS2 в Buildroot

Для создания образа JFFS2 в Buildroot в menuconfig указать:

Target filesystem options  --->
  [*] jffs2 root filesystem
    Flash Type (Select custom page and erase size)  --->
    (0x1000) Page Size
    (0x40000) Erase block size
    [ ]   Do not use Cleanmarker
    [ ]   RootFS in SREC file formet
    [*]   Pad output
    (0x0)   Pad output size (0x0 = to end of EB)

Ramdisk

FIXME

NFS

Использование NFS как КФС упрощает процесс разработки, позволяя вносить изменения в файлы КФС с host-компьютера и сразу видеть их на target-платформе.

Для использования NFS как КФС следует:

  1. Установить и настроить NFS-сервер на host-компьютере
  2. Включить в ядро поддержку NFS для КФС (CONFIG_ROOT_NFS)
  3. Указать в параметрах ядра: root=/dev/nfs nfsroot=10.42.42.12:/nfs/root ip=10.42.42.205:10.42.42.12:10.42.42.1, где 10.42.42.12 — IP-адрес сервера; 10.42.42.205 — IP-адрес клиента (платы)
  • КФС по NFS не используется, если ядро использует КФС в ramdisk.
  • На КФС /etc/network/interfaces закомментируйте строчки:
#auto eth0
#iface eth0 inet dhcp

CF-карта

Для использования КФС на CF-карте следует:

  1. Создать на CF-карте раздел для КФС и создать на этом разделе ФС
    • См. утилиты fdisk, cfdisk, mke2fs, mkfs.ext2
  2. Примонтировать созданный раздел и скопировать на него файлы КФС
  3. Настроить загрузку с использованием созданного раздела как КФС
    • Указать в параметрах ядра: root=/dev/hda1, если КФС располагается на первом разделе CF-карты

SD-карта

Для использования КФС на SD-карте следует:

  1. Создать на SD-карте раздел для КФС и создать на этом разделе ФС
  2. Примонтировать созданный раздел и скопировать на него файлы КФС
  3. Настроить загрузку с использованием созданного раздела как КФС
    • Указать в параметрах ядра: root=/dev/mmcblk0p1, если КФС располагается на первом разделе SD-карты

USB-Flash

См. КФС на CF-карте. Может пригодиться параметр ядра rootdelay, если попытка монтирования КФС будет выполнена раньше чем определение USB-Flash.

В параметрах ядра указать: root=/dev/sda1, если КФС располагается на первом разделе USB-Flash.

Различные сборки КФС

:!: Если вы не знаете с какой именно сборки начать, рекомендуется сборка выполненная Buildroot.

В некоторых сборках при входе в систему используется логин root без пароля.

Если название файла начинается на u, то этот файл уже является образом U-Boot.

Для плат на базе EP93xx

Buildroot, с конфигурацией

Конфигурация, вспомогательный скрипт и дополнительные файлы КФС находятся в директории local/tion.

Основные этапы сборки:

  1. Распаковать оригинальный Buildroot соответствующей версии и наложить патч
  2. Скопировать файл конфигурации из local/tion/tion.config в .config и выполнить
    make oldconfig
  3. Выполнить загрузку архивов исходных кодов и сборку
    make BOARD=tion

При этом конфигурация будет использоваться из local/tion/tion.config, и если конфигурация изменяется (make menuconfig), то она должна быть сохранена в local/tion/tion.config (или сделайте ссылку local/tion/tion.config на .config).

Git репозиторий: http://zao-zeo.ru/media/files/linux/buildroot-2009.08.git

ФайлРазмерИзменение
buildroot-2009.08_20100713.tar.gz484112010/07/14 12:28

Более старые

Crater

Вы можете собрать КФС и ядро для плат на основе EP93xx с помощью Crater (модификация системы сборки Buildroot от Cirrus Logic). См. также описание сборки Crater.

ФайлРазмерИзменение
crater-1.0.0_svn1082.tar.gz80686172010/07/07 20:48
crater-1.0.0_svn789.tar.gz80744862010/01/31 19:19
crater-1.0.0_svn747.tar.gz80469092010/01/31 19:19

Некоторые файлы архивов исходных кодов используемые в Crater.

Прочие
ФайлРазмерИзменение
md5.sum3262010/06/02 18:12
rootfs_crater_svn819mod_tion-pro.jffs241943042010/06/02 18:12
uramdisk_crater-1.0.0.gz48369182010/01/31 19:20
uramdisk_bb1.8.2_opie.gz105647532010/01/31 19:20
uramdisk_bb1.8.2.gz29237262010/01/31 19:20
rootfs_crater_svn819_tion-pro2.jffs2133693442010/01/31 19:20

Для плат на базе PXA270

Buildroot, с конфигурацией

Конфигурация, вспомогательный скрипт и дополнительные файлы КФС находятся в директории local/tion270.

Основные этапы сборки:

  1. Распаковать оригинальный Buildroot соответствующей версии и наложить патч (пропустите файлы .defconfig и .gitignore)
  2. Скопировать файл конфигурации из local/tion270/tion270.config в .config и выполнить
    make oldconfig
  3. Выполнить загрузку архивов исходных кодов и сборку
    make BOARD=tion270

При этом конфигурация будет использоваться из local/tion270/tion270.config, и если конфигурация изменяется (make menuconfig), то она должна быть сохранена в local/tion270/tion270.config (или сделайте ссылку local/tion270/tion270.config на .config).

Git репозиторий: http://zao-zeo.ru/media/files/linux/buildroot-2009.08.git

ФайлРазмерИзменение
buildroot-2009.08_20100713.tar.gz484112010/07/14 12:28

Более старые

Прочие
ФайлРазмерИзменение
rootfs_pxa_ptx1.0.2.jffs91750402010/01/31 19:20
rootfs.arm.ext2.gz5455692010/01/31 19:20
md5.sum2872010/01/31 19:20
buildroot_svn24430_pxa_20081224.tar.gz10190182010/01/31 19:20
buildroot_svn23990_softfloat_oabi_rootfs.arm-xscale.ext2.gz12442242010/01/31 19:20
buildroot_svn23990_softfloat_oabi.config166072010/01/31 19:20

Часы реального времени

  • Текущее время задаётся командой date
  • Сохранение времени в RTC выполняется командой hwclock -w
  • Чтение времени из RTC выполняется командой hwclock -r

Дисплей

Для отключения засыпания дисплея можно использовать:
echo -en "\033[9;0]" > /dev/tty0

Разрешение

При использовании патчей для ядра с http://www.zao-zeo.ru/soft

Одноплатные компьютеры на основе Cirrus Logic EP9312/15

В параметрах ядра укажите:
video=ep93xxfb:vout=1,vmode=<val>, где <val> — номер соответствующий дисплею:

Дисплей <val>
VGA 16
3.5" (320x240) 17
5.7" (640x480) 18
8", 10.4" (640x480) 19
8" (800x600) 20
8" (800x600)
A080SN01
22

Если тип дисплея не указан, используется VGA-выход.

Одноплатные компьютеры на основе Marvell PXA270

В параметрах ядра укажите:
video=pxafb:tag=<val>, где <val> — значение соответствующее дисплею:

Дисплей <val>
VGA vga
3.5" (320x240) 3.5
5.7" (640x480) 5.7
8" (640x480) 8
8" (800x600)
OSD080TN42
8-800x600
10" (640x480) 10

Видео контроллер включается в режиме 18 bpp, если у вас адаптер для 16 bpp или Сириус270 старше rev1.0, то нужно добавить :bpp=16 (начиная с svn700), например:
video=pxafb:tag=vga:bpp=16

Если тип дисплея не указан, то VGA-выход отключён, потребление уменьшается на ~50 мА.

Подсветка

  1. Для плат на основе EP93xx управление подсветкой реализовано сигналом bright (см. /sys/class/backlight).
  2. Для плат на основе PXA270 управление подсветкой полностью не реализовано (сейчас подсветка или полностью отключена при blank или включена на 50%).

На адаптерах для различных дисплеев есть перемычки — включить подсветку (bl_on) или управлять подсветкой (bright). Замыкается только одна из двух перемычек!

Сенсорный экран

Калибровка

Перед использованием сенсорного экрана (touch screen) его необходимо откалибровать, для этого в составе образа КФС Linux есть утилита ts_calibrate (из tslib), запустите её и откалибруйте сенсорный экран. Проверить работу откалиброванного сенсорного экрана можно утилитой ts_test (из tslib).

Перед калибровкой убедитесь, что устройство не занято другой программой и, в случае если устройство занято, — завершите программу которая занимает устройство.

Сохранение

Если вы используете ramdisk, то в него следует внести изменённые параметры калибровки, см. Как изменить ramdisk, как использовать CF-карту в качестве КФС. Изменённый файл калибровки /etc/pointercal не должен содержать лишних символов: пробела, табуляции, новой строки и т.д.

Патчи

Корректное отображение утилит ts_calibrate и ts_test при цвете 18 bpp для плат на основе PXA270.

ФайлРазмерИзменение
tslib-0.0.2.patch11392010/01/31 19:20

OPIE

Для использования сенсорного экрана нужно установить значение переменной окружения QWS_MOUSE_PROTO перед запуском OPIE.

Например, для одноплатных компьютеров на основе Cirrus Logic EP9312/15 значение QWS_MOUSE_PROTO устанавливается в скрипте /sbin/startup (ранее в /sbin/start-opie):

  • Для сенсорного экрана:
    export QWS_MOUSE_PROTO=TPanel:/dev/misc/ep93xx_ts
  • Для мыши:
    export QWS_MOUSE_PROTO=IntelliMouse:/dev/input/mice

Примеры

Последовательный порт

ФайлРазмерИзменение
serial-pair_svn371.gz23522010/01/31 19:20

QT

QT версии 2.3.10, для других версий, возможно, требуются изменения

ФайлРазмерИзменение
leds-qt_svn413.tar.gz24312010/01/31 19:20

QT, Qwt, матричная клавиатура

QT версии 2.3.10, для других версий, возможно, требуются изменения

ФайлРазмерИзменение
keypad-qt_svn815.tar.gz32512010/01/31 19:20

CAN

ФайлРазмерИзменение
can-test_svn733.tar.gz36652010/01/31 19:20

pppd

Пример настройки для pppd демона (можно собрать в Buildroot) используемого для соединения по модему, в том числе GSM-модему.

  • Разместите содержимое архива в /etc/ppp
  • Файл настроки /etc/ppp/options: устройство последовательного порта, скорость и пр.
  • Создайте символьную ссылку
    ln -s /etc/ppp/resolv.conf /etc/resolv.conf
  • Скрипт запуска /etc/ppp/start, например
    /etc/ppp/start mts
  • В ядре должна быть поддержка PPP
ФайлРазмерИзменение
ppp_config_svn923.tar.gz9642010/03/11 13:01

Компиляторы

EP93xx

1. Если вы используете Buildroot, то используйте компилятор и библиотеки собранные им.

Cross-компиляторы собранные Buildroot 2009.08:

ФайлРазмерИзменение
gcc-4.3.4_armv4_arm920t_eabi.tar.gz573872602010/07/13 20:42

Для установки распакуйте в /, нужны права на запись в директорию /usr/local/arm.

2. http://arm.cirrus.com/files/tools/arm-linux-gcc-4.1.1-920t.tar.bz2

Для установки распакуйте в /usr/local/arm, нужны права на запись в эту директорию. Этим компилятором можно собрать Crater.

PXA270

1. Если вы используете Buildroot, то используйте компилятор и библиотеки собранные им.

Cross-компиляторы собранные Buildroot 2009.08:

ФайлРазмерИзменение
gcc-4.3.4_armv5te_xscale_eabi.tar.gz513708402010/07/14 20:52

Для установки распакуйте в /, нужны права на запись в директорию /usr/local/arm.

2. Cross-компиляторы собранные Pengutronix OSELAS®.Toolchain( ) с конфигурацией по умолчанию (библиотека glibc).

ФайлРазмерИзменение
arm-iwmmx-linux-gnueabi_oselas.toolchain-1.1.1.tar.gz732724302010/01/31 19:21
arm-xscale-linux-gnu_oselas.toolchain-1.1.1.tar.gz699156732010/01/31 19:21
md5.sum1732010/01/31 19:21

Для установки распакуйте в /, нужны права на запись в директорию /opt.

 
linux.txt · Последние изменения: 2010/08/19 11:54 От asv
 
Recent changes RSS feed Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki Donate