Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:2
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » Отладочные платы » SK-iMX233
Hard RT linux & i.mx233
sasamy
Добавлено 15.09.2010 12:59 Редактировалось 15.09.2010 21:53
0
Сообщение: 1
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Попробовал собрать ядро с патчами для hard real time - на удивление ядро оказалось жизнеспособным :) хотя не без проблем. Не работает SPI - драйвер контроллера не проходит даже ф-ию probe, проблема с установкой частоты тактирования, мне было интересно провести общий обзор поэтому пока не занимался разборками с SPI, просто отключил его. Вторая проблема - с драйвером debug uart и отладочной консоли - тут без нее никак поэтому устранил поблему временно влоб, в прерывании отключил spin_lock, серьезных проблем это не вызывает в процессе работы. Делал все с последними патчами freescale для ядра 2.6.31, к слову эта же ветка является последним официальным релизом поддерживающем патчи -rt. Старотовая точка:
https://www.osadl.org/Latest-Stable-Realtime.latest-stable-realtime-linux.0.html
там по ссылкам все разжевано с пошаговыми инструкциями. Патчи freescale для ядра 2.6.31 во вложении.
Они нормально ложатся на ядро 2.6.31.12 с одним исключением - они содержат патч для кодека wm8... не помню какой который присутствует в ветке 2.6.31.12 , в общем в процессе пропатчивания на вопрос нужно ли делать реверс - ответить n(no). Для наложения патчей freescale - скопировать архив в корень исходников, перейти в корень исходников, распаковать в корне
#tar jxf patches.tar.bz2
и выполнить из корня
# patches/patch-kernel.sh
Еще один момент - с ядром 2.6.31.12 у меня вылетает ошибка при работе с ubifs созданной ядром 2.6.31 , пришлось заново создать ubifs на свежем ядре.
Как ни странно, но латентность ванильного ядра c soft real time (preemtive kernel) оказалось практически такой же как и c патчами -rt, по крайней мере если верить тесту cyclictest, и не особо поражает результатами :)
Код

# cyclictest -a -t -n -p99
policy: fifo: loadavg: 0.04 0.03 0.01 1/46 430

T: 0 ( 430) P:99 I:1000 C: 100792 Min: 18 Act: 67 Avg: 52 Max: 176


Версия ядра
Код

# uname -v
#14 PREEMPT RT Wed Sep 15 04:02:23 MSD 2010

Так выглядит список процессов
Код

# ps
PID USER TIME COMMAND
1 root 0:06 init
2 root 0:00 [kthreadd]
3 root 0:00 [sirq-high/0]
4 root 0:00 [sirq-timer/0]
5 root 0:00 [sirq-net-tx/0]
6 root 0:00 [sirq-net-rx/0]
7 root 0:00 [sirq-block/0]
8 root 0:00 [sirq-tasklet/0]
9 root 0:00 [sirq-sched/0]
10 root 0:00 [sirq-hrtimer/0]
11 root 0:00 [sirq-rcu/0]
12 root 0:00 [posixcputmr/0]
13 root 0:00 [desched/0]
14 root 0:00 [rcu_sched_grace]
15 root 0:00 [events/0]
16 root 0:00 [khelper]
19 root 0:00 [async/mgr]
132 root 0:00 [kblockd/0]
138 root 0:00 [ksuspend_usbd]
143 root 0:00 [khubd]
184 root 0:00 [pdflush]
185 root 0:00 [pdflush]
186 root 0:00 [kswapd0]
187 root 0:00 [aio/0]
188 root 0:00 [crypto/0]
202 root 0:00 [irq/46-fb_irq]
319 root 0:00 [mtdblockd]
320 root 0:00 [irq/56-GPMI NFC]
321 root 0:00 [irq/13-GPMI NFC]
334 root 0:00 [ubi_bgt0d]
338 root 0:00 [ubiblkd]
341 root 0:00 [irq/11-ehci_hcd]
358 root 0:00 [usbhid_resumer]
379 root 0:00 [pswitch]
380 root 0:00 [irq/3-pswitch]
385 root 0:00 [ubifs_bgt0_0]
386 root 0:03 [irq/0-DebugUART]
401 root 0:00 /sbin/watchdog -T 10 /dev/watchdog
417 root 0:00 /usr/sbin/sshd
419 root 0:00 /sbin/getty 38400 tty1 linux
420 root 0:00 -sh
421 root 0:00 /sbin/syslogd -n -m 0
422 root 0:00 /sbin/klogd -n
423 root 0:00 /usr/bin/tail -f /var/log/messages
434 root 0:00 ps


