> On Apr 2, 2017, at 11:32 AM, Justin Pearson <justin.pear...@gmail.com> wrote:
> 
> Hi Jelena, thanks for your message. See my inline responses:
> 
> On Sun, Apr 2, 2017 at 9:39 AM, Jelena Freiherr <jeli.freih...@gmail.com 
> <mailto:jeli.freih...@gmail.com>> wrote:
> Am Sonntag, 2. April 2017 17:26:10 UTC+2 schrieb Justin Pearson:
> >     On the 3.18 kernel, I was able to control the PWM with the PRU without 
> > needing the PRU to initialize the PWM. The trick was to load the PWM capes 
> > "am33xx_pwm" and "bone_pwm_P8_34" before running the PRU code. (And also 
> > loading Derek's cape to initialize the pruss.) Loading the capes causes 
> > some PWM kernel driver to initialize the PWM registers, I assume. Once 
> > that's done, the PRU just has to tweak a couple registers to change the 
> > duty cycle. Is this trick what you're referring to when you say "The kernel 
> > driver should also work"?
> >
> >     Would this trick of pre-loading the capes also work in a 4.x kernel?
> >
> 
> Sorry, I don't know any of the overlays you mentioned. And, as I said, I
> never used any kernel driver for GPIO, QEP, CAP, PWM or ADC. Instead I
> use an all-in-one driver (which I named libpruio), that handles all that
> stuff easier, more flexible and faster than any kernel driver framework.
> In order to get PWM output, there're just a few registers to set (see
> file pruio_pwmss.p in the package), so no need for all that multi source
> overhead.
> 
> Thank you for mentioning libpruio. I don't know very much about how device 
> tree overlays interact with linux kernel drivers, so until I can find a good 
> description of that, I'm inclined to use a more wasteful (but 
> well-documented) method of configuring the I/O. Do you know of a good way to 
> learn the details of how a device tree overlay is used by the kernel to 
> configure the SoC registers? So far I haven't found much good documentation 
> besides Derek Molloy's book.
>  
> BTW: You're developing PRU code and you're using a real time kernel. May
> I ask why? Since the PRUSS are very efficient for real time tasks, I see
> no reason for using additionally a real time kernel.
> 
> My team is working on a time-synchronization platform that aims to 
> synchronize devices' clocks on a network. It's sort of like NTP, but allows 
> users to specify the resolution of the time synchronization that they 
> require. Here is a paper on it for more info:
> 
> https://users.ece.cmu.edu/~agr/resources/publications/RTSS16-timeline.pdf 
> <https://users.ece.cmu.edu/~agr/resources/publications/RTSS16-timeline.pdf>
> 
Hi Justin

Are you using a disciplined clock on the BBB?

Regards,
John

