BeagleBoard/GSoC/2010 Projects/Pulse Width Modulation
Project: Pulse Width Modulation
Student: Varun Jewalikar
Mentors: Søren Steen Christensen, Cristina Murillo
Latest blog entries: Extension:RSS -- Error: "http://beagleboard-pwm.blogspot.com/feeds/posts/default%7Ccharset=UTF-8%7Cmax=3" is not in the whitelist of allowed feeds. http://linuxgizmos.com/feed is the only allowed feed.
The main aim of this project will be to provide a high level interface for the Pulse Width Modulation output pins of the OMAP3 found on the BeagleBoard. Another aim will be to push this driver upstream(the Linux-OMAP tree). Two applications will be developed to demonstrate the use of this driver:
- Motor control using PWM signals generated by the BeagleBoard using the PWM driver.
- Writing a glue layer for ALSA to communicate with the PWM driver and output sound from the PWM output pins.
Build and Run instructions
- Clone my git tree for the driver.This can be done using the following commands:
git clone git://github.com/neo01124/omap3-pwm.git cd omap3-pwm/
- The kernel config option CONFIG_OMAP_RESET_CLOCKS is enabled
in the default beagleboard defconfigs. You'll get an oops using pwm.ko with this enabled. This is a kernel power saving feature. You'll need to disable this config option to use this driver. Below is a sample patch for linux-omap-2.6.32's defconfig. Adjust for the kernel you are using. Gumstix users already have this turned off in default kernels.
diff --git a/recipes/linux/linux-omap-2.6.32/beagleboard/defconfig b/recipes/linux/linux-omap-2.6.32/beagleboard/defconfig index cebe1f5..2dad30c 100644 --- a/recipes/linux/linux-omap-2.6.32/beagleboard/defconfig +++ b/recipes/linux/linux-omap-2.6.32/beagleboard/defconfig @@ -241,7 +241,7 @@ CONFIG_ARCH_OMAP3=y
# # CONFIG_OMAP_DEBUG_POWERDOMAIN is not set # CONFIG_OMAP_DEBUG_CLOCKDOMAIN is not set
-CONFIG_OMAP_RESET_CLOCKS=y +# CONFIG_OMAP_RESET_CLOCKS is not set
# CONFIG_OMAP_MUX is not set CONFIG_OMAP_MCBSP=y CONFIG_OMAP_MBOX_FWK=mbranch -b branch
- A cross compiling environment will be needed for compiling the driver. Instructions below work with OpenEmbedded but can adapted for codesourcery as well.