Using PWM on the beaglebone black
James Fitzsimons
james.fitzsimons at gmail.com
Sat Jul 4 10:36:01 UTC 2020
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/20200704/5d28c315/attachment.html>
More information about the users
mailing list