Discussion:
Onewire on BeagleBoneBlack example ?
(too old to reply)
Poul-Henning Kamp
2017-12-20 12:51:51 UTC
Permalink
Does anybody have a working example of getting onewire sensors
working on beagleboneblack ?
--
Poul-Henning Kamp | UNIX since Zilog Zeus 3.20
***@FreeBSD.ORG | TCP/IP since RFC 956
FreeBSD committer | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.
Poul-Henning Kamp
2017-12-20 22:58:08 UTC
Permalink
--------
Post by Poul-Henning Kamp
Does anybody have a working example of getting onewire sensors
working on beagleboneblack ?
Ok, with some hints from the usual IRC channel I managed to figure it out:

cd /boot/dfb
mv am335x-boneblack.dtb _am335x-boneblack.dtb
dtc -I dtb -O dts -o am335x-boneblack.dts _am335x-boneblack.dtb
patch am335x-boneblack.dts (see below)
dtc -I dts -O dtb -o am335x-boneblack.dtb am335x-boneblack.dts
echo "owc_load=YES" >> /boot/loader.conf
echo "ow_load=YES" >> /boot/loader.conf
echo "ow_temp_load=YES" >> /boot/loader.conf

The patching of am335x-boneblack.dts is black magic, but this patch
worked for me:

***@beaglebone:/boot/dtb # diff -u *dts
--- _am335x-boneblack.dts 2017-07-21 11:24:18.229468000 +0000
+++ am335x-boneblack.dts 2017-07-21 19:19:35.166447000 +0000
@@ -2149,6 +2149,14 @@
status = "disabled";
};

+ // first number (0x36, 0x4b) refers to "phandle" of gpio#
+ // second number is bit on that *cpu* GPIO
+ // not sure if the third matter, but 1 works.
+ onewire0 { compatible = "w1-gpio"; gpios = <0x36 30 1>; }; // P9::11
+ onewire1 { compatible = "w1-gpio"; gpios = <0x36 31 1>; }; // P9::13
+ onewire2 { compatible = "w1-gpio"; gpios = <0x4b 16 1>; }; // P9::15
+ onewire3 { compatible = "w1-gpio"; gpios = <0x36 3 1>; }; // P9::21
+
__symbols__ {
l4_wkup = "/ocp/***@44c00000";
wkup_m3 = "/ocp/***@44c00000/***@100000";

Either device tree overlays just plain don't work, I can't figure out how to
write them (p=0.5).

I sure get why getting people hooked on FreeBSD with RPi's and
BeagleBones is not happening :-/
--
Poul-Henning Kamp | UNIX since Zilog Zeus 3.20
***@FreeBSD.ORG | TCP/IP since RFC 956
FreeBSD committer | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.
Ian Lepore
2017-12-20 23:21:17 UTC
Permalink
Post by Poul-Henning Kamp
--------
Post by Poul-Henning Kamp
Does anybody have a working example of getting onewire sensors
working on beagleboneblack ?
cd /boot/dfb
mv am335x-boneblack.dtb _am335x-boneblack.dtb
dtc -I dtb -O dts -o am335x-boneblack.dts _am335x-boneblack.dtb
patch am335x-boneblack.dts (see below)
dtc -I dts -O dtb -o am335x-boneblack.dtb am335x-boneblack.dts
echo "owc_load=YES" >> /boot/loader.conf
echo "ow_load=YES" >> /boot/loader.conf
echo "ow_temp_load=YES" >> /boot/loader.conf
The patching of am335x-boneblack.dts is black magic, but this patch
--- _am335x-boneblack.dts       2017-07-21 11:24:18.229468000 +0000
+++ am335x-boneblack.dts        2017-07-21 19:19:35.166447000 +0000
@@ -2149,6 +2149,14 @@
status = "disabled";
};
 
+       // first number (0x36, 0x4b) refers to "phandle" of gpio#
+       // second number is bit on that *cpu* GPIO
+       // not sure if the third matter, but 1 works.
+       onewire0 { compatible = "w1-gpio"; gpios = <0x36 30 1>; }; // P9::11
+       onewire1 { compatible = "w1-gpio"; gpios = <0x36 31 1>; }; // P9::13
+       onewire2 { compatible = "w1-gpio"; gpios = <0x4b 16 1>; }; // P9::15
+       onewire3 { compatible = "w1-gpio"; gpios = <0x36 3 1>; };  // P9::21
+
__symbols__ {
Either device tree overlays just plain don't work, I can't figure out how to
write them (p=0.5).
I sure get why getting people hooked on FreeBSD with RPi's and
BeagleBones is not happening :-/
That 3rd number in gpios= describes pin attributes:

/* Bit 0 express polarity */
#define GPIO_ACTIVE_HIGH 0
#define GPIO_ACTIVE_LOW 1

/* Bit 1 express single-endedness */
#define GPIO_PUSH_PULL 0
#define GPIO_SINGLE_ENDED 2


If you #include <dt-bindings/gpio/gpio.h> in the dts source you can
just use the symbolic names.

For years, folks have been espousing the value of getting people hooked
on freebsd via rpi and beaglebone, but somehow those folks never end up
doing a lot of committing of arm code that advances that goal, they
just keep saying what a laudable goal it is.  The people who do work on
arm code mostly aren't all that interested in rpi or beaglebone, so we
fight the fires that are reported, and commit code contributed by
others, but don't do much optional work on them.

-- Ian
Poul-Henning Kamp
2017-12-21 00:22:56 UTC
Permalink
--------
Post by Ian Lepore
For years, folks have been espousing the value of getting people hooked
on freebsd via rpi and beaglebone,
I'm personally not that convinced about the value, for a number of
complex and interlocking reasons and I was merely noting that I
could see why it isn't happening - value or not.

Poul-Henning
--
Poul-Henning Kamp | UNIX since Zilog Zeus 3.20
***@FreeBSD.ORG | TCP/IP since RFC 956
FreeBSD committer | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.
Loading...