mend0za: (Default)
[personal profile] mend0za
Тема Говна и NDA получила масштабное продолжение.

Любимый заказчик, впечатлённый нашей неземной красотой заманавшись с системной интеграцией, выделил две три недели на создание лицензионно чистой версии Linux ядра под целевой чип. Напоминаю - берём код совершенно постороннего вендора, скачанный с его сайта, и с помощью лома и такой то матери осуществляем портирование Board Support Package (BSP) с 2.6.15.4 (вышел 4 года назад) на 2.6.28.10 (максимально соответствует закрытой для нас версии исходников, на которую заказчик осуществляет интеграцию).

Волшебное застигло на старте - diff вендорского ядра от vanilla kernel 2.6.15.4 составил порядка 500kb. Вся инициализация, ethernet, i2c, модификации serial8250 и прочая.

Если этот патч концентрированного вендорского поноса показать в LKML (Linux Kernel Mailing List) - о голову авторов гарантированно будут бить бутылки, наполненные консервированной мочой Торвальдса, на уничтожение голов вместе с содержимым мозга. Концентрат кодификации кривохаков на скорую руку.


Этапы большого пути (каждый этап выполнялся 2-3 раза, с выкидыванием предыдущих неудачных результатов):

  • Перенос архитектурно-зависимых заголовочных файлов (все пути поменялись)
  • Дописывание ассемблерного кода (ARM9) для распаковки образа (поменялось api распаковщика, автоматически сгенерённые переменные оказались невыровненными, что блокировало компиляцию). RISC, ага. Мозг анально дефлорирован.
  • Жестокая нестандартная инициализация serial8250 c модификацией самого драйвера с комментариями "а вот эту проверочку мы уберём, наш чип её не любит и вообще это ошибка в ядре, но делать мы ничего не будем, а только прилепим кривохак".
  • Кровавое портирование испохабленного драйвера tulip. Да, вендор использует свою собственный форк драйвера tulip, держит её в drivers/net/_tulip, которая малосовместима даже со штатной tulip из 2.6.15.4, не говоря уже об 2.6.28.10. Я, будучи в душе хорошим мальчиком, попытался портировать _tulip похорошему, в основное дерево, но после полутора недель самовзлома мозга сдался, и сделал также как вендор - скопировал его дерево драйверов. А хули - они оторвали PCI c мясом и подключили чип по MII + переход 1.1.13 -> 1.1.15 в upstream kernel tulip сделал корректное портирование для моего уровня познаний в предмете невозможным. Но даже вдогонку мне ядро поднасрало, поменяв инициализацию NAPI в network devices, пришлось upstream внимательно смотреть.


Итак, сегодня в 21:00 я впервые загрузил Лицензионно Чистое Ядро Linux (C) 2.6.28.10 на целевой платформе, NFSROOT.

Остался i2c. Предвижу столь же большой объём мозготраха, как и на tulip ethernet.

Алилуйя. Сим победим.

А вы начинаете каждое утро с аутотренинга - чтения вслух с выражением файла с говорящим названием Documentation/stable_api_nonsense.txt из дерева исходников Linux kernel?
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

mend0za: (Default)
mend0za

June 2023

S M T W T F S
    123
45678910
11 121314151617
18192021222324
252627282930 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 9th, 2025 01:13 pm
Powered by Dreamwidth Studios