Содержание

Linux™

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

Ядро

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

  1. Первый вариант:
    • Архив с исходными кодами ядра соответствующей версии с www.kernel.org
    • Патч или набор патчей
  2. Или, второй вариант:
    • Копия git-репозитория полученная командой:
      git clone <адрес-репозитория> <локальная-директория>
  3. Установленный компилятор, ассемблер и линковщик (редактор связей) для целевой платформы
  4. Установленные программы: 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_svn1713_201111251752.tar.gz5665592011/11/25 18:34

Более старые

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

  1. Для Тион270 rev.2 и Тион-Про270 rev.2 (рекомендуется и для плат ранее чем rev.2)
    Git репозиторий http://zao-zeo.ru/media/files/linux/linux-2.6.35.14.git
  2. Для плат на основе PXA270 ранее чем rev.2:
ФайлРазмерИзменение
linux-2.6.22.19_tion270_svn1920_201204021347.tar.gz4411142012/04/02 14:09

Более старые

Сборка ядра

  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. Для обработки файлов модулей программой ${CROSS_COMPILE}strip (уменьшения размеров файлов модулей) задать переменную окружения
    export INSTALL_MOD_STRIP=1
  3. Установка модулей в директорию <mod_dir>
    export INSTALL_MOD_PATH=<mod_dir>
    make modules_install

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

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

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

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

ФайлРазмерИзменение
uImage-2.6.20.21_tion_svn889_eabi17109762010/02/15 19:44
uImage-2.6.20.21_tion-pro_svn889_eabi17110322010/02/15 19:44
uImage-2.6.20.21_tion-pro2_svn1522_eabi17805922011/06/06 00:00
md5.sum2142013/08/05 20:09

Более старые

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

Для Тион270 и Тион-Про270 (rev.2 и rev.1.x):
:!: Для ядра 2.6.35 используется идентификатор machid e66 (шестнадцатеричное)

ФайлРазмерИзменение
uImage-2.6.35.14_tion270_zeo9f3547c50612e05e8b21ceada22c0e157e53773526907722013/08/05 20:35
uImage-2.6.35.14_tion-pro270_zeo56212a24a918663f0c156279cf97fd6d6c6438c525800202013/08/05 20:35
md5.sum2102013/08/05 20:53

Для плат на основе PXA270 (только rev.1.x):
:!: Для ядра 2.6.22 используется идентификатор machid 2d9 (шестнадцатеричное)

ФайлРазмерИзменение
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
md5.sum1472013/08/05 20:14

Более старые

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

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

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

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-адрес клиента (платы)
#auto eth0
#iface eth0 inet dhcp

CF-карта

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

  1. Создать на CF-карте раздел для КФС и создать на этом разделе ФС
    • См. утилиты fdisk, cfdisk, mke2fs, mkfs.ext2
  2. Примонтировать созданный раздел и скопировать на него файлы КФС
    • Файлы КФС проще всего взять из образа ext2 КФС, создаваемого системой сборки. При этом образ ext2 монтируется к директории (например) mnt:
      mount -o loop rootfs.arm.ext2 mnt
      Из этой директории mnt файлы КФС копируются на раздел носителя с сохранением прав, владельца, группы, ссылок, т.е. cp -a
  3. Настроить загрузку с использованием созданного раздела как КФС
    • Указать в параметрах ядра: root=/dev/hda1, если КФС располагается на первом разделе CF-карты
  4. Может пригодиться параметр ядра rootdelay, если попытка монтирования КФС будет выполнена раньше чем определение CF-карты

SD-карта

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

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

USB-Flash

  1. В параметрах ядра указать: root=/dev/sda1, если КФС располагается на первом разделе USB-Flash
  2. Может пригодиться параметр ядра rootdelay, если попытка монтирования КФС будет выполнена раньше чем определение USB-Flash

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

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

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

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

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

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

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

В конфигурации используется интерфейс EABI, учтите это и при сборке ядра включите CONFIG_AEABI.

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

  1. Взять из репозитория
    git clone URL
  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

Более старые

Crater

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

В конфигурации используется интерфейс OABI, учтите это и при сборке ядра выключите CONFIG_AEABI или включите CONFIG_OABI_COMPAT.

ФайлРазмерИзменение
crater-1.0.0_svn1082.tar.gz80686172010/07/07 20:48
Прочие
ФайлРазмерИзменение
rootfs_crater_svn819mod_tion-pro.jffs241943042010/06/02 18:12
rootfs_crater_svn819_tion-pro2.jffs2133693442010/01/31 19:20
md5.sum1482013/08/05 20:57

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

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

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

В конфигурации используется интерфейс EABI, учтите это и при сборке ядра включите CONFIG_AEABI.

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

  1. Взять из репозитория
    git clone URL
  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

ФайлРазмерИзменение
rootfs_tion270_br2009.08_zeoe7b4ce71305a5f52805b8824e3a0e8dd002e5ff1.jffs2259522562013/08/05 20:40
md5.sum1092013/08/05 20:41

Более старые

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

Дисплей

Для отключения засыпания дисплея можно использовать:
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
Дисплей Параметр ядра
LVDS 10.4"(800x600) video=pxafb:mode:800x600,pixclockpol:0,pixclock:21600 1)

Видео контроллер включается в режиме 18 bpp, если у вас адаптер для 16 bpp или Сириус270 старше rev1.0, то нужно добавить :bpp=16 2), например:
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):

Примеры

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

ФайлРазмерИзменение
serial-pair_svn1695.c.gz25002012/07/04 14:13

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

evdev: кнопка, матричная клавиатура

В ядре должен быть включён evdev (или модуль evdev). Программа читает указанный файл символьного устройства /dev/input/eventX

ФайлРазмерИзменение
event.c6512011/08/03 16:47

CAN

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

pppd

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

ФайлРазмерИзменение
ppp_config_svn923.tar.gz9642010/03/11 13:01

Компиляторы

EP93xx

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

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, нужны права на запись в эту директорию. Этим OABI компилятором можно собрать 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.

iMX28

Cross-компиляторы, собранные Ltib (Ядро 2.6.35)

ФайлРазмерИзменение
gcc-4.1.3-glibc-2.5-nptl-3.tar.gz477309802013/03/20 16:32
gcc-4.3.3-glibc-2.8-cs2009q1-203.tar.gz869440292013/03/20 16:36
gcc-4.4.4-glibc-2.11.1-multilib-1.0.tar.gz1801366322013/03/20 16:54

Cross-компиляторы, собранные Buildroot (Ядро 4x)

ФайлРазмерИзменение
gcc-8.3.0.tar.bz21305984022019/10/25 20:31
1) Начиная с svn1919
2) Начиная с svn700