> We need the real-time Linux kernel for precise time synchronization, so 
> that's why we're using a real-time kernel. Additionally, we're using the PRU 
> to get precise I/O for some distributed control systems.
> 
> Best,
> Justin
> 
>  
> 
> Regards
> 
> PS:
> I just checked Derek's cape. From a first glance I found the line
> 
> compatible = "ti,beaglebone", "ti,beaglebone-black";
> 
> is wrong. The order is important, most specific first. It must be
> 
> compatible = "ti,beaglebone-black", "ti,beaglebone";
> 
> And it does more than just enabling the PRUSS (you're loading
> unnecessary overhead). In the libpruio package there's the tool
> dts_custom, which you can use to easy create, compile and install
> minimal custom overlays (single source, no overhead).
> 
> 
> Am 02.04.2017 um 17:25 schrieb Justin Pearson:
> > Thank you TJF, I never would have known about that register if you hadn't
> > mentioned it. One more question (see below):
> >
> > On Sat, Apr 1, 2017 at 9:20 PM, TJF <jeli.freih...@gmail.com 
> > <mailto:jeli.freih...@gmail.com>> wrote:
> >
> >> Am Samstag, 1. April 2017 22:18:30 UTC+2 schrieb Justin Pearson:
> >>>
> >>> Are you saying that the only way to get PWM in a 4.x kernel is by
> >>> modifying am33xx-clocks.dtsi?
> >>>
> >>
> >> No. The kernel driver should also work (untested). But in your case
> >> (controlling the PWM subsystem by PRU code) you have to modify that file.
> >> (Or you can develop a loadable kernel module that writes to the register.)
> >>
> >
> > On the 3.18 kernel, I was able to control the PWM with the PRU without
> > needing the PRU to initialize the PWM. The trick was to load the PWM capes
> > "am33xx_pwm" and "bone_pwm_P8_34" before running the PRU code. (And also
> > loading Derek's cape
> > <https://github.com/derekmolloy/exploringBB/blob/master/chp13/overlay/EBB-PRU-Example.dts
> >  
> > <https://github.com/derekmolloy/exploringBB/blob/master/chp13/overlay/EBB-PRU-Example.dts>>
> > to
> > initialize the pruss.) Loading the capes causes some PWM kernel driver to
> > initialize the PWM registers, I assume. Once that's done, the PRU just has
> > to tweak a couple registers to change the duty cycle. Is this trick what
> > you're referring to when you say "*The kernel driver should also work*"?
> >
> > Would this trick of pre-loading the capes also work in a 4.x kernel?
> >
> > Thanks for all your help!
> > Justin
> >
> >
> >
> >
> >>
> >>
> >>> Also, how can I verify whether the register is set correctly?
> >>>
> >>
> >> The PRU cannot write to the Control Module registers, but it can read
> >> them. Get a word from 0x44E10664 and pass it to the ARM code. Bits 0:2 must
> >> be set to get output from all PWM subsystems. In your case bit 1 set is
> >> sufficient to get ehrpwm1B working.
> >>
> >> Regards
> >>
> >> --
> >> For more options, visit http://beagleboard.org/discuss 
> >> <http://beagleboard.org/discuss>
> >> ---
> >> You received this message because you are subscribed to a topic in the
> >> Google Groups "BeagleBoard" group.
> >> To unsubscribe from this topic, visit https://groups.google.com/d/ 
> >> <https://groups.google.com/d/>
> >> topic/beagleboard/LZhL4S9taic/unsubscribe.
> >> To unsubscribe from this group and all its topics, send an email to
> >> beagleboard+unsubscr...@googlegroups.com 
> >> <mailto:beagleboard%2bunsubscr...@googlegroups.com>.
> >> To view this discussion on the web visit https://groups.google.com/d/ 
> >> <https://groups.google.com/d/>
> >> msgid/beagleboard/3041a94e-58ab-4c28-ad29-ad3a2b90315b%40googlegroups.com 
> >> <http://40googlegroups.com/>
> >> <https://groups.google.com/d/msgid/beagleboard/3041a94e-58ab-4c28-ad29-ad3a2b90315b%40googlegroups.com?utm_medium=email&utm_source=footer
> >>  
> >> <https://groups.google.com/d/msgid/beagleboard/3041a94e-58ab-4c28-ad29-ad3a2b90315b%40googlegroups.com?utm_medium=email&utm_source=footer>>
> >> .
> >>
> >> For more options, visit https://groups.google.com/d/optout 
> >> <https://groups.google.com/d/optout>.
> >>
> >
> 
> --
> For more options, visit http://beagleboard.org/discuss 
> <http://beagleboard.org/discuss>
> ---
> You received this message because you are subscribed to a topic in the Google 
> Groups "BeagleBoard" group.
> To unsubscribe from this topic, visit 
> https://groups.google.com/d/topic/beagleboard/LZhL4S9taic/unsubscribe 
> <https://groups.google.com/d/topic/beagleboard/LZhL4S9taic/unsubscribe>.
> To unsubscribe from this group and all its topics, send an email to 
> beagleboard+unsubscr...@googlegroups.com 
> <mailto:beagleboard%2bunsubscr...@googlegroups.com>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/beagleboard/85f0fe91-f65e-82f8-c6a0-5c8d133db5c4%40gmail.com
>  
> <https://groups.google.com/d/msgid/beagleboard/85f0fe91-f65e-82f8-c6a0-5c8d133db5c4%40gmail.com>.
> For more options, visit https://groups.google.com/d/optout 
> <https://groups.google.com/d/optout>.
> 
> 
> -- 
> For more options, visit http://beagleboard.org/discuss 
> <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 beagleboard+unsubscr...@googlegroups.com 
> <mailto:beagleboard+unsubscr...@googlegroups.com>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/beagleboard/CABCHBhKKct1cK1dM%2Bh%2BVgLNomvD1i2iPF1rPpXKi_RmmXi-3ag%40mail.gmail.com
>  
> <https://groups.google.com/d/msgid/beagleboard/CABCHBhKKct1cK1dM%2Bh%2BVgLNomvD1i2iPF1rPpXKi_RmmXi-3ag%40mail.gmail.com?utm_medium=email&utm_source=footer>.
> For more options, visit https://groups.google.com/d/optout 
> <https://groups.google.com/d/optout>.

-- 
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 beagleboard+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beagleboard/FDB43AE2-3CD3-4B65-A46C-D46F9FB78BD5%40gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to