Most of the basics are referred from the book Exploring BeagleBone. Tools and Techniques for Building with Embedded Linux by Derek Molloy, so be sure to check it out as well!
My Project weekly logs can be found here
The BeagleBoard has been arround since 2008 and is a low-power open-source single-board computer produced by Texas Instruments in association with Digi-Key and Newark element14. It was designed with open source software development in mind.
Before we dive into the world of BeagleBoard, we need to get a few jargon and basic concepts out of our way first! Let's have a look at when one should consider using the Beagle Boards.
The Beagle boards are perfectly placed for the integration of high-level software and low-level electronics in any type of project.
The major advantage over more traditional embedded systems, such as the Arduino, PIC, and AVR microcontrollers, is apparent when you leverage the Linux OS for your projects.
For example, if you built a home automation system using the BeagleBone and you then decided that you wanted to make certain information available on the internet, you could simply install a web server. Linux also provides you with device driver support for many USB peripherals and adapters, making it possible for you to connect cameras, Wi-Fi adapters, and other low-cost consumer periph-erals directly to your platform.
Capes are daughter boards that can be attached to the P8/P9 expansion headers on the BeagleBone boards. You can connect up to four capes at any one time when the capes are compatible with each other. Here, we will mostly be focusing on the Robotics Cape and the Bela Cape (both of which will be coming up subsequently to support the BBAI).
To understand how to control the hardware pins of the BB Boards, let's first start off by understanding how to control the bare minimum on-board LEDs. We have 4 in-built LEDs. But to control this, we need some pre-requisites:
/sys/class/ledsYou can see the four (green!) LED sysfs mappings—
Some good Documentation has been done here: https://satacker.github.io/posts/beagle_notes/, so do read it as well, incase I miss anything.
The Beagle boards use an open source Linux bootloader, called Das U-Boot("The" Universal Bootloader). (see Pg 101 Chap3 for further details on this) .
This topic has already been covered under beagle_notes, So I will not go into much depth.
The Programmable Real-Time Unit and Industrial Communication Subsystem (PRU-ICSS) on the Beagle board's AM57X SoC contains
It allows a main processor that is running Linux to control the slave processors via OS device bindings. Example: First, I suggest you navigate to
/dev/remoteproc/pruss1-core0 as su. Then, try the following
$ echo 'stop' > state # this will stop the PRU $ cat state > offline $ echo 'am57xx-pru1_0-fw' > firmware # Refer below for the actual location $ echo 'start' > state $ cat state > running #This will again start the PRU1_core 0
In this example, PRU0 is controlled, and the firmware from the
/lib/firmware/am57xx-pru1_0-fw file is loaded into the PRU. note: The PRU must be stopped before you can write new PRU programs.
The remoteproc framework allows different platforms/architectures to control (power on, load firmware, power off) those remote processors while abstracting the hardware differences, so the entire driver doesn't need to be duplicated
To see how RPROC headers will be used, goto BELA DOCUMENTATION/The Bela Code/ PRU.cpp