Jeremy, thank you; any chance you can field one more (probably not too
intelligent) question as I'm only starting on git?
> git clone git://github.com/adafruit/adafruit-beaglebone-io-python
Fatal Python error: Py_Initialize: Unable to get the locale encoding
File "/usr/lib/python2.7/encodings/__init__.py", line 123
raise CodecRegistryError,\
^
SyntaxError: invalid syntax
Aborted (core dumped)
>
I'm guessing I'm doing something stupid? Thanks.
Bit_Pusher
On Monday, December 9, 2013 11:19:20 AM UTC-5, Jeremy L wrote:
>
> On 12/09/2013 08:11 AM, Bit Pusher wrote:
>
> Zach, your suggestions worked. I changed fragment@1 to:
>
> fragment@1 {
> target = <&ocp>;
> __overlay__ {
> test_pru_iomap: pru_iomap {
> compatible = "bone-pinmux-helper";
> pinctrl-names = "default";
> pinctrl-0 = <&mygpio>;
> status = "okay";
> };
> };
> recompiled, and then when I loaded the overlay, and later did ADC.setup(),
> I was still able to
> control the output pins with the ADC simultaneously working using pru0
> commands
>
> SET r30.t14
> and
> CLR r30.t14
>
> I also added pru0 to:
> exclusive-use =
> "P8.12", "pru0";
> as you suggested. Finally, your explanations about which files are being
> affected when overlays are loaded
> was very illuminating. I have spent time googling to try and understand
> what is going on with device trees, and
> read articles such as http://www.devicetree.org/Device_Tree_Usage, but
> your few lines of explanation have been
> more useful than anything I have found to date. If there is an article or
> site you would recommend to read, I would
> be very interested. Also, if you happen to know where the source code for
> Adafruit_BBIO.ADC can be found,
> I would be interested in trying to follow it through. Once again, thank
> you for your
> help; with my limited knowledge re device trees, this is not something I
> would have
> been able to solve on my own.
> Bit Pusher
>
> On Friday, December 6, 2013 2:50:39 PM UTC-5, Zachary Thorson wrote:
>>
>> Odd, dmesg has no errors, but there is definitely a conflict between the
>> two.
>>
>> Someone can correct me if I am wrong as this is a guess based on the
>> behavior of the system (I'll have to look it up later) but loading a device
>> tree will dynamically map a bunch of hardware register to the file system
>> in certain locations based on the fragment used. Since the dts file you
>> posted specified &ocp as the target, it placed it into
>> /sys/devices/ocp.*/[Name].
>>
>> In this case [Name] is the name that you specified is the one inside of
>> that __overlay__ keyword. That would be "helper".
>>
>> I know for sure that the Adafruit Library looks for
>> /sys/devices/ocp.*/helper.* to read from and control the ADC registers, so
>> if your overlay is overwriting those values, it will lead to problems. I
>> am not sure why it would affect your pru code without seeing how you are
>> trying to access the IOs.
>>
>> Anyway, try changing the line:
>> test_helper: helper {
>>
>>
>> to something more unique such as:
>> pru_iomap {
>>
>>
>> Recompile, then try loading as before.
>>
>> Though if you are not using the ocp mapping to write to the IO, you
>> could probably drop the section. Some of the sample dts files in
>> /lib/firmware/BB-BONE-PRU-01.dts do not even map the ocp.
>>
>> Also, you may want to add "pru0" to your exclusive use list so another
>> cape doesn't try to use it at the same time.
>>
>> After those changes:
>>
>>
>> 0: 54:PF---
>> 1: 55:PF---
>> 2: 56:PF---
>> 3: 57:PF---
>> 4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G
>> 5: ff:P-O-L Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI
>> root@beaglebone:~# echo BB-BONE-PRU > $SLOTS
>> root@beaglebone:~# cat $SLOTS
>> 0: 54:PF---
>> 1: 55:PF---
>> 2: 56:PF---
>> 3: 57:PF---
>> 4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G
>> 5: ff:P-O-L Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI
>> 7: ff:P-O-L Override Board Name,00A0,Override Manuf,BB-BONE-PRU
>> root@beaglebone:~# python
>> Python 2.7.3 (default, May 29 2013, 21:25:00)
>> [GCC 4.7.3 20130205 (prerelease)] on linux2
>> Type "help", "copyright", "credits" or "license" for more information.
>> >>> import Adafruit_BBIO.ADC as ADC
>> >>> ADC.setup()
>> >>> ADC.read("P9_40")
>> 0.86722224950790405
>>
>>
>>
>> Let me know how it goes,
>> Zachary Thorson
>>
>>
>>
>>
>>
>>
>> On Wednesday, December 4, 2013 8:13:14 PM UTC-6, Bit Pusher wrote:
>>>
>>> Zach, that would be very good of you; I got if from searching on the net
>>> and it is barely changed (if at all) from what I found (but I didn't record
>>> who I copied it from so I apologize for not giving credit). The *.dts is
>>> below. I might mention that if I load my overlay only, then using >cat
>>> $PINS, I can see the expected pin change to 6. If I setup the AD first in
>>> python, I do not see any changes in the $PINS, and if I then try to load my
>>> overlay and check the pins, they are still the same as just after boot.
>>> Bit Pusher
>>>
>>> /lib/firmware\> cat BB-BONE-PRU-00A0.dts
>>> /*
>>> * pru dts file BB-BONE-PRU-00A0.dts
>>> */
>>> /dts-v1/;
>>> /plugin/;
>>>
>>> / {
>>> compatible = "ti,beaglebone", "ti,beaglebone-black";
>>>
>>> /* identification */
>>> part-number = "BB-BONE-PRU";
>>> version = "00A0";
>>>
>>> exclusive-use =
>>> "P8.12";
>>>
>>> fragment@0 {
>>> target = <&am33xx_pinmux>;
>>> __overlay__ {
>>> mygpio: pinmux_mygpio{
>>> pinctrl-single,pins = <
>>> 0x30 0x06
>>> >;
>>> };
>>> };
>>> };
>>>
>>> fragment@1 {
>>> target = <&ocp>;
>>> __overlay__ {
>>> test_helper: helper {
>>> compatible = "bone-pinmux-helper";
>>> pinctrl-names = "default";
>>> pinctrl-0 = <&mygpio>;
>>> status = "okay";
>>> };
>>> };
>>> };
>>>
>>> fragment@2{
>>> target = <&pruss>;
>>> __overlay__ {
>>> status = "okay";
>>> };
>>> };
>>> };
>>>
>>>
>>> On Wednesday, December 4, 2013 8:17:47 AM UTC-5, Zachary Thorson wrote:
>>>>
>>>> Could you post or send me your overlay? I can load it on one of my
>>>> BBBs and take a look for you.
>>>>
>>>> Zach
>>>>
>>>> On Tuesday, December 3, 2013 8:39:35 PM UTC-6, Bit Pusher wrote:
>>>> > If I load my device tree overlay to use the high-speed GPIO pins
>>>> first, and then try to read the ADC using Adafruit_BBIO, it kicks me out
>>>> of
>>>> python:
>>>> >
>>>> >
>>>> >
>>>> > ~/pru\> sudo python
>>>> > Python 2.7.5+ (default, Sep 19 2013, 14:17:30)
>>>> > [GCC 4.8.1] on linux2
>>>> > Type "help", "copyright", "credits" or "license" for more
>>>> information.
>>>> > >>> import Adafruit_BBIO.ADC as ADC
>>>> > >>> ADC.setup()
>>>> > >>> ADC.read("P9_40")
>>>> > ~/pru\>
>>>> >
>>>> >
>>>> > notice no value returned and no python prompt. I suspect this
>>>> indicates a problem.
>>>> > I then rebooted (reset switch), waited until the network started
>>>> working again (it takes 5 minutes each time for the network to work,
>>>> something needs to timeout)
>>>> > and then did the same, but this time did not load the device overlay
>>>> to change one pru gpio to a high-speed output and got as expected
>>>> >
>>>> >
>>>> >
>>>> > ~/pru\> sudo python
>>>> > Python 2.7.5+ (default, Sep 19 2013, 14:17:30)
>>>> > [GCC 4.8.1] on linux2
>>>> > Type "help", "copyright", "credits" or "license" for more
>>>> information.
>>>> > >>> import Adafruit_BBIO.ADC as ADC
>>>> > >>> ADC.setup()
>>>> > >>> ADC.read("P9_40")
>>>> > 0.8072222471237183
>>>> > >>>
>>>> >
>>>> >
>>>> > I should mention that when I load both overlays, with my overlay
>>>> first, >cat $SLOTS shows them both there, just the ADC overlay load does
>>>> not
>>>> > work correctly. If I run the ADC.setup() first, and then run
>>>> > ~/pru\>>sudo sh -c "echo BB-BONE-PRU > $SLOTS" to load my overlay,
>>>> then
>>>> >
>>>> >
>>>> >
>>>> >
>>>> > /lib/firmware\> cat $SLOTS
>>>> > 0: 54:PF---
>>>> > 1: 55:PF---
>>>> > 2: 56:PF---
>>>> > 3: 57:PF---
>>>> > 4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G
>>>> > 5: ff:P-O-L Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI
>>>> > 7: ff:P-O-L Override Board Name,00A0,Override Manuf,cape-bone-iio
>>>> > 9: ff:P-O-L Override Board Name,00A0,Override Manuf,BB-BONE-PRU
>>>> > /lib/firmware\>
>>>> >
>>>> >
>>>> > and both overlays are shown but the high
>>>> > speed pin does not work.
>>>> > Loading just my overlay only, works as expected as far as I can tell
>>>> (i.e. the led turns on and off).
>>>> > I'm guessing things are not quite as expected.
>>>> > Also, could someone point me to the file in kernel source that loads
>>>> overlays?
>>>> > Thanks.
>>>> > Bit Pusher
>>>> >
>>>> >
>>>> > On Tuesday, December 3, 2013 12:16:34 PM UTC-5, Zachary Thorson
>>>> wrote:
>>>> > Correct me if I am wrong, but it appears that you simply want to use
>>>> ADC and PRU pins whose pins DO NOT physically overlap on the board? The
>>>> cape-bone-iio device tree only grabs the ADC0-ADC7 pins plus analog power
>>>> and ground, so it should not interfere with the PRU pins.
>>>> >
>>>> >
>>>> > What issue are you getting when you try to load the PRU overlay after
>>>> loading the ADC overlay?
>>>> >
>>>> >
>>>> >
>>>> > Note: The adafruit library has a cleanup function in code, but it is
>>>> commented out due to the lockup on load that you are describing.
>>>> >
>>>> > Zach
>>>>
>>>> --
> For more options, visit http://beagleboard.org/discuss
> ---
> You received this message because you are subscribed to the Google Groups
> "BeagleBoard" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected] <javascript:>.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
> This should be the repo you're looking for, though if not check the rest
> of them there.
> https://github.com/adafruit/adafruit-beaglebone-io-python
> HTH
>
--
For more options, visit http://beagleboard.org/discuss
---
You received this message because you are subscribed to the Google Groups
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.