The Computer Corner Take II (#21) by Bill Kibler
To see more Computer Corner articles look here:
CCII page or check out the
Home Page .
BeagleBone - START HERE
Some background information
I started writing this series with what became CCII_22 and followed with CCII_23, only to realize that things
were not going well. Both the articles were suffering and I was having failures of all sorts. I decided that I
must have missed something in my previous research. So I started again from scratch by re-reading the A5 SRM
from top to bottom. I knew I had missed things, so I kept real close attention looking for any sort of "gotchas"
and of course I found plenty. That got me looking at other web pages and docs to only find more items I skipped
over and paths I didn't follow. The results of this on-going investigation is this page - really a "oops" page
if you will, that hopefully will help you get off with a better start and skip all the stumbles.
Please note I have for the moment decided to just drop the facts into list entries and will be updating this
page as I find new facts. So come back often to see if there are updates. So here are some facts, pointers,
links, gotchas, and whatevers to get you started.
Updated October 2012.
Just The Facts
- When connecting the USB cable to the BeagleBone it creates two interfaces into the board. /dev/ttyUSB0 is
a direct interface for debugging/JTAG/IDE and as such is not the console. Connecting USB0 to a terminal program
will cause the board to reset when keystrokes are entered. The console port is /dev/ttyUSB1 with 115200 N81
It is imprtant to note that the BeagleBone is not the same as the AM335xEVM. The BeagleBone hardware starts
with the same CPU AM3359ZCZ, but lacks hardware serial ports, no DVI/LCD screen, and far less hardware for
debugging and testing functions. You may experience odd problems related to these differences when the
software supports EVM features and not the few differences found on the BeagleBone.
Get the AM3359 fact sheet from here, and look at table
2-7 to see all the actual mode/options for this chip.
It is important that you read the proper SRM or BeagleBoard support manual for your version of the board.
Version A6 will be in the pipeline soon and thus there are A3, A4, A5, A5A, A6 variations out there. The changes
are currently somewhat minor but can change some features. Get the manuals here:
CircuitCo Main Page for access to their SRM's.
There are plenty of minor facts in the SRM that you should understand. The discussion on the power distribution
as it relates to USB and capes is critical to know. It appears that maximum current for the host USB is about
250MA and as such only simple devices can be powered from the port - use external powered HUBs and drives.
The BeagleBone hardware version A6 should be in the pipeline by fall of 2012. At the same time a new version of angstrom release
should be ready for usage. The TI SDK for the AM335x - v5.05, an update will be available soon. PSP 04.06.00.08 should be ready
as well. Expect August, or later, for all these changes to be fully integrated.
The information about what works and what does not work is in the PSP documents by TI. It appears that version
04.06.00.02 is the most commonly used package, but 04.06.00.06 has been used for releases of the linux kernel.
Note that 04.06.00.07 is out but has problems. Try these links:
Linux Software Developers Guide place to start for development overview and facts.
http://processors.wiki.ti.com/index.php/AM335x-PSP_04.06.00.02_Release_Notes no table of functions supported or their status.
http://processors.wiki.ti.com/index.php/AM335x-PSP_04.06.00.06_Release_Notes has table of functions supported and status - note - many are not supported.
http://processors.wiki.ti.com/index.php/AM335x-PSP_04.06.00.07_Release_Notes has table and build issues noted.
http://processors.wiki.ti.com/index.php/AM335x-PSP_04.06.00.08_Release_Notes the latest BeagleBone PSP package - as of August, 2012.
This explains about the PSP, but there appears not to be any links to just the AM335x-LINUX-PSP-MM.mm.pp.bb.tgz to be found on the net.
Let me know if you can find one, although I believe the tar file is part of the SDK when downloaded.
This page has several paragraphs that explain lots of little how-to's.
Shows three ways to set mux pins including from kernel passed values!
Has probably the correct way to use debugfs and mount it!
Lots of good links and information.
http://processors.wiki.ti.com/index.php/Cortex-A8_Features one of many facts and help pages in understanding the CortexA8 features.
http://www.ti.com/product/am3359 product page with many links to support information on the am3359 cpu.
http://software-dl.ti.com/dsps/dsps_public_sw/am_bu/ampinmux/latest/index_FDS.html PINUMX - windows based utiltiy to check if pinmux values fit proper usage. Software site requires free registration to get files. NOTE: the am335x is special case with special support.
My HTML table with PINMUX labels as they compare to schemtic A5, with minor corrections to table 11(P9 Header).
Included is the offset address for registers and default values from /sys/kernel/debug of angstrom release. A complete output from the entire
/sys/kernel/debug is given as well. Contains YES/No column of what is and is not setup correctly as it relates to P8/9 functions. Use script
listed/linked to setup all 33 pins to correct values.
From this link about USB debugging I pulled this command and used it to mount the /sys/kernel/debug/* structure. This will allow reading and writing into the kernel registers. The kernel config must have "DEBUG_FS=y" to have the option.
> mount -t debugfs none /sys/kernel/debug/
"startpar" failure in bootup of images - drops into loop of timing out without any clear reason for problem.
"startpar" is the utility that "starts" processes in parallel for the init process.
To disable the "startpar" failure edit as root /etc/init.d/rc and change the "CONCURRENTCY=makefile" to "CONCURRENCY=none"
- you will need to mount the ext partition of the SD device and then edit the file.
This will not solve the reason for the "startpar" failure, but enable a non-parallel bootup process that may provide clues as
to what is hanging during the init process. Some BUGs have been posted about this process failing due to some items not being
ready (A) before another process (B) needs them - The "none" serializes the init process and may solve the no "A" before "B" problems.
Getting "CCCC" when using a fresh SD device - check your "boot" flag, if not enabled for the vfat partition, it will not see
the device and thus fail to load the data and programs.
The serial cape started shipping in early September 2012 and supports ttyO2 only. The actual board is designed to support all the serial modes,
but is populated only with devices needed for the current usage. The cape worked as expected, except it comes up as 9600 baud instead of
the 115200 as specified in the inittab settings. If you use the pinmux settings for other UART ports, the cape should support the other
ports - it is only the kernel that checks for the eeprom on the cape that limits the UART to port 2. "minicom" on the BONE works correctly
when using the com port for serial communications - just remember to disable the port in inittab to prevent conflicts.
I have noted failures with a few ARM based systems when using USB drives for the system drive. The failures have been corrupted file
systems and loss of access to files. When using SD devices no errors have been seen - thus making me think it is a USB only problem.
To date I have not seen any web content indicating others have seen this problem.
my image of arch_boot.tz
my image of squeeze_rootfs.tz
CircuitCo Main Page for access to SRM's
debian-administration - good site for help articles.
Kibler Electronics, PO Box 535, Lincoln, CA 95648-0535, USA.
Copyright © 2012, Kibler Electronics