2015-02-02 4 views
0

Я пытаюсь добавить fbtft модуль ядра в качестве внешнего пакета в OpenWRT путем копирования всех необходимых файлов в каталоге/пакет/каталог fbtft как этот парень сделал https://github.com/GBert/openwrt-misc/tree/master/fbtftКак добавить дополнительные зависимости ядра модули

Проблема заключается в том, что fbtft скомпилирован с использованием -DCONFIG_FB_DEFERRED_IO = 1. Это определение используется некоторыми структурами фреймбуфера, такими как fb_info из fb.h. Если CONFIG_FB_DEFERRED_IO определен, структура имеет другой размер. Теперь файлы буфера кадров linux, такие как fbsysfs.c, который использует эту структуру fb_info, не скомпилированы с этим флагом CONFIG_FB_DEFERRED_IO, что приводит к тому, что fb_info имеет другой размер. Fbtft использует fbsysfs.c для выделения памяти для структуры fb_info, но размер отличается от двух, потому что они не скомпилированы с одинаковыми флагами.

Я пытался добавить FB_BROADSHEET и FB_AUO_K190X (которые зависят от FB_DEFERRED_IO) от «сделать kernel_menuconfig», но fbsysfs.c и другие фреймбуфера файлы еще не скомпилирован с нужным флагом (я могу видеть это, глядя на .fbsysfs.o .cmd). Как добавить флаг -DCONFIG_FB_DEFERRED_IO = 1 во время компиляции для всех файлов фреймбуффа linux, чтобы все они имели правильную структуру fb_info?

Благодаря

+0

Еще один вопрос: если CONFIG_FB_DEFERRED_IO = y в файле .config все файлы должны быть скомпилированы с помощью -DCONFIG_FB_DEFERRED_IO = 1? Как инструмент сборки выбирает, какие файлы скомпилированы с помощью определения флагов? – user1934513

ответ

0

глядя в kbuild документации, кажется, что буфер кадра файлам не нужны какие-либо дополнительный определить флаги как -DCONFIG_FB_DEFERRED_IO = 1, потому что все определяет сделаны в включают/сгенерированный/autoconf.h, который включен все файлы (косвенно). Теперь структура fb_info имеет одинаковый размер везде и модуль загружается без ошибки сегментации.

Смежные вопросы