Search icon CANCEL
Subscription
0
Cart icon
Cart
Close icon
You have no products in your basket yet
Save more on your purchases!
Savings automatically calculated. No voucher code required
Arrow left icon
All Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletters
Free Learning
Arrow right icon
Arrow up icon
GO TO TOP
Programming the BeagleBone

You're reading from  Programming the BeagleBone

Product type Book
Published in Jan 2016
Publisher
ISBN-13 9781784390013
Pages 180 pages
Edition 1st Edition
Languages

Table of Contents (21) Chapters

Programming the BeagleBone
Credits
About the Author
Acknowledgment
About the Reviewers
www.PacktPub.com
Preface
1. Cloud9 IDE 2. Blinking Onboard LEDs 3. Blinking External LEDs 4. Controlling LED Using a Push Button 5. Reading from Analog Sensors 6. PWM – Writing Analog Information 7. Internet of Things with BeagleBone 8. Physical Computing in Python 9. UART, I2C, and SPI Programming 10. Internet of Things using Python GPIO Control in Bash BeagleBone Capes
Pinmux and the Device Tree Index

What is the device tree?


Our desktop systems (X86) come with BIOS chip, which provides important hardware information required to initialize kernel. ARM, however, does not come with any such information. All hardware information has to be statically written in kernel source. This modified source code cannot boot other boards which are very different. This means once kernel is modified to boot BeagleBone, it can not boot other ARM boards. Modified kernel has to be maintained by the vendor. They are responsible to bring all Mainline kernel changes to their modified kernel. To address this problem, new hardware description specification was introduced. These hardware description data structures are called Device Trees. These hardware description files are provided at boot time to the kernel by the bootloader and kernel uses them to initialize itself. Code for all ARM boards can exist in kernel and you specify your board details while booting via device tree files. BeagleBone kernel team went a step further and modified kernel to allow dynamically loading of small device tree overlay. This can help us to enable/disable hardware runtime. For more details visit http://elinux.org/BeagleBone_and_the_3.8_Kernel. We used device tree in Chapter 9, UART, I2C, and SPI Programming, to enable SPI pins while interfacing Nokia 5110 LCD. Adafruit Python library that we used has device tree files in the overlays source folder. They load runtime to change pin configuration. Cape manager deals with device tree overlays. Many prebuilt device trees are available in /lib/firmware. List of Device tree overlays loaded currently can be viewed by the following command:

cat /sys/devices/bone_capemgr.*/slots

BeagleBone Black lists HDMI and emmc in output. Device tree for HDMI and emmc are loaded at boot time. You can disable this boot time loading and free up expansion pins related to them to interface more components. You can disable HDMI by uncommenting the following line in the /boot/uEnv.txt file:

##Disable HDMI
cape_disable=capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN
lock icon The rest of the chapter is locked
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at $15.99/month. Cancel anytime}