Netlink w1

Для подключения owfs нужен модуль ядра - netlink?

В смысле модуль sn.ko

По-моему нет, но я не уверен. В owfs постоянно то ломали, то опять чинили поддержку работы через ядерный интерфейс 1-wire, не знаю как дела обстоят сейчас. Если есть такая возможность, то лучше использовать ядерные драйвера.

Про пересборку ядра есть в вики: http://contactless.ru/wiki/index.php?title=Сборка_ядра
Если не получится и не хватает каких-то модулей - напишите здесь, я в образ добавлю.

Ядро собирать долго.
С докой по взаимосвязи с sysfs похоже, Вы тоже не знаете, как.
Собрал последний owfs.
root@wirenboard:/dev# /opt/owfs/bin/owhttpd --debug --w1 --foreground --error_level=9 --port=2121
DEBUG MODE
libow version:
2.9p2
DEBUG: ow_daemon.c:(166) main thread id = 3066482688
CONNECT: ow_avahi_link.c:(68) No Avahi support. Library libavahi-client couldn’t be loaded
CONNECT: ow_dnssd.c:(82) Zeroconf/Bonjour is disabled since dnssd library isn’t found
CALL: ow_parsename.c:(99) path=[]
DEBUG: owlib.c:(81) Globals temp limits 0C 100C (for simulated adapters)
CONNECT: ow_w1_bind.c:(54) [Protocol not supported] Netlink (w1) socket (are you root?)
DEBUG: ow_w1_monitor.c:(65) [Protocol not supported] Netlink problem – are you root?
DEFAULT: owlib.c:(56) No valid 1-wire buses found
DEBUG: ow_exit.c:(18) Exit code = 1
CALL: ow_lib_close.c:(21) Starting Library cleanup
CALL: ow_lib_stop.c:(23) Clear Cache
DEBUG: ow_cache.c:(296) Flipping cache tree (purging timed-out data)
DEBUG: ow_cache.c:(314) flip cache. tdestroy() will be called.
DEBUG: ow_cache.c:(296) Flipping cache tree (purging timed-out data)
DEBUG: ow_cache.c:(314) flip cache. tdestroy() will be called.
CALL: ow_lib_stop.c:(25) Closing input devices
CALL: ow_lib_stop.c:(27) Closing output devices
DEBUG: ow_connect_out.c:(56) Freeing outbound (null) #0
CALL: ow_lib_close.c:(35) Finished Library cleanup
DEBUG: ow_lib_close.c:(43) Libraries closed
root@wirenboard:/dev#

up

по коду выяснил, что не срабатывает
pin->file_descriptor = socket(PF_NETLINK, SOCK_RAW , NETLINK_CONNECTOR);
if ( FILE_DESCRIPTOR_NOT_VALID( pin->file_descriptor ) ) {
ERROR_CONNECT(“Netlink (w1) socket (are you root?)”);
return gbBAD;
}
гугл указывает на проверку cat /usr/src/linux/.config | grep CONNTRACK

Хотя наверное в 3-м ядре, это наверное, что-то типа CONFIG_NETLINK_MMAP

Собрал с этой опцией, попробуйте пожалуйста.

Поставил тестовое ядро
Теперь не пересобирается Device Tree.
Хочется всключть w1

Тестовое ядро - версии 3.13, соответственно исходные DTS файлы надо качать из другой ветки.
Отсюда: https://github.com/contactless/linux/tree/v3.13-imxv5-x0.1/arch/arm/boot/dts

Так оттуда и качал

Так, оказывается в 3.13 device tree compiler вызывается после препроцессора. Итого надо сделать:
wget https://raw.github.com/contactless/linux/v3.13-imxv5-x0.1/arch/arm/boot/dts/mxs-pinfunc.h
wget https://raw.github.com/contactless/linux/v3.13-imxv5-x0.1/arch/arm/boot/dts/imx23-pinfunc.h
gcc -E -Wp,-MD,imx23-wirenboard28.dtb.d.pre.tmp -nostdinc -I. -undef -D__DTS__ -x assembler-with-cpp -o .imx23-wirenboard28.dtb.dts.tmp imx23-wirenboard28.dts
cat .imx23-wirenboard28.dtb.dts.tmp | grep -v "^#" | dtc -I dts -O dtb -o imx23-wirenboard28.dtb

gcc любой или arm-ой?

Более детальное изучение показало, что включить надо опцию CONFIG_CONNECTOR

Включил cn - заработало

gcc любой, используется только препроцессор.

Опцию включил, ядро обновил.

У меня с новым ядром owfs заработал. Только там похоже не поддерживается запрос strong pull-up у драйвера, термометры по паразитному питанию работать не будут.

А что за запрос, strong pull-up?

ну в 1-wire есть такая штука, strong pull-up - это когда мастер замыкает линию данных на питание напрямую транзистором. Это надо например для термометров, потому что им обычного паразитного питания не хватает для чтения температуры.
В линуксе соответственно драйвер должен запросить мастера сделать этот strong pull-up. В случае owfs это должен делать owfs через свои netlink-сокеты, но видимо это пока не поддерживается.