Using PWM on the beaglebone black
James Fitzsimons
james.fitzsimons at gmail.com
Sun Jul 5 10:23:52 UTC 2020
Hi all,
Problem solved!
After coming back to this fresh the next day I realised I had gone down a
blind alley with the device tree thinking. The PWM driver does all hardware
configuration required - no fdt required.
I started double checking everything in the driver code and eventually
found the bug. The register offsets for the PWM output on P9_14 and P9_16
were wrong. I've created a patch for this and submitted it to the developer
list.
Cheers,
James Fitzsimons
On Sat, 4 Jul 2020 at 22:36, James Fitzsimons <james.fitzsimons at gmail.com>
wrote:
> After thinking about this some more I realised the pinmux setup is part of
> the PWM driver code, so I assume the fdt overlay isn't required to set the
> pin mux. I tried reducing the overlay to just the following:
>
> /dts-v1/;
> /plugin/;
>
> / {
> compatible = "ti,am335x-bone-black-wireless", "ti,am335x-bone-black",
> "ti,am335x-bone", "ti,am33xx";
>
> fragment at 0 {
> target = <&epwmss1>;
> __overlay__ {
> status = "okay";
> };
> };
>
> fragment at 1 {
> target = <&ehrpwm1>;
> __overlay__ {
> status = "okay";
> };
> };
> };
>
> uboot now loads the fdt correctly and the RTEMS application runs, but
> there is still no PWM output on pin P9_14.
>
> I'm at a bit of a loss. If anyone can shine a light on what I'm doing
> wrong please let me know!
>
> Cheers,
> James Fitzsimons
>
> On Sat, 4 Jul 2020 at 20:46, James Fitzsimons <james.fitzsimons at gmail.com>
> wrote:
>
>> Hi all,
>>
>> I'm planning to start development on adding the QEP driver to the
>> Beaglebone BSP soon, but want to make sure I can use the PWM driver
>> properly first as this will almost certainly require some changes to add
>> the QEP functionality.
>>
>> I've been able to get the PWM driver to output a signal on P8_13 (which
>> is EHRPWM2B by default). However, trying to get the same program to output
>> the PWM signal on P9_14 is not working.
>>
>> Questions:
>> 1. Am I correct in assuming that I will need to add a fdt overlay to
>> enable P9_14 for PWM output before that will work?
>> 2. If yes to 1. above, is there anything special that needs to be added
>> to enable fdt support in RTEMS for pinmux changes?
>>
>> I have tried creating an overlay (source at the end of this email) and
>> adding it to the u-boot start up but when RTEMS starts I get the following
>> error displayed in the console output.
>>
>> ...
>> Loaded environment from /uEnv.txt
>> Importing environment from mmc ...
>> Checking if uenvcmd is set ...
>> gpio: pin 56 (gpio 56) value is 1
>> Running uenvcmd ...
>> 81815 bytes read in 8 ms (9.8 MiB/s)
>> 53130 bytes read in 6 ms (8.4 MiB/s)
>> 373 bytes read in 2 ms (181.6 KiB/s)
>> 1065 bytes read in 2 ms (519.5 KiB/s)
>> failed on fdt_overlay_apply(): FDT_ERR_NOTFOUND
>> ## Booting kernel from Legacy Image at 80800000 ...
>> Image Name: RTEMS
>> Created: 2020-07-04 5:52:20 UTC
>> Image Type: ARM Linux Kernel Image (gzip compressed)
>> Data Size: 81751 Bytes = 79.8 KiB
>> Load Address: 80000000
>> Entry Point: 80000000
>> Verifying Checksum ... OK
>> ERROR: Did not find a cmdline Flattened Device Tree
>> Could not find a valid device tree
>> ....
>>
>> Obviously this error "failed on fdt_overlay_apply(): FDT_ERR_NOTFOUND"
>> is signifying something wrong with my overlay, but I'm struggling to figure
>> out what. I have a much more complex overlay working on Linux.
>>
>> Any advice greatly appreciated!
>>
>> Cheers,
>> James Fitzsimons
>>
>> overlay source:
>>
>> /*
>> * Copyright (C) 2018 James Fitzsimons
>> *
>> * This program is free software; you can redistribute it and/or modify
>> * it under the terms of the GNU General Public License version 2 as
>> * published by the Free Software Foundation.
>> *
>> * It sets up the following devices:
>> * - P9.14 PWM ehrpwm1A on epwmss1 for motor control
>> * - P9.16 PWM ehrpwm1B on epwmss1 for motor control
>> *
>> */
>> /dts-v1/;
>> /plugin/;
>>
>> //#include "am33xx.dtsi"
>> //#include "am335x-bone-common.dtsi"
>> //#include "am335x-boneblack-common.dtsi"
>>
>> / {
>> compatible = "ti,am335x-bone-black-wireless", "ti,am335x-bone-black",
>> "ti,am335x-bone", "ti,am33xx";
>>
>> // -- PWM section --
>> fragment at 0 {
>> target = <&am33xx_pinmux>;
>> __overlay__ {
>> pwm1_pins: pinmux_pwm1_pins {
>> pinctrl-single,pins = <
>> 0x048 0x06 //AM33XX_IOPAD(0x848, PIN_OUTPUT_PULLDOWN
>> | MUX_MODE6) /* (U14) gpmc_a2.ehrpwm1A P9_14 */
>> 0x04c 0x06 //AM33XX_IOPAD(0x84c, PIN_OUTPUT_PULLDOWN
>> | MUX_MODE6) /* (T14) gpmc_a3.ehrpwm1B P9_16 */
>> >;
>> };
>> };
>> };
>>
>> fragment at 1 {
>> target = <&ocp>;
>> __overlay__ {
>> pwm_pin_helper {
>> compatible = "rtems";
>> pinctrl-names = "default";
>> pinctrl-0 = <&pwm1_pins>;
>> status = "okay";
>> };
>> };
>> };
>>
>> fragment at 2 {
>> target = <&epwmss1>;
>> __overlay__ {
>> status = "okay";
>> };
>> };
>>
>> fragment at 3 {
>> target = <&ehrpwm1>;
>> __overlay__ {
>> status = "okay";
>> };
>> };
>> };
>>
>>
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/users/attachments/20200705/5e72e8e9/attachment.html>
More information about the users
mailing list