Как можно увидеть - все irq выполняются в отдельных потоках ядра.

PS LCD на фреймбуфере, звук и USB заработали без проблем.
PPS мои проблемы с созданием новых тем были связаны с браузером а не с форумом, на убунте все ОК.
Attachment file: uploads/forum/patches.tar.tar
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 15.09.2010 13:22 Сообщение: 2
Pavel Ivanchenko
Admin
4.39

Пункты: 92788
Регистрация: 24.03.2009
Пол: Мужчина
Спасибо!!!
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 15.09.2010 15:39 Редактировалось 15.09.2010 17:06 Сообщение: 3
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Оживил spi, поднял сеть, скачал ядро с kernel.org 60 мбайт - проблем не замечено. Кстати - с новым "бутстрапом" сеть в u-boot у меня ниразу не заткнулась - создам отдельную тему, дам ссылку на исходники.

PS тачскрин на spi/gpio тоже заработал
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 24.09.2010 09:49 Редактировалось 24.09.2010 11:21 Сообщение: 4
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Поднял все кроме криптодевайса, подправил нативный драйер сети - скорость до мегабайта в секунду, но что интересно, этот драйвер нестабильно работает в ванильном ядре, а с RT мне его повалить не удалось как ни старался :) запускал два потока на закачку по ftp и два на раздачу по http и ftp - все это одновременно, гонял 700 метровые мпеги (тоесть все честно - никакого сжатия при передаче) при этом играла музыкав фоне - аудиопоток с Интернет. Еще интересно что не все плееры одинаковы полезны :) mpd - последней стабильной версии даже не заикался, играет абсолютно чисто - я был приятно шокирован (и это при 100% загрузке процессора и сетевого интерфейса!). с mplayer, старыми версиями mpd, mpg123 все намного хуже - от полного замолкания или вылета аудиодрайвера до полного зависания системы.

Откуда берется 100% загрузка системы - все дело в уникальной глупости spi - там всего 1 канал dma, для того чтобы просто прочитать регистр из ks8851 нужно сформировать запрос и получить ответ, при этом происходит аж 2 прерывания, 2 смены контекста и 2 переключения настроек dma - это полный пипец, я частично компенсировал этот момент, подправил драйвер spi чтобы короткие сообщения отправлялись в pio а длинные пакеты через dma, это сразу дало прирост скорости сетевого интерфейса ~30% и снижение загрузки процессора а самое главное количество прерываний.

Еще интересное наблюдение - при увеличении процессов использующих сетевой интерфейс нагрузка процессора аномально снижается - видимо rt ядро эффективно вытесняет процессы ожидающие пакеты.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 08.10.2010 23:59 Редактировалось 09.10.2010 00:01 Сообщение: 5
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Посетила меня мысль - выпилил асинхронную передачу данных по spi, сделал ее синхронной,в результате сократилась пара spin lock -ов и переключение контекста на completion, соотвественно заменил в драйвере ks8851 вызовы spi_sync на spi_async Результат более чем впечатлил - загрузка процессора на уровне 40%, скорость сетевого интерфейса порядка 1,5 мбайт/сек, ping чуть больше миллисекунды, при этом нагрузки не от spi вообще не видно в top.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 27.10.2010 21:40 Сообщение: 6
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
И все-таки она вертится :)
http://sasamy.narod.ru/Screenshot-1.png
Спуститься к концу Подняться к началу
Персональная информация
alexsl
Добавлено 28.10.2010 09:22 Сообщение: 7
alexsl
0

Пункты: 4270
Регистрация: 26.10.2010
Судя по screenshot вы запустили на плате сборку от OpenEmbedded. Какой порт использовали, ведь в OE есть только порты для imx21 и imx27? Сам я использую только rootfs от OE для imx21.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 28.10.2010 18:09 Сообщение: 8
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Cделал конфиг по аналогии с каким-то атмелом, тема тут есть в разделе embedded linux.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » SK-iMX233