https://elinux.org/api.php?action=feedcontributions&user=Rpjday&feedformat=atomeLinux.org - User contributions [en]2024-03-28T16:58:55ZUser contributionsMediaWiki 1.31.0https://elinux.org/index.php?title=Debugging_by_printing&diff=332024Debugging by printing2014-05-26T12:10:22Z<p>Rpjday: Add link to kern_levels.h header file</p>
<hr />
<div>Probably the simplest way to get some debug information from your kernel code is by printing out various information with the kernel's equivalent of printf - the printk function and its derivatives.<br />
The k in printk is used to specifically remind kernel developers that the environment is different. <br />
<br />
== Usage ==<br />
printk works more or less the same way as printf in userspace, so if you ever debugged your userspace program using printf, you are ready to do the same with your kernel code, e.g. by adding:<br />
printk("My Debugger is Printk\n");<br />
<br />
This wasn't that difficult, was it?<br />
<br />
Usually you would print out some more interesting information like<br />
printk("Var1 %d var2 %d\n", var1, var2);<br />
just like in userspace.<br />
<br />
In order to see the kernel messages, just use the<br />
$ dmesg<br />
command in one of your shells - this one will print out the whole kernel log<br />
buffer to you.<br />
<br />
<br />
Most of the conversion specifiers supported by the user-space library routine printf() are also available in the kernel; there are some notable additions, including "%pf", which will print the symbol name in place of the numeric pointer value, if available.<br />
<br />
The supported format strings are quite extensively documented in<br />
[http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=Documentation/printk-formats.txt;hb=HEAD Documentation/printk-formats.txt]<br />
<br />
However please '''note''': always use ''%zu'', ''%zd'' or ''%zx'' for printing<br />
''size_t'' and ''ssize_t'' values. ssize_t and size_t are quite common values in the kernel, so<br />
please use the ''%z'' to avoid annoying compile warnings.<br />
<br />
<br />
----<br />
'''Author's practical advice:'''<br><br />
If you want to debug an oops (e.g caused by releasing a resource twice) in your driver and you don't have a clue where the oops happens, simply add this line<br />
printk(KERN_ALERT "DEBUG: Passed %s %d \n",__FUNCTION__,__LINE__);<br />
after each possibly offending statement.<br />
Recompile and (re-)load the module and trigger the error condition - your log now shows you the last line that was successfully executed before the oops happened.<br />
<br />
Of course you should '''remove''' these 'rude' statements before shipping your module ;)<br />
----<br />
<br />
<br />
<br />
== Log Levels ==<br />
If you look into real kernel code you will always see something like:<br />
printk(KERN_ERR "something went wrong, return code: %d\n",ret);<br />
<br />
where "''KERN_ERR''" is one of the eight different log levels defined in<br />
[http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/linux/kern_levels.h?id=HEAD include/linux/kern_levels.h] and specifies the severity of the error message.<br />
<br />
Note that there is '''NO''' comma between the ''KERN_ERR'' and the format string (as the preprocessor concatenates both strings)<br />
<br />
The log levels are:<br />
{| class="wikitable"<br />
|-<br />
!Name<br />
!String<br />
!Meaning<br />
!alias function<br />
|-<br />
|KERN_EMERG<br />
|"0"<br />
|Emergency messages, system is about to crash or is unstable<br />
|pr_emerg<br />
|-<br />
|KERN_ALERT<br />
|"1"<br />
|Something bad happened and action must be taken immediately<br />
|pr_alert<br />
|-<br />
|KERN_CRIT<br />
|"2"<br />
|A critical condition occurred like a serious hardware/software failure<br />
|pr_crit<br />
|-<br />
|KERN_ERR<br />
| "3"<br />
|An error condition, often used by drivers to indicate difficulties with the hardware<br />
|pr_err<br />
|-<br />
|KERN_WARNING<br />
|"4"<br />
|A warning, meaning nothing serious by itself but might indicate problems<br />
|pr_warning<br />
|-<br />
|KERN_NOTICE<br />
|"5"<br />
|Nothing serious, but notably nevertheless. Often used to report security events.<br />
|pr_notice<br />
|-<br />
|KERN_INFO<br />
|"6"<br />
|Informational message e.g. startup information at driver initialization<br />
|pr_info<br />
|-<br />
|KERN_DEBUG<br />
|"7"<br />
|Debug messages<br />
|pr_debug, pr_devel if DEBUG is defined<br />
|-<br />
|KERN_DEFAULT<br />
|"d"<br />
|The default kernel loglevel<br />
|<br />
|-<br />
|KERN_CONT<br />
|""<br />
|"continued" line of log printout (only done after a line that had no enclosing \n) [http://lwn.net/Articles/252651/]<br />
|pr_cont<br />
|}<br />
<br />
Note that the actual values of the log levels are prepended by the KERN_SOH character<br />
whose ASCII value is '\001'. Read the source for more details.<br />
<br />
<br />
The pr_* macros (with exception of pr_debug) are simple shorthand definitions<br />
in ''include/linux/printk.h''<br />
for their respective printk call and should probably be used in newer drivers.<br />
<br />
''pr_devel'' and ''pr_debug'' are replaced with ''printk(KERN_DEBUG ...'' if the kernel was<br />
compiled with ''DEBUG'', otherwise replaced with an empty statement.<br />
<br />
For drivers the pr_debug should not be used anymore (use dev_dbg instead).<br />
<br />
<br />
If you don't specify a log level in your message it defaults to<br />
''DEFAULT_MESSAGE_LOGLEVEL'' (usually ''"4"''=''KERN_WARNING'')<br />
which can be set via the ''CONFIG_DEFAULT_MESSAGE_LOGLEVEL'' kernel config<br />
option (''make menuconfig-> Kernel Hacking -> Default message log level'')<br />
<br />
<br />
The log level is used by the kernel to determine the importance of<br />
a message and to decide whether it should be presented to the user<br />
immediately, by printing it to the current console (where console could also<br />
be a serial line or even a printer, not an xterm).<br />
<br />
For this the kernel compares the log level of the message to the<br />
''console_loglevel'' (a kernel variable) and if the priority is higher (i.e. a<br />
lower value) than the ''console_loglevel'' the message will be printed to the current console.<br />
<br />
To determine your current ''console_loglevel'' you simply enter:<br />
$ cat /proc/sys/kernel/printk<br />
7 4 1 7<br />
current default minimum boot-time-default<br />
<br />
The first integer shows you your current console_loglevel; the second the<br />
default log level that you have seen above.<br />
<br />
<br />
To change your current console_loglevel simply write to this file, so in order<br />
to get all messages printed to the console do a simple<br />
# echo 8 > /proc/sys/kernel/printk<br />
and every kernel message will appear on your console.<br />
<br />
Another way to change the console log level is to use ''dmesg'' with the ''-n''<br />
parameter<br />
# #set console_loglevel to print KERN_WARNING (4) or more severe messages<br />
# dmesg -n 5<br />
Only messages with a value lower ('''not''' lower equal) than the<br />
console_loglevel will be printed.<br />
<br />
You can also specify the console_loglevel at boot time using the ''loglevel''<br />
boot parameter. (see<br />
[http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=Documentation/kernel-parameters.txt;hb=HEAD#l1334 Documentation/kernel-parameters.txt] for more details)<br />
<br />
----<br />
'''Author's practical advice:'''<br><br />
Of course you should always specify an appropriate log level for your messages,<br />
but for '''debugging''', I guess most developers leave the<br />
console_loglevel unchanged and simply use KERN_ERR or KERN_CRIT to ensure the message reaches the console.<br />
<br />
pr_err("REMOVE ME: my debug statement that I swear to remove when I'm done\");<br />
<br />
Please make sure to remove these 'inappropriately' tagged messages before<br />
shipping the module ;)<br />
----<br />
<br />
<br />
''KERN_CONT'' and ''pr_cont'' are special cases since they do not specify an urgency but rather indicate a 'continued message' e.g.:<br />
printk(KERN_ERR "Doing something was ");<br />
/* <100 lines of whatever>*/<br />
if (success)<br />
printk(KERN_CONT "successful\n");<br />
else<br />
printk(KERN_CONT "NOT successful\n");<br />
<br />
-> "Doing something was successful"<br />
'''Important Note:''' ''KERN_CONT'' and ''pr_cont'' should only be used by core/arch code during early bootup (a continued line is not SMP-safe otherwise).[http://lwn.net/Articles/252651/]<br />
<br />
== Rate limiting and one time messages ==<br />
Occasionally you have to insert a message in a section which gets called<br />
quite often. This not only might have a severe performance impact, it also<br />
could overwrite and spam your kernel buffer so it should be avoided.<br />
<br />
As always the kernel already provides you with nice functions that solve your<br />
problems:<br />
printk_ratelimited(...)<br />
and<br />
printk_once(...)<br />
<br />
''printk_once'' is fairly trivial - no matter how often you call it, it prints once and never again.<br />
<br />
''printk_ratelimited'' is a little bit more complicated - it prints by default not more than 10<br />
times in every 5 seconds (for each function it is called in).<br />
<br />
If you need other values for the maximum burst count and the timeout, you can<br />
always setup your own ratelimit using the ''DEFINE_RATELIMIT_STATE'' macro and<br />
the ''__ratelimit'' function - see the implementation of<br />
''printk_ratelimited'' for an example.<br />
<br />
Be sure to ''#include <kernel/ratelimit.h>'' in order to use<br />
''printk_ratelimited()''<br />
<br />
Both functions have also their ''pr_*'' equivalents like<br />
''pr_info_ratelimited'' for ''printk_ratelimited(KERN_INFO...'' and<br />
''pr_crit_once'' for ''printk_once(KERN_CRIT...''<br />
<br />
<br />
'''Note: both did not work as expected in my tests here, will probably investigate further'''<br />
<br />
== Printk from userspace ==<br />
Sometimes, especially when doing automated testing, it is quite useful to<br />
insert some messages in the kernel log buffer in order to annotate what's<br />
going on.<br />
<br />
It is as simple as<br />
# echo "Hello Kernel-World" > /dev/kmsg<br />
<br />
Of course this messages gets the default log level assigned, if you want e.g.<br />
to issue a KERN_CRIT message you have to use the string representation of the<br />
log level - in this case "2"<br />
<br />
# echo "2Writing critical printk messages from userspace" >/dev/kmsg<br />
<br />
The message will appear like any other '''kernel''' message - there is '''no way''' to distinguish them!<br />
<br />
'''Note:''' Don't confuse this with printf - we are printing a kernel message<br />
from userspace here.<br />
<br />
If /dev/kmsg does not exist, it can be created with:<br />
'mknod -m 600 /dev/kmsg c 1 11'<br />
<br />
== Internals / Changing the size of the printk buffer ==<br />
Printk is implemented by using a ring buffer in the kernel with a size of<br />
''__LOG_BUF_LEN'' bytes where ''__LOG_BUF_LEN'' equals ''(1 <<<br />
CONFIG_LOG_BUF_SHIFT)'' (see<br />
[http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=kernel/printk.c;hb=HEAD kernel/printk.c] for details).<br />
<br />
You can specify the size of the buffer in your kernel config by setting<br />
''CONFIG_LOG_BUF_SHIFT'' to an appropriate value (e.g. 17 for 128Kb) (''make menuconfig -> General Setup -> Kernel log buffer size'').<br />
<br />
Using a ring buffer implies that older messages get overwritten once the<br />
buffer fills up, but this is only a minor drawback compared to the robustness of this<br />
solution (i.e. minimum memory footprint, callable from every context, not many<br />
resources wasted if nobody reads the buffer, no filling up of disk space/ram when some kernel process goes<br />
wild and spams the buffer, ...).<br />
Using a reasonably large buffer size should give you enough time to read your<br />
important messages before they are overwritten.<br />
<br />
'''Note:''' dmesg reads by default a buffer of max 16392 bytes, so if you use a larger logbuffer you have to invoke dmesg with the ''-s'' parameter e.g.:<br />
### CONFIG_LOG_BUF_SHIFT 17 = 128k<br />
$ dmesg -s 128000<br />
<br />
The kernel log buffer is accessible for reading from userspace by ''/proc/kmsg''.<br />
''/proc/kmsg'' behaves more or less like a FIFO and blocks until new messages<br />
appear.<br />
<br />
<br />
'''Please note''' - reading from ''/proc/kmsg'' consumes the messages in the<br />
ring buffer so they may not be available for other programs. It is usually a<br />
good idea to let ''klogd'' or ''syslog'' do this job and read the content<br />
of the buffer via ''dmesg''.<br />
<br />
== Pros and Cons==<br />
The main advantage of printk over other debugging solutions is that it requires no sophisticated setup and can be called anywhere from any time.<br />
Printk can be called while holding a lock, from interrupt and process context, is SMP safe and does not need any special preparation. It is just there and just works.<br />
The only precondition is that you have some kind of working console to display the messages.<br />
<br />
For the early stages in the boot process, where no console is available yet,<br />
there is a special function named ''early_printk'', this function writes<br />
directly to the VGA buffer or a serial line but otherwise works just like<br />
printk -- you have to enable this function by setting ''CONFIG_EARLY_PRINTK''<br />
in your kernel config (''make menuconfig -> Kernel Hacking -> Early printk'').<br />
<br />
The major drawback is that printk is quite static, so you have to figure out what you want to trace beforehand and if you want to trace something different you have to recompile your code - which can become quite cumbersome. (And of course printk is not interactive at all, so you can't modify any variables or the like.)<br />
<br />
The other drawback is that printing usually consumes quite some processing power and io time, so if you're trying to debug a timing critical section or a timing bug, you're probably out of luck.<br />
<br />
== Debugging early boot problems ==<br />
=== Accessing the printk buffer after a silent hang on boot ===<br />
Sometimes, if the kernel hangs early in the boot process, you get no messages on the console before the hang. However, there may still be messages in the printk buffer, which can give you an idea of where the problem is.<br />
<br />
The kernel starts putting messages into the printk buffer as soon as it starts. They stay buffered there until the console code has a chance to initialize the console device (often the serial port for embedded devices). Even though these messages are not printed before the hang, it is still possible in some circumstances<br />
to dump the printk buffer and see the messages.<br />
<br />
The tricky parts of doing this are:<br />
<br />
# using a warm reset (if possible) so the memory contents are not lost when transitioning from the stuck kernel to the bootloader. You ''can'' do a cold boot, but if the memory is left unpowered for very long, you will start to see memory corruption.<br />
# figuring out the address to use in the bootloader, based on the address of __log_buf in System.map. You will probably need to subtract the value of CONFIG_PAGE_OFFSET from the __log_buf address. However, there may be other offsets present as well (such as TEXT_OFFSET). Sometimes you can find the buffer by dumping the memory in a suspected area and locating the kernel messages visually in the dump. Note that the mapping offset between the kernel map of memory and the bootloader map of memory should not change. So once you figure it out you are set.<br />
<br />
Quinn Jensen writes:<br />
<br />
Something I've found handy when the console is silent is to dump the printk buffer from the boot loader. To do it you have to know how your boot loader maps memory compared to the kernel.<br />
<br />
==== Redboot example on a Freescale ADS board ====<br />
Quinn says: Here's what I do with Redboot on i.MX31:<br />
<br />
fgrep printk_buf System.map<br />
<br />
this shows the linked address of the printk_buf, e.g.:<br />
<br />
c02338f0 b printk_buf.16194<br />
<br />
The address "c02338f0" is in kernel virtual, which, in the case of i.MX31 ADS, redboot will have mapped to 0x802338f0. So, after resetting the target board, but without letting it try to boot again, at the redboot prompt:<br />
<br />
dump -b 0x802338f0 -l 10000<br />
<br />
And you see the printk buffer that never got flushed to the UART. Knowing what's there can be '''very''' useful in debugging your console.<br />
<br />
==== U-boot example on an OMAP OSK board ====<br />
Tim Bird tried these steps and they worked:<br />
<br />
grep __log_buf System.map<br />
<br />
or<br />
<br />
grep __log_buf /proc/kallsyms<br />
<br />
These show:<br />
<br />
c0352d88 B __log_buf<br />
<br />
In the case of the OSK, this address maps to 0x10352d88. So I reset the target board and use the following:<br />
<br />
OMAP5912 OSK # md 10352d88<br />
10352d88: 4c3e353c 78756e69 72657620 6e6f6973 <5>Linux version<br />
10352d98: 362e3220 2e32322e 612d3631 6e5f706c 2.6.22.16-alp_n<br />
10352da8: 7428206c 64726962 6d697440 6b736564 l (tbird@timdesk<br />
10352db8: 2e6d612e 796e6f73 6d6f632e 67282029 .am.sony.com) (g<br />
10352dc8: 76206363 69737265 33206e6f 342e342e cc version 3.4.4<br />
10352dd8: 34232029 45525020 54504d45 65755420 ) #4 PREEMPT Tue<br />
...<br />
<br />
==== Grub ====<br />
Grub also supports a dump command which you can invoke from the grub prompt.<br />
dump [ -s offset ] [-n length] { FILE | (mem) }<br />
<br />
<br />
<br />
=== Using CONFIG_DEBUG_LL and printascii() (ARM only) ===<br />
If the kernel fails before the serial console is enabled, you can use CONFIG_DEBUG_LL to add extra debug output routines to the kernel. These are printascii, printch and printhex. These routines print directly to the serial port, bypassing the console code, and are available earlier in machine initialization.<br />
<br />
To see printks earlier in the boot sequence (before the console is initialized), set CONFIG_DEBUG_LL=y<br />
and CONFIG_EARLY_PRINTK=y.<br />
<br />
Alternatively, add your own calls to printascii, printch, and printhex where you believe the problems<br />
are located.<br />
<br />
Here is an e-mail exchange seen on the linux-embedded mailing list (with answer by George Davis):[http://www.mail-archive.com/linux-embedded@vger.kernel.org/msg00223.html] <br />
<pre><br />
> When we try to boot a 2.6.21 kernel after uncompressing the kernel the boot process dies somehow.<br />
> We've figured out so far that the kernel dies somewhere between the gunzip and start_kernel.<br />
<br />
Try enabling DEBUG_LL to see if it's an machine ID error. If you see:<br />
<br />
Error: unrecognized/unsupported processor variant.<br />
<br />
or:<br />
<br />
Error: unrecognized/unsupported machine ID...<br />
<br />
Then you either don't have proper processor support enabled for your target or your bootloader is passing in the wrong machine number.<br />
<br />
If you still don't see anything, try hacking printk.c to call printascii() (enabled for the DEBUG_LL case) to print directly to the serial port w/o a driver, etc.,. You can find more details on these low-level debugging hacks via a little googling...<br />
</pre><br />
<br />
== NetConsole ==<br />
Sometimes you are in the unlucky situation that the machine crashes or hangs and you have no way to access the console afterwards, e.g. the graphic driver hangs and and the kernel dies soon after.<br />
In this case you could either hook up a serial line to your crashing target machine (if a serial port is available) or use the kernels netconsole feature to enable printk logging via UDP.<br />
<br />
In order to use it you have to enable the ''CONFIG_NETCONSOLE'' kernel config<br />
option (''make menuconfig -> Device Drivers -> Network device support -> Network core driver support -> Network console logging support'') and<br />
configure it appropriately by using the ''netconsole'' configuration parameter<br />
<br />
netconsole=[src-port]@[src-ip]/[<dev>],[tgt-port]@<tgt-ip>/[tgt-macaddr]<br />
where<br />
src-port source for UDP packets (defaults to 6665)<br />
src-ip source IP to use (interface address)<br />
dev network interface (eth0)<br />
tgt-port port for logging agent (6666)<br />
tgt-ip IP address for logging agent<br />
tgt-macaddr ethernet MAC address for logging agent (broadcast)<br />
<br />
e.g. specify at kernel commandline (in your bootloader)<br />
linux netconsole=4444@10.0.0.1/eth1,9353@10.0.0.2/12:34:56:78:9a:bc<br />
to send messages from 10.0.0.1 port 4444 via eth1 to 10.0.0.2 port 9353 with the MAC 12:34:56:78:9a:bc<br />
<br />
or while loading the module e.g<br />
# insmod netconsole netconsole=@/,@10.0.0.2/<br />
to send messages via broadcast to 10.0.0.2 port 6666<br />
<br />
On the other machine you can now simply fire up<br />
# netcat -u -l -p <port><br />
e.g.<br />
$ netcat -u -l -p 6666<br />
and see the printk messages from your target dribbling in.<br />
<br />
If you don't see any messages you might have to set the console_loglevel to a<br />
higher value (see above) or test the connection via telnet e.g. from the target type<br />
$ telnet 10.0.0.2 6666<br />
<br />
<br />
=== Netconsole resources ===<br />
See<br />
[http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/networking/netconsole.txt;hb=HEAD Documentation/networking/netconsole.txt]<br />
for more details.<br />
<br />
See [http://sarah.thesharps.us/2009-02-22-09-00 Sarah Sharp's blog entry about using netconsole]<br />
<br />
== Misc ==<br />
=== Dmesg / Clearing the buffer ===<br />
dmesg -c<br />
clears the dmesg buffer.<br />
Sometimes it is nice to start with a blank buffer, so you will only see new<br />
messages when you invoke ''dmesg''<br />
<br />
=== Printk Timestamps ===<br />
CONFIG_PRINTK_TIME<br />
Setting this kernel config option prepends every printk statement with a<br />
timestamp representing the time since boot. This is particularly useful to get<br />
a general idea about the timings of your code.<br />
<br />
You can also specify an argument on the kernel command line to enable this, or<br />
you can enable it any time at runtime by doing the following:<br />
<br />
$echo 1 >/sys/module/printk/parameters/time<br />
<br />
Also, there are tools available to use the information to show relative times<br />
between printks (scripts/show_delta) and create graphs of durations in the<br />
kernel (scripts/bootgraph.pl)<br />
<br />
See [[Printk Times]] for more details<br />
<br />
=== Printing buffers as hex ===<br />
If you want to print a buffer as hex within the kernel, don't reinvent the<br />
wheel use ''printk_hex_dump_bytes()'' instead.<br />
<br />
print_hex_dump_bytes(const char *prefix_str, int prefix_type, const void *buf, size_t len)<br />
this function prints a buffer as hex values to the kernel log buffer (with level KERN_DEBUG)<br />
Example:<br />
Kernel Code:<br />
char mybuf[] = "abcdef";<br />
print_hex_dump_bytes("", DUMP_PREFIX_NONE, mybuf, ARRAY_SIZE(mybuf));<br />
<br />
dmesg output:<br />
61 62 63 64 65 66 00 abcdef.<br />
<br />
If you need something more sophisticated and flexible maybe have a look at<br />
''print_hex_dump()'' and ''hex_dump_to_buffer()''<br />
<br />
=== Dynamic Debugging ===<br />
It is also possible to enable/disable debug information at runtime using the<br />
dynamic debug functionality of the kernel.<br />
For this the ''CONFIG_DYNAMIC_DEBUG'' kernel config option must be set.<br />
See<br />
[http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/dynamic-debug-howto.txt;hb=HEAD Documentation/dynamic-debug-howto.txt] for more information.<br />
<br />
== Disabling printk messages at compile time ==<br />
There is a configuration option which allows you to turn off all the printk messages in the<br />
whole kernel (''CONFIG_PRINTK''). This reduces the size the kernel, usually by at least 100k, <br />
since all message strings are not compiled into the kernel binary image. <br />
<br />
However, it also means you get absolutely no output from the kernel while it is running. Disabling kernel<br />
printk messages is usually the last thing you do when you are tuning your kernel for size.<br />
<br />
== References and external links ==<br />
* [[Linux Kernel Development - by Robert Love|Linux Kernel Development]], Robert Love, 3rd Edition, Chapter 18 Debugging<br />
* [[Linux Device Drivers]], Corbet, Rubini and Kroah-Hartmann, 3rd Edition, Chapter 4 Section 2<br />
* [[Essential Linux Device Drivers]]<br />
<br />
<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/printk-formats.txt;hb=HEAD Documentation/printk-formats.txt]<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/dynamic-debug-howto.txt;hb=HEAD Documentation/dynamic-debug-howto.txt]<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/networking/netconsole.txt;hb=HEAD Documentation/networking/netconsole.txt]<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=kernel/printk.c;hb=HEAD kernel/printk.c] Implementation of printk and others<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=include/linux/printk.h;hb=HEAD include/linux/printk.h] printk header file<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=include/linux/kern_levels.h;hb=HEAD include/linux/kern_levels.h] logging levels header file<br />
* [http://www.embedded-bits.co.uk/2010/printk-format-specifiers/ Blog Entry about the different %p format specifiers]<br />
* [http://lwn.net/Articles/487437/ LWN.net: The perils of pr_info()]<br />
* [http://www.ibm.com/developerworks/linux/library/l-kernel-logging-apis/index.html Kernel logging: APIs and implementation, Tim Jones (for IBM)] (nice article)<br />
<br />
<br />
Some page related to printk:<br />
* [[Printk Times]] - has information about how to turn on timestamps for each printk message<br />
** [[Printk_Times_Sample_4| printk time stamps sample]]<br />
* [[Printk_Size_Info|printk size information]]<br />
* [[Do Printk]] - has information about a method of disabling printk messages on a per-module basis<br />
<br />
<br />
{{Reflist}}<br />
<br />
[[Category:Development Tools]]<br />
[[Category:Tips and Tricks]]<br />
[[Category:Printk]]</div>Rpjdayhttps://elinux.org/index.php?title=Debugging_by_printing&diff=332018Debugging by printing2014-05-26T12:07:02Z<p>Rpjday: Correct misspelling of CONFIG_PRINTK_TIME.</p>
<hr />
<div>Probably the simplest way to get some debug information from your kernel code is by printing out various information with the kernel's equivalent of printf - the printk function and its derivatives.<br />
The k in printk is used to specifically remind kernel developers that the environment is different. <br />
<br />
== Usage ==<br />
printk works more or less the same way as printf in userspace, so if you ever debugged your userspace program using printf, you are ready to do the same with your kernel code, e.g. by adding:<br />
printk("My Debugger is Printk\n");<br />
<br />
This wasn't that difficult, was it?<br />
<br />
Usually you would print out some more interesting information like<br />
printk("Var1 %d var2 %d\n", var1, var2);<br />
just like in userspace.<br />
<br />
In order to see the kernel messages, just use the<br />
$ dmesg<br />
command in one of your shells - this one will print out the whole kernel log<br />
buffer to you.<br />
<br />
<br />
Most of the conversion specifiers supported by the user-space library routine printf() are also available in the kernel; there are some notable additions, including "%pf", which will print the symbol name in place of the numeric pointer value, if available.<br />
<br />
The supported format strings are quite extensively documented in<br />
[http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=Documentation/printk-formats.txt;hb=HEAD Documentation/printk-formats.txt]<br />
<br />
However please '''note''': always use ''%zu'', ''%zd'' or ''%zx'' for printing<br />
''size_t'' and ''ssize_t'' values. ssize_t and size_t are quite common values in the kernel, so<br />
please use the ''%z'' to avoid annoying compile warnings.<br />
<br />
<br />
----<br />
'''Author's practical advice:'''<br><br />
If you want to debug an oops (e.g caused by releasing a resource twice) in your driver and you don't have a clue where the oops happens, simply add this line<br />
printk(KERN_ALERT "DEBUG: Passed %s %d \n",__FUNCTION__,__LINE__);<br />
after each possibly offending statement.<br />
Recompile and (re-)load the module and trigger the error condition - your log now shows you the last line that was successfully executed before the oops happened.<br />
<br />
Of course you should '''remove''' these 'rude' statements before shipping your module ;)<br />
----<br />
<br />
<br />
<br />
== Log Levels ==<br />
If you look into real kernel code you will always see something like:<br />
printk(KERN_ERR "something went wrong, return code: %d\n",ret);<br />
<br />
where "''KERN_ERR''" is one of the eight different log levels defined in<br />
[http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/linux/kern_levels.h?id=HEAD include/linux/kern_levels.h] and specifies the severity of the error message.<br />
<br />
Note that there is '''NO''' comma between the ''KERN_ERR'' and the format string (as the preprocessor concatenates both strings)<br />
<br />
The log levels are:<br />
{| class="wikitable"<br />
|-<br />
!Name<br />
!String<br />
!Meaning<br />
!alias function<br />
|-<br />
|KERN_EMERG<br />
|"0"<br />
|Emergency messages, system is about to crash or is unstable<br />
|pr_emerg<br />
|-<br />
|KERN_ALERT<br />
|"1"<br />
|Something bad happened and action must be taken immediately<br />
|pr_alert<br />
|-<br />
|KERN_CRIT<br />
|"2"<br />
|A critical condition occurred like a serious hardware/software failure<br />
|pr_crit<br />
|-<br />
|KERN_ERR<br />
| "3"<br />
|An error condition, often used by drivers to indicate difficulties with the hardware<br />
|pr_err<br />
|-<br />
|KERN_WARNING<br />
|"4"<br />
|A warning, meaning nothing serious by itself but might indicate problems<br />
|pr_warning<br />
|-<br />
|KERN_NOTICE<br />
|"5"<br />
|Nothing serious, but notably nevertheless. Often used to report security events.<br />
|pr_notice<br />
|-<br />
|KERN_INFO<br />
|"6"<br />
|Informational message e.g. startup information at driver initialization<br />
|pr_info<br />
|-<br />
|KERN_DEBUG<br />
|"7"<br />
|Debug messages<br />
|pr_debug, pr_devel if DEBUG is defined<br />
|-<br />
|KERN_DEFAULT<br />
|"d"<br />
|The default kernel loglevel<br />
|<br />
|-<br />
|KERN_CONT<br />
|""<br />
|"continued" line of log printout (only done after a line that had no enclosing \n) [http://lwn.net/Articles/252651/]<br />
|pr_cont<br />
|}<br />
<br />
Note that the actual values of the log levels are prepended by the KERN_SOH character<br />
whose ASCII value is '\001'. Read the source for more details.<br />
<br />
<br />
The pr_* macros (with exception of pr_debug) are simple shorthand definitions<br />
in ''include/linux/printk.h''<br />
for their respective printk call and should probably be used in newer drivers.<br />
<br />
''pr_devel'' and ''pr_debug'' are replaced with ''printk(KERN_DEBUG ...'' if the kernel was<br />
compiled with ''DEBUG'', otherwise replaced with an empty statement.<br />
<br />
For drivers the pr_debug should not be used anymore (use dev_dbg instead).<br />
<br />
<br />
If you don't specify a log level in your message it defaults to<br />
''DEFAULT_MESSAGE_LOGLEVEL'' (usually ''"4"''=''KERN_WARNING'')<br />
which can be set via the ''CONFIG_DEFAULT_MESSAGE_LOGLEVEL'' kernel config<br />
option (''make menuconfig-> Kernel Hacking -> Default message log level'')<br />
<br />
<br />
The log level is used by the kernel to determine the importance of<br />
a message and to decide whether it should be presented to the user<br />
immediately, by printing it to the current console (where console could also<br />
be a serial line or even a printer, not an xterm).<br />
<br />
For this the kernel compares the log level of the message to the<br />
''console_loglevel'' (a kernel variable) and if the priority is higher (i.e. a<br />
lower value) than the ''console_loglevel'' the message will be printed to the current console.<br />
<br />
To determine your current ''console_loglevel'' you simply enter:<br />
$ cat /proc/sys/kernel/printk<br />
7 4 1 7<br />
current default minimum boot-time-default<br />
<br />
The first integer shows you your current console_loglevel; the second the<br />
default log level that you have seen above.<br />
<br />
<br />
To change your current console_loglevel simply write to this file, so in order<br />
to get all messages printed to the console do a simple<br />
# echo 8 > /proc/sys/kernel/printk<br />
and every kernel message will appear on your console.<br />
<br />
Another way to change the console log level is to use ''dmesg'' with the ''-n''<br />
parameter<br />
# #set console_loglevel to print KERN_WARNING (4) or more severe messages<br />
# dmesg -n 5<br />
Only messages with a value lower ('''not''' lower equal) than the<br />
console_loglevel will be printed.<br />
<br />
You can also specify the console_loglevel at boot time using the ''loglevel''<br />
boot parameter. (see<br />
[http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=Documentation/kernel-parameters.txt;hb=HEAD#l1334 Documentation/kernel-parameters.txt] for more details)<br />
<br />
----<br />
'''Author's practical advice:'''<br><br />
Of course you should always specify an appropriate log level for your messages,<br />
but for '''debugging''', I guess most developers leave the<br />
console_loglevel unchanged and simply use KERN_ERR or KERN_CRIT to ensure the message reaches the console.<br />
<br />
pr_err("REMOVE ME: my debug statement that I swear to remove when I'm done\");<br />
<br />
Please make sure to remove these 'inappropriately' tagged messages before<br />
shipping the module ;)<br />
----<br />
<br />
<br />
''KERN_CONT'' and ''pr_cont'' are special cases since they do not specify an urgency but rather indicate a 'continued message' e.g.:<br />
printk(KERN_ERR "Doing something was ");<br />
/* <100 lines of whatever>*/<br />
if (success)<br />
printk(KERN_CONT "successful\n");<br />
else<br />
printk(KERN_CONT "NOT successful\n");<br />
<br />
-> "Doing something was successful"<br />
'''Important Note:''' ''KERN_CONT'' and ''pr_cont'' should only be used by core/arch code during early bootup (a continued line is not SMP-safe otherwise).[http://lwn.net/Articles/252651/]<br />
<br />
== Rate limiting and one time messages ==<br />
Occasionally you have to insert a message in a section which gets called<br />
quite often. This not only might have a severe performance impact, it also<br />
could overwrite and spam your kernel buffer so it should be avoided.<br />
<br />
As always the kernel already provides you with nice functions that solve your<br />
problems:<br />
printk_ratelimited(...)<br />
and<br />
printk_once(...)<br />
<br />
''printk_once'' is fairly trivial - no matter how often you call it, it prints once and never again.<br />
<br />
''printk_ratelimited'' is a little bit more complicated - it prints by default not more than 10<br />
times in every 5 seconds (for each function it is called in).<br />
<br />
If you need other values for the maximum burst count and the timeout, you can<br />
always setup your own ratelimit using the ''DEFINE_RATELIMIT_STATE'' macro and<br />
the ''__ratelimit'' function - see the implementation of<br />
''printk_ratelimited'' for an example.<br />
<br />
Be sure to ''#include <kernel/ratelimit.h>'' in order to use<br />
''printk_ratelimited()''<br />
<br />
Both functions have also their ''pr_*'' equivalents like<br />
''pr_info_ratelimited'' for ''printk_ratelimited(KERN_INFO...'' and<br />
''pr_crit_once'' for ''printk_once(KERN_CRIT...''<br />
<br />
<br />
'''Note: both did not work as expected in my tests here, will probably investigate further'''<br />
<br />
== Printk from userspace ==<br />
Sometimes, especially when doing automated testing, it is quite useful to<br />
insert some messages in the kernel log buffer in order to annotate what's<br />
going on.<br />
<br />
It is as simple as<br />
# echo "Hello Kernel-World" > /dev/kmsg<br />
<br />
Of course this messages gets the default log level assigned, if you want e.g.<br />
to issue a KERN_CRIT message you have to use the string representation of the<br />
log level - in this case "2"<br />
<br />
# echo "2Writing critical printk messages from userspace" >/dev/kmsg<br />
<br />
The message will appear like any other '''kernel''' message - there is '''no way''' to distinguish them!<br />
<br />
'''Note:''' Don't confuse this with printf - we are printing a kernel message<br />
from userspace here.<br />
<br />
If /dev/kmsg does not exist, it can be created with:<br />
'mknod -m 600 /dev/kmsg c 1 11'<br />
<br />
== Internals / Changing the size of the printk buffer ==<br />
Printk is implemented by using a ring buffer in the kernel with a size of<br />
''__LOG_BUF_LEN'' bytes where ''__LOG_BUF_LEN'' equals ''(1 <<<br />
CONFIG_LOG_BUF_SHIFT)'' (see<br />
[http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=kernel/printk.c;hb=HEAD kernel/printk.c] for details).<br />
<br />
You can specify the size of the buffer in your kernel config by setting<br />
''CONFIG_LOG_BUF_SHIFT'' to an appropriate value (e.g. 17 for 128Kb) (''make menuconfig -> General Setup -> Kernel log buffer size'').<br />
<br />
Using a ring buffer implies that older messages get overwritten once the<br />
buffer fills up, but this is only a minor drawback compared to the robustness of this<br />
solution (i.e. minimum memory footprint, callable from every context, not many<br />
resources wasted if nobody reads the buffer, no filling up of disk space/ram when some kernel process goes<br />
wild and spams the buffer, ...).<br />
Using a reasonably large buffer size should give you enough time to read your<br />
important messages before they are overwritten.<br />
<br />
'''Note:''' dmesg reads by default a buffer of max 16392 bytes, so if you use a larger logbuffer you have to invoke dmesg with the ''-s'' parameter e.g.:<br />
### CONFIG_LOG_BUF_SHIFT 17 = 128k<br />
$ dmesg -s 128000<br />
<br />
The kernel log buffer is accessible for reading from userspace by ''/proc/kmsg''.<br />
''/proc/kmsg'' behaves more or less like a FIFO and blocks until new messages<br />
appear.<br />
<br />
<br />
'''Please note''' - reading from ''/proc/kmsg'' consumes the messages in the<br />
ring buffer so they may not be available for other programs. It is usually a<br />
good idea to let ''klogd'' or ''syslog'' do this job and read the content<br />
of the buffer via ''dmesg''.<br />
<br />
== Pros and Cons==<br />
The main advantage of printk over other debugging solutions is that it requires no sophisticated setup and can be called anywhere from any time.<br />
Printk can be called while holding a lock, from interrupt and process context, is SMP safe and does not need any special preparation. It is just there and just works.<br />
The only precondition is that you have some kind of working console to display the messages.<br />
<br />
For the early stages in the boot process, where no console is available yet,<br />
there is a special function named ''early_printk'', this function writes<br />
directly to the VGA buffer or a serial line but otherwise works just like<br />
printk -- you have to enable this function by setting ''CONFIG_EARLY_PRINTK''<br />
in your kernel config (''make menuconfig -> Kernel Hacking -> Early printk'').<br />
<br />
The major drawback is that printk is quite static, so you have to figure out what you want to trace beforehand and if you want to trace something different you have to recompile your code - which can become quite cumbersome. (And of course printk is not interactive at all, so you can't modify any variables or the like.)<br />
<br />
The other drawback is that printing usually consumes quite some processing power and io time, so if you're trying to debug a timing critical section or a timing bug, you're probably out of luck.<br />
<br />
== Debugging early boot problems ==<br />
=== Accessing the printk buffer after a silent hang on boot ===<br />
Sometimes, if the kernel hangs early in the boot process, you get no messages on the console before the hang. However, there may still be messages in the printk buffer, which can give you an idea of where the problem is.<br />
<br />
The kernel starts putting messages into the printk buffer as soon as it starts. They stay buffered there until the console code has a chance to initialize the console device (often the serial port for embedded devices). Even though these messages are not printed before the hang, it is still possible in some circumstances<br />
to dump the printk buffer and see the messages.<br />
<br />
The tricky parts of doing this are:<br />
<br />
# using a warm reset (if possible) so the memory contents are not lost when transitioning from the stuck kernel to the bootloader. You ''can'' do a cold boot, but if the memory is left unpowered for very long, you will start to see memory corruption.<br />
# figuring out the address to use in the bootloader, based on the address of __log_buf in System.map. You will probably need to subtract the value of CONFIG_PAGE_OFFSET from the __log_buf address. However, there may be other offsets present as well (such as TEXT_OFFSET). Sometimes you can find the buffer by dumping the memory in a suspected area and locating the kernel messages visually in the dump. Note that the mapping offset between the kernel map of memory and the bootloader map of memory should not change. So once you figure it out you are set.<br />
<br />
Quinn Jensen writes:<br />
<br />
Something I've found handy when the console is silent is to dump the printk buffer from the boot loader. To do it you have to know how your boot loader maps memory compared to the kernel.<br />
<br />
==== Redboot example on a Freescale ADS board ====<br />
Quinn says: Here's what I do with Redboot on i.MX31:<br />
<br />
fgrep printk_buf System.map<br />
<br />
this shows the linked address of the printk_buf, e.g.:<br />
<br />
c02338f0 b printk_buf.16194<br />
<br />
The address "c02338f0" is in kernel virtual, which, in the case of i.MX31 ADS, redboot will have mapped to 0x802338f0. So, after resetting the target board, but without letting it try to boot again, at the redboot prompt:<br />
<br />
dump -b 0x802338f0 -l 10000<br />
<br />
And you see the printk buffer that never got flushed to the UART. Knowing what's there can be '''very''' useful in debugging your console.<br />
<br />
==== U-boot example on an OMAP OSK board ====<br />
Tim Bird tried these steps and they worked:<br />
<br />
grep __log_buf System.map<br />
<br />
or<br />
<br />
grep __log_buf /proc/kallsyms<br />
<br />
These show:<br />
<br />
c0352d88 B __log_buf<br />
<br />
In the case of the OSK, this address maps to 0x10352d88. So I reset the target board and use the following:<br />
<br />
OMAP5912 OSK # md 10352d88<br />
10352d88: 4c3e353c 78756e69 72657620 6e6f6973 <5>Linux version<br />
10352d98: 362e3220 2e32322e 612d3631 6e5f706c 2.6.22.16-alp_n<br />
10352da8: 7428206c 64726962 6d697440 6b736564 l (tbird@timdesk<br />
10352db8: 2e6d612e 796e6f73 6d6f632e 67282029 .am.sony.com) (g<br />
10352dc8: 76206363 69737265 33206e6f 342e342e cc version 3.4.4<br />
10352dd8: 34232029 45525020 54504d45 65755420 ) #4 PREEMPT Tue<br />
...<br />
<br />
==== Grub ====<br />
Grub also supports a dump command which you can invoke from the grub prompt.<br />
dump [ -s offset ] [-n length] { FILE | (mem) }<br />
<br />
<br />
<br />
=== Using CONFIG_DEBUG_LL and printascii() (ARM only) ===<br />
If the kernel fails before the serial console is enabled, you can use CONFIG_DEBUG_LL to add extra debug output routines to the kernel. These are printascii, printch and printhex. These routines print directly to the serial port, bypassing the console code, and are available earlier in machine initialization.<br />
<br />
To see printks earlier in the boot sequence (before the console is initialized), set CONFIG_DEBUG_LL=y<br />
and CONFIG_EARLY_PRINTK=y.<br />
<br />
Alternatively, add your own calls to printascii, printch, and printhex where you believe the problems<br />
are located.<br />
<br />
Here is an e-mail exchange seen on the linux-embedded mailing list (with answer by George Davis):[http://www.mail-archive.com/linux-embedded@vger.kernel.org/msg00223.html] <br />
<pre><br />
> When we try to boot a 2.6.21 kernel after uncompressing the kernel the boot process dies somehow.<br />
> We've figured out so far that the kernel dies somewhere between the gunzip and start_kernel.<br />
<br />
Try enabling DEBUG_LL to see if it's an machine ID error. If you see:<br />
<br />
Error: unrecognized/unsupported processor variant.<br />
<br />
or:<br />
<br />
Error: unrecognized/unsupported machine ID...<br />
<br />
Then you either don't have proper processor support enabled for your target or your bootloader is passing in the wrong machine number.<br />
<br />
If you still don't see anything, try hacking printk.c to call printascii() (enabled for the DEBUG_LL case) to print directly to the serial port w/o a driver, etc.,. You can find more details on these low-level debugging hacks via a little googling...<br />
</pre><br />
<br />
== NetConsole ==<br />
Sometimes you are in the unlucky situation that the machine crashes or hangs and you have no way to access the console afterwards, e.g. the graphic driver hangs and and the kernel dies soon after.<br />
In this case you could either hook up a serial line to your crashing target machine (if a serial port is available) or use the kernels netconsole feature to enable printk logging via UDP.<br />
<br />
In order to use it you have to enable the ''CONFIG_NETCONSOLE'' kernel config<br />
option (''make menuconfig -> Device Drivers -> Network device support -> Network core driver support -> Network console logging support'') and<br />
configure it appropriately by using the ''netconsole'' configuration parameter<br />
<br />
netconsole=[src-port]@[src-ip]/[<dev>],[tgt-port]@<tgt-ip>/[tgt-macaddr]<br />
where<br />
src-port source for UDP packets (defaults to 6665)<br />
src-ip source IP to use (interface address)<br />
dev network interface (eth0)<br />
tgt-port port for logging agent (6666)<br />
tgt-ip IP address for logging agent<br />
tgt-macaddr ethernet MAC address for logging agent (broadcast)<br />
<br />
e.g. specify at kernel commandline (in your bootloader)<br />
linux netconsole=4444@10.0.0.1/eth1,9353@10.0.0.2/12:34:56:78:9a:bc<br />
to send messages from 10.0.0.1 port 4444 via eth1 to 10.0.0.2 port 9353 with the MAC 12:34:56:78:9a:bc<br />
<br />
or while loading the module e.g<br />
# insmod netconsole netconsole=@/,@10.0.0.2/<br />
to send messages via broadcast to 10.0.0.2 port 6666<br />
<br />
On the other machine you can now simply fire up<br />
# netcat -u -l -p <port><br />
e.g.<br />
$ netcat -u -l -p 6666<br />
and see the printk messages from your target dribbling in.<br />
<br />
If you don't see any messages you might have to set the console_loglevel to a<br />
higher value (see above) or test the connection via telnet e.g. from the target type<br />
$ telnet 10.0.0.2 6666<br />
<br />
<br />
=== Netconsole resources ===<br />
See<br />
[http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/networking/netconsole.txt;hb=HEAD Documentation/networking/netconsole.txt]<br />
for more details.<br />
<br />
See [http://sarah.thesharps.us/2009-02-22-09-00 Sarah Sharp's blog entry about using netconsole]<br />
<br />
== Misc ==<br />
=== Dmesg / Clearing the buffer ===<br />
dmesg -c<br />
clears the dmesg buffer.<br />
Sometimes it is nice to start with a blank buffer, so you will only see new<br />
messages when you invoke ''dmesg''<br />
<br />
=== Printk Timestamps ===<br />
CONFIG_PRINTK_TIME<br />
Setting this kernel config option prepends every printk statement with a<br />
timestamp representing the time since boot. This is particularly useful to get<br />
a general idea about the timings of your code.<br />
<br />
You can also specify an argument on the kernel command line to enable this, or<br />
you can enable it any time at runtime by doing the following:<br />
<br />
$echo 1 >/sys/module/printk/parameters/time<br />
<br />
Also, there are tools available to use the information to show relative times<br />
between printks (scripts/show_delta) and create graphs of durations in the<br />
kernel (scripts/bootgraph.pl)<br />
<br />
See [[Printk Times]] for more details<br />
<br />
=== Printing buffers as hex ===<br />
If you want to print a buffer as hex within the kernel, don't reinvent the<br />
wheel use ''printk_hex_dump_bytes()'' instead.<br />
<br />
print_hex_dump_bytes(const char *prefix_str, int prefix_type, const void *buf, size_t len)<br />
this function prints a buffer as hex values to the kernel log buffer (with level KERN_DEBUG)<br />
Example:<br />
Kernel Code:<br />
char mybuf[] = "abcdef";<br />
print_hex_dump_bytes("", DUMP_PREFIX_NONE, mybuf, ARRAY_SIZE(mybuf));<br />
<br />
dmesg output:<br />
61 62 63 64 65 66 00 abcdef.<br />
<br />
If you need something more sophisticated and flexible maybe have a look at<br />
''print_hex_dump()'' and ''hex_dump_to_buffer()''<br />
<br />
=== Dynamic Debugging ===<br />
It is also possible to enable/disable debug information at runtime using the<br />
dynamic debug functionality of the kernel.<br />
For this the ''CONFIG_DYNAMIC_DEBUG'' kernel config option must be set.<br />
See<br />
[http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/dynamic-debug-howto.txt;hb=HEAD Documentation/dynamic-debug-howto.txt] for more information.<br />
<br />
== Disabling printk messages at compile time ==<br />
There is a configuration option which allows you to turn off all the printk messages in the<br />
whole kernel (''CONFIG_PRINTK''). This reduces the size the kernel, usually by at least 100k, <br />
since all message strings are not compiled into the kernel binary image. <br />
<br />
However, it also means you get absolutely no output from the kernel while it is running. Disabling kernel<br />
printk messages is usually the last thing you do when you are tuning your kernel for size.<br />
<br />
== References and external links ==<br />
* [[Linux Kernel Development - by Robert Love|Linux Kernel Development]], Robert Love, 3rd Edition, Chapter 18 Debugging<br />
* [[Linux Device Drivers]], Corbet, Rubini and Kroah-Hartmann, 3rd Edition, Chapter 4 Section 2<br />
* [[Essential Linux Device Drivers]]<br />
<br />
<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/printk-formats.txt;hb=HEAD Documentation/printk-formats.txt]<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/dynamic-debug-howto.txt;hb=HEAD Documentation/dynamic-debug-howto.txt]<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/networking/netconsole.txt;hb=HEAD Documentation/networking/netconsole.txt]<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=kernel/printk.c;hb=HEAD kernel/printk.c] Implementation of printk and others<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=include/linux/printk.h;hb=HEAD include/linux/printk.h] printk header file<br />
* [http://www.embedded-bits.co.uk/2010/printk-format-specifiers/ Blog Entry about the different %p format specifiers]<br />
* [http://lwn.net/Articles/487437/ LWN.net: The perils of pr_info()]<br />
* [http://www.ibm.com/developerworks/linux/library/l-kernel-logging-apis/index.html Kernel logging: APIs and implementation, Tim Jones (for IBM)] (nice article)<br />
<br />
<br />
Some page related to printk:<br />
* [[Printk Times]] - has information about how to turn on timestamps for each printk message<br />
** [[Printk_Times_Sample_4| printk time stamps sample]]<br />
* [[Printk_Size_Info|printk size information]]<br />
* [[Do Printk]] - has information about a method of disabling printk messages on a per-module basis<br />
<br />
<br />
{{Reflist}}<br />
<br />
[[Category:Development Tools]]<br />
[[Category:Tips and Tricks]]<br />
[[Category:Printk]]</div>Rpjdayhttps://elinux.org/index.php?title=EBC_Exercise_10_Flashing_an_LED&diff=283184EBC Exercise 10 Flashing an LED2013-09-02T16:07:52Z<p>Rpjday: List all possible triggers for an LED.</p>
<hr />
<div>[[Category:EmbeddedBeagleClass]]<br />
[[Category:ECE497]]<br />
{{YoderHead}}<br />
{{EBC3.8}}This page is for the Bone (Black or White) running the 3.8 Kernel. See [[EBC_Exercise_10_Flashing_an_LED_-_xM_WhiteBone]] for the White Bone or xM running 3.2.<br />
<br />
The [http://en.wikipedia.org/wiki/Hello_world_program "Hello World"] program is the traditional first program for many classes. Flashing an LED is the embedded equivalent. Here we will explore a few ways to flash an LED on the Beagle and explore General Purpose I/O (gpio) along the way. These calls will be done from the command line of the Beagle, so there is no need for the host computer.<br />
<br />
== gpio via the Shell Command Line and sysfs ==<br />
<br />
('''Note''': Draw the new diagrams with [http://engineersofthecorn.blogspot.com/2012/06/fritzing-part-for-beaglebone.html this].)<br />
<br />
The easiest way to do general purpose I/O (gpio) on the Beagle is through a terminal window and a shell prompt. In Linux, almost everything is treated as a file, even things that aren't files. In our class we'll use a virtual file system called '''sysfs'''. sysfs exposes the drivers for the hardware so you can easily use them.<br />
<br />
Try this, open a terminal and type:<br />
<br />
beagle$ '''cd /sys'''<br />
beagle$ '''ls -F'''<br />
block/ bus/ class/ dev/ devices/ firmware/ fs/ kernel/ module/ power/<br />
<br />
Here we see several directories that represent hardware we can control. Explore a bit and see what you find.<br />
<br />
Now try:<br />
<br />
beagle$ '''cd /sys/class'''<br />
beagle$ '''ls -F'''<br />
backlight/ firmware/ lcd/ mtd/ scsi_disk/ ubi/<br />
bdi/ gpio/ leds/ net/ scsi_host/ udc/<br />
block/ graphics/ mbox/ power_supply/ sound/ uio/<br />
bluetooth/ hwmon/ mdio_bus/ regulator/ spi_master/ usbmon/<br />
bsg/ i2c-adapter/ mem/ rfkill/ spidev/ vc/<br />
dma/ i2c-dev/ misc/ rtc/ thermal/ vtconsole/<br />
drm/ input/ mmc_host/ scsi_device/ tty/ watchdog/<br />
<br />
Explore some. What do you find? In '''graphics''' you will see the frame buffer supported by the processor. In '''sound''' you'll see the [http://www.alsa-project.org/main/index.php/Main_Page alsa] sound devices.<br />
<br />
== Flashing the user LEDs ==<br />
<br />
The Beagle Black has four user LEDS, '''usr0''' - '''usr3''', that you can control. Try this:<br />
<br />
beagle$ '''cd /sys/class/leds'''<br />
beagle$ '''ls -1F'''<br />
beaglebone:green:usr0@<br />
beaglebone:green:usr1@<br />
beaglebone:green:usr2@<br />
beaglebone:green:usr3@<br />
<br />
Here you see the directories for controlling each of the user LEDs. By default, usr0 flashes a heartbeat pattern and usr1 flashes when the micro SD card is accessed. Let's control usr0.<br />
<br />
beagle$ '''cd beagleboard\:green\:usr0'''<br />
beagle$ '''ls -F'''<br />
brightness device@ max_brightness power/ subsystem@ trigger uevent<br />
<br />
See what's in '''brightness''', '''max_brightness''' and '''trigger''' by using the <code>cat</code> command. For example:<br />
<br />
beagle$ '''cat trigger'''<br />
none nand-disk mmc0 mmc1 timer oneshot [heartbeat] backlight gpio cpu0 default-on transient<br />
<br />
This shows trigger can have many values. The present value is '''heartbeat'''. Check the LED, is it beating? You can stop the heartbeat via:<br />
<br />
beagle$ '''echo none > trigger'''<br />
beagle$ '''cat trigger'''<br />
[none] nand-disk mmc0 mmc1 timer oneshot heartbeat backlight gpio cpu0 default-on transient <br />
<br />
Did it stop beating? You can now turn it on and off with:<br />
<br />
beagle$ '''echo 1 > brightness'''<br />
beagle$ '''echo 0 > brightness'''<br />
<br />
Is it responding correctly?<br />
<br />
The Bone has more trigger options. Try:<br />
<br />
beagle$ '''cat trigger'''<br />
[none] nand-disk mmc0 mmc1 timer oneshot heartbeat backlight gpio cpu0 default-on transient <br />
beagle$ '''echo timer > trigger'''<br />
beagle$ '''ls -F'''<br />
brightness delay_on max_brightness subsystem@ uevent<br />
delay_off device@ power/ trigger<br />
beagle$ '''echo 100 > delay_on'''<br />
beagle$ '''echo 900 > delay_off'''<br />
<br />
What does this do?<br />
<br />
== Adding your own LED ==<br />
<br />
It's not hard to use the gpio pins to control your own LED. All you need is an LED and a 220&Omega; resistor. Here's a picture of how it's wired. We are just doing the LED at the top of the breadboard for now.<br />
<br />
[[File:Bone gpio.JPG|300px]]<br />
[[File:BoneGPIO.png|300px]]<br />
<br />
So how do you know where to connect it? The BeagleBone [https://github.com/CircuitCo/BeagleBone-Black/blob/master/BBB_SRM.pdf?raw=true System Reference Manual] has the details. Figure 45 on page 74 shows:<br />
<br />
[[File:BlackHeaders.jpg]]<br />
<br />
There at two expansion headers, P8 and P9. Look at the bottom of the left header and you'll see it's labeled '''P9'''. Table 11 on page 78 shows the pinout for P9.<br />
<br />
[[File:HeaderP9.jpg|800px]]<br />
<br />
On the first photo above you can see that pin 1 (Ground) is wired to the '''-''' bus and pin 3 (3.3V) is wired to the '''+''' bus. The 220&Omega; resistor is wired to the '''-''' bus and the other end is attached to the negative lead of the LED. The positive lead is attached to pin 12 which, as shown in Table 11, is attached to '''gpio1_28'''. The gpio pins are in banks of 32 each, so to find the gpio number to use on the Beagle, use 1*32+28='''60'''. Here's how you turn it on<br />
<br />
beagle$ '''cd /sys/class/gpio'''<br />
beagle$ '''ls -F'''<br />
export gpiochip0@ gpiochip32@ gpiochip64@ gpiochip96@ unexport<br />
<br />
Presently no gpio pins are visible. You need to tell it which pin to export<br />
<br />
beagle$ '''echo 60 > export'''<br />
beagle$ '''ls -F'''<br />
export gpio60@ gpiochip0@ gpiochip32@ gpiochip64@ gpiochip96@ unexport<br />
<br />
Notice '''gpio60''' has appeared. All we need to do is tell it which direction and then turn it on.<br />
<br />
beagle$ '''cd gpio60'''<br />
beagle$ '''echo out > direction'''<br />
beagle$ '''echo 1 > value'''<br />
<br />
Your LED should be on! When you are done you can unexport the pin and it will disappear.<br />
beagle$ '''cd ..'''<br />
beagle$ '''echo 60 > unexport'''<br />
<br />
== Reading a switch ==<br />
<br />
Now that you have an LED working, wiring in a switch is easy. The picture above shows a push button switch wired in at the bottom of the P9 header. Attach the '''+''' bus to one pole on the switch with a wire. The other end of the switch is attached to pin 42 which is '''gpio0_7'''. <br />
<br />
Based on what you saw above, show how to read the switch.<br />
<br />
Once you have the switch and LED working you can use the following scripts to play with them.<br />
<br />
beagle$ '''cd ~/exercises/gpio'''<br />
beagle$ '''./togglegpio.sh 60 0.1'''<br />
<br />
The LED should be blinking on and off.<br />
<br />
beagle$ '''./readgpio.sh 7'''<br />
<br />
Push the pushbutton and see what happens.<br />
<br />
How can this work without a pulldown resistor? It turns out the Bone has an internal pulldown (and up) resistor that can be software enabled. We'll discuss how when we cover device trees.<br />
<br />
=== Challenge ===<br />
<br />
* Can you modify the scripts above to read the switch and turn the LED on and off?<br />
<br />
== Assignment: gpio from the shell ==<br />
<br />
=== <span style="color:green;">Measuring a gpio pin on an Oscilloscope</span> ===<br />
<br />
Get an oscilloscope so you can measure the output of your gpio pins. Run<br />
beagle$ '''./togglegpio.sh 60 0.1'''<br />
<br />
and answer the following questions about gpio measurements.<br />
<br />
# What's the min and max voltage? <br />
# What period is it? <br />
# How close is it to 100ms? <br />
# Why do they differ?<br />
# Run '''htop''' and see how much processor you are using.<br />
# Try different values for the sleep time (2nd argument). What's the shortest period you can get? Make a table of the values you try and the corresponding period and processor usage.<br />
# How stable is the period? <br />
# Try launching something like '''mplayer'''. How stable is the period?<br />
# Try cleaning up togglegpio.sh and removing unneeded lines. Does it impact the period?<br />
# togglegpio uses bash (first line in file). Try using sh. Is the period shorter?<br />
# What's the shortest period you can get?<br />
<br />
=== Toggling the LEDs ===<br />
<br />
Modify togglegpio.sh (call it toggleLED) to toggle the on-board LEDs. Can you get the LED to appear to dim by changing the duty cycle of the toggling?<br />
<br />
=== Count the User Button Presses ===<br />
<br />
Write a shell script that displays a count of the number of times the Button has been pressed.<br />
<br />
=== Copy gpio 7 to gpio 60===<br />
<br />
Write a shell script that copies the value of gpio pin 7 (your switch) to gpio pin 60 (Your LED). How much CPU time does it take? What's the delay from the time the input changes until the output changes? How constant is the delay?<br />
<br />
You may need to get a function generator and set it to a square wave (0 to 3.3V) and attach it to pin 7 and attached an oscilloscope to pin 60.<br />
<br />
== Resources ==<br />
<br />
# [http://wh1t3s.com/2009/05/14/reading-beagleboard-gpio/ Here] is wh1ts article on flashing an LED. It is referenced in the '''readgpio''' file that comes on the Beagle.<br />
# [http://blog.makezine.com/archive/2009/02/blinking-leds-with-the-beagle-board.html?CMP=OTC-0D6B48984890 This] Make magazine article has a few more details.<br />
# [http://www.avrfreaks.net/wiki/index.php/Documentation:Linux/GPIO#Getting_access_to_a_GPIO Here] in a gpio reference for Linux in general. It includes sample 'C' code for flashing at 1 Hz.<br />
# [https://groups.google.com/forum/?hl=en#!msg/beagleboard/20rM-r8C2YY/hVZiN2ahI8YJ Here] is a posting in the Beagle Google group about gpio.<br />
# [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/gpio.txt;h=36af58eba136bac198ea3b1f33f34236be9ce5df;hb=HEAD Here] is some information about gpio from the kernel point of view.<br />
# [http://wiki.gumstix.org/index.php?title=GPIO_Event_Driver Here] is some info on a GPIO Event Driver<br />
# [https://www.ridgerun.com/developer/wiki/index.php/How_to_use_GPIO_signals Here] is info on how to set '''edge''' to falling and poll() the pin.<br />
# [http://www.kernel.org/doc/Documentation/gpio.txt Here] is the kernel Documentation on gpio.<br />
<br />
{{YoderFoot}}</div>Rpjdayhttps://elinux.org/index.php?title=EBC_Exercise_10_Flashing_an_LED&diff=283130EBC Exercise 10 Flashing an LED2013-09-02T14:51:40Z<p>Rpjday: Get rid of extraneous blank line I added earlier.</p>
<hr />
<div>[[Category:EmbeddedBeagleClass]]<br />
[[Category:ECE497]]<br />
{{YoderHead}}<br />
{{EBC3.8}}This page is for the Bone (Black or White) running the 3.8 Kernel. See [[EBC_Exercise_10_Flashing_an_LED_-_xM_WhiteBone]] for the White Bone or xM running 3.2.<br />
<br />
The [http://en.wikipedia.org/wiki/Hello_world_program "Hello World"] program is the traditional first program for many classes. Flashing an LED is the embedded equivalent. Here we will explore a few ways to flash an LED on the Beagle and explore General Purpose I/O (gpio) along the way. These calls will be done from the command line of the Beagle, so there is no need for the host computer.<br />
<br />
== gpio via the Shell Command Line and sysfs ==<br />
<br />
('''Note''': Draw the new diagrams with [http://engineersofthecorn.blogspot.com/2012/06/fritzing-part-for-beaglebone.html this].)<br />
<br />
The easiest way to do general purpose I/O (gpio) on the Beagle is through a terminal window and a shell prompt. In Linux, almost everything is treated as a file, even things that aren't files. In our class we'll use a virtual file system called '''sysfs'''. sysfs exposes the drivers for the hardware so you can easily use them.<br />
<br />
Try this, open a terminal and type:<br />
<br />
beagle$ '''cd /sys'''<br />
beagle$ '''ls -F'''<br />
block/ bus/ class/ dev/ devices/ firmware/ fs/ kernel/ module/ power/<br />
<br />
Here we see several directories that represent hardware we can control. Explore a bit and see what you find.<br />
<br />
Now try:<br />
<br />
beagle$ '''cd /sys/class'''<br />
beagle$ '''ls -F'''<br />
backlight/ firmware/ lcd/ mtd/ scsi_disk/ ubi/<br />
bdi/ gpio/ leds/ net/ scsi_host/ udc/<br />
block/ graphics/ mbox/ power_supply/ sound/ uio/<br />
bluetooth/ hwmon/ mdio_bus/ regulator/ spi_master/ usbmon/<br />
bsg/ i2c-adapter/ mem/ rfkill/ spidev/ vc/<br />
dma/ i2c-dev/ misc/ rtc/ thermal/ vtconsole/<br />
drm/ input/ mmc_host/ scsi_device/ tty/ watchdog/<br />
<br />
Explore some. What do you find? In '''graphics''' you will see the frame buffer supported by the processor. In '''sound''' you'll see the [http://www.alsa-project.org/main/index.php/Main_Page alsa] sound devices.<br />
<br />
== Flashing the user LEDs ==<br />
<br />
The Beagle Black has four user LEDS, '''usr0''' - '''usr3''', that you can control. Try this:<br />
<br />
beagle$ '''cd /sys/class/leds'''<br />
beagle$ '''ls -1F'''<br />
beaglebone:green:usr0@<br />
beaglebone:green:usr1@<br />
beaglebone:green:usr2@<br />
beaglebone:green:usr3@<br />
<br />
Here you see the directories for controlling each of the user LEDs. By default, usr0 flashes a heartbeat pattern and usr1 flashes when the micro SD card is accessed. Let's control usr0.<br />
<br />
beagle$ '''cd beagleboard\:green\:usr0'''<br />
beagle$ '''ls -F'''<br />
brightness device@ max_brightness power/ subsystem@ trigger uevent<br />
<br />
See what's in '''brightness''', '''max_brightness''' and '''trigger''' by using the <code>cat</code> command. For example:<br />
<br />
beagle$ '''cat trigger'''<br />
none nand-disk mmc0 mmc1 timer oneshot [heartbeat] backlight gpio cpu0 default-on transient<br />
<br />
This shows trigger can have many values. The present value is '''heartbeat'''. Check the LED, is it beating? You can stop the heartbeat via:<br />
<br />
beagle$ '''echo none > trigger'''<br />
beagle$ '''cat trigger'''<br />
[none] nand-disk mmc0 mmc1 timer oneshot heartbeat backlight gpio cpu0 default-on transient <br />
<br />
Did it stop beating? You can now turn it on and off with:<br />
<br />
beagle$ '''echo 1 > brightness'''<br />
beagle$ '''echo 0 > brightness'''<br />
<br />
Is it responding correctly?<br />
<br />
The Bone has more trigger options. Try:<br />
<br />
beagle$ '''cat trigger'''<br />
[none] mmc0 timer heartbeat backlight gpio default-on <br />
beagle$ '''echo timer > trigger'''<br />
beagle$ '''ls -F'''<br />
brightness delay_on max_brightness subsystem@ uevent<br />
delay_off device@ power/ trigger<br />
beagle$ '''echo 100 > delay_on'''<br />
beagle$ '''echo 900 > delay_off'''<br />
<br />
What does this do?<br />
<br />
== Adding your own LED ==<br />
<br />
It's not hard to use the gpio pins to control your own LED. All you need is an LED and a 220&Omega; resistor. Here's a picture of how it's wired. We are just doing the LED at the top of the breadboard for now.<br />
<br />
[[File:Bone gpio.JPG|300px]]<br />
[[File:BoneGPIO.png|300px]]<br />
<br />
So how do you know where to connect it? The BeagleBone [https://github.com/CircuitCo/BeagleBone-Black/blob/master/BBB_SRM.pdf?raw=true System Reference Manual] has the details. Figure 45 on page 74 shows:<br />
<br />
[[File:BlackHeaders.jpg]]<br />
<br />
There at two expansion headers, P8 and P9. Look at the bottom of the left header and you'll see it's labeled '''P9'''. Table 11 on page 78 shows the pinout for P9.<br />
<br />
[[File:HeaderP9.jpg|800px]]<br />
<br />
On the first photo above you can see that pin 1 (Ground) is wired to the '''-''' bus and pin 3 (3.3V) is wired to the '''+''' bus. The 220&Omega; resistor is wired to the '''-''' bus and the other end is attached to the negative lead of the LED. The positive lead is attached to pin 12 which, as shown in Table 11, is attached to '''gpio1_28'''. The gpio pins are in banks of 32 each, so to find the gpio number to use on the Beagle, use 1*32+28='''60'''. Here's how you turn it on<br />
<br />
beagle$ '''cd /sys/class/gpio'''<br />
beagle$ '''ls -F'''<br />
export gpiochip0@ gpiochip32@ gpiochip64@ gpiochip96@ unexport<br />
<br />
Presently no gpio pins are visible. You need to tell it which pin to export<br />
<br />
beagle$ '''echo 60 > export'''<br />
beagle$ '''ls -F'''<br />
export gpio60@ gpiochip0@ gpiochip32@ gpiochip64@ gpiochip96@ unexport<br />
<br />
Notice '''gpio60''' has appeared. All we need to do is tell it which direction and then turn it on.<br />
<br />
beagle$ '''cd gpio60'''<br />
beagle$ '''echo out > direction'''<br />
beagle$ '''echo 1 > value'''<br />
<br />
Your LED should be on! When you are done you can unexport the pin and it will disappear.<br />
beagle$ '''cd ..'''<br />
beagle$ '''echo 60 > unexport'''<br />
<br />
== Reading a switch ==<br />
<br />
Now that you have an LED working, wiring in a switch is easy. The picture above shows a push button switch wired in at the bottom of the P9 header. Attach the '''+''' bus to one pole on the switch with a wire. The other end of the switch is attached to pin 42 which is '''gpio0_7'''. <br />
<br />
Based on what you saw above, show how to read the switch.<br />
<br />
Once you have the switch and LED working you can use the following scripts to play with them.<br />
<br />
beagle$ '''cd ~/exercises/gpio'''<br />
beagle$ '''./togglegpio.sh 60 0.1'''<br />
<br />
The LED should be blinking on and off.<br />
<br />
beagle$ '''./readgpio.sh 7'''<br />
<br />
Push the pushbutton and see what happens.<br />
<br />
How can this work without a pulldown resistor? It turns out the Bone has an internal pulldown (and up) resistor that can be software enabled. We'll discuss how when we cover device trees.<br />
<br />
=== Challenge ===<br />
<br />
* Can you modify the scripts above to read the switch and turn the LED on and off?<br />
<br />
== Assignment: gpio from the shell ==<br />
<br />
=== <span style="color:green;">Measuring a gpio pin on an Oscilloscope</span> ===<br />
<br />
Get an oscilloscope so you can measure the output of your gpio pins. Run<br />
beagle$ '''./togglegpio.sh 60 0.1'''<br />
<br />
and answer the following questions about gpio measurements.<br />
<br />
# What's the min and max voltage? <br />
# What period is it? <br />
# How close is it to 100ms? <br />
# Why do they differ?<br />
# Run '''htop''' and see how much processor you are using.<br />
# Try different values for the sleep time (2nd argument). What's the shortest period you can get? Make a table of the values you try and the corresponding period and processor usage.<br />
# How stable is the period? <br />
# Try launching something like '''mplayer'''. How stable is the period?<br />
# Try cleaning up togglegpio.sh and removing unneeded lines. Does it impact the period?<br />
# togglegpio uses bash (first line in file). Try using sh. Is the period shorter?<br />
# What's the shortest period you can get?<br />
<br />
=== Toggling the LEDs ===<br />
<br />
Modify togglegpio.sh (call it toggleLED) to toggle the on-board LEDs. Can you get the LED to appear to dim by changing the duty cycle of the toggling?<br />
<br />
=== Count the User Button Presses ===<br />
<br />
Write a shell script that displays a count of the number of times the Button has been pressed.<br />
<br />
=== Copy gpio 7 to gpio 60===<br />
<br />
Write a shell script that copies the value of gpio pin 7 (your switch) to gpio pin 60 (Your LED). How much CPU time does it take? What's the delay from the time the input changes until the output changes? How constant is the delay?<br />
<br />
You may need to get a function generator and set it to a square wave (0 to 3.3V) and attach it to pin 7 and attached an oscilloscope to pin 60.<br />
<br />
== Resources ==<br />
<br />
# [http://wh1t3s.com/2009/05/14/reading-beagleboard-gpio/ Here] is wh1ts article on flashing an LED. It is referenced in the '''readgpio''' file that comes on the Beagle.<br />
# [http://blog.makezine.com/archive/2009/02/blinking-leds-with-the-beagle-board.html?CMP=OTC-0D6B48984890 This] Make magazine article has a few more details.<br />
# [http://www.avrfreaks.net/wiki/index.php/Documentation:Linux/GPIO#Getting_access_to_a_GPIO Here] in a gpio reference for Linux in general. It includes sample 'C' code for flashing at 1 Hz.<br />
# [https://groups.google.com/forum/?hl=en#!msg/beagleboard/20rM-r8C2YY/hVZiN2ahI8YJ Here] is a posting in the Beagle Google group about gpio.<br />
# [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/gpio.txt;h=36af58eba136bac198ea3b1f33f34236be9ce5df;hb=HEAD Here] is some information about gpio from the kernel point of view.<br />
# [http://wiki.gumstix.org/index.php?title=GPIO_Event_Driver Here] is some info on a GPIO Event Driver<br />
# [https://www.ridgerun.com/developer/wiki/index.php/How_to_use_GPIO_signals Here] is info on how to set '''edge''' to falling and poll() the pin.<br />
# [http://www.kernel.org/doc/Documentation/gpio.txt Here] is the kernel Documentation on gpio.<br />
<br />
{{YoderFoot}}</div>Rpjdayhttps://elinux.org/index.php?title=EBC_Exercise_01_Start_Here&diff=283124EBC Exercise 01 Start Here2013-09-02T13:15:15Z<p>Rpjday: A few more minor fixes I missed the first time.</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
== Overview ==<br />
<br />
There are four major things that need to be done to have the BeagleBoard ready to run for class:<br />
# Get your Beagle Hardware together<br />
# Update the OS on your Beagle<br />
# Set up a host computer, running Linux for code development<br />
# Clone the course git repository on both the Beagle and the host<br />
<br />
== The Hardware ==<br />
<br />
Here's the hardware you will need and where you get it.<br />
<br />
=== You may have, or will have to buy ===<br />
<br />
We are using the [http://beagleboard.org/Getting%20Started BeagleBone Black] this year. Since it's only $45 I'll have you buy your own. There are a few other things you will need to get before the first day of class.<br />
* BeagleBone Black. See [http://beagleboard.org/ http://beagleboard.org/] for suggestions of where to buy the Black. I suggest ordering sooner rather than later since it may take a couple of weeks. <br />
* USB keyboard and mouse<br />
* HDMI display<br />
* At least three 4G micro SD cards. I suggest you have 3 or 4 cards since it's easy to mess up one and it takes some 10 minutes to reload it.<br />
* micro SD card reader/writer<br />
* Powered USB hub, at least 4 ports. The Black has only one USB port so this will allow you to plug in the keyboard, mouse, web cam, etc.<br />
<br />
==== Books ====<br />
* [http://www.amazon.com/Embedded-Linux-Primer-Practical-Real-World/dp/0137017839 Embedded Linux Primer] The bookstore will have this.<br />
* [http://www.morganclaypool.com/doi/abs/10.2200/S00500ED1V01Y201304DCS041 Bad to the Bone] Don't buy this yet, I think I can get you a free copy.<br />
<br />
=== What you buy from the Instrument Room ===<br />
* Proto Plate with full sized breadboard<br />
* various input devices, sensors, displays, etc.<br />
<br />
=== What you borrow from the Instrument Room ===<br />
* 5V power supply<br />
* [http://us.playstation.com/ps3/accessories/playstation-eye-camera-ps3.html Playstation EYE] web cam<br />
* [http://www.monoprice.com/products/product.asp?c_id=104&cp_id=10419&cs_id=1041913&p_id=7703&seq=1&format=2 micro HDMI to HDMI adapter]<br />
* [https://www.sparkfun.com/products/9717 FTDI USB to Serial Adapter] Must be 3.3V version<br />
* [http://www.adafruit.com/products/902 Bicolor LED Square Pixel Matrix with I2C Backpack]<br />
* Two (2) [http://www.ti.com/product/tmp101 TMP101] temperature sensors<br />
* [http://www.ti.com/product/tmp006 TMP006] Infrared Thermopile Sensor (too small to mount, we won't use this)<br />
* [http://www.ti.com/product/pca9306 PCA9306 Dual Bi-Directional I2C-Bus and SMBus Voltage Level-Translator]<br />
* [http://www.ti.com/product/l293 L293 Quadruple Half-H Drivers]<br />
<br />
== Updating the Beagle OS ==<br />
<br />
Once you have all your hardware together go ahead and [http://beagleboard.org/Getting%20Started explore the Bone]. It should work right out of the box. After you have explored a while, update the image on the Bone so you are running the most current image. Go to [[EBC Exercise 03 Installing a Beagle OS]] to learn how to flash your SD card with a fresh OS.<br />
<br />
== The Linux host computer ==<br />
<br />
The above will get you ready for about the first 4 weeks of class. Around week 5 we'll start looking at the kernel and will need to cross compile. Once we start moving into Kernel development we will need a host computer. Since we are doing Linux development, it's generally agreed the host should be running Linux. I suggest you run [http://www.ubuntu.com Ubuntu 12.04 (LTS)]. The CSSE department has a [ftp://ftp.csse.rose-hulman.edu/ubuntu-releases/12.04.2 local copy] so you don't have to download some 700M. You want the '''desktop-amd64.iso''' if you have a 64-bit machine, or the '''desktop-i386.iso''' if you are running 32-bits.<br />
<br />
There are three options as to how to run Linux.<br />
# Native install ([http://www.ubuntu.com/download])<br />
# Install in a virtual machine. I've been running [[EBC Exercise 06 Notes on VirtualBox | Virtual Box]] recently and it seems to work fine. You can also try [[EBC Exercise 07 Notes on Installing Ubuntu in VMware Player | VMware Player]].<br />
# Run in the cloud<br />
<br />
The Ubuntu site gives good instructions for a native install. I've had good success with running both VMware and Virtual Box, though my installation instructions are a bit dated. (Feel free to update them if they need it.)<br />
<br />
I've been testing out the "Cloud" approach and it looks like it will work too. If you want to try the cloud, let me known and I'll ask CSSE to set up a machine for you.<br />
<br />
=== Kernel Development ===<br />
<br />
Once you have Linux running somewhere, you need to install the kernel development tools. Go to [[EBC Exercise 08 Installing Development Tools]] to see all the steps you need.<br />
<br />
Now that you have all these pieces in place you are ready to work with a very powerful embedded processor.<br />
<br />
== The class git repository ==<br />
<br />
Once you have an up to date OS running on your Beagle, go to [[EBC Exercise 05 Getting Exercise Support Materials]] to learn how to clone the class git repository. Once cloned it's a single command to get the latest materials on your Beagle (or host computer for that matter).<br />
<br />
{{YoderHead}}</div>Rpjdayhttps://elinux.org/index.php?title=EBC_Exercise_01_Start_Here&diff=283118EBC Exercise 01 Start Here2013-09-02T13:13:08Z<p>Rpjday: Fix typo.</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
== Overview ==<br />
<br />
There are four major things that need to be done to have the BeagleBoard ready to run for class:<br />
# Get your Beagle Hardware together<br />
# Update the OS on your Beagle<br />
# Set up a host computer, running Linux for code development<br />
# Clone the course git repository on both the Beagle and the host<br />
<br />
== The Hardware ==<br />
<br />
Here's the hardware you will need and where you get it.<br />
<br />
=== You may have, or will have to buy ===<br />
<br />
We are using the [http://beagleboard.org/Getting%20Started BeagleBone Black] this year. Since it's only $45 I'll have you buy your your own. There's a few other things you will need to get before the first day of class.<br />
* BeagleBone Black. See [http://beagleboard.org/ http://beagleboard.org/] for suggestions of where to buy the Black. I suggest ordering sooner rather than later since it may take a couple of weeks. <br />
* USB keyboard and mouse<br />
* HDMI display<br />
* At least three 4G micro SD cards. I suggest you have 3 or 4 cards since it's easy to mess up one and it takes some 10 minutes to reload it.<br />
* micro SD card reader/writer<br />
* Powered USB hub, at least 4 ports. The Black has only one USB so this will allow you to plug in the keyboard, mouse, web cam, etc.<br />
<br />
==== Books ====<br />
* [http://www.amazon.com/Embedded-Linux-Primer-Practical-Real-World/dp/0137017839 Embedded Linux Primer] The bookstore will have this.<br />
* [http://www.morganclaypool.com/doi/abs/10.2200/S00500ED1V01Y201304DCS041 Bad to the Bone] Don't buy this yet, I think I can get you a free copy.<br />
<br />
=== What you buy from the Instrument Room ===<br />
* Proto Plate with full sized breadboard<br />
* various input devices, sensors, displays, etc.<br />
<br />
=== What you borrow from the Instrument Room ===<br />
* 5V power supply<br />
* [http://us.playstation.com/ps3/accessories/playstation-eye-camera-ps3.html Playstation EYE] web cam<br />
* [http://www.monoprice.com/products/product.asp?c_id=104&cp_id=10419&cs_id=1041913&p_id=7703&seq=1&format=2 micro HDMI to HDMI adapter]<br />
* [https://www.sparkfun.com/products/9717 FTDI USB to Serial Adapter] Must be 3.3V version<br />
* [http://www.adafruit.com/products/902 Bicolor LED Square Pixel Matrix with I2C Backpack]<br />
* Two (2) [http://www.ti.com/product/tmp101 TMP101] temperature sensors<br />
* [http://www.ti.com/product/tmp006 TMP006] Infrared Thermopile Sensor (too small to mount, we won't use this)<br />
* [http://www.ti.com/product/pca9306 PCA9306 Dual Bi-Directional I2C-Bus and SMBus Voltage Level-Translator]<br />
* [http://www.ti.com/product/l293 L293 Quadruple Half-H Drivers]<br />
<br />
== Updating the Beagle OS ==<br />
<br />
Once you have all your hardware together go ahead and [http://beagleboard.org/Getting%20Started explore the Bone]. It should work right out of the box. After you have explored a while, update the image on the Bone so you are running the most current image. Go to [[EBC Exercise 03 Installing a Beagle OS]] to learn how to flash your SD card with a fresh OS.<br />
<br />
== The Linux host computer ==<br />
<br />
The above will get you ready for about the first 4 weeks of class. Around week 5 we'll start looking at the kernel and will need to cross compile. Once we start moving into Kernel development we will need a host computer. Since we are doing Linux development, it's generally agreed the host should be running Linux. I suggest you run [http://www.ubuntu.com Ubuntu 12.04 (LTS)]. The CSSE department has a [ftp://ftp.csse.rose-hulman.edu/ubuntu-releases/12.04.2 local copy] so you don't have to download some 700M. You want the '''desktop-amd64.iso''' if you have a 64-bit machine, or the '''desktop-i386.iso''' if you are running 32-bits.<br />
<br />
There are three options as to how to run Linux.<br />
# Native install ([http://www.ubuntu.com/download])<br />
# Install in a virtual machine. I've been running [[EBC Exercise 06 Notes on VirtualBox | Virtual Box]] recently and it seems to work fine. You can also try [[EBC Exercise 07 Notes on Installing Ubuntu in VMware Player | VMware Player]].<br />
# Run in the cloud<br />
<br />
The Ubuntu site gives good instructions for a native install. I've had good success with running both VMware and Virtual Box, though my installation instructions are a bit dated. (Feel free to update them if they need it.)<br />
<br />
I've been testing out the "Cloud" approach and it looks like it will work too. If you want to try the cloud, let me known and I'll ask CSSE to set up a machine for you.<br />
<br />
=== Kernel Development ===<br />
<br />
Once you have Linux running somewhere, you need to install the kernel development tools. Go to [[EBC Exercise 08 Installing Development Tools]] to see all the steps you need.<br />
<br />
Now that you have all these pieces in place you are ready to work with a very powerful embedded processor.<br />
<br />
== The class git repository ==<br />
<br />
Once you have an up to date OS running on your Beagle, go to [[EBC Exercise 05 Getting Exercise Support Materials]] to learn how to clone the class git repository. Once cloned it's a single command to get the latest materials on your Beagle (or host computer for that matter).<br />
<br />
{{YoderHead}}</div>Rpjdayhttps://elinux.org/index.php?title=EBC_Exercise_10_Flashing_an_LED&diff=282794EBC Exercise 10 Flashing an LED2013-09-01T11:21:40Z<p>Rpjday: Add missing "mmc1" trigger to trigger list, as I did with the other command.</p>
<hr />
<div>[[Category:EmbeddedBeagleClass]]<br />
[[Category:ECE497]]<br />
{{YoderHead}}<br />
{{EBC3.8}}This page is for the Bone (Black or White) running the 3.8 Kernel. See [[EBC_Exercise_10_Flashing_an_LED_-_xM_WhiteBone]] for the White Bone or xM running 3.2.<br />
<br />
The [http://en.wikipedia.org/wiki/Hello_world_program "Hello World"] program is the traditional first program for many classes. Flashing an LED is the embedded equivalent. Here we will explore a few ways to flash an LED on the Beagle and explore General Purpose I/O (gpio) along the way. These calls will be done from the command line of the Beagle, so there is no need for the host computer.<br />
<br />
== gpio via the Shell Command Line and sysfs ==<br />
<br />
('''Note''': Draw the new diagrams with [http://engineersofthecorn.blogspot.com/2012/06/fritzing-part-for-beaglebone.html this].)<br />
<br />
The easiest way to do general purpose I/O (gpio) on the Beagle is through a terminal window and a shell prompt. In Linux, almost everything is treated as a file, even things that aren't files. In our class we'll use a virtual file system called '''sysfs'''. sysfs exposes the drivers for the hardware so you can easily use them.<br />
<br />
Try this, open a terminal and type:<br />
<br />
beagle$ '''cd /sys'''<br />
beagle$ '''ls -F'''<br />
block/ bus/ class/ dev/ devices/ firmware/ fs/ kernel/ module/ power/<br />
<br />
Here we see several directories that represent hardware we can control. Explore a bit and see what you find.<br />
<br />
Now try:<br />
<br />
beagle$ '''cd /sys/class'''<br />
beagle$ '''ls -F'''<br />
backlight/ firmware/ lcd/ mtd/ scsi_disk/ ubi/<br />
bdi/ gpio/ leds/ net/ scsi_host/ udc/<br />
block/ graphics/ mbox/ power_supply/ sound/ uio/<br />
bluetooth/ hwmon/ mdio_bus/ regulator/ spi_master/ usbmon/<br />
bsg/ i2c-adapter/ mem/ rfkill/ spidev/ vc/<br />
dma/ i2c-dev/ misc/ rtc/ thermal/ vtconsole/<br />
drm/ input/ mmc_host/ scsi_device/ tty/ watchdog/<br />
<br />
Explore some. What do you find? In '''graphics''' you will see the frame buffer supported by the processor. In '''sound''' you'll see the [http://www.alsa-project.org/main/index.php/Main_Page alsa] sound devices.<br />
<br />
== Flashing the user LEDs ==<br />
<br />
The Beagle Black has four user LEDS, '''usr0''' - '''usr3''', that you can control. Try this:<br />
<br />
beagle$ '''cd /sys/class/leds'''<br />
beagle$ '''ls -1F'''<br />
beaglebone:green:usr0@<br />
beaglebone:green:usr1@<br />
beaglebone:green:usr2@<br />
beaglebone:green:usr3@<br />
<br />
<br />
Here you see the directories for controlling each of the user LEDs. By default, usr0 flashes a heartbeat pattern and usr1 flashes when the micro SD card is accessed. Let's control usr0.<br />
<br />
beagle$ '''cd beagleboard\:green\:usr0'''<br />
beagle$ '''ls -F'''<br />
brightness device@ max_brightness power/ subsystem@ trigger uevent<br />
<br />
See what's in '''brightness''', '''max_brightness''' and '''trigger''' by using the <code>cat</code> command. For example:<br />
<br />
beagle$ '''cat trigger'''<br />
none nand-disk mmc0 mmc1 timer oneshot [heartbeat] backlight gpio cpu0 default-on transient<br />
<br />
This shows trigger can have many values. The present value is '''heartbeat'''. Check the LED, is it beating? You can stop the heartbeat via:<br />
<br />
beagle$ '''echo none > trigger'''<br />
beagle$ '''cat trigger'''<br />
[none] nand-disk mmc0 mmc1 timer oneshot heartbeat backlight gpio cpu0 default-on transient <br />
<br />
Did it stop beating? You can now turn it on and off with:<br />
<br />
beagle$ '''echo 1 > brightness'''<br />
beagle$ '''echo 0 > brightness'''<br />
<br />
Is it responding correctly?<br />
<br />
The Bone has more trigger options. Try:<br />
<br />
beagle$ '''cat trigger'''<br />
[none] mmc0 timer heartbeat backlight gpio default-on <br />
beagle$ '''echo timer > trigger'''<br />
beagle$ '''ls -F'''<br />
brightness delay_on max_brightness subsystem@ uevent<br />
delay_off device@ power/ trigger<br />
beagle$ '''echo 100 > delay_on'''<br />
beagle$ '''echo 900 > delay_off'''<br />
<br />
What does this do?<br />
<br />
== Adding your own LED ==<br />
<br />
It's not hard to use the gpio pins to control your own LED. All you need is an LED and a 220&Omega; resistor. Here's a picture of how it's wired. We are just doing the LED at the top of the breadboard for now.<br />
<br />
[[File:Bone gpio.JPG|300px]]<br />
[[File:BoneGPIO.png|300px]]<br />
<br />
So how do you know where to connect it? The BeagleBone [https://github.com/CircuitCo/BeagleBone-Black/blob/master/BBB_SRM.pdf?raw=true System Reference Manual] has the details. Figure 45 on page 74 shows:<br />
<br />
[[File:BlackHeaders.jpg]]<br />
<br />
There at two expansion headers, P8 and P9. Look at the bottom of the left header and you'll see it's labeled '''P9'''. Table 11 on page 78 shows the pinout for P9.<br />
<br />
[[File:HeaderP9.jpg|800px]]<br />
<br />
On the first photo above you can see that pin 1 (Ground) is wired to the '''-''' bus and pin 3 (3.3V) is wired to the '''+''' bus. The 220&Omega; resistor is wired to the '''-''' bus and the other end is attached to the negative lead of the LED. The positive lead is attached to pin 12 which, as shown in Table 11, is attached to '''gpio1_28'''. The gpio pins are in banks of 32 each, so to find the gpio number to use on the Beagle, use 1*32+28='''60'''. Here's how you turn it on<br />
<br />
beagle$ '''cd /sys/class/gpio'''<br />
beagle$ '''ls -F'''<br />
export gpiochip0@ gpiochip32@ gpiochip64@ gpiochip96@ unexport<br />
<br />
Presently no gpio pins are visible. You need to tell it which pin to export<br />
<br />
beagle$ '''echo 60 > export'''<br />
beagle$ '''ls -F'''<br />
export gpio60@ gpiochip0@ gpiochip32@ gpiochip64@ gpiochip96@ unexport<br />
<br />
Notice '''gpio60''' has appeared. All we need to do is tell it which direction and then turn it on.<br />
<br />
beagle$ '''cd gpio60'''<br />
beagle$ '''echo out > direction'''<br />
beagle$ '''echo 1 > value'''<br />
<br />
Your LED should be on! When you are done you can unexport the pin and it will disappear.<br />
beagle$ '''cd ..'''<br />
beagle$ '''echo 60 > unexport'''<br />
<br />
== Reading a switch ==<br />
<br />
Now that you have an LED working, wiring in a switch is easy. The picture above shows a push button switch wired in at the bottom of the P9 header. Attach the '''+''' bus to one pole on the switch with a wire. The other end of the switch is attached to pin 42 which is '''gpio0_7'''. <br />
<br />
Based on what you saw above, show how to read the switch.<br />
<br />
Once you have the switch and LED working you can use the following scripts to play with them.<br />
<br />
beagle$ '''cd ~/exercises/gpio'''<br />
beagle$ '''./togglegpio.sh 60 0.1'''<br />
<br />
The LED should be blinking on and off.<br />
<br />
beagle$ '''./readgpio.sh 7'''<br />
<br />
Push the pushbutton and see what happens.<br />
<br />
How can this work without a pulldown resistor? It turns out the Bone has an internal pulldown (and up) resistor that can be software enabled. We'll discuss how when we cover device trees.<br />
<br />
=== Challenge ===<br />
<br />
* Can you modify the scripts above to read the switch and turn the LED on and off?<br />
<br />
== Assignment: gpio from the shell ==<br />
<br />
=== <span style="color:green;">Measuring a gpio pin on an Oscilloscope</span> ===<br />
<br />
Get an oscilloscope so you can measure the output of your gpio pins. Run<br />
beagle$ '''./togglegpio.sh 60 0.1'''<br />
<br />
and answer the following questions about gpio measurements.<br />
<br />
# What's the min and max voltage? <br />
# What period is it? <br />
# How close is it to 100ms? <br />
# Why do they differ?<br />
# Run '''htop''' and see how much processor you are using.<br />
# Try different values for the sleep time (2nd argument). What's the shortest period you can get? Make a table of the values you try and the corresponding period and processor usage.<br />
# How stable is the period? <br />
# Try launching something like '''mplayer'''. How stable is the period?<br />
# Try cleaning up togglegpio.sh and removing unneeded lines. Does it impact the period?<br />
# togglegpio uses bash (first line in file). Try using sh. Is the period shorter?<br />
# What's the shortest period you can get?<br />
<br />
=== Toggling the LEDs ===<br />
<br />
Modify togglegpio.sh (call it toggleLED) to toggle the on-board LEDs. Can you get the LED to appear to dim by changing the duty cycle of the toggling?<br />
<br />
=== Count the User Button Presses ===<br />
<br />
Write a shell script that displays a count of the number of times the Button has been pressed.<br />
<br />
=== Copy gpio 7 to gpio 60===<br />
<br />
Write a shell script that copies the value of gpio pin 7 (your switch) to gpio pin 60 (Your LED). How much CPU time does it take? What's the delay from the time the input changes until the output changes? How constant is the delay?<br />
<br />
You may need to get a function generator and set it to a square wave (0 to 3.3V) and attach it to pin 7 and attached an oscilloscope to pin 60.<br />
<br />
== Resources ==<br />
<br />
# [http://wh1t3s.com/2009/05/14/reading-beagleboard-gpio/ Here] is wh1ts article on flashing an LED. It is referenced in the '''readgpio''' file that comes on the Beagle.<br />
# [http://blog.makezine.com/archive/2009/02/blinking-leds-with-the-beagle-board.html?CMP=OTC-0D6B48984890 This] Make magazine article has a few more details.<br />
# [http://www.avrfreaks.net/wiki/index.php/Documentation:Linux/GPIO#Getting_access_to_a_GPIO Here] in a gpio reference for Linux in general. It includes sample 'C' code for flashing at 1 Hz.<br />
# [https://groups.google.com/forum/?hl=en#!msg/beagleboard/20rM-r8C2YY/hVZiN2ahI8YJ Here] is a posting in the Beagle Google group about gpio.<br />
# [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/gpio.txt;h=36af58eba136bac198ea3b1f33f34236be9ce5df;hb=HEAD Here] is some information about gpio from the kernel point of view.<br />
# [http://wiki.gumstix.org/index.php?title=GPIO_Event_Driver Here] is some info on a GPIO Event Driver<br />
# [https://www.ridgerun.com/developer/wiki/index.php/How_to_use_GPIO_signals Here] is info on how to set '''edge''' to falling and poll() the pin.<br />
# [http://www.kernel.org/doc/Documentation/gpio.txt Here] is the kernel Documentation on gpio.<br />
<br />
{{YoderFoot}}</div>Rpjdayhttps://elinux.org/index.php?title=EBC_Exercise_10_Flashing_an_LED&diff=282632EBC Exercise 10 Flashing an LED2013-08-31T10:04:28Z<p>Rpjday: Lots of little cleanups up to the "Adding your own LED" section</p>
<hr />
<div>[[Category:EmbeddedBeagleClass]]<br />
[[Category:ECE497]]<br />
{{YoderHead}}<br />
{{EBC3.8}}This page is for the Bone (Black or White) running the 3.8 Kernel. See [[EBC_Exercise_10_Flashing_an_LED_-_xM_WhiteBone]] for the White Bone or xM running 3.2.<br />
<br />
The [http://en.wikipedia.org/wiki/Hello_world_program "Hello World"] program is the traditional first program for many classes. Flashing an LED is the embedded equivalent. Here we will explore a few ways to flash an LED on the Beagle and explore General Purpose I/O (gpio) along the way. These calls will be done from the command line of the Beagle, so there is no need for the host computer.<br />
<br />
== gpio via the Shell Command Line and sysfs ==<br />
<br />
('''Note''': Draw the new diagrams with [http://engineersofthecorn.blogspot.com/2012/06/fritzing-part-for-beaglebone.html this].)<br />
<br />
The easiest way to do general purpose I/O (gpio) on the Beagle is through a terminal window and a shell prompt. In Linux, almost everything is treated as a file, even things that aren't files. In our class we'll use a virtual file system called '''sysfs'''. sysfs exposes the drivers for the hardware so you can easily use them.<br />
<br />
Try this, open a terminal and type:<br />
<br />
beagle$ '''cd /sys'''<br />
beagle$ '''ls -F'''<br />
block/ bus/ class/ dev/ devices/ firmware/ fs/ kernel/ module/ power/<br />
<br />
Here we see several directories that represent hardware we can control. Explore a bit and see what you find.<br />
<br />
Now try:<br />
<br />
beagle$ '''cd /sys/class'''<br />
beagle$ '''ls -F'''<br />
backlight/ firmware/ lcd/ mtd/ scsi_disk/ ubi/<br />
bdi/ gpio/ leds/ net/ scsi_host/ udc/<br />
block/ graphics/ mbox/ power_supply/ sound/ uio/<br />
bluetooth/ hwmon/ mdio_bus/ regulator/ spi_master/ usbmon/<br />
bsg/ i2c-adapter/ mem/ rfkill/ spidev/ vc/<br />
dma/ i2c-dev/ misc/ rtc/ thermal/ vtconsole/<br />
drm/ input/ mmc_host/ scsi_device/ tty/ watchdog/<br />
<br />
Explore some. What do you find? In '''graphics''' you will see the frame buffer supported by the processor. In '''sound''' you'll see the [http://www.alsa-project.org/main/index.php/Main_Page alsa] sound devices.<br />
<br />
== Flashing the user LEDs ==<br />
<br />
The Beagle Black has four user LEDS, '''usr0''' - '''usr3''', that you can control. Try this:<br />
<br />
beagle$ '''cd /sys/class/leds'''<br />
beagle$ '''ls -1F'''<br />
beaglebone:green:usr0@<br />
beaglebone:green:usr1@<br />
beaglebone:green:usr2@<br />
beaglebone:green:usr3@<br />
<br />
<br />
Here you see the directories for controlling each of the user LEDs. By default, usr0 flashes a heartbeat pattern and usr1 flashes when the micro SD card is accessed. Let's control usr0.<br />
<br />
beagle$ '''cd beagleboard\:green\:usr0'''<br />
beagle$ '''ls -F'''<br />
brightness device@ max_brightness power/ subsystem@ trigger uevent<br />
<br />
See what's in '''brightness''', '''max_brightness''' and '''trigger''' by using the <code>cat</code> command. For example:<br />
<br />
beagle$ '''cat trigger'''<br />
none nand-disk mmc0 mmc1 timer oneshot [heartbeat] backlight gpio cpu0 default-on transient<br />
<br />
This shows trigger can have many values. The present value is '''heartbeat'''. Check the LED, is it beating? You can stop the heartbeat via:<br />
<br />
beagle$ '''echo none > trigger'''<br />
beagle$ '''cat trigger'''<br />
[none] nand-disk mmc0 timer oneshot heartbeat backlight gpio cpu0 default-on transient <br />
<br />
Did it stop beating? You can now turn it on and off with:<br />
<br />
beagle$ '''echo 1 > brightness'''<br />
beagle$ '''echo 0 > brightness'''<br />
<br />
Is it responding correctly?<br />
<br />
The Bone has more trigger options. Try:<br />
<br />
beagle$ '''cat trigger'''<br />
[none] mmc0 timer heartbeat backlight gpio default-on <br />
beagle$ '''echo timer > trigger'''<br />
beagle$ '''ls -F'''<br />
brightness delay_on max_brightness subsystem@ uevent<br />
delay_off device@ power/ trigger<br />
beagle$ '''echo 100 > delay_on'''<br />
beagle$ '''echo 900 > delay_off'''<br />
<br />
What does this do?<br />
<br />
== Adding your own LED ==<br />
<br />
It's not hard to use the gpio pins to control your own LED. All you need is an LED and a 220&Omega; resistor. Here's a picture of how it's wired. We are just doing the LED at the top of the breadboard for now.<br />
<br />
[[File:Bone gpio.JPG|300px]]<br />
[[File:BoneGPIO.png|300px]]<br />
<br />
So how do you know where to connect it? The BeagleBone [https://github.com/CircuitCo/BeagleBone-Black/blob/master/BBB_SRM.pdf?raw=true System Reference Manual] has the details. Figure 45 on page 74 shows:<br />
<br />
[[File:BlackHeaders.jpg]]<br />
<br />
There at two expansion headers, P8 and P9. Look at the bottom of the left header and you'll see it's labeled '''P9'''. Table 11 on page 78 shows the pinout for P9.<br />
<br />
[[File:HeaderP9.jpg|800px]]<br />
<br />
On the first photo above you can see that pin 1 (Ground) is wired to the '''-''' bus and pin 3 (3.3V) is wired to the '''+''' bus. The 220&Omega; resistor is wired to the '''-''' bus and the other end is attached to the negative lead of the LED. The positive lead is attached to pin 12 which, as shown in Table 11, is attached to '''gpio1_28'''. The gpio pins are in banks of 32 each, so to find the gpio number to use on the Beagle, use 1*32+28='''60'''. Here's how you turn it on<br />
<br />
beagle$ '''cd /sys/class/gpio'''<br />
beagle$ '''ls -F'''<br />
export gpiochip0@ gpiochip32@ gpiochip64@ gpiochip96@ unexport<br />
<br />
Presently no gpio pins are visible. You need to tell it which pin to export<br />
<br />
beagle$ '''echo 60 > export'''<br />
beagle$ '''ls -F'''<br />
export gpio60@ gpiochip0@ gpiochip32@ gpiochip64@ gpiochip96@ unexport<br />
<br />
Notice '''gpio60''' has appeared. All we need to do is tell it which direction and then turn it on.<br />
<br />
beagle$ '''cd gpio60'''<br />
beagle$ '''echo out > direction'''<br />
beagle$ '''echo 1 > value'''<br />
<br />
Your LED should be on! When you are done you can unexport the pin and it will disappear.<br />
beagle$ '''cd ..'''<br />
beagle$ '''echo 60 > unexport'''<br />
<br />
== Reading a switch ==<br />
<br />
Now that you have an LED working, wiring in a switch is easy. The picture above shows a push button switch wired in at the bottom of the P9 header. Attach the '''+''' bus to one pole on the switch with a wire. The other end of the switch is attached to pin 42 which is '''gpio0_7'''. <br />
<br />
Based on what you saw above, show how to read the switch.<br />
<br />
Once you have the switch and LED working you can use the following scripts to play with them.<br />
<br />
beagle$ '''cd ~/exercises/gpio'''<br />
beagle$ '''./togglegpio.sh 60 0.1'''<br />
<br />
The LED should be blinking on and off.<br />
<br />
beagle$ '''./readgpio.sh 7'''<br />
<br />
Push the pushbutton and see what happens.<br />
<br />
How can this work without a pulldown resistor? It turns out the Bone has an internal pulldown (and up) resistor that can be software enabled. We'll discuss how when we cover device trees.<br />
<br />
=== Challenge ===<br />
<br />
* Can you modify the scripts above to read the switch and turn the LED on and off?<br />
<br />
== Assignment: gpio from the shell ==<br />
<br />
=== <span style="color:green;">Measuring a gpio pin on an Oscilloscope</span> ===<br />
<br />
Get an oscilloscope so you can measure the output of your gpio pins. Run<br />
beagle$ '''./togglegpio.sh 60 0.1'''<br />
<br />
and answer the following questions about gpio measurements.<br />
<br />
# What's the min and max voltage? <br />
# What period is it? <br />
# How close is it to 100ms? <br />
# Why do they differ?<br />
# Run '''htop''' and see how much processor you are using.<br />
# Try different values for the sleep time (2nd argument). What's the shortest period you can get? Make a table of the values you try and the corresponding period and processor usage.<br />
# How stable is the period? <br />
# Try launching something like '''mplayer'''. How stable is the period?<br />
# Try cleaning up togglegpio.sh and removing unneeded lines. Does it impact the period?<br />
# togglegpio uses bash (first line in file). Try using sh. Is the period shorter?<br />
# What's the shortest period you can get?<br />
<br />
=== Toggling the LEDs ===<br />
<br />
Modify togglegpio.sh (call it toggleLED) to toggle the on-board LEDs. Can you get the LED to appear to dim by changing the duty cycle of the toggling?<br />
<br />
=== Count the User Button Presses ===<br />
<br />
Write a shell script that displays a count of the number of times the Button has been pressed.<br />
<br />
=== Copy gpio 7 to gpio 60===<br />
<br />
Write a shell script that copies the value of gpio pin 7 (your switch) to gpio pin 60 (Your LED). How much CPU time does it take? What's the delay from the time the input changes until the output changes? How constant is the delay?<br />
<br />
You may need to get a function generator and set it to a square wave (0 to 3.3V) and attach it to pin 7 and attached an oscilloscope to pin 60.<br />
<br />
== Resources ==<br />
<br />
# [http://wh1t3s.com/2009/05/14/reading-beagleboard-gpio/ Here] is wh1ts article on flashing an LED. It is referenced in the '''readgpio''' file that comes on the Beagle.<br />
# [http://blog.makezine.com/archive/2009/02/blinking-leds-with-the-beagle-board.html?CMP=OTC-0D6B48984890 This] Make magazine article has a few more details.<br />
# [http://www.avrfreaks.net/wiki/index.php/Documentation:Linux/GPIO#Getting_access_to_a_GPIO Here] in a gpio reference for Linux in general. It includes sample 'C' code for flashing at 1 Hz.<br />
# [https://groups.google.com/forum/?hl=en#!msg/beagleboard/20rM-r8C2YY/hVZiN2ahI8YJ Here] is a posting in the Beagle Google group about gpio.<br />
# [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/gpio.txt;h=36af58eba136bac198ea3b1f33f34236be9ce5df;hb=HEAD Here] is some information about gpio from the kernel point of view.<br />
# [http://wiki.gumstix.org/index.php?title=GPIO_Event_Driver Here] is some info on a GPIO Event Driver<br />
# [https://www.ridgerun.com/developer/wiki/index.php/How_to_use_GPIO_signals Here] is info on how to set '''edge''' to falling and poll() the pin.<br />
# [http://www.kernel.org/doc/Documentation/gpio.txt Here] is the kernel Documentation on gpio.<br />
<br />
{{YoderFoot}}</div>Rpjdayhttps://elinux.org/index.php?title=EBC_Exercise_03_Installing_a_Beagle_OS&diff=282488EBC Exercise 03 Installing a Beagle OS2013-08-30T13:48:17Z<p>Rpjday: Minor typo fix.</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
In this class we run [http://www.angstrom-distribution.org/ The Ångström Distribution] on the BeagleBoard. Ångström is a stable and user-friendly distribution of Linux for embedded devices like handhelds, set top boxes and network-attached storage devices and the BeagleBoard.<br />
<br />
Here's how to load the Ångström image we'll be using on an SD card. First get a microSD card that holds at least 4G.<br />
== Kernel 3.8 ==<br />
{{EBC3.8}}This is the kernel used for the Fall 2013 class.<br />
<br />
Follow these [http://beagleboard.org/Getting%20Started#update instructions] for setting up your Bone to run the latest OS. When following these instructions you'll want to download the eMMC Flasher image from the [http://beagleboard.org/latest-images latest-images] page.<br />
<br />
It does indeed take some 45 minutes to flash Black Bone!<br />
<br />
Once you've successfully updated your Bone, post a note on the ECE497 Google Group.<br />
<br />
== Kernel 3.2 ==<br />
{{EBC3.2}}This is the kernel used for the Fall 2012 class.<br />
<br />
=== Download and write a copy of the Ångström image ===<br />
==== bone ====<br />
<br />
I'm presently running the SD image that comes with [http://circuitco.com/support/index.php?title=BeagleBone_A6A_Image_08.14.2012 BeagleBone Rev A6A]. Here are the [http://circuitco.com/support/index.php?title=BeagleBone_A6A_Image_08.14.2012 Release Notes].<br />
<br />
If you are on campus do<br />
<br />
host$ '''cd Downloads'''<br />
host$ '''wget http://www.rose-hulman.edu/~yoder/Beagle/BeagleBone_Rev_A6A_Production_08_14_2012.7z'''<br />
host$ '''wget http://www.rose-hulman.edu/~yoder/Beagle/BeagleBone_Rev_A6A_Production_08_14_2012.md5'''<br />
<br />
If you are off campus<br />
<br />
host$ '''cd Downloads'''<br />
host$ '''wget http://circuitco.com/support/files/BeagleBone-A6A/BeagleBone_Rev_A6A_Production_08_14_2012.7z'''<br />
host$ '''wget http://circuitco.com/support/files/BeagleBone-A6A/BeagleBone_Rev_A6A_Production_08_14_2012.md5'''<br />
<br />
The first '''wget''' command gets the disk image. The second gets the checksum. Uncompress the image and verify that it was downloaded correctly.<br />
<br />
host$ '''sudo apt-get install p7zip-full'''<br />
host$ '''7z e BeagleBone_Rev_A6A_Production_08_14_2012.7z''' (takes about 2.5 minutes)<br />
host$ '''cat BeagleBone_Rev_A6A_Production_08_14_2012.md5''' <br />
# MD5 checksums generated by MD5summer (http://www.md5summer.org)<br />
# Generated 8/27/2012 10:37:00 AM<br />
<br />
8e9a97f73c26fdc5746862c5a447e652 *BeagleBone_Rev_A6A_Production_08_14_2012.7z<br />
4de07c7f0023ac063854be67752ce066 *BeagleBone_Rev_A6A_Production_08_14_2012.img<br />
<br />
beagle$ '''md5sum BeagleBone_Rev_A6A_Production_08_14_2012.7z''' <br />
8e9a97f73c26fdc5746862c5a447e652 BeagleBone_Rev_A6A_Production_08_14_2012.7z<br />
<br />
If the numbers from the '''cat''' command match the numbers from the '''md5sum''' command, then you have a good image. Insert your microSD card in a reader/writer and find the path to it by running '''System:Administration:Disk Utility'''. You will see<br />
<br />
[[File:Screenshot-Disk_Utility.png| 400x293px]]<br />
<br />
The path is in the upper right.<br />
<br />
Then enter (if you're using Ubuntu, note the use of the '''sudo''' command):<br />
<br />
host$ '''sudo dd if=BeagleBone_Rev_A6A_Production_08_14_2012.img of=/dev/sd''X'' bs=8M''' <br />
<br />
Where <code>/dev/sd''X''</code> is the path to your SD card. This may take 10 minutes. Mine took about 7.5.<br />
<br />
Plug the card into your BeagleBone and boot. Try the following commands.<br />
<br />
beagle$ '''uname -a'''<br />
Linux beaglebone 3.2.18 #1 Thu Jun 14 23:26:20 CEST 2012 armv7l GNU/Linux<br />
beagle$ '''cat /proc/cmdline'''<br />
console=ttyO0,115200n8 run_hardware_tests quiet root=/dev/mmcblk0p2 ro<br />
rootfstype=ext4 rootwait ip=none<br />
<br />
==== xM ====<br />
Download a copy of the image [http://www.rose-hulman.edu/~yoder/Beagle/ here]. You'll see several files here. You want to download '''ETC2012.img.bz2''' and '''ETC2012.img.bz2.md5'''. The first is some 1.5G, so it will take a while. The second is a check sum file for the first. <br />
<br />
Once you have the two files and the card, what you do with them depends on what OS you are running.<br />
<br />
host$ '''md5sum ETC2012.img.bz2'''<br />
host$ '''cat ETC2012.img.bz2.md5'''<br />
<br />
The two command should show the same thing<br />
6610e1ea35febc5e9016734213bdba68 ETC2012.img.bz2<br />
<br />
If your results match you have successfully downloaded the image and can move on. If they don't match, try downloading again.<br />
<br />
Next uncompress the image. <br />
host$ '''bunzip2 -k ETC2012.img.bz2''' <br />
The '''-k''' says to keep the compressed file. This will take a few minutes. <br />
<br />
Insert your microSD card in a reader/writer and find the path to it by running '''System:Administration:Disk Utility'''. You will see<br />
<br />
[[File:Screenshot-Disk_Utility.png| 400x293px]]<br />
<br />
The path is in the upper right.<br />
<br />
Then enter (if you're using Ubuntu, note the use of the '''sudo''' command):<br />
<br />
host$ '''sudo dd if=ETC2012.img of=/dev/sd''X'' bs=256M'''<br />
host$ '''sync'''<br />
<br />
Where <code>/dev/sd''X''</code> is the path to your SD card. This may take 10 minutes. Mine took about 7.5.<br />
<br />
During this time the cursor may merely blink, don't worry, its not frozen. This command is rather basic and simply doesn't provide any feed back until completion.<br />
<br />
An alternative recipe is to uncompress and write the content to your SD card all in one move (again, if you're using Ubuntu, note the need for '''sudo'''):<br />
<br />
host$ '''bunzip2 -c ETC2012.img.bz2 | sudo dd of=/dev/sd''X'' bs=256M'''<br />
<br />
so that you don't have to uncompress the image file first.<br />
<br />
=== Writing an SD card via Windows ===<br />
<br />
The following instructions come from [http://code.google.com/p/beagleboard/wiki/BeagleBoardDiagnosticsNext here].<br />
<br />
To initialize your card under Windows, you can do the following:<br />
<br />
# Download and install [https://wiki.ubuntu.com/Win32DiskImager Ubuntu's Win32DiskImager] (also known as the [https://launchpad.net/win32-image-writer/ win32-image-writer]).<br />
# Download and install [http://www.7-zip.org/ 7-zip compression software]. (Or use winRAR)<br />
# Decompress '''ETC2012.img.bz2''' image file using 7-zip (or winRAR).<br />
# Insert >=4GB SD card into the reader/writer.<br />
# Start the Win32DiskImager.<br />
# Select '''ETC2012.img''' and correct SD card location.<br />
# Click on '''Write'''.<br />
After the image writing is done (this will take some 10 minutes), eject the SD card.<br />
<br />
{{YoderFoot}}</div>Rpjdayhttps://elinux.org/index.php?title=EBC_Exercise_02_Out-of-the-Box,_Bone&diff=282470EBC Exercise 02 Out-of-the-Box, Bone2013-08-30T13:23:08Z<p>Rpjday: Various minor formatting, grammar and typo fixes.</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
{{EBC3.8}}'''These instructions are for the 3.8 kernel.''' [[EBC Exercise 02 Out-of-the-Box, Bone 3.2 Kernel]] has instructions for the 3.2 kernel.<br />
<br />
== Getting Started ==<br />
We'll be running the 3.8 kernel, check out these [http://beagleboard.org/Getting%20Started instructions] for getting started. Then come back here to get your network set up.<br />
<br />
== Internet Connection ==<br />
<br />
One of the slickest features of the Bone is its ability to access the Internet through the USB (tether) connection. You should have already used it following the instructions above. Below shows how to set up your host and Bone so the bone can access the internet through your host.<br />
<br />
=== Linux ===<br />
==== ifconfig ====<br />
Run:<br />
<br />
host$ '''ifconfig'''<br />
eth0 Link encap:Ethernet HWaddr 00:18:8b:72:b8:c2 <br />
inet addr:137.112.41.109 Bcast:137.112.41.255 Mask:255.255.255.0<br />
inet6 addr: fe80::218:8bff:fe72:b8c2/64 Scope:Link<br />
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1<br />
RX packets:8481193 errors:0 dropped:0 overruns:0 frame:0<br />
TX packets:1871287 errors:0 dropped:0 overruns:0 carrier:0<br />
collisions:0 txqueuelen:1000 <br />
RX bytes:3172154531 (3.1 GB) TX bytes:203188180 (203.1 MB)<br />
Interrupt:19 <br />
<br />
eth4 Link encap:Ethernet HWaddr d4:94:a1:39:ff:ff <br />
inet addr:192.168.7.1 Bcast:192.168.7.3 Mask:255.255.255.252<br />
inet6 addr: fe80::d694:a1ff:fe39:ffff/64 Scope:Link<br />
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1<br />
RX packets:8 errors:0 dropped:0 overruns:0 frame:0<br />
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0<br />
collisions:0 txqueuelen:1000 <br />
RX bytes:2775 (2.7 KB) TX bytes:1234 (1.2 KB)<br />
<br />
lo Link encap:Local Loopback <br />
inet addr:127.0.0.1 Mask:255.0.0.0<br />
inet6 addr: ::1/128 Scope:Host<br />
UP LOOPBACK RUNNING MTU:16436 Metric:1<br />
RX packets:37315 errors:0 dropped:0 overruns:0 frame:0<br />
TX packets:37315 errors:0 dropped:0 overruns:0 carrier:0<br />
collisions:0 txqueuelen:0 <br />
RX bytes:3665320 (3.6 MB) TX bytes:3665320 (3.6 MB)<br />
<br />
==== ssh ====<br />
You'll see a new network has appeared, '''eth4''' in my case. The IP address of your host is '''192.168.7.1'''. There's a good chance the Bone is at '''192.168.7.''2'''''. Try connecting to it.<br />
host$ '''ssh -X root@192.168.7.2'''<br />
beagle$ <br />
You are now logged into the Bone through the network. This is much faster than the serial port (.115M vs. 100M) and supports many interesting network operations. The only problem is, the Beagle doesn't know how to access the Internet through the host. Get back to the host computer by entering RETURN ~ ^Z. That is, hit RETURN, then ~ (it's up there near the ESC key) and then Ctrl-Z. This gets you back to your host, but leaves the ssh connection running. <br />
<br />
==== host.ipForward.sh ====<br />
Copy the following lines into a file call '''host.ipForward.sh'''<br />
<br />
<pre><br />
#!/bin/bash<br />
# These are the commands to run on the host to setup IP masquerading so the Beagle<br />
# can access the Internet through the USB connection.<br />
# Inspired by http://thoughtshubham.blogspot.com/2010/03/internet-over-usb-otg-on-beagleboard.html<br />
<br />
if [ $# -eq 0 ] ; then<br />
echo "Usage: $0 interface (such as eth0 or wlan0)"<br />
exit 1<br />
fi<br />
<br />
interface=$1<br />
hostAddr=192.168.7.1<br />
beagleAddr=192.168.7.2<br />
ip_forward=/proc/sys/net/ipv4/ip_forward<br />
<br />
if [ `cat $ip_forward` == 0 ]<br />
then<br />
echo "You need to set IP forwarding. Edit /etc/sysctl.conf using:"<br />
echo "$ sudo gedit /etc/sysctl.conf"<br />
echo "and uncomment the line \"net.ipv4.ip_forward=1\""<br />
echo "to enable forwarding of packets. Then run the following:"<br />
echo "$ sudo sysctl -p"<br />
exit 1<br />
else<br />
echo "IP forwarding is set on host."<br />
fi<br />
# Setup IP masquerading on the host<br />
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o $interface -j MASQUERADE<br />
<br />
# Check to see what nameservers the host is using and copy these to the same<br />
# file on the Beagle<br />
# This makes it so you can connect to the Beagle without using your password.<br />
ssh-copy-id root@$beagleAddr<br />
# Save the /etc/resolv.conf on the Beagle in case we mess things up.<br />
ssh root@$beagleAddr "mv -n /etc/resolv.conf /etc/resolv.conf.orig"<br />
# Copy the resolv.conf file to the Beagle. Now the Beagle will use the<br />
# same name servers as the host.<br />
cat - << EOF > /tmp/resolv.conf<br />
# This is installed by host.ipForward.sh on the host<br />
# Mark A. Yoder, 25-Aug-2013<br />
search rose-hulman.edu dhcp.rose-hulman.edu wlan.rose-hulman.edu<br />
<br />
EOF<br />
<br />
# Use the campus name servers if on compus, otherwise use the Google name servers<br />
if ifconfig | grep "addr:137.112."; then<br />
cat - << EOF >> /tmp/resolv.conf<br />
nameserver 137.112.18.59<br />
nameserver 137.112.5.28<br />
nameserver 137.112.4.196<br />
EOF<br />
else<br />
cat - << EOF >> /tmp/resolv.conf<br />
nameserver 8.8.8.8<br />
nameserver 8.8.4.4<br />
EOF<br />
fi<br />
scp /tmp/resolv.conf root@$beagleAddr:/etc<br />
# Tell the beagle to use the host as the gateway.<br />
ssh root@$beagleAddr "/sbin/route add default gw $hostAddr"<br />
</pre><br />
<br />
==== Running host.ipForward.sh ====<br />
Now run:<br />
host$ '''chmod +x host.ipForward.sh'''<br />
host$ '''./host.ipForward.sh ''eth0'''''<br />
This will give you instructions on how to set up your host and will remotely set up your Beagle.<br />
Note: If you are using a wireless connection you should use<br />
<br />
host$ '''./host.ipForward.sh ''wlan0'''''<br />
<br />
Once ./host.ipForward.sh has been run you can:<br />
host$ '''fg'''<br />
ssh -X root@192.168.7.2<br />
(Hit RETURN)<br />
beagle$ '''ping google.com'''<br />
<br />
You should see Google responding. Hit Ctrl-C to stop.<br />
<br />
Congratulations! Your Beagle is now on the network through your host computer.<br />
<br />
=== OSX ===<br />
I haven't checked these instructions this year. Please report your results and update if needed.<br />
<br />
# go to '''System Preferences''' and select '''Network'''<br />
# You should see '''RNDIS/...Gadget'''. This is the network connection to the Beagle. Select it<br />
# Wait for the IP address '''192.168.7.1''' to appear<br />
# Click '''Show All''' and select '''Sharing'''<br />
# Select '''Internet Sharing'''<br />
# Select '''RNDIS/Ethernet Gadget'''<br />
<br />
In a terminal window connect to the serial port<br />
<br />
host$ '''screen /dev/ttyusb*B 115200'''<br />
beagle$ '''udhcpc -i usb0'''<br />
beagle$ '''ping google.com'''<br />
<br />
This is all nicely shown [http://www.youtube.com/watch?v=Cf9hnscbSK8&feature=youtu.be here] in this silent YouTube movie.<br />
<br />
Congratulations, you now have a connection from your BeagleBone to the Internet.<br />
<br />
=== Windows 7 ===<br />
I haven't checked these either. Please report results and update if needed.<br />
<br />
There are several ways of running ssh on Windows 7. Below are a couple of tools that you can use.<br />
<br />
==== Environment Setup ====<br />
<br />
You can either run ssh from a bash terminal (i.e. '''C:\Program Files\Git\Git Bash''' or '''C:\cygwin\Cygwin.bat'''), or you can add the bin directories to your path and run from the Windows command prompt (i.e. add '''C:\Program Files\Git\bin''' or '''C:\cygwin\bin''' to your path).<br />
<br />
Note: Be careful adding multiple bin directories to your path<br />
<br />
First time setup<br />
# Run '''regedit'''<br />
# Navigate to '''Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters'''<br />
# Change '''IPEnableRouter''' from 0 to 1<br />
# Close '''regedit'''<br />
# Run '''services'''<br />
# Make sure the following are set to '''Automatic''' and are started<br />
## Routing and Remote Access<br />
## Internet Connection Sharing (ICS)<br />
<br />
==== Connecting to the Internet ====<br />
<br />
After ejecting<br />
# Navigate to '''Control Panel\Network and Internet\Network and Sharing Center\Change adapter settings'''<br />
# Right click your wired/wireless internet connection and go to '''Properties'''<br />
# Go to the '''Sharing''' tab<br />
# Check the box to '''Allow other network users to connect through this computer's Internet connection'''<br />
# Select your bone's local area connection for the '''Home networking connection''' (if you cannot choose the local area connection, turn your internet connection sharing off and then back on)<br />
<br />
Open a command prompt or bash terminal and run the following:<br />
<br />
host$ '''ping 192.168.7.2'''<br />
<br />
If this ping times out then disable and re-enable your bone's local area connection and try again. Once it works run the following:<br />
<br />
host$ '''ssh root@192.168.7.2'''<br />
<br />
Login as root and run the following:<br />
<br />
beagle$ '''echo "nameserver 8.8.8.8" > /etc/resolv.conf'''<br />
beagle$ '''echo "nameserver 8.8.8.4" >> /etc/resolv.conf'''<br />
beagle$ '''/sbin/route add default gw 192.168.7.1'''<br />
beagle$ '''ping google.com'''<br />
<br />
Congratulations, you now have a connection from your BeagleBone through your Linux host to the Internet.<br />
<br />
{{YoderFoot}}</div>Rpjdayhttps://elinux.org/index.php?title=EBC_Exercise_01_Start_Here&diff=282254EBC Exercise 01 Start Here2013-08-29T12:34:39Z<p>Rpjday: Minor typoes.</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
== Overview ==<br />
<br />
There are four major things that need to be done to have the BeagleBoard ready to run for class:<br />
# Get your Beagle Hardware together<br />
# Update the OS on your Beagle<br />
# Set up a host computer, running Linux for code development<br />
# Clone the course git repository on both the Beagle and the host<br />
<br />
== The Hardware ==<br />
<br />
Here's the hardware you will need and where you get it.<br />
<br />
=== You may have, or will have to buy ===<br />
<br />
We are using the [http://beagleboard.org/Getting%20Started BeagleBone Black] this year. Since it's only $45 I'll have you buy your your own. There's a few other things you will need to get before the first day of class.<br />
* BeagleBone Black. See [http://beagleboard.org/ http://beagleboard.org/] for suggestions of where to buy the Black. I suggest ordering sooner rather than later since it may take a couple of weeks. <br />
* USB keyboard and mouse<br />
* HDMI display<br />
* At least three 4G micro SD cards. I suggest you have 3 or 4 cards since it's easy to mess up one and it takes some 10 minutes to reload it.<br />
* micro SD card reader/writer<br />
* Powered USB hub, at least 4 ports. The Black has only one USB so this will allow you to plug in the keyboard, mouse, web cam, etc.<br />
<br />
==== Books ====<br />
* [http://www.amazon.com/Embedded-Linux-Primer-Practical-Real-World/dp/0137017839 Embedded Linux Primer] The bookstore will have this.<br />
* [http://www.morganclaypool.com/doi/abs/10.2200/S00500ED1V01Y201304DCS041 Bad to the Bone] Don't buy this yet, I think I can get you a free copy.<br />
<br />
=== What you buy from the Instrument Room ===<br />
* Proto Plate with full sized breadboard<br />
* various input devices, sensors, displays, etc.<br />
<br />
=== What you borrow from the Instrument Room ===<br />
* 5V power supply<br />
* [http://us.playstation.com/ps3/accessories/playstation-eye-camera-ps3.html Playstation EYE] web cam<br />
* [http://www.monoprice.com/products/product.asp?c_id=104&cp_id=10419&cs_id=1041913&p_id=7703&seq=1&format=2 micro HDMI to HDMI adapter]<br />
* [https://www.sparkfun.com/products/9717 FTDI USB to Serial Adapter] Must be 3.3V version<br />
* [http://www.adafruit.com/products/902 Bicolor LED Square Pixel Matrix with I2C Backpack]<br />
* Two (2) [http://www.ti.com/product/tmp101 TMP101] temperature sensors<br />
* [http://www.ti.com/product/tmp006 TMP006] Infrared Thermopile Sensor (too small to mount, we won't use this)<br />
* [http://www.ti.com/product/pca9306 PCA9306 Dual Bi-Directional I2C-Bus and SMBus Voltage Level-Translator]<br />
* [http://www.ti.com/product/l293 L293 Quadruple Half-H Drivers]<br />
<br />
== Updating the Beagle OS ==<br />
<br />
Once you have all your hardware together go ahead and [http://beagleboard.org/Getting%20Started explore the Bone]. It should work right out of the box. After you have explored a while, update the image on the Bone so you are running the most current image. Go to [[EBC Exercise 03 Installing a Beagle OS]] to learn how to flash your SD card with a fresh OS.<br />
<br />
== The Linux host computer ==<br />
<br />
The above will get you ready for about the first 4 weeks of class. Around week 5 we'll start looking at the kernel and will need to cross compile. Once we start moving into Kernel development we will need a host computer. Since we are doing Linux development, it's generally agree the host should be running Linux. I suggest you run [http://www.ubuntu.com Ubuntu 12.04 (LTS)]. The CSSE department has a [ftp://ftp.csse.rose-hulman.edu/ubuntu-releases/12.04.2 local copy] so you don't have to download some 700M. You want the '''desktop-amd64.iso''' if you have a 64-bit machine, or the '''desktop-i386.iso''' if you are running 32-bits.<br />
<br />
There are three options as to how to run Linux.<br />
# Native install ([http://www.ubuntu.com/download])<br />
# Install in a virtual machine. I've been running [[EBC Exercise 06 Notes on VirtualBox | Virtual Box]] recently and it seems to work fine. You can also try [[EBC Exercise 07 Notes on Installing Ubuntu in VMware Player | VMware Player]].<br />
# Run in the cloud<br />
<br />
The Ubuntu site gives good instructions for a native install. I've had good success with running both VMware and Virtual Box, though my installation instructions are a bit dated. (Feel free to update them if they need it.)<br />
<br />
I've been testing out the "Cloud" approach and it looks like it will work too. If you want to try the cloud, let me known and I'll ask CSSE to set up a machine for you.<br />
<br />
=== Kernel Development ===<br />
<br />
Once you have Linux running somewhere, you need to install the kernel development tools. Go to [[EBC Exercise 08 Installing Development Tools]] to see all the steps you need.<br />
<br />
Now that you have all these pieces in place you are ready to work with a very powerful embedded processor.<br />
<br />
== The class git repository ==<br />
<br />
Once you have an up to date OS running on your Beagle, go to [[EBC Exercise 05 Getting Exercise Support Materials]] to learn how to clone the class git repository. Once cloned it's a single command to get the latest materials on your Beagle (or host computer for that matter).<br />
<br />
{{YoderHead}}</div>Rpjdayhttps://elinux.org/index.php?title=Embedded_Linux,_Rose-Hulman&diff=282248Embedded Linux, Rose-Hulman2013-08-29T12:02:39Z<p>Rpjday: Fix link to ECE department.</p>
<hr />
<div>[[Category:ECE497 | 32-bit]]<br />
[[Category: BeagleBoard]]<br />
[[Category: Education]]<br />
{{YoderHead}}<br />
<br />
=== Introduction ===<br />
<br />
This Wiki is about a college-level embedded processor class being taught using the BeagleBoard. It's being taught by Professor Mark A. Yoder in the [http://www.rose-hulman.edu/academics/academic-departments/electrical-computer-engineering.aspx Electrical and Computer Engineering Department] at [http://www.rose-hulman.edu Rose-Hulman Institute of Technology]. Rose is a small, private, undergraduate engineering school that focuses on undergraduate education.<br />
<br />
A major part of the class is learning how to work with and leverage off of the open source community. The course requires a major project which will either significantly contribute to an existing open source project, or launch a new one. <br />
<br />
If you teach a similar course, I'd like to hear from you. [[ECE497 Instructor Guide]] explains the various choices I made in what to cover in the course, which distribution to use, etc.<br />
<br />
Here ([[:Category:ECE497]]) is a list of all the pages I've posted on eLinux for this class. Take a look at it.<br />
<br />
Here's the official description of the course.<br />
<br />
=== Course Description ===<br />
<br />
'''ECE 497 32-bit Embedded Linux 4R-0L-4C S Pre: Consent of instructor'''<br />
<br />
* Brief introduction to Linux on a 32-bit embedded processor.<br />
* Detailed study of what happens from power up to fully running X-Windows.<br />
* Adapting Linux to a given application including: boot time reduction, power management and root filesystem support.<br />
* Streaming media on an embedded processor.<br />
* Using a DSP co-processor to improve performance.<br />
<br />
Design project. Previous Linux experience not required, but helpful. C programming, operating system and hardware experience required.<br />
<br />
=== Calendar and Exercises ===<br />
This is a dynamic course, so the calendar may change as we discover interesting new things. It will be updated as we go. You can see it here: [[ECE497 Calendar and Exercises]]<br />
<br />
There are many things you will have to do to get your computer set up, etc. [[ECE497 Calendar and Exercises]] also gives the step-by-step details along with due dates.<br />
<br />
=== Textbook ===<br />
We'll be using the text [http://books.google.com/books?id=1U5yQAAACAAJ&source=gbs_book_other_versions Embedded Linux Primer], by ''Christopher Hallinan'', 2<sup>nd</sup> edition, published by Pearson Prentice Hall. <br />
<br />
The text is not Beagle specific; rather, it pulls examples from many embedded processors. It has many listings which detail the outputs from various processors. One of your tasks will be to reproduce the listing for the BeagleBoard.<br />
<br />
=== Grades ===<br />
Grades in the class aren't based on the traditional homework and exams; rather, they are based on some daily exercises [[ECE497 Calendar and Exercises]], a couple of minor projects and a major Beagle-based project and your portfolio. The projects will be done with teams of 2 or 3 people. We have people in the class with strong embedded backgrounds and others with strong Linux background. The goal is to have teams include complementary skills.<br />
<br />
Your portfolio is a collection of what you, as an individual, have contributed to the community and the team.<br />
<br />
{| style="color:green; background-color:#ffffcc;" cellpadding="10" cellspacing="0" border="1"<br />
| Labs and Exercises<br />
| 25%<br />
|-<br />
| Mini Projects<br />
| 25%<br />
|-<br />
| Project<br />
| 40%<br />
|-<br />
| Giving to Community<br />
| 10 %<br />
|}<br />
<br />
The Calendar gives the due dates. I'll give a reward to being early and 10% per day penalty for being late. You must complete all the exercises to pass the course.<br />
<br />
=== Weekly Status Memos ===<br />
<br />
A Weekly Status Memo is due on Monday of each week. This memo is to document all that you have done during the previous week. Here are things I look for in a memo.<br />
# Have '''To, From, Date,''' and '''Subject''' field on the top.<br />
# Use a meaningful subject. ''Week 2, Exercises 02, 04 and 10'' is meaningful. ''Exercise Memo'' is not.<br />
# Have a section of each exercise that is completed.<br />
# Start with a couple sentence introduction giving an overview of what the exercise is about.<br />
# Answer all the questions in the exercise.<br />
# Use tables.<br />
# Clearly state which parts of the exercise you were able to complete.<br />
# Note any parts of the exercise you were unable to complete and explain why.<br />
# End with a few sentences of concluding remarks. What did you learn? What else would you like to learn? What do you suggest for other related exercises? What extra interesting things did you do?<br />
<br />
Your grade for each exercise will be based on what you report in your memo. No need for the memo to be long. Just make it clear about what you have done.<br />
<br />
{{YoderFoot}}</div>Rpjdayhttps://elinux.org/index.php?title=Embedded_Linux,_Rose-Hulman&diff=282218Embedded Linux, Rose-Hulman2013-08-29T11:39:12Z<p>Rpjday: Format course description as a bulleted list.</p>
<hr />
<div>[[Category:ECE497 | 32-bit]]<br />
[[Category: BeagleBoard]]<br />
[[Category: Education]]<br />
{{YoderHead}}<br />
<br />
=== Introduction ===<br />
<br />
This Wiki is about a college-level embedded processor class being taught using the BeagleBoard. It's being taught by Professor Mark A. Yoder in the [http://ece-1.rose-hulman.edu/ecemm/ Electrical and Computer Engineering Department] at [http://www.rose-hulman.edu Rose-Hulman Institute of Technology]. Rose is a small, private, undergraduate engineering school that focuses on undergraduate education.<br />
<br />
A major part of the class is learning how to work with and leverage off of the open source community. The course requires a major project which will either significantly contribute to an existing open source project, or launch a new one. <br />
<br />
If you teach a similar course, I'd like to hear from you. [[ECE497 Instructor Guide]] explains the various choices I made in what to cover in the course, which distribution to use, etc.<br />
<br />
Here ([[:Category:ECE497]]) is a list of all the pages I've posted on eLinux for this class. Take a look at it.<br />
<br />
Here's the official description of the course.<br />
<br />
=== Course Description ===<br />
<br />
'''ECE 497 32-bit Embedded Linux 4R-0L-4C S Pre: Consent of instructor'''<br />
<br />
* Brief introduction to Linux on a 32-bit embedded processor.<br />
* Detailed study of what happens from power up to fully running X-Windows.<br />
* Adapting Linux to a given application including: boot time reduction, power management and root filesystem support.<br />
* Streaming media on an embedded processor.<br />
* Using a DSP co-processor to improve performance.<br />
<br />
Design project. Previous Linux experience not required, but helpful. C programming, operating system and hardware experience required.<br />
<br />
=== Calendar and Exercises ===<br />
This is a dynamic course, so the calendar may change as we discover interesting new things. It will be updated as we go. You can see it here: [[ECE497 Calendar and Exercises]]<br />
<br />
There are many things you will have to do to get your computer set up, etc. [[ECE497 Calendar and Exercises]] also gives the step-by-step details along with due dates.<br />
<br />
=== Textbook ===<br />
We'll be using the text [http://books.google.com/books?id=1U5yQAAACAAJ&source=gbs_book_other_versions Embedded Linux Primer], by ''Christopher Hallinan'', 2<sup>nd</sup> edition, published by Pearson Prentice Hall. <br />
<br />
The text is not Beagle specific; rather, it pulls examples from many embedded processors. It has many listings which detail the outputs from various processors. One of your tasks will be to reproduce the listing for the BeagleBoard.<br />
<br />
=== Grades ===<br />
Grades in the class aren't based on the traditional homework and exams; rather, they are based on some daily exercises [[ECE497 Calendar and Exercises]], a couple of minor projects and a major Beagle-based project and your portfolio. The projects will be done with teams of 2 or 3 people. We have people in the class with strong embedded backgrounds and others with strong Linux background. The goal is to have teams include complementary skills.<br />
<br />
Your portfolio is a collection of what you, as an individual, have contributed to the community and the team.<br />
<br />
{| style="color:green; background-color:#ffffcc;" cellpadding="10" cellspacing="0" border="1"<br />
| Labs and Exercises<br />
| 25%<br />
|-<br />
| Mini Projects<br />
| 25%<br />
|-<br />
| Project<br />
| 40%<br />
|-<br />
| Giving to Community<br />
| 10 %<br />
|}<br />
<br />
The Calendar gives the due dates. I'll give a reward to being early and 10% per day penalty for being late. You must complete all the exercises to pass the course.<br />
<br />
=== Weekly Status Memos ===<br />
<br />
A Weekly Status Memo is due on Monday of each week. This memo is to document all that you have done during the previous week. Here are things I look for in a memo.<br />
# Have '''To, From, Date,''' and '''Subject''' field on the top.<br />
# Use a meaningful subject. ''Week 2, Exercises 02, 04 and 10'' is meaningful. ''Exercise Memo'' is not.<br />
# Have a section of each exercise that is completed.<br />
# Start with a couple sentence introduction giving an overview of what the exercise is about.<br />
# Answer all the questions in the exercise.<br />
# Use tables.<br />
# Clearly state which parts of the exercise you were able to complete.<br />
# Note any parts of the exercise you were unable to complete and explain why.<br />
# End with a few sentences of concluding remarks. What did you learn? What else would you like to learn? What do you suggest for other related exercises? What extra interesting things did you do?<br />
<br />
Your grade for each exercise will be based on what you report in your memo. No need for the memo to be long. Just make it clear about what you have done.<br />
<br />
{{YoderFoot}}</div>Rpjdayhttps://elinux.org/index.php?title=Embedded_Linux,_Rose-Hulman&diff=282206Embedded Linux, Rose-Hulman2013-08-29T11:26:02Z<p>Rpjday: Some minor grammar and spelling fixes.</p>
<hr />
<div>[[Category:ECE497 | 32-bit]]<br />
[[Category: BeagleBoard]]<br />
[[Category: Education]]<br />
{{YoderHead}}<br />
<br />
=== Introduction ===<br />
<br />
This Wiki is about a college-level embedded processor class being taught using the BeagleBoard. It's being taught by Professor Mark A. Yoder in the [http://ece-1.rose-hulman.edu/ecemm/ Electrical and Computer Engineering Department] at [http://www.rose-hulman.edu Rose-Hulman Institute of Technology]. Rose is a small, private, undergraduate engineering school that focuses on undergraduate education.<br />
<br />
A major part of the class is learning how to work with and leverage off of the open source community. The course requires a major project which will either significantly contribute to an existing open source project, or launch a new one. <br />
<br />
If you teach a similar course, I'd like to hear from you. [[ECE497 Instructor Guide]] explains the various choices I made in what to cover in the course, which distribution to use, etc.<br />
<br />
Here ([[:Category:ECE497]]) is a list of all the pages I've posted on eLinux for this class. Take a look at it.<br />
<br />
Here's the official description of the course.<br />
<br />
=== Course Description ===<br />
<br />
'''ECE 497 32-bit Embedded Linux 4R-0L-4C S Pre: Consent of instructor'''<br />
<br />
Brief introduction to Linux on a 32-bit embedded processor. Detailed study of what happens from power up to fully running X-Windows. Adapting Linux to a given application including: boot time reduction, power management and root filesystem support. Streaming media on an embedded processor. Using a DSP co-processor to improve performance. Design project. Previous Linux experience not required, but helpful. C programming, operating system and hardware experience required.<br />
<br />
=== Calendar and Exercises ===<br />
This is a dynamic course, so the calendar may change as we discover interesting new things. It will be updated as we go. You can see it here: [[ECE497 Calendar and Exercises]]<br />
<br />
There are many things you will have to do to get your computer set up, etc. [[ECE497 Calendar and Exercises]] also gives the step-by-step details along with due dates.<br />
<br />
=== Textbook ===<br />
We'll be using the text [http://books.google.com/books?id=1U5yQAAACAAJ&source=gbs_book_other_versions Embedded Linux Primer], by ''Christopher Hallinan'', 2<sup>nd</sup> edition, published by Pearson Prentice Hall. <br />
<br />
The text is not Beagle specific; rather, it pulls examples from many embedded processors. It has many listings which detail the outputs from various processors. One of your tasks will be to reproduce the listing for the BeagleBoard.<br />
<br />
=== Grades ===<br />
Grades in the class aren't based on the traditional homework and exams; rather, they are based on some daily exercises [[ECE497 Calendar and Exercises]], a couple of minor projects and a major Beagle-based project and your portfolio. The projects will be done with teams of 2 or 3 people. We have people in the class with strong embedded backgrounds and others with strong Linux background. The goal is to have teams include complementary skills.<br />
<br />
Your portfolio is a collection of what you, as an individual, have contributed to the community and the team.<br />
<br />
{| style="color:green; background-color:#ffffcc;" cellpadding="10" cellspacing="0" border="1"<br />
| Labs and Exercises<br />
| 25%<br />
|-<br />
| Mini Projects<br />
| 25%<br />
|-<br />
| Project<br />
| 40%<br />
|-<br />
| Giving to Community<br />
| 10 %<br />
|}<br />
<br />
The Calendar gives the due dates. I'll give a reward to being early and 10% per day penalty for being late. You must complete all the exercises to pass the course.<br />
<br />
=== Weekly Status Memos ===<br />
<br />
A Weekly Status Memo is due on Monday of each week. This memo is to document all that you have done during the previous week. Here are things I look for in a memo.<br />
# Have '''To, From, Date,''' and '''Subject''' field on the top.<br />
# Use a meaningful subject. ''Week 2, Exercises 02, 04 and 10'' is meaningful. ''Exercise Memo'' is not.<br />
# Have a section of each exercise that is completed.<br />
# Start with a couple sentence introduction giving an overview of what the exercise is about.<br />
# Answer all the questions in the exercise.<br />
# Use tables.<br />
# Clearly state which parts of the exercise you were able to complete.<br />
# Note any parts of the exercise you were unable to complete and explain why.<br />
# End with a few sentences of concluding remarks. What did you learn? What else would you like to learn? What do you suggest for other related exercises? What extra interesting things did you do?<br />
<br />
Your grade for each exercise will be based on what you report in your memo. No need for the memo to be long. Just make it clear about what you have done.<br />
<br />
{{YoderFoot}}</div>Rpjdayhttps://elinux.org/index.php?title=Barebox&diff=185222Barebox2012-10-28T21:00:17Z<p>Rpjday: Typographical and grammer cleanup.</p>
<hr />
<div>The Barebox bootloader was started in 2007 as an attempt to work around the limitations that U-Boot shows through its age. Originally dubbed U-Boot v2, it now has a different name because its design goals are different and it has its own community in the meantime.<br />
<br />
Barebox now supports arm, powerpc, mips, nios2, blackfin, x86 and a Linux userspace port called "sandbox".<br />
<br />
Features:<br />
<br />
*Devices/Drivers Model<br />
**ata<br />
**eeprom<br />
**I2c<br />
**nand<br />
**nor<br />
**net<br />
**mfd<br />
**MMC<br />
**serial<br />
**SPI<br />
**USB<br />
***Host<br />
***Devices<br />
**Framebuffer<br />
*Filesystem<br />
*Posix Interface<br />
*Hush<br />
*password<br />
*DFU<br />
*Menu<br />
<br />
= Build and configuration =<br />
<br />
Unlike U-Boot, Barebox uses Kbuild for the build and Kconfig for the configuration.<br />
<br />
For the environment, a file system is used so you will not have to clobber any config.h file.<br />
<br />
[[image: Barebox Kconfig.png|600px]]<br />
<br />
[http://www.barebox.org Barebox]<br />
<br />
[[:File:Hauer-U_BootV2.pdf|U-Boot-v2 Presentation from CELF Embedded Linux Conference Europe Grenoble, 2009-10-16]] (pdf)<br />
<br />
[[:File:ELCE-2010-Barebox-Booting-Linux-Fast-and-Fancy.pdf|Booting Linux Fast & Fancy]] (pdf)<br />
<br />
= Sandbox =<br />
<br />
One of the great things with barebox is the sandbox.<br />
<br />
Basically you can develop and debug generic features on your host:<br />
<br />
1) compile it<br />
<br />
for other arch than x86 or ppc you need to use the next branch or the mainline<br />
<br />
As I just recently fixed the support for all host<br />
<br />
ARCH=sandbox make sandbox_defconfig<br />
<br />
ARCH=sandbox make<br />
<br />
now just start it<br />
<br />
# ./barebox<br />
<br />
barebox 2011.10.0-00119-gad62fdb-dirty (Oct 15 2011 - 11:38:46)<br />
<br />
Board: sandbox<br />
Malloc space: 0x7f679f24b010 -> 0x7f679fa4b010 (size 8 MB)<br />
Open /dev/env0 No such file or directory<br />
no valid environment found on /dev/env0. Using default environment<br />
running /env/bin/init...<br />
barebox:/<br />
barebox:/ ls -al /dev/<br />
ls: invalid option -- a<br />
cr-------- 18446744073709551615 zero<br />
crw------- 8249 defaultenv<br />
crw------- 4294967295 mem<br />
crw------- 2198 fd0<br />
barebox:/ devinfo <br />
devices:<br />
`---- hostfile0<br />
`---- console0<br />
`---- cs0<br />
`---- ramfs0<br />
`---- devfs0<br />
`---- mem0<br />
`---- 0x00000000-0x00002038: /dev/defaultenv<br />
`---- mem1<br />
`---- 0x00000000-0xfffffffe: /dev/mem<br />
`---- tap0<br />
`---- eth0<br />
<br />
drivers:<br />
console<br />
ramfs<br />
devfs<br />
tap<br />
mem<br />
cramfs<br />
hostfile<br />
barebox:/ <br />
<br />
barebox:/ help<br />
. - alias for source<br />
? - alias for help<br />
[ - alias for test<br />
addpart - adds a partition table to a device<br />
boot_config - Boot Menu<br />
boot_menu - Boot Menu<br />
cat - concatenate file(s)<br />
cd - change working directory<br />
clear - clear screen<br />
cp - copy files<br />
crc32 - crc32 checksum calculation<br />
delpart - delete partition(s)<br />
devinfo - Show information about devices and drivers.<br />
dhcp - invoke dhcp client to obtain ip/boot params<br />
echo - echo args to console<br />
edit - Usage: (s)edit <file><br />
ethact - set current ethernet device<br />
exit - exit script<br />
export - export environment variables<br />
false - do nothing, unsuccessfully<br />
go - start application at address or file<br />
help - print online help<br />
linux_exec - Execute a command on the host<br />
loadenv - Load environment from ENVFS into DIRECTORY (default: /dev/env0 -> /env).<br />
login - login<br />
ls - list a file or directory<br />
md - memory display<br />
md5sum - md5 checksum calculation<br />
memcmp - memory compare<br />
memcpy - memory copy<br />
meminfo - print info about memory usage<br />
memset - memory fill<br />
menu - Menu Management<br />
mkdir - make directories<br />
mount - Mount a filesystem of a given type to a mountpoint or list mounted filesystems.<br />
mw - memory write (fill)<br />
passwd - passwd<br />
ping - ping <destination><br />
printenv - Print value of one or all environment variables.<br />
pwd - print working directory<br />
readline - prompt for user input<br />
reset - Perform RESET of the CPU<br />
rm - remove files<br />
rmdir - remove directorie(s)<br />
saveenv - save environment to persistent storage<br />
sedit - alias for edit<br />
sh - run shell script<br />
sha1sum - sha1 checksum calculation<br />
sha224sum - sha224 checksum calculation<br />
sha256sum - sha256 checksum calculation<br />
sleep - delay execution for n seconds<br />
source - execute shell script in current shell environment<br />
test - minimal test like /bin/sh<br />
tftp - Load file using tftp protocol<br />
time - measure execution time of a command<br />
timeout - wait for a specified timeout<br />
true - do nothing, successfully<br />
umount - umount a filesystem<br />
version - print monitor version<br />
barebox:/<br />
<br />
= Menu =<br />
<br />
It's another great feature<br />
<br />
Add Menu Framework<br />
<br />
Introduce a menu framework that allow us to create list menu to simplify<br />
barebox and make it more user-frendly.<br />
<br />
This kind of menu is very useful when you do not have a keyboard or a<br />
serial console attached to your board to allow you to interact with<br />
barebox<br />
<br />
For the developer part, the framework introduces two API<br />
<br />
1) C<br />
that allow you to create menu, submenu, entry and complex menu action<br />
<br />
2) Command<br />
that allow you as the C API to create menu, submenu, entry and complex<br />
menu action but this time the actions will be store in a function and<br />
then be evaluated and excecuted at runtime.<br />
<br />
barebox:/ help menu <br />
Usage: menu [OPTION]... <br />
Manage Menu<br />
-m menu<br />
-l list<br />
-s show<br />
Advanced<br />
-e menu entry<br />
-a add<br />
-r remove<br />
-S select<br />
<br />
How to<br />
<br />
Show menu<br />
(-A auto select delay)<br />
(-d auto select description)<br />
menu -s -m <menu> [-A delay] [-d auto_display]<br />
<br />
List menu<br />
menu -l<br />
<br />
Add a menu<br />
menu -a -m <name> -d <description><br />
<br />
Remove a menu<br />
menu -r -m <name><br />
<br />
Add an entry<br />
(-R for do no exit the menu after executing the command)<br />
(-b for box style 1 for selected)<br />
(and optional -c for the command to run when we change the state)<br />
menu -e -a -m <menu> -c <command> [-R] [-b 0|1] -d <description><br />
Add a submenu entry<br />
(-R is not needed)<br />
(-b for box style 1 for selected)<br />
(and -c is not needed)<br />
menu -e -a -m <menu> -u submenu -d [-b 0|1] <description><br />
<br />
Remove an entry<br />
menu -e -r -m <name> -n <num><br />
<br />
Select an entry<br />
menu -m <menu> -S -n <entry num starting at 1><br />
<br />
List menu<br />
menu -e -l [menu]<br />
<br />
Menu example<br />
menu -a -m boot -d "Boot Menu"<br />
menu -e -a -m boot -c boot -d "Boot"<br />
menu -e -a -m boot -c reset -d "Reset"<br />
menu -s -m boot<br />
<br />
An example<br />
<br />
menu -a -m boot -d "Welcome on Barebox Boot Sequence"<br />
menu -e -a -m boot -c boot -d " 1: linux_2_6_36"<br />
menu -e -a -m boot -c boot -d " 2: linux_2_6_39"<br />
menu -e -a -m boot -c boot -d " 3: linux_3_0_0" <br />
menu -e -a -m boot -c boot -d " 4: installer" <br />
menu -e -a -m boot -c clear -d " 5: shell" <br />
menu -e -a -m boot -c reset -d " 6: reset" <br />
menu -s -m boot<br />
<br />
The screen is clear and show<br />
<br />
Welcome on Barebox Boot Sequence<br />
1: linux_2_6_36<br />
2: linux_2_6_39<br />
3: linux_3_0_0 <br />
4: installer <br />
5: shell <br />
6: reset <br />
Auto Select in 1<br />
<br />
[[Category:Bootloaders]]</div>Rpjdayhttps://elinux.org/index.php?title=ECE497_Notes_on_Installing_Angstrom_via_Narcissus&diff=104042ECE497 Notes on Installing Angstrom via Narcissus2012-02-28T22:59:22Z<p>Rpjday: Update link to Narcissus.</p>
<hr />
<div>[[Category:ECE497]]<br />
<br />
Here's another precompiled approach that creates a complete disk image, but gives you some control over what is in the image. The first listed creates the image used for the ICASSP 2011 tutorial/workshop. The second one does an older image.<br />
<br />
== FIE 2011 image ==<br />
<br />
The FIE image is pretty much the same as the ICASSP image, but with a couple of things cleaned up.<br />
<br />
== ICASSP 2011 image ==<br />
<br />
This is the image that Daniel Allred at TI created to support c6run.<br />
<br />
Make a beagleboard boot image and SDK image from [http://narcissus.angstrom-distribution.org/ Narcissus]. These steps are more or less in line from those taken [http://groups.google.com/group/beagleboard/browse_thread/thread/6b57d7dc2dbce7c3 here].<br />
<br />
* Select '''beagleboard''' as the machine<br />
* Select a unique name (or use the random one provided)<br />
* Select '''advanced''' for options<br />
** Select '''stable 2011.03''' for base of rootfs<br />
** Select '''regular''' base system<br />
** Select '''udev''' for /dev manager<br />
** Select '''sysvinit''' for init manager<br />
** Select '''OMAP SD image''' for image type<br />
** Software manifest is '''no''' (really it doesn't matter unless you plan to redistribute this stuff)<br />
** Set SDK type as '''Full SDK for generated filesystem''' and select the appropriate '''32bit Intel''' for host (our Ubuntu install is 32-bit)<br />
* Select '''X11''' for the user environment<br />
* For the X11 desktop environment, ok to leave it blank<br />
<br />
* For ''Additional packages'':<br />
** Under ''Development packages'' select:<br />
*** Perl<br />
*** Toolchain<br />
*** Native (on-target) SDK<br />
*** Native (on-target) Qt Embedded SDK <br />
*** Native (on-target) Qt X11 SDK Development<br />
** Under ''Network related packages'' select:<br />
*** Dropbear SSH server<br />
*** NTPdate<br />
** Under ''Platform specific packages'':<br />
*** ''Texas Instruments OMAP3x/AM3x family'' select:<br />
**** Matrix GUI for QT/X11<br />
**** PowerVR SGX demos for X11<br />
**** PowerVR SGX gfxdriver plugin for QT/X11<br />
**** TI texture streaming demo for X11<br />
*** ''Texas Instruments OMAP3x/DaVinci/OMAPL family (using DSP)'' select:<br />
**** TI DSPLINK Example Applications<br />
**** TI Codec Engine Example Applications<br />
**** Texas Instruments Gstreamer plugins<br />
*** ''Various demonstration configs'' select:<br />
**** Beagleboard validation GNOME image<br />
<br />
Now click '''Build Me!''' This will take some time.<br />
<br />
The result of the build will be several files. (''MM''=month of creation, ''XXXX''=unique name you provided)<br />
* Angstrom-2011.''MM''-narcissus-beagleboard-i686-''XXXX''-image-sdk.tar.gz image with the SDK<br />
* ''XXXX''-image-beagleboard.tar.gz image with the file system contents.<br />
* ''XXXX''-image-beagleboard-sd-1GiB.img.gz is a 1GB SD card image.<br />
* ''XXXX''-image-beagleboard-sd-4GiB.img.gz is a 4GB SD card image. <br />
<br />
Now we need to install the SDK image<br />
<pre><br />
tar -C ~/toolchains -xzf Angstrom-2011.MM-narcissus-beagleboard-i686-XXXX-image-sdk.tar.gz<br />
</pre><br />
(again, ''MM''=month of creation)<br />
<br />
This will install the toolchain to <code>~/toolchains/usr/local/angstrom/arm</code>. This is a little long so let's move it<br />
<pre><br />
mv ~/toolchains/usr/local/angstrom/arm ~/toolchains/arm-angstrom<br />
rm -Rf ~/toolchains/usr<br />
</pre><br />
So now we have the ARM compiler ready to be used. We will use the SD card image later.<br />
<br />
== Get ready for DSP Development ==<br />
<br />
* Download the latest C6Run release package from [https://gforge.ti.com/gf/project/dspeasy/frs/ here].<br />
<br />
* Unzip the C6Run package<br />
<pre><br />
$ tar -xzf ~/Downloads/C6Run_X_YY_ZZ_WW.tar.gz<br />
</pre><br />
<br />
This will create a directory C6Run_X_YY_ZZ_WW in the current directory (I just use my home directory).<br />
<br />
* Download the Texas Instruments C6000 Compiler tools (version 7.2.2 or later) from [https://www-a.ti.com/downloads/sds_support/TICodegenerationTools/download.htm here].<br />
Note that this requires you to have a login with [http://my.ti.com my.ti.com]. This is a little annoying.<br />
<br />
*Install the DSP compiler to $(HOME)/toolchains<br />
<pre><br />
$ mkdir -p ~/toolchains<br />
$ chmod +x ~/Downloads/ti_cgt_c6000_7.2.2_setup_linux_x86.bin<br />
$ ~/Downloads/ti_cgt_c6000_7.2.2_setup_linux_x86.bin --mode silent --installto ~/toolchains <br />
</pre><br />
This takes a minute and installs silently (you are implicitly agreeing to some EULA when you do this). The DSP toolchain will be in <code>~/toolchains/TI_CGT_C6000_7.2.2</code>.<br />
<br />
== Setup c6run ==<br />
<br />
* Let's setup up c6Run so we can build DSP code.<br />
** Edit the '''Rules.mak''' to point to the right ARM and DSP toolchains:<br />
<pre><br />
CODEGEN_INSTALL_DIR ?= $(HOME)/toolchains/TI_CGT_C6000_7.2.2<br />
ARM_TOOLCHAIN_PATH ?= $(HOME)/toolchains/arm-angstrom<br />
ARM_TOOLCHAIN_PREFIX ?= arm-angstrom-linux-gnueabi-<br />
</pre><br />
<br />
It also appears that we need to make sure that the '''LINUXUTILS_VERSION''' is set to '''2_25_05_11'''. Without this, any application built with C6Run won't work on the current 2011.03 build generated by Narcissus since the kernel module inlcuded is based on the older LinuxUtils.<br />
<br />
** Now get all dependent components to build back-end libararies. The fetching and install may take some time<br />
<pre><br />
$ cd ~/C6Run_X_YY_ZZ_WW<br />
$ make get_components<br />
</pre><br />
<br />
** Edit the file '''platforms/beagleboard-xM/platform.mak''' and get rid of the redefines of the ARM_TOOLCHAIN_PATH and ARM_TOOLCHAIN_PREFIX (since we want to use the version we just set above in Rules.mak)<br />
<br />
** Select beagleboard-xM config<br />
<pre><br />
$ make beagleboard-xM_config<br />
</pre><br />
<br />
** build the back-end libraries<br />
<pre><br />
$ make gpp_libs dsp_libs<br />
</pre><br />
<br />
** Source the environment for the C6Run tools<br />
<pre><br />
$ source environment.sh<br />
</pre><br />
<br />
** Build all the examples and test cases to make sure things work<br />
<pre><br />
$ make examples tests<br />
</pre><br />
<br />
If that all worked, then C6Run is ready to be used to build DSP code for use with ARM programs<br />
<br />
* Now we can get the Beagle up and running. We will use the XXXX-image-beagleboard-sd-4GiB.img.gz file generated by Narcissus.<br />
<br />
=== Older 2010 image ===<br />
<br />
# Go to [http://narcissus.angstrom-distribution.org/ here]<br />
# Under '''Select the machine you want to build your rootfs image for:''' select '''beagleboard'''<br />
<br />
There are many configurations you can try. For starts try<br />
<br />
# Scroll to almost the bottom and select '''Platform specific packages:'''<br />
# Again scroll to near the bottom and select '''Linuxtag 2010 beagleboard demo'''<br />
# Click '''Build me!''' and wait<br />
# Once the image is created, follow the instructions to download the image. It's big so it will take a while<br />
<br />
Once the image is build you will have two files to download. One is a disk image of the CD card and the other is the root file system.<br />
<br />
# Download both of these<br />
# Run <code>host$ sudo zcat XXX | dd of=/dev/of/your/sd bs=8225280</code>. This will partition and format the SD card and install the files needed to boot Linux. It took me about 3 minutes.<br />
# run <code>host$ sync</sync> to be sure all the files have been written.<br />
# Next, uncompress the root file system image on the CD card. <code>host$ cd /media/rootfs</code><br />
# <code>host$ tar -xvf ~/Documents/....</code><br />
# <code>host$ sync</code><br />
<br />
Eject the SD and plug it in your Beagle and power it up.</div>Rpjdayhttps://elinux.org/index.php?title=Code_Styling_Tips&diff=103838Code Styling Tips2012-02-27T15:55:55Z<p>Rpjday: Fixed link for Henry Spencer's coding style document.</p>
<hr />
<div>Here are some miscellaneous tips for good code styling:<br />
<br />
== Proper Linux Kernel Coding Style ==<br />
<br />
See the kernel coding style guide in any kernel source tree at: Documentation/CodingStyle<br />
(Online [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob_plain;f=Documentation/CodingStyle;hb=HEAD here])<br />
<br />
Greg Kroah-Hartman wrote some additional tips in his article:<br />
[http://www.linuxjournal.com/article/5780 Proper Linux Kernel Coding Style]<br />
<br />
Michael S. Tsirkin made a [http://www.openfabrics.org/~mst/boring.txt kernel guide to space] (''a boring list of rules'') which got polished on a worth reading [http://thread.gmane.org/gmane.linux.kernel/317744 thread] in LKML in 2005.<br />
<br />
=== use of #ifdefs ===<br />
Rob Landley writes:<br />
<br />
Read: http://doc.cat-v.org/henry_spencer/ifdef_considered_harmful.pdf<br />
<br />
Personally, I tend to have symbols #defined to a constant 0 or 1 depending on<br />
whether or not a function is enabled, and then just use if(SYMBOL) as a guard<br />
and let the compiler's dead code eliminator take it out for me at compile<br />
time (because if(0) {blah;} shouldn't put any code in the resulting .o file<br />
with any optimizer worth its salt. Borland C for DOS managed simple dead<br />
code elimination 20 years ago...)<br />
<br />
== See also ==<br />
[[Sparse]] <br />
<br />
[[Category:Development Tools]]</div>Rpjdayhttps://elinux.org/index.php?title=EBC_Exercise_08a_Cross-Compiling&diff=103820EBC Exercise 08a Cross-Compiling2012-02-27T12:03:20Z<p>Rpjday: Fix font for command output</p>
<hr />
<div>[[Category:ECE497]]<br />
[[Category: BeagleBoard]]<br />
<br />
This class is about developing software for embedded Linux. So far we have been doing all of our development on the Beagle. This works well for small (and not so small) programs. However, we are now moving into kernel development and that's best done on a more powerful host computer. [[EBC_Exercise_01_Using_bitbake_for_Kernel_and_U-boot | Here]] you learned how to download and install the cross-compilers and the source for kernel and u-boot. Now we'll use those tools.<br />
<br />
First we'll check everything by compiling the Hello World program, then we'll try the kernel and u-boot.<br />
<br />
== Cross-compiling Hello World ==<br />
<br />
Listing 2-4 on page 29 of the text is an embedded version of Hello World. If you've set up your git repository you will find it in '''helloWorld.c''' when you do a''' git pull'''. Compile and run it on your host to be sure it works.<br />
<br />
host$ '''gcc helloWorld.c'''<br />
host$ '''./a.out'''<br />
Hello, World! Main is executing at 0x400524<br />
This address (0x7fff8260bdf8) is in our stack frame<br />
This address (0x601038) is in our bss section<br />
This address (0x601020) is in our data section<br />
<br />
Now that you know it's working, let's cross compile it. First set the paths to find the cross-compilers. Put the following in a file, call it ~/.oe/'''crossCompileEnv.sh'''. Make sure the path is correct for your system. This is for a 32-bit linux. <br />
<br />
# add cross tools to your path<br />
export ARM_TOOLCHAIN_PATH=~/BeagleBoard/oe/build/tmp-angstrom_2010_x-eglibc/sysroots/i686-linux/usr/bin/armv7a-angstrom-linux-gnueabi<br />
PATH=$PATH:$ARM_TOOLCHAIN_PATH/..<br />
PATH=$ARM_TOOLCHAIN_PATH:$PATH <br />
export ARCH=arm<br />
export CROSS_COMPILE=arm-angstrom-linux-gnueabi-<br />
<br />
Here it is for 64-bit<br />
<br />
# add cross tools to your path<br />
export ARM_TOOLCHAIN_PATH=~/BeagleBoard/oe/build/tmp-angstrom_2010_x-eglibc/sysroots/x86_64-linux/usr/bin/armv7a-angstrom-linux-gnueabi<br />
PATH=$PATH:$ARM_TOOLCHAIN_PATH/..<br />
PATH=$ARM_TOOLCHAIN_PATH:$PATH <br />
export ARCH=arm<br />
export CROSS_COMPILE=arm-angstrom-linux-gnueabi-<br />
<br />
Now ''source'' the file and compile again. (Note: you only have to source once per terminal session.)<br />
host$ '''source ~/.oe/crossCompileEnv.sh'''<br />
host$ '''${CROSS_COMPILE}gcc helloWorld.c'''<br />
host$ '''file a.out'''<br />
a.out: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped<br />
<br />
The '''file''' command tells what's in the file. In this case we have an ARM executable. Success! Now copy to your Beagle and run<br />
<br />
host$ '''scp a.out root@beagle:.'''<br />
host$ '''ssh root@beagle ./a.out'''<br />
Hello, World! Main is executing at 0x8374<br />
This address (0xbeb32d4c) is in our stack frame<br />
This address (0x10650) is in our bss section<br />
This address (0x10648) is in our data section<br />
<br />
The '''scp''' copies a.out to the beagle and the '''ssh''' runs the a.out on the beagle. Notice the address are very different from the host version.<br />
<br />
== Finding the Kernel and Installing It ==<br />
<br />
After doing [[EBC_Exercise_01_Using_bitbake_for_Kernel_and_U-boot#Finding_the_Correct_Kernel | this]] exercise you have a Beagle kernel on your host computer. Let's see if it works.<br />
<br />
Once compiled the kernel is put in a file called '''uImage'''. You may have seen it in the FAT partition on your SD card. Let's find it on your host. One way to find it is<br />
<br />
host$ '''cd ~/BeagleBoard/oe'''<br />
host$ '''find . -name "*uImage*" | grep 2.6.32 | grep boot'''<br />
<br />
We are looking for uImage, but we only want the 2.6.32 version. The last grep file the file in the '''boot''' directory. Several lines are printed, but the one I'm interested in is:<br />
''./build/tmp-angstrom_2010_x-eglibc/work/beagleboard-angstrom-linux-gnueabi/linux-omap-psp-2.6.32-r110b+gitr5fc29e7b2a76a64a739f857858ef0b98294aa155/git''/arch/arm/boot/uImage<br />
<br />
The first part of the path (in italics) is the path to the kernel. Check it out.<br />
<br />
host$ '''cd build/tmp-angstrom_2010_x-eglibc/work/beagleboard-angstrom-linux-gnueabi/linux-omap-psp-2.6.32-r110b+gitr5fc29e7b2a76a64a739f857858ef0b98294aa155/git'''<br />
host$ '''ls -F'''<br />
arch/ drivers/ Kbuild modules.order samples/ usr/<br />
block/ firmware/ kernel/ Module.symvers scripts/ virt/<br />
COPYING fs/ lib/ net/ security/ vmlinux*<br />
CREDITS include/ MAINTAINERS patches/ sound/ vmlinux.o<br />
crypto/ init/ Makefile README System.map<br />
Documentation/ ipc/ mm/ REPORTING-BUGS tools/<br />
<br />
We'll be learning what's in many of these over the next couple of weeks. Remember this location. Let's find uImage.<br />
<br />
host$ '''cd arch/arm/boot; ls -shF'''<br />
total 13M<br />
4.0K bootp/ 6.3M Image* 4.0K Makefile 3.0M zImage*<br />
4.0K compressed/ 4.0K install.sh 3.0M uImage<br />
host$ '''ls -l uImage'''<br />
-rw-r--r-- 1 beagle beagle 3144300 2011-12-08 01:02 uImage<br />
<br />
It should have the date that you did the bitbake. Let's see if it runs on the Beagle<br />
host$ '''scp uImage root@beagle:.'''<br />
host$ '''ssh root@beagle'''<br />
beagle$ '''cd /boot; ls -F'''<br />
total 18M<br />
4.0K MLO@<br />
372K Module.symvers-2.6.32<br />
1.4M System.map-2.6.32<br />
80K config-2.6.32<br />
4.0K u-boot.bin@<br />
0 uImage@<br />
3.1M uImage-2.6.32<br />
8.9M vmlinux-2.6.32<br />
beagle$ '''ls -l uImage'''<br />
lrwxrwxrwx 1 www-data www-data 13 May 12 2011 uImage -> uImage-2.6.32<br />
<br />
So the uImage that is there is a symbolic link to '''uImage-2.6.32'''. Let's save the working uImage in a difference file and copy our new uImage in.<br />
<br />
beagle$ '''mv uImage-2.6.32 uImage-2.6.32.orig'''<br />
beagle$ '''mv ~/uImage uImage-2.6.32'''<br />
<br />
And then reboot.<br />
beagle$ '''shutdown -r now'''<br />
<br />
After a couple of minutes your should be back and running again. Check and see if you are really running the new kernel.<br />
beagle$ '''uname -a'''<br />
Linux beagleboard 2.6.32 #3 PREEMPT Thu Dec 8 01:02:13 EST 2011 armv7l GNU/Linux<br />
<br />
It worked! That's the date I compiled mine on.<br />
<br />
== Installing a New U-boot ==<br />
<br />
While we're at it, let's install a new U-boot. Note: The new U-boot runs for me, but doesn't boot the kernel, yet.<br />
<br />
host$ '''cd ~/BeagleBoard/oe/build/tmp-angstrom_2010_x-eglibc/work/beagleboard-angstrom-linux-gnueabi/'''<br />
host$ '''ls -F'''<br />
linux-3.0.9-r110a/<br />
linux-omap-psp-2.6.32-r110b+gitr5fc29e7b2a76a64a739f857858ef0b98294aa155/<br />
shadow-4.1.4.3-r5/<br />
u-boot-2011.09-r4/<br />
<br />
There's the U-boot directory.<br />
<br />
host$ cd u-boot-2011.09-r4/git/; ls -F<br />
api/ COPYING fs/ mkconfig* post/ tools/<br />
arch/ CREDITS include/ mmc_spl/ README u-boot*<br />
board/ disk/ lib/ nand_spl/ rules.mk '''u-boot.bin'''<br />
boards.cfg doc/ MAINTAINERS net/ snapshot.commit u-boot.lds<br />
common/ drivers/ MAKEALL* onenand_ipl/ spl/ u-boot.map<br />
config.mk examples/ Makefile patches/ System.map u-boot.srec<br />
<br />
The file we want is right on the top level.<br />
<br />
host$ '''scp u-boot.bin root@beagle:.'''<br />
host$ '''ssh -X root@beagle'''<br />
beagle$ '''cd /media/mmcblk0p1/; ls -F'''<br />
MLO* u-boot.bin.broken* uEnv.txt*<br />
U-BOOT.BIN* UIMAGE* uEnv/<br />
<br />
Be sure you are logged into the Beagle via the serial port, rather than using ssh. Otherwise you won't see the boot sequence that appears before the kernel is running.<br />
<br />
Here we've changed to the FAT partition which is where u-boot lives. Back it up and install the new one.<br />
<br />
beagle$ '''mv U-BOOT-BIN u-boot-bin.orig'''<br />
beagle$ '''mv ~/.u-boot-bin .'''<br />
beagle$ '''shutdown -r now'''<br />
<br />
You should now see the new u-boot running if you are logged in via the serial port.<br />
<br />
== Compile via make ==<br />
<br />
When you use bitbake it sets up all the paths to use the correct cross compilers. You can also build the kernel or u-boot by using '''make''' if you set the paths like we did above. <br />
<br />
If you haven't already, ''source'' the file and ''cd'' to the kernel directory and try a ''make''.<br />
<br />
host$ '''source ~/.oe/crossCompileEnv.sh'''<br />
host$ '''cd ~/BeagleBoard/oe/build/tmp-angstrom_2010_x-eglibc/work/beagleboard-angstrom-linux-gnueabi/linux-omap-psp-2.6.32-r110b+gitr5fc29e7b2a76a64a739f857858ef0b98294aa155/git'''<br />
host$ '''make xconfig'''<br />
<br />
([[EBC Exercise 13 Configuring the Kernel]] has details on configuring the kernel.)<br />
<br />
To make the kernel run<br />
<br />
host$ '''make uImage'''<br />
<br />
Now, follow the instructions above to install your freshly compiled kernel.</div>Rpjdayhttps://elinux.org/index.php?title=EBC_Exercise_01_Start_Here&diff=103760EBC Exercise 01 Start Here2012-02-26T22:43:57Z<p>Rpjday: Ubuntu "10.4" version is actually "10.04".</p>
<hr />
<div>[[Category:ECE497]]<br />
<br />
== Setting up your hardware and software ==<br />
<br />
There are three major things that need to be done to have the BeagleBoard ready to run for class. Hardware, software on the Beagle and software on a host computer. Here are the details.<br />
<br />
=== The Hardware ===<br />
<br />
I have a Beagle Board xM for everyone to use for the quarter. I'm assuming you have some hardware already. Here's the hardware you will need and where you get it.<br />
<br />
==== From the Instrument Room ====<br />
You can pick this up any time, even Monday-Wednesday of break.<br />
* BeagleBoard xM<br />
* 5V power supply<br />
* HDMI to DVI cable<br />
* serial to USB cable<br />
<br />
==== From your own resources ====<br />
* USB keyboard and mouse<br />
* DVI-D display<br />
* micro SD card. 4G should be enough. I suggest you have 2 or 3 cards since it's easy to mess up one and it takes some 10 minutes to reload it.<br />
* micro SD card reader/writer<br />
* USB to Ethernet adapter. The Beagle has Ethernet on it, but every time you boot it you get a random MAC address. If you are running on the Rose network you need a fixed MAC address.<br />
<br />
=== Software on the Beagle ===<br />
<br />
We're using mostly open source software. Go to [[EBC_Exercise_00_Installing_Angstrom_on_SD]] to see see how to get everything installed on the SD card for the Beagle. Once installed, you will be able to do the first 10 or so labs completely on the Beagle. Yup, edit, compile (or make) and run, all on the Beagle.<br />
<br />
=== Software on a host computer ===<br />
<br />
Once we start moving into Kernel development we will need a host computer. Since we are doing Linux development, it's generally agree the host should be running Linux. I suggest you run [http://www.ubuntu.com Ubuntu 10.04 (LTS)]. The Rose Linux Users Group [http://lug.rose-hulman.edu/wiki/Main_Page LUG] has instructions on where to get a local copy so you don't have to download some 700M.<br />
<br />
There are three options as to how to run Linux.<br />
# Native install ([http://www.ubuntu.com/download])<br />
# Install in a virtual machine ([[ECE497 Lab00 Installing Ubuntu in VMware Player]], though you could also use [[ECE497 VirtualBox Notes | Virtual Box]] too.)<br />
# Run in the cloud<br />
<br />
The Ubuntu site give good instructions for a native install. I've had good success with running both VMware and Virtual Box, though my installation instructions are a bit dated. (Feel free to update them if they need it.)<br />
<br />
I've been testing out the "Cloud" approach and it looks like it will work too. If you want to try the cloud, let me known and I'll ask CSSE to set up a machine for you.</div>Rpjdayhttps://elinux.org/index.php?title=EBC_Exercise_03_Installing_a_Beagle_OS&diff=103754EBC Exercise 03 Installing a Beagle OS2012-02-26T22:20:36Z<p>Rpjday: /* Writing an SD card via Linux */</p>
<hr />
<div>[[Category:ECE497]]<br />
<br />
In this class we run [http://www.angstrom-distribution.org/ The Ångström Distribution] on the BeagleBoard. Ångström is a stable and user-friendly distribution of Linux for embedded devices like handhelds, set top boxes and network-attached storage devices and the BeagleBoard.<br />
<br />
Here's how to load the Ångström image we'll be using on an SD card. First get a microSD card that holds at least 4G.<br />
<br />
== Download a copy of the Ångström image ==<br />
<br />
Download a copy of the image [http://www.rose-hulman.edu/~yoder/Beagle/ here]. You'll see several files here. You want to download '''ETC2012.img.bz2''' and '''ETC2012.img.bz2.md5'''. The first is some 1.5G, so it will take a while. The second is a check sum file for the first. <br />
<br />
Once you have the two files and the card, what you do with them depends on what OS you are running.<br />
<br />
=== Writing an SD card via Linux ===<br />
<br />
If you are running Linux type:<br />
<br />
host$ '''md5sum ETC2012.img.bz2'''<br />
host$ '''cat ETC2012.img.bz2.md5'''<br />
<br />
The two command should show the same thing<br />
6610e1ea35febc5e9016734213bdba68 ETC2012.img.bz2<br />
<br />
If your results match you have successfully downloaded the image and can move on. If they don't match, try downloading again. If that doesn't work, contact me.<br />
<br />
Next uncompress the image. <br />
host$ '''bunzip2 -k ETC2012.img.bz2''' <br />
The '''-k''' says to keep the compressed file. This will take a few minutes. <br />
<br />
Insert your microSD card in a reader/writer and find the path to it by running '''System:Administration:Disk Utility'''. You will see<br />
<br />
[[File:Screenshot-Disk_Utility.png| 400x293px]]<br />
<br />
The path is in the upper right.<br />
<br />
Then enter (if you're using Ubuntu, note the use of the '''sudo''' command):<br />
<br />
host$ '''sudo dd if=ETC2012.img of=/dev/sd''X'' bs=256M'''<br />
host$ '''sync'''<br />
<br />
Where <code>/dev/sd''X''</code> is the path to your SD card. This may take 10 minutes. Mine took about 7.5.<br />
<br />
An alternative recipe is to uncompress and write the content to your SD card all in one move (again, if you're using Ubuntu, note the need for '''sudo'''):<br />
<br />
host$ '''bunzip2 -c ETC2012.img.bz2 | sudo dd of=/dev/sd''X'' bs=256M'''<br />
<br />
so that you don't have to uncompress the image file first.<br />
<br />
=== Writing an SD card via Windows ===<br />
<br />
The following instructions come from [http://code.google.com/p/beagleboard/wiki/BeagleBoardDiagnosticsNext here].<br />
<br />
To initialize your card under Windows, you can do the following:<br />
<br />
# Download and install [https://wiki.ubuntu.com/Win32DiskImager Ubuntu's Win32DiskImager] (also known as the [https://launchpad.net/win32-image-writer/ win32-image-writer]).<br />
# Download and install [http://www.7-zip.org/ 7-zip compression software]. (Or use winRAR)<br />
# Decompress '''ETC2012.img.bz2''' image file using 7-zip (or winRAR).<br />
# Insert >=4GB SD card into the reader/writer.<br />
# Start the Win32DiskImager.<br />
# Select '''ETC2012.img''' and correct SD card location.<br />
# Click on '''Write'''.<br />
After the image writing is done (this will take some 10 minutes), eject the SD card.<br />
<br />
== Boot your Beagle ==<br />
<br />
You should now have a functioning SD card image. Plug it into your BeagleBoard and boot it up.<br />
<br />
While the root password used to be '''test''', there appears to be no password on the root account in this image.</div>Rpjdayhttps://elinux.org/index.php?title=EBC_Exercise_03_Installing_a_Beagle_OS&diff=103742EBC Exercise 03 Installing a Beagle OS2012-02-26T22:16:58Z<p>Rpjday: Some typo fixes, plus add how to use "bunzip2 -c".</p>
<hr />
<div>[[Category:ECE497]]<br />
<br />
In this class we run [http://www.angstrom-distribution.org/ The Ångström Distribution] on the BeagleBoard. Ångström is a stable and user-friendly distribution of Linux for embedded devices like handhelds, set top boxes and network-attached storage devices and the BeagleBoard.<br />
<br />
Here's how to load the Ångström image we'll be using on an SD card. First get a microSD card that holds at least 4G.<br />
<br />
== Download a copy of the Ångström image ==<br />
<br />
Download a copy of the image [http://www.rose-hulman.edu/~yoder/Beagle/ here]. You'll see several files here. You want to download '''ETC2012.img.bz2''' and '''ETC2012.img.bz2.md5'''. The first is some 1.5G, so it will take a while. The second is a check sum file for the first. <br />
<br />
Once you have the two files and the card, what you do with them depends on what OS you are running.<br />
<br />
=== Writing an SD card via Linux ===<br />
<br />
If you are running Linux type:<br />
<br />
host$ '''md5sum ETC2012.img.bz2'''<br />
host$ '''cat ETC2012.img.bz2.md5'''<br />
<br />
The two command should show the same thing<br />
6610e1ea35febc5e9016734213bdba68 ETC2012.img.bz2<br />
<br />
If your results match you have successfully downloaded the image and can move on. If they don't match, try downloading again. If that doesn't work, contact me.<br />
<br />
Next uncompress the image. <br />
host$ '''bunzip2 -k ETC2012.img.bz2''' <br />
The '''-k''' says to keep the compressed file. This will take a few minutes. <br />
<br />
Insert your microSD card in a reader/writer and find the path to it by running '''System:Administration:Disk Utility'''. You will see<br />
<br />
[[File:Screenshot-Disk_Utility.png| 400x293px]]<br />
<br />
The path is in the upper right.<br />
<br />
Then enter:<br />
<br />
host$ '''dd if=ETC2012.img of=/dev/sd''X'' bs=256M'''<br />
host$ '''sync'''<br />
<br />
Where <code>/dev/sd''X''</code> is the path to your SD card. This may take 10 minutes. Mine took about 7.5.<br />
<br />
An alternative recipe is to uncompress and write the content to your SD card all in one move:<br />
<br />
host$ '''bunzip2 -c ETC2012.img.bz2 | dd of=/dev/sd''X'' bs=256M'''<br />
<br />
so that you don't have to uncompress the image file first.<br />
<br />
=== Writing an SD card via Windows ===<br />
<br />
The following instructions come from [http://code.google.com/p/beagleboard/wiki/BeagleBoardDiagnosticsNext here].<br />
<br />
To initialize your card under Windows, you can do the following:<br />
<br />
# Download and install [https://wiki.ubuntu.com/Win32DiskImager Ubuntu's Win32DiskImager] (also known as the [https://launchpad.net/win32-image-writer/ win32-image-writer]).<br />
# Download and install [http://www.7-zip.org/ 7-zip compression software]. (Or use winRAR)<br />
# Decompress '''ETC2012.img.bz2''' image file using 7-zip (or winRAR).<br />
# Insert >=4GB SD card into the reader/writer.<br />
# Start the Win32DiskImager.<br />
# Select '''ETC2012.img''' and correct SD card location.<br />
# Click on '''Write'''.<br />
After the image writing is done (this will take some 10 minutes), eject the SD card.<br />
<br />
== Boot your Beagle ==<br />
<br />
You should now have a functioning SD card image. Plug it into your BeagleBoard and boot it up.<br />
<br />
While the root password used to be '''test''', there appears to be no password on the root account in this image.</div>Rpjdayhttps://elinux.org/index.php?title=EBC_Exercise_14_gdb_Debugging&diff=103682EBC Exercise 14 gdb Debugging2012-02-26T17:21:36Z<p>Rpjday: Correct typoes: "gbd" -> "gdb".</p>
<hr />
<div>[[Category:ECE497]]<br />
[[Category:EmbeddedBeagleClass]]<br />
<br />
As the code becomes more complex, more powerful debugging tools are needed. The GNU Project debugger (gdb) is the granddaddy of all debuggers. In this exercise you will learn how to install and use it on the Beagle. In a later exercise you will learn how to install it on your host and debug the Beagle remotely.<br />
<br />
== gdb ==<br />
<br />
gdb, the [http://www.gnu.org/software/gdb/ GNU Project debugger], allows you to see what is going on ''inside'' another program while it executes -- or what another program was doing at the moment it crashed.<br />
<br />
gdb can do four main kinds of things to help you catch bugs in the act:<br />
<br />
* Start your program, specifying anything that might affect its behavior.<br />
* Make your program stop on specified conditions.<br />
* Examine what has happened, when your program has stopped.<br />
* Change things in your program, so you can experiment with correcting the effects of one bug and go on to learn about another.<br />
<br />
The program being debugged can be written in Ada, C, C++, Objective-C, Pascal (and many other languages). Those programs might be executing on the same machine as GDB (native) or on another machine (remote). GDB can run on most popular UNIX and Microsoft Windows variants.<br />
<br />
For our lab we'll be using a C program and do local execution on the Beagle.<br />
<br />
=== Installing gdb ===<br />
<br />
On your Beagle run:<br />
<br />
beagle$ '''opkg update'''<br />
beagle$ '''opkg install gdb'''<br />
<br />
=== <span style="color:green"> A gdb Tutorial </span>===<br />
<br />
There are a number of gdb tutorials out there. I like [http://www.dirac.org/linux/gdb/ Using GNU's GDB Debugger By Peter Jay Salzman]. Read Chapter 1, the Intro. Do the examples in Chapters 2 and 3. Look over Breakpoints in Chapter 4.<br />
<br />
Chapter 2 has you download a Makefile that will fail because it can't find '''ctags'''. Either comment out that line, or follow the directions below to install ctags.<br />
<br />
=== ctags on the host ===<br />
<br />
Here's what I did to get ctags running in gedit on the host.<br />
<br />
host$ '''sudo apt-get install exuberant-ctags'''<br />
<br />
gedit has a ctags plugin. Details are [http://sourceforge.net/projects/symbol-browser/ here]. Download from [http://sourceforge.net/projects/symbol-browser/files/symbol-browser-bin/ here]. Installation details are [http://www.micahcarrick.com/gedit-symbol-browser-plugin.html#2 here].<br />
<br />
You also need to load '''libgnomeprintui'''. Go to '''System:Administration:Synaptic Package Manager''' and search for libgnomeprintui and select it. Click Apply.<br />
<br />
Now you can use ctags. Go a directory with some .c and .h files and run:<br />
<br />
host$ '''ctags *.c *.h'''<br />
host$ '''gedit *.c *.h'''<br />
<br />
This will create a file called '''tags''' that tells where each symbol is defined. Enable the ctags plugin by going to '''Edit:Preferences'''. Click the '''Plugins''' tag and scroll down to '''Symbol Browser''' and check it. You can click the '''Configure Plugin''' button to apply some options.<br />
<br />
To make the symbols visible, select ''' View:Side Pane''' in gedit. Click the symbol [[File:SymbolBrowser.png]] at the bottom of the side pane. You will now see all the symbols. Click on one to go to its definition.<br />
<br />
=== ctags on the Beagle ===<br />
<br />
I haven't figured this one out, yet.</div>Rpjdayhttps://elinux.org/index.php?title=BeagleBoard_Trainer&diff=16137BeagleBoard Trainer2010-01-16T10:52:34Z<p>Rpjday: </p>
<hr />
<div>[[File:trainer.jpg|thumb|right|The BeagleBoard Trainer]]<br />
The Trainer Board is an expansion board for the BeagleBoard that adds:<br />
* I2C interface(+3.3v or +5v selectable)<br />
* SPI(+3.3v)<br />
* GPIO's(+3.3v)<br />
* large 0.1" prototype matrix and power bus. <br />
* Atmega168<br />
** Arduino compatiblle<br />
** +3.3v or +5v selectable<br />
** connected via the second uart to the BeagleBoard</div>Rpjdayhttps://elinux.org/index.php?title=BeagleBoard_Community&diff=14330BeagleBoard Community2009-10-21T10:35:03Z<p>Rpjday: typo.</p>
<hr />
<div>[[Category: Linux]]<br />
[[Category: OMAP]]<br />
[[Category:Development Boards]]<br />
[[Category: BeagleBoard]]<br />
This page collects information about [http://www.ti.com/ TI's] [http://www.arm.com/ ARM] based [http://focus.ti.com/general/docs/gencontent.tsp?contentId=36915&amp;DCMP=OMAP_Feb27_2008&amp;HQS=Other+PR+omap3503pr OMAP3] [http://beagleboard.org Beagle Board].<br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:#ffffcc; align:right; "><br />
'''NEWS:''' [http://www.tincantools.com/product.php?productid=16147&cat=0&page=1&featured Zippy] Expansion boards for the [[BeagleBoard]] are now available! In Canada, check out [http://robotcraft.ca RobotCraft] in London, Ontario.<br />
</div><br />
<br />
<br />
=Events=<br />
* Each last Saturday of the month, next August 29, 2009: [[BeagleBoard/bangalore user meet|BeagleBoard Bangalore user meeting]] (Beagle Clinic India)<br />
* all over the world 2009: [http://www.ti.com/corp/docs/landing/techday09/index.shtml# TI Technology Days 2009]. <br />
* ongoing 2009: [[BeagleBoard/contest|Beagle Sponsored Project Program]] - add a cool project and get a free BeagleBoard to realize it!<br />
<br />
=Hardware=<br />
<br />
The Beagle Board is ''a low-cost, fan-less single-board computer based on TI's OMAP3 device family, with all of the expandability of today's desktop machines, but without the bulk, expense, or noise'' (from [http://beagleboard.org/ beagleboard.org]). It uses a TI [http://focus.ti.com/docs/prod/folders/print/omap3530.html OMAP3530] processor (ARM Cortex-A8 superscalar core ~600MHz paired with a TMS320C64x+ DSP ~430MHz and an Imagination SGX 2D/3D graphics processor). See [http://focus.ti.com/docs/prod/folders/print/omap3530.html#features OMAP3530 features] for more processor features. [[BeagleBoard#Availability|Price is USD 149]]. The design goal was to make it as simple and cheap as possible, e.g. not having a LCD added, but letting you connect all add-ons available as cheap external components. See [http://beagleboard.org/brief What is Beagle?] and [http://linuxdevices.com/news/NS5852740920.html LinuxDevices article] for more details.<br />
<br />
The videos [http://uk.youtube.com/watch?v=fL_XMieanSc Beagle Board Beginnings] and [http://uk.youtube.com/watch?v=FuVwh_VrIxk Beagle Board 3D, Angstrom, and Ubuntu] give you a good intro about what BeagleBoard is about and it's capabilities.<br />
<br />
==Components==<br />
<br />
{|border=0<br />
!Top view of rev B:<br />
!Top view of rev C:<br />
|-<br />
|[[Image:Bb revb top numbered.jpg]]<br />
|[[Image:Bb revc top numbered.jpg]]<br />
|-<br />
|}<br />
{|border=1<br />
!No.<br />
!Name<br />
!Comment<br />
|-<br />
|'''1'''<br />
|[http://www.ti.com/omap35x OMAP3530] processor + 256MB NAND<br />
<br />
+ 128MB DDR (rev B)<br />
<br />
+ 256MB DDR (rev C)<br />
|PoP: Package-On-Package implementation for Memory Stacking<br />
[http://www.micron.com/products/partdetail?part=MT29C2G24MAKLAJG-6%20IT 256MB NAND/128MB Mobile DDR SDRAM] available from [http://www.digikey.com/scripts/US/DKSUS.dll?Detail?name=557-1435-ND DigiKey]<br />
<br />
([http://www.micron.com/products/partdetail?part=MT29C4G48MAPLCJI-6%20IT 512MB NAND/256MB Mobile DDR SDRAM] available from [http://www.digikey.com/scripts/US/DKSUS.dll?Detail?name=557-1436-ND DigiKey])<br />
<br />
[http://www.micron.com/products/mcps/beagleboard Micron's multi chip packages (MCPs) for Beagle Board]<br />
|-<br />
|'''2'''<br />
|[http://focus.ti.com/docs/prod/folders/print/tfp410.html DVI chip (TFP410)]<br />
|<br />
|-<br />
|'''3'''<br />
|[[BeagleBoard#DVI|DVI-D]]<br />
|Connection via HDMI connector<br />
|-<br />
|'''4'''<br />
|[[BeagleBoard#JTAG|14-pin JTAG]]<br />
|1.8V only!<br />
|-<br />
|'''5'''<br />
|Expansion connector: I2C, I2S, SPI, MMC/SD<br />
|User must solder desired header into place<br />
|-<br />
|'''6'''<br />
|[[BeagleBoard#User_button|User button]] <br />
|Allows setting boot order.<br />
|-<br />
|'''7'''<br />
| Reset button<br />
|<br />
|-<br />
| '''8'''<br />
|[[BeagleBoard#EHCI|USB 2.0 EHCI HS]]<br />
|Rev A and B: not working, unpopulated<br />
<br />
Rev C: populated and working<br />
|-<br />
|'''9'''<br />
|SD/MMC+<br />
| SDHC cards are supported<br />
|-<br />
|'''10'''<br />
|[[BeagleBoard#RS232|RS-232 serial]]<br />
|<br />
|-<br />
|'''11'''<br />
|Alternate power <br />
|normally powered by USB (unmounted on REV Ax boards, see [[BeagleBoard#Errata|errata]])<br />
|-<br />
|'''12'''<br />
|[[BeagleBoard#OTG|USB 2.0 HS OTG]] <br />
|Mini-AB connector. Board can be powered from port. <br />
|-<br />
|'''13'''<br />
|Stereo In<br />
|<br />
|-<br />
|'''14'''<br />
|Stereo Out<br />
|<br />
|-<br />
|'''15'''<br />
|S-Video<br />
|<br />
|-<br />
|'''16'''<br />
|TWL4030 (Rev A thru C2 inc.)<br />
[http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] (Rev C3 onwards)<br />
|Audio CODEC, USB port, power-on reset and power management. The TWL4030 is pin-compatible with the [http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] chip and was used due to the very limited availability of the TPS65950 in early board revisions.<br />
|-<br />
|'''17'''<br />
|LCD<br />
|only rev C<br />
|-<br />
|'''18'''<br />
|USB power<br />
|<br />
|-<br />
|'''19'''<br />
|Host PHY<br />
|<br />
|-<br />
|'''20'''<br />
|32kHz<br />
|<br />
|-<br />
|'''21'''<br />
|12MHz<br />
|<br />
|-<br />
|'''22'''<br />
|RS232 XVCR<br />
|<br />
|-<br />
|'''23'''<br />
|PWR SW<br />
|<br />
|-<br />
|'''24'''<br />
|VBAT<br />
|<br />
|-<br />
|}<br />
<br />
* Board size: 3" x 3" (about 76.2 x 76.2 mm)<br />
* Weight: [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/beagleboard.png ~37g]<br />
* Currently 6 layer PCB; target: 4 layer<br />
<br />
'''Bottom of rev B:'''<br />
<br />
[[Image:Beagle_bottom.jpg]]<br />
<br />
See [http://www.flickr.com/photos/jadon/sets/72157606050144396/ jadonk's photostream] for some more detailed BeagleBoard pictures.<br />
<br />
==Manual==<br />
<br />
See [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard System Reference Manual (rev. C3.0)].<br />
<br />
==Schematic==<br />
<br />
Schematic of BeagleBoard Rev. C3 is available as part of [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard System Reference Manual (rev. C3.0)]. Rev C3 and previous are also available from [http://beagleboard.org/hardware/design BeagleBoard.org design page] including in PDF format. Please make sure that you ''read, understand and agree'' [http://groups.google.com/group/beagleboard/msg/ee3e1bc927551ffc Jason's mail] before using this.<br />
<br />
==Layout== <br />
<br />
Layout of BeagleBoard Rev. C3 is available as part of [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard System Reference Manual (rev. C3.0)]. Rev C3 and previous layouts are also available from the [http://beagleboard.org/hardware/design BeagleBoard.org design page]. Please make sure that you ''read, understand and agree'' [http://groups.google.com/group/beagleboard/msg/ee3e1bc927551ffc Jason's mail] before using this.<br />
<br />
==Errata==<br />
<br />
# ''Boards revision A only'': The DC power jack pinout is incorrect on the PCB layout. DC_5V and GND are switched on PCB layout. Normally, the power jack has DC_5V on the center pin and GND on the sleeve (see Figure 20 of [http://www.beagleboard.org/uploads/BBSRM_6.pdf Beagle HW manual]). But on revision Ax boards the PCB layout has GND on center and DC_5V on sleeve. For this reason it is currently removed. It will be back on the Rev B board. Workaround is to remove wire connecting the two power pins on revision Ax boards and use external [http://amethyst.openembedded.net/~koen/beagleboard/beagle-power-pads.jpg power supply with switched connector] (do not connect anything to the “?” terminal. USB power will be permanently disabled and the board can only be powered from the 5V.) See [http://www.flickr.com/photos/koenkooi/2512038988/ Koen's Beagleboard powermod picture] with short descriptions, too.<br />
# ''Boards revision < A5 only'': There is excess voltage drop across R6 which is used to measure the current consumption on the board. This needs to be a .1 ohm instead of a 1 ohm resistor (SMD 0805). All revision A5 boards have been updated to .1. You can also just solder in a jumper to J2 bypassing the current read point. This issue can cause issues with the USB host port as the voltage supplied to that port can be too low.<br />
# ''Boards revision A only'': User LEDs 0 and 1 are shorted on the layout preventing them from being controlled individually. You need to control both GPIO_149 and GPIO_150 to turn on or off both LEDs. This is fixed in the Rev B boards.<br />
# ''Boards revision < A5 only'': There is an issue where on some boards the 1.8V has excessive noise on it. This is the result of two incorrect parts L1 and L3 being installed on the board. The inductors that were initially installed in the switchers are 100uH and need to be 1uH. This change will require that the board be returned for update. To check for correct parts, have a look to bottom of BeagleBoard. L1 - L3 are the larger parts there. They all have to be labeled with "102" (== 1uH). If any of these three inductors are labeled with "104" (== 100uH) they are wrong and have to be exchanged.<br />
# ''Boards revision A and B'': USB HOST (EHCI) failures. See [http://code.google.com/p/beagleboard/issues/detail?id=15 issue 15] and [http://code.google.com/p/beagleboard/wiki/USBHostTestREPRODUCE USB host test reproduce]. This is a hardware defect. [http://www.beagleboard.org/irclogs/index.php?date=2008-05-29#T00:27:06 Most probably] Rev. B board does not have the EHCI USB connector mounted. Workaround: Use [[BeagleBoard#OTG|OTG port]] with something like [http://trisoft.de/pics/ZHost.JPG mini A to USB A adapter] instead.<br />
# ''Boards revision A and < B4'': Plugging in a USB OTG cable will prevent Beagle from booting (with git kernel), see [http://code.google.com/p/beagleboard/issues/detail?id=19 issue #19], too. This is due to missing filtering capacitor at USB OTG VBUS. When the kernel driver detects that a USB OTG cable is inserted it enables the charge pump to generate VBUS. With no filtering VBUS looks like any switching regulator output with no filtering -- a huge voltage spike when the switch is on, followed by a rapid decay to a low voltage until the next switch on period. The capacitor is there to store energy between the output switch ON and OFF time, the feedback loop in the regulator does sample the cap voltage. Fix is to piggy-back solder a 0603 2.2uF ceramic capacitor to D3, see [http://www.sakoman.net/omap3/beagle/vbus-mod-d3.jpg VBUS modification D3 picture]. Revision B4 boards and newer have this fix applied. Thanks to [http://groups.google.com/group/beagleboard/msg/eb789e15c99a673d Steve] for debugging this!<br />
# ''Boards revision A and < B5'': There is some issue with 32kHz clock depending on system configuration used to clock some OMAP3 peripherals. From this e.g. GPIOs, GPTIMERs, and USB on Beagle might be affected. See [http://code.google.com/p/beagleboard/issues/detail?id=22 Issue 22]. Symptom from this is that after booting Linux kernel serial console hangs after some time and no serial input/output is possible any more. There is one software workaround and one hardware fix for this: (A) Software workaround: Don't use 32kHz timer to clock Linux, instead use MPU timer. (B) Hardware workaround: Remove [http://www.flickr.com/photos/25691331@N04/2766671437/in/pool-beagleboard capacitor C70], which improves the 32kHz clock quality and avoids hang-up. Note: Revision A boards have capacitor C70 [http://www.flickr.com/photos/25691331@N04/2766671437/in/pool-beagleboard at the same location] as rev. B boards. Note: Board revision >= B5 removes capacitor C70.<br />
# ''Random boards, quite rare, revision < B6'': Some random boards and quite rare, show directly after purchasing broken serial communication from host PC to BeagleBoard. Symptom is that you get a new board, get serial output from BeagleBoard in terminal program, but can't type anything at U-Boot prompt (Note: Don't mix this with errata #7. With errata #7 you are able to use U-Boot normally, but Linux prompt input stops after some time). Most users don't have this issue, though. So, first double check your serial configuration ([[BeagleBoardFAQ#Serial_connection_.231|FAQ1]], [[BeagleBoardFAQ#Serial_connection_.232|FAQ2]] and [[BeagleBoardFAQ#Serial_connection_.233|FAQ3]]). Only if you are really, really sure that anything with your serial connection is fine, consider sending the board back doing a [http://beagleboard.org/support/rma RMA request]. This issue was resolved on revision B6 and later boards.<br />
<br />
For additional (software) issues and enhancement requests see [http://code.google.com/p/beagleboard/issues/list Beagle board open point list & issue tracker], too.<br />
<br />
Note: BeagleBoard revision B6 uses different package for U9/U11.<br />
<br />
==Clocking==<br />
<br />
Some [http://www.beagleboard.org/irclogs/index.php?date=2008-07-08#T21:12:23 notes] about (ARM processor) clock rates at BeagleBoard:<br />
<br />
* ARM Cortex-A8 processor is currently clocked at 500MHz<br />
* 500MHz is the default used because it is a balance of performance and longevity<br />
* For OMAP35x 600MHz is max recommended<br />
* At 600MHz OMAP35x is considered to be 'overdrive' and it does not have the same life expectancy<br />
* Higher than 600MHz is out of spec and no guarantee it will work at all (or not damage itself)<br />
* Also keep in mind that if you go higher you probably want to increase the core voltage. Some of this is mentioned in table 3-3 of the [http://focus.ti.com/lit/ds/symlink/omap3530.pdf OMAP3530 data sheet]. Some numbers:<br />
<br />
{| border="1"<br />
||'''ARM'''||'''DSP'''||'''core voltage'''<br />
|-<br />
|600 MHz||430 MHz||1.35V<br />
|-<br />
|550 MHz||400 MHz||1.27V<br />
|-<br />
|500 MHz||360 MHz||1.2V<br />
|}<br />
<br />
* For some OMAP3 clock, voltage and power management discussion see [http://focus.ti.com/lit/an/sprt495/sprt495.pdf OMAP3 power management white paper], too.<br />
* The OMAP3 chip on the Beagle lacks the efuses needed for using the SmartReflex technology, see [http://www.beagleboard.org/irclogs/index.php?date=2009-02-26#T10:44:24].<br />
* There is a thermal monitor in the core, you could use to scale frequency up and down<br />
<br />
To set CPU clock to 600 MHz, there are two options. Both '''do not''' adjust the voltage, so the system may become unstable:<br />
<br />
* The u-boot command "mw 48004940 0012580c" will temporarily set the CPU clock to 600 MHz (not permanent over reset).<br />
* To permanently set the CPU clock to 600 MHz, include the above command in the "bootcmd" variable or equivalent script.<br />
<br />
==Power management==<br />
<br />
* Latest Linux kernel power management development for TI OMAP SoCs is maintained in [http://git.kernel.org/?p=linux/kernel/git/khilman/linux-omap-pm.git;a=summary Kevin's linux-omap-pm git tree]<br />
* Russ' Beagle HW modifications resulted in [http://groups.google.com/group/beagleboard/browse_thread/thread/197a8ef6b46cc828 8mW sleep for Beagle Board]<br />
<br />
Without PM kernel, the Beagle [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/index.htm consumes ~1.5 watts idle, however it also uses the same amount under load] (see bottom of that page).<br />
<br />
==DLP Pico projector==<br />
<br />
Texas Instruments is developing a Pico Video Projector Kit (PVPK) as a peripheral for the Beagle Board. The stand alone pico projector will support VGA resolution (640 x 480), RGB 888 input through a DVI interface. The physical connector on the projector will be HDMI. See [http://groups.google.com/group/beagleboard/msg/10e218972380ee48 mailing list] and [http://www.youtube.com/watch?v=-tUBXD-KRp4 Beagle Running Angstrom (VGA) on DLP Pico Projector] for more details.<br />
<br />
It is available from [http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=296-23836-ND DigiKey] for $349.<br />
<br />
See [http://blog.makezine.com/archive/2009/01/tis_beagleboard_and_dlp_pico_projector.html?CMP=OTC-0D6B48984890 article from Make], too.<br />
<br />
DigiKey videos [http://www.youtube.com/watch?v=KBbCdnOj5vg part 1], [http://www.youtube.com/watch?v=zymOmduNWyI part 2] and [http://www.youtube.com/watch?v=Uj19Bi5NYeU part 3].<br />
<br />
==Interfacing to Raw LCD Panels==<br />
<br />
Currently on Rev A / B boards there is no direct access to the LCD lines before they enter the DVI framer. The REV C2 provides access to these lines. Several projects to interface an LCD to the beagleboard exist:<br />
<br />
* [[BeagleBoardRawLCD|interfacing to Raw LCD Panels]] article <br />
* [http://digitalsurveyinstruments.com/beagleperiphials/hdmi2parallel/doc/index.htm hdmi to parallel] workaround method<br />
* [http://www.harbaum.org/till/dvi2par/index.shtml dvi2par cheap diy HDMI to parallel converter]<br />
<br />
=Availability=<br />
<br />
BeagleBoards, currently Rev. C3 boards, are available from<br />
<br />
* [http://www.mouser.com/beagleboard Mouser]<br />
* [http://dkc1.digikey.com/us/mkt/beagleboard.html Digi-Key] with part number [http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=296-23428-ND 296-23428-ND].<br />
<br />
Note: For non-US Digi-Key free shipping orders:<br />
<br />
* Click the US flag on the top right corner of [http://dkc1.digikey.com/us/mkt/beagleboard.html Digi-Key] BeagleBoard page to come to the international page<br />
* Select ''Order Online'' for your country<br />
* Add quantity ''1'' and part number ''296-23428-ND''<br />
* Click ''Add to order''<br />
<br />
When ordering over 65 EUR / GBP 50 product (BeagleBoard is above), for Europe the price depends on the actual dollar to EUR/GBP rate. On nov 9, 2008 the price was EUR 124 with free shipping.<br />
<br />
Note: Some users report that they got some questions from DigiKey to be answered before board shipping is done.<br />
<br />
Note: While you get free shipping, most probably you have to pay tax e.g. ordering from Europe. Users report that they had to pay EUR ~34 - 44 VAT + importing taxes (depending on european country), resulting in EUR 137 - 147 ordering from Europe.<br />
<br />
Note: For European users, [http://www.ebv.com/fileadmin/products/Press_Print/Campaigns/2009/Product_Campaigns/Texas_Beagle_Board_englisch.pdf EBV Elektronik] sells its own blue version of the board for 179 EUR, which includes all useful accessories (DVI cable, serial cable, USB 2.0 Ethernet, USB hub, 2 GB MMC, power supply, Linux BSP).<br />
<br />
Note: German (Europe) users can order through German shops, too. For higher price, though. <br />
* [http://shop.embedded-projects.net/product_info.php/info/p159_BeagleBoard--OMAP-3-.html Embedded Projects Shop] sells BeagleBoard for EUR 199.00 + shipping.<br />
* [http://www.handheld-linux.com/wiki.php?page=Beagle%20Board Handheld-Linux]<br />
<br />
See below for ''hardware'' differences of the revisions. There are no ''software'' differences. <br />
<br />
==Revision A==<br />
<br />
There are some limited early revision Ax prototypes out there used by some hackers hanging around at #beagle channel on irc.freenode.net. See [[BeagleBoard#Errata|errata]] for limitations.<br />
<br />
==Revision B==<br />
<br />
Revision B is same as revision A, except<br />
* fix for shorted LEDs 0/1<br />
* fix for wrong power jack pinout<br />
* revision B6 uses different package for U9/U11<br />
Still has USB HOST (EHCI) failures. USB HOST (EHCI) connector isn't mounted.<br />
<br />
There are 4 revisions of the B board in the field: B4, B5, B6 and B7.<br />
<br />
The most notable difference is the use of the ES3.0 silicon in B6 and B7, other changes are not relevant to software developers.<br />
<br />
==Revision C2==<br />
Revision C2 is same as revision B7 except:<br />
* USB HOST (EHCI) is operational on revision C2, with standard USB A female connector.<br />
* Add interface for raw LCDs ([http://groups.google.com/group/beagleboard/msg/2e82c3ed6061d9d2 mockup])<br />
* It uses updated OMAP3 revision. BeagleBoard revisions B4+B5 uses OMAP3 ES 2.1 (engineering sample), while BeagleBoard revision C2 uses ES 3.0. OMAP3 ES 3.0 fixes minor issues:<br />
** updated ARM Cortex A8 silicon (r1p3) fixing a very rare [http://elinux.org/BeagleBoardFAQ#NEON_performance NEON issue] that has not been seen in real code<br />
* Power measurement feature<br />
* Uses [http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] OMAP power controller instead of TWL4030<br />
* Three additional PWM signals on the expansion connector added as pin mux options to existing pins ([http://groups.google.com/group/beagleboard/browse_thread/thread/d5872b7c6d74592c?hl=en# message])<br />
* Revision detection (to be able to identify C2 board from older boards by software, e.g. for different pin mux)<br />
* 256MB RAM ([http://groups.google.com/group/beagleboard/msg/3a38d0f21cefd6b1?hl=en message]) (and still 256MB NAND like rev B)<br />
<br />
Note: Revision C2 is the first production version, and all orders from from Digi-Key are shipped as Rev C2.<br />
<br />
==Revision C3==<br />
As revision C2 boards are [http://groups.google.com/group/beagleboard/msg/e41d3c97aa7d4951 sold out], revision C3 will ship now.<br />
<br />
Revision C3 is same as revision C2 [http://groups.google.com/group/beagleboard/msg/037318fbc44139d5 except]:<br />
* Optional RTC [http://parts.digikey.com/1/parts/1454-battery-lith-coin-3v-12-5mm-vert-vl-1220-vcn.html VL1220 series] backup battery<br />
* Mounting holes conected to ground<br />
* Slightly improved S-Video<br />
<br />
==Clones==<br />
===EBVBeagle===<br />
EBV build and sell their own BeagleBoard called [http://www.ebv.com/en/products/categories/details/product/ebvbeagle-board EBVBeagle], see e.g. [http://fl0rian.wordpress.com/2009/03/08/the-other-beagleboard/].<br />
It is actually a BeagleBoard revision C2 with green PCB boxed with some useful accessories. It comes as a quite complete starter kit with AC adapter, USB to Ethernet adapter, MMC card, USB hub and some cables.<br />
More information in [http://www.ebv.com/en/press-print/news-pr/details/news//press-releas-54.html official press release].<br />
<br />
===Mini Board===<br />
[[Mini_Board|ICETEK-OMAP3530-Mini]] is a chinese BeagleBoard clone.<br />
<br />
===DevKit 8000===<br />
[[DevKit8000]] is a Chinese BeagleBoard clone, slightly larger with additional peripherals (e.g. LCD/TSP, Ethernet and keyboard).<br />
<br />
===IGEPv2===<br />
[http://www.igep-platform.com/ IGEPv2 Platform] is a Spanish BeagleBoard clone, slightly larger, with additional peripherals like e.g. ethernet connector, wifi+bluetooth.<br />
<br />
==BeagleBoard-based products==<br />
* [http://www.alwaysinnovating.com/touchbook/ Always Innovating Touch Book], see [http://gigglehd.com/zbxe/hdforum/files/attach/images/899852/493/987/001/always_innovating_touch_book_0011.jpg]<br />
<br />
==Beagle case==<br />
<br />
*[http://specialcomp.com/beagleboard/ Special Computing]<br />
*[http://groups.google.com/group/beagleboard/browse_thread/thread/1c82316019633e51 SketchUp 3D model]<br />
<br />
=Adapters=<br />
<br />
For quite detailed information about all BeagleBoard peripherals see [http://www.beagleboard.org/uploads/BBSRM_6.pdf BeagleBoard HW Reference Manual (rev. B6)].<br />
<br />
See [[BeagleBoardPeripherals| BeagleBoard peripherals and adapters page]] for useful add ons for Beagle Board.<br />
<br />
==Expansion boards==<br />
* [[BeagleBoard Zippy]] expansion board is now available from [http://www.tincantools.com/product.php?productid=16147&cat=0&page=1&featured TinCanTools] for $79.00. basic specs are:<br />
** Battery Backed RTC<br />
** Second MMC slot<br />
** 10BaseT Ethernet<br />
** Second RS-232<br />
** +5V level I2C<br />
** AT24 EEPROM<br />
* [http://www.hy-research.com/beagle_expansion.html HY Research] has some expansion board basics and example.<br />
* [http://www.hervanta.com/stuff/Beaglebot#Expansion_Board Beaglebot] uses a custom extension board.<br />
* [http://beagleboard.org/leopard Leopard Board], a Beagle buddy web camera<br />
* There is also a VGA DB15 adapter board under development for the Rev C2 board. It should be available through a yet to be annnounced outlet.<br />
<br />
In Canada, check out [[http://robotcraft.ca RobotCraft]] in London, Ontario for expansion boards.<br />
<br />
==JTAG==<br />
<br />
Depending on your JTAG tool, you'd need a 14-pin to 20-pin adapter to use an ARM debugger. The 14-pin TI JTAG connector is used on BeagleBoard and is supported by a large number of JTAG emulation products.<br />
See [[BeagleBoardJTAG]] for more information.<br />
<br />
==RS232==<br />
<br />
The pinout on the beagle board is "AT/Everex" or "IDC10". You can buy [http://www.pccables.com/07120.htm IDC10 to DB9M adapters] in many places as they are commonly used for old PCs. You can also probably rip one of those cables out of any old desktop computer, where it's being used to support the serial port. Be careful, though -- some of those cables will have that tenth hole filled in so you'd have to snap off the extraneous pin on your BeagleBoard. Keep looking until you find a cable with all 10 holes open.<br />
<br />
Depending on your local configuration, you may need a [http://en.wikipedia.org/wiki/Null_modem 9-Pin NullModem] cable to connect BeagleBoard to serial port of your PC. From [http://www.tincantools.com/ TinCanTools] there is a [http://www.tincantools.com/product.php?productid=16144&cat=0&page=1&featured RS-232 DB-9 adapter] and [[media:flyswatter-ti-uart.pdf|adapter schematic]] available.<br />
<br />
==USB-to-Serial Converter==<br />
<br />
Since many systems no longer come with an actual serial port, you might need to pick up a USB-to-serial converter at your local computer store to connect to your BeagleBoard. Be warned that some of them simply do not work. Many of them are based on the Prolific chip, and require the pl2303 module to be loaded. But even when two converters appear to have exactly the same characteristics as listed in /var/log/messages, if you simply can't get one to work, be ready to try a different one.<br />
<br />
==USB==<br />
There are two USB ports on the BeagleBoard, one with an EHCI controller and another with an OTG controller. As of Rev B4, the usb EHCI has been removed because of a hardware defect. Rev C will include USB EHCI working properly.<br />
<br />
===EHCI===<br />
The HS ([http://en.wikipedia.org/wiki/USB#USB_signalling HighSpeed]) USB [http://en.wikipedia.org/wiki/EHCI ECHI] controller on OMAP3 on BeagleBoard supports high-speed only. This simplifies the logic on the device. FS/LS (FullSpeed/LowSpeed) devices, such as keyboards and mice, require going through a high-speed USB 2.0 hub.<br />
<br />
According to the BeagleBoard System Reference Manual Rev C2, the EHCI port can source 5V at 500mA which is enough to power a hub and several low-power devices. However, this is only true if the BeagleBoard is powered through its power jack from a well-regulated 5V external power supply. If the BeagleBoard is powered through the OTG port, the EHCI port sources an "extremely limited" ampount of power (probably 100mA or so) so you'll need a "self-powered" USB 2.0 hub with its own external power supply. [Reference: Sections 5.6 and 7.2 of the BBSRM Rev C2.2.]<br />
<br />
===OTG===<br />
The HS USB OTG ([http://en.wikipedia.org/wiki/USB_On-The-Go OnTheGo]) controller on OMAP3 on the BeagleBoard does have support for all the USB 2.0 speeds (LS/FS/HS) and can act as either a host or a gadget/device. The HS USB OTG port is used as the default power input for the BeagleBoard. It is possible to boot the BeagleBoard using this USB port.<br />
<br />
When using the OTG port in host mode, you must power the BeagleBoard using the +5V power jack. If you connect a USB hub, you'll probably also need external power for the USB hub as well, because according to the Hardware Reference manual the BeagleBoard OTG port only sources 100 mA. This is enough to drive a single low-power device, but probably won't work with multiple devices.<br />
<br />
The Linux kernel needs to know you want to use the OTG port in host mode. I believe OTG ports are supposed to figure this out for themselves using the OTG Host Negotiation Protocol, but for now the Linux kernel may need some help. Specifically, Pin 4 (ID) of the OTG connector needs to be shorted to Pin 5 (GND) by using a [http://trisoft.de/pics/ZHost.JPG 5-pin USB Mini-A plug] which shorts these pins together in the plug. A [http://en.wikipedia.org/wiki/USB#USB_cables 5-pin USB Mini-B plug] leaves Pin 4 floating. Unfortunately, most USB Mini plugs are unmarked as to whether they are "A" or "B".<br />
<br />
You can find "mini A" adapters that have Pin 4 shorted and offer out a full-sized USB A Female jack [http://www.electronicproductonline.com/catalog/product_info.php?products_id=2043 here.]<br />
<table><br />
<tr><td><br />
Since the right cables might be hard to get, you simply can<br />
* short circuit the two pins encircled in red in the image to the right. You can do this by running a wire between the two pins. That at least allows easier undoing the change. Actually you could even have a small switch or so between 4 and 5.<br />
or<br />
* use a "mini B" cable (easier to get) and try the soldering of the two pins at the cable's connector. Depending on the cable it should be possible to open the plastic covering of mini-B port with a sharp-edged knife, then solder the two pins together, close the covering again and use some tape. This leaves the BeagleBoard unmodified.<br />
</td><td>[[Image:usb_otg.png]]</td></tr></table><br />
The Rev C BeagleBoard has a pair of pads labeled J6 on the back of the board under the OTG connector. Shorting these pads together with a wire or solder blob connects pins 4 and 5.<br />
See Figure 20 in the BeagleBoard System Reference Manual Rev C2.2.<br />
<br />
==DVI==<br />
<br />
DVI-D connection on BeagleBoard uses a [http://en.wikipedia.org/wiki/HDMI HDMI connector]:<br />
<br />
''HDMI is backward-compatible with the single-link Digital Visual Interface carrying digital video (DVI-D or DVI-I, but not DVI-A) used on modern computer monitors and graphics cards. This means that a DVI-D source can drive a HDMI monitor, or vice versa, by means of a suitable adapter or cable, but the audio and remote control features of HDMI will not be available.''<br />
<br />
BeagleBoard can be connected to a DVI monitor using HDMI female to DVI male cable.<br />
<br />
=BootRom=<br />
<br />
OMAP3 on BeagleBoard contains a BootRom. With this, BeagleBoard can boot without any code in permanent storage (NAND) or from peripherals. This is useful for first board bring up or if your BeagleBoard is bricked. For more information about BootRom booting see [http://www.ti.com/litv/pdf/sprufd6a SPRUFD6]. <br />
<br />
==User button==<br />
<br />
With user button on BeagleBoard you can configure boot order. Depending on this button, the order used to scan boot devices is changed. The boot order is (the first is the default boot source):<br />
<br />
* User button ''not'' pressed: NAND -> USB -> UART -> MMC<br />
* User button ''is'' pressed: USB -> UART -> MMC -> NAND<br />
<br />
Technically speaking, the user button configures pin SYS.BOOT[5]. See [http://focus-webapps.ti.com/general/docs/sitesearch/searchsite.tsp?selectedTopic=1653260327&numRecords=25&searchTerm=sprufd6&statusCode=null SPRUFD6] for more details.<br />
<br />
==Serial and USB boot==<br />
<br />
Historically, using OMAP3's boot ROM for serial and USB boot, there are several tools around. The newest are Nishanth' ''OMAP U-Boot Utils'', while there are still some older tools for serial boot and USB boot. It is also possible to access the [[u-boot environment variables in linux|u-boot env from linux]].<br />
<br />
===OMAP U-Boot Utils===<br />
<br />
Nishanth' [http://code.google.com/p/omap-u-boot-utils/ OMAP U-Boot Utils] provide<br />
<br />
* ''pserial'' - OMAP specific utility which downloads a file in response to ASIC ID over serial port.<br />
* ''pusb'' - OMAP specific utility which downloads a file in response to ASIC ID over USB connection.<br />
* ''ucmd'' - Send a command to U-Boot and wait till a specific match appears.<br />
* ''ukermit - Download a file from host without using kermit to U-Boot.<br />
<br />
See [http://nishanthmenon.blogspot.com/ Nishanth' blog] and [http://groups.google.com/group/beagleboard/browse_thread/thread/c5bfb1b8ed528b52# announce mail], too.<br />
<br />
===Serial boot===<br />
<br />
Besides Nishanth' ''OMAP U-Boot Utils'', to boot from USB or UART, you need a PC tool which talks with OMAP BootRom and speaks the correct protocol to download ARM target code to BeagleBoard. Currently there are two older (experimental) tools for UART boot:<br />
<br />
* [http://omapzoom.org/gf/project/omaptools/wiki PC Serial Boot perl script]<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/80ad3da0eb2aa555 Linux C utility] (not working yet with below target code)<br />
<br />
See [http://groups.google.com/group/beagleboard/browse_thread/thread/ae2c601ebe104a4 USB and serial download target code] for some example target code to be downloaded to OMAP3 on BeagleBoard.<br />
<br />
===USB boot===<br />
<br />
Besides Nishanth' ''OMAP U-Boot Utils'', for USB boot, there is currently one (experimental) tool to boot BeagleBoard over USB:<br />
<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/2b9e99886bb7a747 Linux C utility]<br />
<br />
See [http://groups.google.com/group/beagleboard/browse_thread/thread/ae2c601ebe104a4 USB and serial download target code] for some example target code to be downloaded to OMAP3 on BeagleBoard.<br />
<br />
See [[BeagleBoardRecovery#USB_recovery|USB recovery section]] how to use USB boot for board recovery.<br />
<br />
==NAND boot==<br />
<br />
See [[BeagleBoardNAND|NAND boot]] article.<br />
<br />
==MMC/SD boot==<br />
<br />
Currently, [http://code.google.com/p/beagleboard/wiki/BootingBeagleBoard boot the BeagleBoard with MMC/SD] is the only working way for first board bring up.<br />
<br />
===MMC/SD formatting===<br />
<br />
As described in above MMC/SD boot description, you have to ''create a bootable partition on MMC/SD Card''. This can be done using e.g. Windows or Linux tools.<br />
<br />
'''Windows'''<br />
<br />
See ''HP USB Disk Storage Format Tool 2.0.6'' description on [http://code.google.com/p/beagleboard/wiki/BootingBeagleBoard boot the BeagleBoard with MMC/SD] page.<br />
<br />
'''Linux'''<br />
<br />
Please see [http://wiki.omap.com/index.php?title=MMC_Boot_Format OMAP3 MMC Boot Format].<br />
<br />
===Dual partition card===<br />
<br />
You can [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat create a dual-partition card], booting from a FAT partition that can be read by the OMAP3 ROM bootloader and Windows, then utilizing an ext2 partition for the Linux root file system.<br />
<br />
To mount second ext2 partition as root file system (e.g. containing contents of [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode rd-ext2.bin]) use kernel boot arguments (e.g. in uboot using ''setenv bootargs''):<br />
<br />
console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootwait<br />
<br />
===U-Boot booting===<br />
<br />
If your MMC/SD card formatting is correct and you put [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode MLO, u-boot.bin and uImage] on the card you should get a u-boot prompt after booting beagle board. E.g. (output from terminal program with 115200 8N1):<br />
<br />
...40T.........XH.H.U�..Instruments X-Loader 1.41<br />
Starting on with MMC<br />
Reading boot sector<br />
<br />
717948 Bytes Read from MMC<br />
Starting OS Bootloader from MMC...<br />
<br />
U-Boot 1.1.4 (Apr 2 2008 - 13:42:13)<br />
<br />
OMAP3430-GP rev 2, CPU-OPP2 L3-133MHz<br />
TI 3430Beagle 2.0 Version + mDDR (Boot ONND)<br />
DRAM: 128 MB<br />
Flash: 0 kB<br />
NAND:256 MiB<br />
In: serial<br />
Out: serial<br />
Err: serial<br />
Audio Tone on Speakers ... complete<br />
OMAP3 beagleboard.org #<br />
<br />
Using this u-boot prompt, you now can start kernel uImage stored on MMC card manually:<br />
<br />
OMAP3 beagleboard.org # mmc init<br />
OMAP3 beagleboard.org # fatload mmc 0:1 0x80000000 uimage<br />
OMAP3 beagleboard.org # bootm<br />
<br />
If you like to make that happen every boot:<br />
<br />
OMAP3 beagleboard.org # set bootcmd 'mmc init ; fatload mmc 0:1 0x80000000 uimage ; bootm' ; saveenv<br />
<br />
=Code=<br />
<br />
Code and binaries for BeagleBoard are available at various places.<br />
<br />
==Binaries==<br />
<br />
BeagleBoard pre-built binaries and source code can be found at [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode Beagle source code] and [http://code.google.com/p/beagleboard/downloads/list downloads] page. These are the locations where "official" TI code is available. Please note that this code is mainly for reference and testing. More up to date binaries and code is available by community. Community took (parts) of TI reference code, improves and updates it. <br />
<br />
Actually, [http://www.angstrom-distribution.org/node/47 Koen's prebuilt Beagleboard demo images] are up to date binaries including e17 as window manager, the abiword word processor, the gnumeric spreadsheet application, a NEON accelerated mplayer and the popular NEON accelerated omapfbplay which gives you fullscreen 720p decoding. The [http://www.angstrom-distribution.org/demo/beagleboard www.angstrom-distribution.org/demo/beagleboard] directory should contain all the files you need:<br />
<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/u-boot.bin u-boot.bin]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/MLO MLO]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/uImage uImage]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/Angstrom-Beagleboard-demo-image-glibc-ipk-2009.X-test-20090104-beagleboard.rootfs.tar.bz2 rootfs]<br />
<br />
See the [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat beagle wiki] on how to setup your SD card to use all this goodness.<br />
<br />
==Source==<br />
<br />
Besides above binary and source images (TI's and communities one), for various parts of Beagle software stack there are community supported [http://git.or.cz/ git] repositories available. <br />
<br />
===X-Loader===<br />
<br />
Steve did some work to consolidate and update X-Loader from various sources and put it in a [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=x-load-omap3.git;a=summary X-Loader git repository]. Get it by<br />
<br />
git clone git://gitorious.org/x-load-omap3/mainline.git xloader<br />
cd xloader/<br />
<br />
Build:<br />
<br />
make distclean<br />
make omap3530beagle_config<br />
make<br />
<br />
Result will be a ~20k sized ''x-load.bin'' in main directory.<br />
<br />
===U-Boot===<br />
<br />
[http://www.denx.de/wiki/U-Boot/WebHome Mainline U-Boot] has good support for BeagleBoard. Get it by:<br />
<br />
git clone git://git.denx.de/u-boot.git u-boot-main<br />
cd u-boot-main<br />
git checkout --track -b omap3 origin/master<br />
<br />
Build (assuming Code Sourcery GCC 2007q3):<br />
<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- mrproper<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- omap3_beagle_config<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- <br />
<br />
Result will be a ~160k sized ''u-boot.bin'' in main directory.<br />
<br />
Note: Due to (patch and binary) size, BeagleBoard splash screen was removed from upstream version. If you want it back, use [http://groups.google.com/group/beagleboard/browse_thread/thread/3ad9b803a3418624 U-Boot v1 BeagleBoard splash screen patch].<br />
<br />
Note: For experimental U-Boot patches not ready for mainline yet, Steve's [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=u-boot-omap3.git;a=summary Beagle U-Boot git repository] is used to test them. Get it by:<br />
<br />
git clone git://gitorious.org/u-boot-omap3/mainline.git u-boot-omap3<br />
cd u-boot-omap3<br />
git checkout --track -b omap3-dev origin/omap3-dev<br />
<br />
===Linux kernel===<br />
<br />
[http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git;a=summary Git repository] of [http://muru.com/linux/omap/ OMAP Linux kernel] contains Beagle support. Get it by:<br />
<br />
git clone git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git linux-omap-2.6<br />
cd linux-omap-2.6<br />
<br />
Build:<br />
<br />
make distclean<br />
make omap3_beagle_defconfig<br />
make menuconfig # only needed if you want to change the default configuration<br />
make uImage<br />
<br />
The result will be a ''uImage'' in ''arch/arm/boot/'' directory.<br />
<br />
If you use the OE toolchain and want to build outside of the OE tree you should do<br />
ARCH=arm<br />
PATH=~/oe/tmp/cross/armv7a/bin:~/oe/tmp/staging/i686-linux/usr/bin:$PATH # add cross tools to your path<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- distclean<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- omap3_beagle_defconfig<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- menuconfig # only needed if you want to change the default configuration<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- uImage<br />
Note: the staging dir in the path is for mkimage. If you've build a kernel before with oe, the program should be there<br />
<br />
Note: If you are interested in kernel development have a look to [[BeagleBoardLinuxKernel|manually compiling BeagleBoard kernel]], too.<br />
<br />
===Experimental kernel patches and hacks===<br />
<br />
Some beagle developers maintain their own kernel experimental patches and hacks not ready for upstream:<br />
<br />
* [http://cgit.openembedded.net/cgit.cgi?url=openembedded/tree/packages/linux/linux-omap Koen's collection of kernels patches for OE] and the [http://cgit.openembedded.net/cgit.cgi?url=openembedded/tree/packages/linux/linux-omap_git.bb list of relevant patches]<br />
* [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=linux-omap-2.6.git;a=shortlog;h=refs/heads/test Steve's kernel tree], a clone of main OMAP git with additional patches, mainly beagle audio (ASOC) related.<br />
* [http://git.mansr.com/?p=linux-omap;a=summary Mans' kernel tree], a clone of main OMAP git with additional patches, mainly display & framebuffer related.<br />
* [http://www.bat.org/~tomba/linux-omap.html Tomi's kernel tree], a clone of main OMAP git with display sub-system patches, replacing the entire display driver with one that is the likely direction moving forward.<br />
<br />
=Compiler=<br />
<br />
TI OMAP3530 processor on BeagleBoard contains an ARM Cortex-A8 general purpose processor and a TMS320C64x+ DSP.<br />
<br />
==ARM==<br />
<br />
There is broad compiler support including gcc - please see [http://www.elinux.org/ARMCompilers ARM Compilers]<br />
<br />
==C64x+ DSP==<br />
<br />
A free C64x DSP compiler is available as [https://www-a.ti.com/downloads/sds_support/targetcontent/LinuxDspTools/download.html Linux hosted C6x Code Generation Tools] (TMS320C6000 C/C++ CODE GENERATION TOOLS 6.1.3 July 2008).<br />
<br />
Note: my.TI account required. You may create an account [https://my.ti.com here]<br />
<br />
Note: Old c6000 Linux compiler available on [ftp://ftp.ti.com/pub/cs/linux_cgt500.tar.gz TI FTP site]. Does NOT support c64x+ core in OMAP3 devices. Not recommended.<br />
<br />
You can also utilize the [http://focus.ti.com/dsp/docs/dspsupportaut.tsp?familyId=44&sectionId=3&tabId=416&toolTypeId=30 full-CCS free evaluation tools for 120 days], but they currently require purchase to upgrade to service release 9 to support full JTAG debugging with supported JTAG hardware.<br />
<br />
See [[BeagleBoard/DSP_Howto| BeagleBoard DSP howto]] for information about how to use the DSP.<br />
<br />
=Cortex A8 ARM features =<br />
<br />
ARM Cortex-A8 in OMAP3 is a high performance dual-issue applications processor which reaches a performance of 2.0 DMIPS/MHz (compared to ARM11 at 1.2 DMIPS/MHz). It is ARM v7 architecture, which is fully backwards compatible with application code for previous ARM processors.<br />
<br />
It includes a floating point unit (ARM VFPv3 architecture) and the ARM NEON SIMD instruction set.<br />
<br />
See [http://pandorawiki.org/Floating_Point_Optimization Floating Point Optimization] article for an intro into VFP-lite and NEON.<br />
<br />
===ARM NEON===<br />
<br />
NEON is a 64/128-bit wide SIMD vector extension for ARM, which has been architected to be an efficient C compiler target as well as being used from assembly language. It has 32x 64-bit registers (with a dual view as 16x 128-bit registers) which can hold the following datatypes:<br />
* 64-bit signed/unsigned<br />
* 32-bit signed/unsigned<br />
* 32-bit single precision floating point<br />
* 16-bit signed/unsigned<br />
* 8-bit signed/unsigned<br />
<br />
The key advantage of NEON is very high performance vector math processing, whilst being easy to program. It is the same thread of control as the ARM (but different instructions), and is supported by the same tools, debuggers and operating systems.<br />
<br />
The NEON instruction set is documented in ARM's [http://infocenter.arm.com/help/topic/com.arm.doc.dui0204i/DUI0204I_rvct_assembler_guide.pdf RealView Compilation Tools Assembler Guide].<br />
<br />
For NEON optimized libraries see [http://www.us.design-reuse.com/news/18429/aac-mp3-mpeg-4-h-264-fft-openmax-cortex-a8-neon-arm11-processors.html ARM Releases AAC, MP3, MPEG-4, H.264 and FFT OpenMAX DL Libraries, Highly Optimized for Cortex-A8/NEON and ARM11 Processors]. Note: Read the [http://www.arm.com/products/esd/openmax_v7libraries.html EULA].<br />
<br />
NEON is currently used by<br />
* ffmpeg - libavcodec used by mplayer, omapfbplay, and many other linux applications<br />
* libpixman - used by X.org and Mozilla & Webkit browsers to render text and graphics<br />
* Bluez - official Linux Bluetooth stack<br />
<br />
=== ARM Cortex Floating Point ===<br />
<br />
There are two types of instructions in the ARM v7 ISA that handle floating point:<br />
<br />
1) '''VFPv3''' Floating point instruction set (used for single/double precision scalar operations).<br />
These is used by gcc for C floating point operations on 'float' and 'double'<br />
<br />
2) '''NEON''' [http://www.arm.com/products/multimedia/neon/ NEON] vectorized single precision operations (2 values in a D-register, or 4 values in a Q-register)<br />
These can be use by gcc when -ftree-vectorize is enabled and -mfpu=neon is specified, and the code can be vectorized. In other cases the VFPv3 scalar ops will be used.<br />
<br />
ARM Cortex-A processors have separate floating point pipelines that handle these different instructions.<br />
<br />
On Cortex-A8, the designers' focus was on the NEON unit performance which can sustain 1 cycle/instr throughput (processing 2 single-precision values at once). The scalar VFPv3 FPU cannot achieve this level of performance (cycle timings are in the Cortex-A8 TRM download), but it is still a lot better than doing floating point using integer instructions.<br />
<br />
If you need the highest performance floating point on Cortex-A8, you need to use single precision and ensure the code uses the NEON vectorized instructions:<br />
* use gcc with -ftree-vectorize (possibly modify source code to make it vector friendly)<br />
* use NEON instrinsics (#include <arm_neon.h>, float32x2_t datatype and vmul_f32() etc)<br />
* use NEON asm directly<br />
<br />
Keep in mind that mixing NEON and ARM load/stores can sometimes stall significantly. See [http://hardwarebug.org/2008/12/31/arm-neon-memory-hazards/ this link] for more info.<br />
<br />
On Cortex-A9, there is a much higher performance floating point unit which can sustain 1 cycle/instr throughput, with low result latencies.<br />
<br />
=Board recovery=<br />
<br />
If you played e.g. with the contents of the [http://www.sakoman.net/omap3/flash%20procedure.txt NAND], it might happen that the Board doesn't boot any more (without pressing user button) due to broken NAND content. See [[BeagleBoardRecovery|BeagleBoard recovery]] article how to fix this.<br />
<br />
=Development environments=<br />
<br />
Instead of just using compiler + editor, you can use complete image create "development tool chains" which integrate compiler, build system, packaging tools etc. in one tool chain.<br />
<br />
==OpenEmbedded==<br />
<br />
For [http://www.openembedded.org/ OpenEmbedded] (OE), there are some hints how to [http://www.beagleboard.org/irclogs/index.php?date=2008-04-29#T13:06:25 start with OE for BeagleBoard]. See [[BeagleBoardAndOpenEmbeddedGit|BeagleBoard and OpenEmbedded Git]] and [http://wiki.openembedded.org/index.php/Getting_Started OpenEmbedded getting started] as well.<br />
<br />
In the OE getting started document, for BeagleBoard replace ''MACHINE = "om-gta01"'' by ''MACHINE = "beagleboard"''. After confirming ''bitbake nano'' works, try ''bitbake console-image''. The first time you run bitbake OE will download all the needed source and build the tool chain. This will take several hours. After all went fine, the output is in ''${OE_ROOT}/tmp/deploy/glibc/images/beagleboard''.<br />
<br />
Note: Koen has some BeagleBoard [http://amethyst.openembedded.net/~koen/index.php?path=beagleboard/ source and binary images] built with OE. There, ''Angstrom-console*'' images don't include an X server, you can still use a e.g. DVI-D screen with console, but you won't have a GUI. ''Angstrom-x11*'' images contain an X server.<!-- DEAD LINK: resulting in something like [http://scap.linuxtogo.org/files/fc987d4acb2c745fb7e19cf4dca8de70.png this].--><br />
<br />
===One very important note:=== <br />
<br />
It's important to have an X-Loader on your Beagleboard that uses the uImage on the SD Card that goes with Angstrom. The B6 Beagleboards do not appear to come with such an X-Loader. So you likely will have to upgrade the X-Loader. Here's what to do:<br />
* Make an SD Card with the [http://www.angstrom-distribution.org/demo/beagleboard Angstrom Demo files]. See the [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat Beagleboard Wiki Page] for more info on making the SD Card.<br />
* Put the SD Card in the Beagle, and boot up to the U-Boot Prompt.<br />
* Do the first six instructions in the [http://code.google.com/p/beagleboard/wiki/BeagleNANDFlashing Flashing Commands with U-Boot] section. <br />
* Reboot the Beagle to see that the new X-Loader is properly loaded.<br />
<br />
This will update the X-Loader to a newer version that will automatically load uImage from the SD Card when present -- rather than always using the uImage in the Beagleboard NAND.<br />
<br />
==Eclipse==<br />
The Eclipse [http://www.eclipse.org/cdt/ C Development Tools Project] provides a "fully functional C and C++ Integrated Development Environment (IDE) for the Eclipse platform". The Eclipse [http://www.eclipse.org/dsdp/tm/ DSDP Target Managment Project] provides a "Remote System Explorer" (RSE) plugin that simplifies downloading files to the BeagleBoard and editing files on the BeagleBoard within the Eclipse IDE. A Linux Target Agent is available as part of the [http://wiki.eclipse.org/DSDP/TM/TCF_FAQ Target Communications Framework (TCF) component]. Info on how RSE is used for e.g. Gumstix development is described in [http://groups.google.com/group/beagleboard/browse_thread/thread/509831f7c24cb79f# this post].<br />
<br />
==Android==<br />
[http://source.android.com Android] platform is a software stack for mobile devices including an operating system, middleware and key applications. Developers can create applications for the platform using the [http://code.google.com/android/ Android SDK]. Applications are written using the Java programming language and run on Dalvik, a custom virtual machine designed for embedded use which runs on top of a Linux kernel.<br />
<br />
There are several resources for Android on OMAP (Beagle) available:<br />
<br />
'''OMAPZOOM'''<br />
<br />
You can find Android port for OMAP ZOOM architecture on [https://omapzoom.org/gf/project/omapandroid/wiki/ OMAPZoom.org's wiki page on Android]. <br />
<br />
'''EMBINUX'''<br />
<br />
[http://beagleboard.org/project/android Beagleboard.org's Android project page] [http://groups.google.com/group/beagleboard/browse_thread/thread/7b422f113ce489b5 announced], the successful porting of Android on Beagle board by [http://embinux.com EMBINUX&trade;] Team. The [http://labs.embinux.org/git/ source code] and [http://www.embinux.com/download_beagle.php binaries] are available for download and review. <br />
<br />
Detailed instructions, for porting Android on Beagle Board, are available [http://labs.embinux.org/index.php/Main_Page here]. Current release supports input devices (keyboard/mouse), network and sound.<br />
<br />
You can [http://in.youtube.com/watch?v=nADn_vNVEKw watch Android booting] on Beagle Board.<br />
<br />
'''Android on OMAP wiki'''<br />
<br />
Wiki page for Andorid on OMAP can be found [[Android on OMAP|here]]<br />
<br />
'''0xdroid'''<br />
<br />
[http://gitorious.org/0xdroid 0xdroid], the enhanced version of Android on Beagleboard by [http://0xlab.org 0xlab]. The [http://gitorious.org/0xdroid source code], [http://downloads.0xlab.org/ pre-built binaries], and [http://code.google.com/p/0xdroid/issues/list issue tracker] are available for review and reference.<br />
<br />
The latest development supports OMAP audio, OMAP video overlays, ARM Cortex A8 NEON/Thumb2 performance optimizations, mouse cursor, hot-pluggable USB keyboard & mouse, user-friendly installer for system image, and various Android tweaks. Detailed instructions for 0xdroid are available through [http://gitorious.org/0xdroid/pages/Home gitorious wiki].<br />
<br />
You can [http://www.youtube.com/watch?v=v6wdTOHrwQw watch 0xdroid demo video] on Beagle Board.<br />
<br />
==Mamona==<br />
<br />
[http://dev.openbossa.org/trac/mamona/wiki Mamona] is an embedded Linux distribution for ARM EABI. The main goal of the Mamona Project is to offer a completely open source alternative/experimental platform for [http://maemo.org/ Maemo] using only free and open source components. Mamona [http://rsalveti.wordpress.com/2008/09/12/mamona-02-is-out 0.2] [http://franciscoalecrim.com/blog/2008/07/29/mamona-working-with-beagleboard/ supports] [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12013&contentId=28741 OMAP3430 Software Development Platform (SDP)], so you can also use it at Beagle (OMAP3530), too. Work is being done to officially support Beagle.<br />
<br />
==Ubuntu==<br />
<br />
See [[BeagleBoardUbuntu|Ubuntu (ARM)]] installation guide how to install Ubuntu (ARM) on BeagleBoard.<br />
<br />
==Debian ARM==<br />
<br />
See [[BeagleBoardDebian|Debian (ARM)]] installation guide how to install Debian (ARM) on BeagleBoard.<br />
<br />
==Handhelds Mojo ARM==<br />
<br />
See [[BeagleBoardHandheldsMojo|Handhelds Mojo (ARM)]] installation guide how to install Handhelds Mojo (ARM) port of Ubuntu on BeagleBoard. (The Mojo project is no longer active, see the Official Ubuntu ARM-port above instead)<br />
<br />
==Scratchbox==<br />
<br />
[http://www.scratchbox.org/ Scratchbox] is a cross-compilation toolkit designed to make embedded Linux application development easier. It also provides a full set of tools to integrate and cross-compile an entire Linux distribution. See [http://felipec.wordpress.com/2009/06/07/installing-scratchbox-1-and-2-for-arm-cross-compilation/ Felipe's Scratbox 1 and 2 intro], too.<br />
<br />
=Software hints=<br />
<br />
This section collects hints, tips & tricks for various software components running on beagle.<br />
<br />
==QEMU==<br />
<br />
[[Qemu|QEMU]] [http://vm-kernel.org/blog/2008/12/15/linux-is-running-on-qemu-omap3/ supports OMAP3] being able to boot a BeagleBoard Linux kernel.<br />
<br />
==Linux hints==<br />
<br />
See BeagleBoard [http://code.google.com/p/beagleboard/wiki/LinuxHints Google wiki Linux hints] page (for Linux WTBU (Wireless TI Business Unit) kernel [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode 2.6.22]). Currently featuring:<br />
<br />
* Switching video output between DVI-D and S-Video<br />
* Disabling framebuffer blanking<br />
* Listing USB devices<br />
<br />
==lmbench==<br />
<br />
Avik posted a detailed [http://groups.google.com/group/beagleboard/browse_thread/thread/c8b8f07ce61161a1 step-by-step procedure] to run [http://sourceforge.net/project/showfiles.php?group_id=14418 lmbench] on Beagle.<br />
<br />
==Mediaplayer (FFmpeg)==<br />
<br />
There is a thread how to get a [http://groups.google.com/group/beagleboard/browse_thread/thread/9b8025fc15120fd9# mediaplayer] with NEON optimization (FFmpeg) to run on Beagle. Includes compiler hints and patches.<br />
<br />
==Java==<br />
<br />
When using the [[BeagleBoard#OpenEmbedded|OpenEmbedded]]-based Angstrom image you have the following options of Java support:<br />
* JamVM + GNU Classpath (small vm, fast interpreter, J2SE-like)<br />
* Cacao + GNU Classpath (JIT compiler, J2SE-like)<br />
* PhoneME Advanced Foundation (JIT compiler, CDC)<br />
<br />
Java support in OpenEmbedded/Angstrom ([http://wiki.openembedded.net/index.php/Java details]) is provided voluntarily through [http://jalimo.org Jalimo].<br />
<br />
See a [http://groups.google.com/group/beagleboard/browse_thread/thread/102f627253919783# post at mailing list], too.<br />
<br />
OpenEmbedded users can add the [http://evolvis.org/scm/?group_id=11 Jalimo Subversion repository] as an overlay (instructions are in the repository). This will allow them to build OpenJDK packages. Inclusion of these recipes in mainline OpenEmbedded is planned but still ongoing.<br />
<br />
The recipes offer the following functionality:<br />
<br />
* OpenJDK + Hotspot (Zero port) (all J2SE functionality, including JVMTI, interpreted only)<br />
* OpenJDK + Cacaco (all J2SE library features, missing JVMTI, decent JIT compiler)<br />
* OpenJDK + Hotspot (Shark port) (not working yet)<br />
<br />
Some guy from ARM Ltd. is working on interpreter optimization in Zero for ARM.<br />
<br />
People interested in getting this stuff working better should contact people on:<br />
* [http://evolvis.org/mail/?group_id=11 Jalimo Mailinglist]<br />
* [http://mail.openjdk.java.net/mailman/listinfo/distro-pkg-dev Icedtea Mailinglist]<br />
<br />
You should also check out IcedTea's [http://iced-tea.org/wiki/FrequentlyAskedQuestions FAQ].<br />
<br />
=Graphics accelerator=<br />
<br />
OMAP3530 used on BeagleBoard contains a graphics accelerator (SGX) based on the SGX core from [http://www.imgtec.com/ Imagination Technologies]. [http://www.imgtec.com/powervr/powervr-graphics.asp PowerVR] SGX530 is a new generation of programmable PowerVR graphics and video IP cores. Only the kernel portions of Linux drivers will be open source. The PowerVR folks will provide binary user-space libraries. Using the EMail contact at [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12700&contentId=27458 TIs Mobile Gaming Developers page] there are Linux v2.6 OMAP3430 SDKs for OMAP3 Zoom and SDP supporting OpenGL ES v2.0, OpenGL ES v1.1 and OpenVG 1.0 available.<br />
<br />
Tutorial:<br />
* [http://code.google.com/p/beagleboard/wiki/HowtoUseSGXunderAngstrom How to use SGX with Angstrom in OE]<br />
<br />
Some videos:<br />
<br />
* [http://www.youtube.com/watch?v=3ToYOgP9f9U SGX on Beagle working with Linux 2.6.27]<br />
* [http://www.youtube.com/watch?v=24TXpqa9jG0&feature=related OpenGL ES 2.0 shader effects on OMAP3]<br />
* [http://www.youtube.com/watch?v=-UFUbqoNgs8&feature=related 3D User Interface on OMAP3 Platform]<br />
* [http://www.youtube.com/watch?v=8KcNgeUriqA 3D Mapping using OpenGL ES 2.0 on OMAP3 Platform]<br />
* [http://www.youtube.com/watch?v=7D3V6BUpGLE Video blending in hardware]<br />
* [http://www.hitlabnz.org/wiki/EmbeddedAR An Augmented Reality application combining ARToolkit and OpenGL ES 2.0]<br />
<br />
=Beginners guide=<br />
<br />
You just got your new BeagleBoard, and now? See [[BeagleBoardBeginners|beginners guides]].<br />
<br />
=FAQ=<br />
<br />
For BeagleBoard frequently asked questions (FAQ) see [[BeagleBoardFAQ|community FAQ]] and "official" [http://beagleboard.org/support/faq BeagleBoard.org FAQ].<br />
<br />
=Links=<br />
==Home page==<br />
[http://beagleboard.org/ beagleboard.org] (beagle board home)<br />
* Using [http://www.google.de/ Google] you can search beagleboard.org (including [http://www.beagleboard.org/irclogs/ IRC logs]) using ''site:beagleboard.org <search term>''<br />
<br />
==Manuals and resources==<br />
* [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard HW Reference Manual (rev. C2)]<br />
* [http://beagle.s3.amazonaws.com/BBSRM_7_2_0.pdf BeagleBoard HW Reference Manual (rev. B7)]<br />
* [http://www.beagleboard.org/uploads/BBSRM_6.pdf BeagleBoard HW Reference Manual (rev. B6)]<br />
* [http://www.beagleboard.org/uploads/BBSRM_B5.pdf BeagleBoard HW Reference Manual (rev. B5)]<br />
* [http://www.beagleboard.org/uploads/Beagle_HRM_B4.pdf BeagleBoard HW Reference Manual (rev. B4)]<br />
* [http://www.beagleboard.org/uploads/Beagle_HW_Reference_Manual_A_5.pdf BeagleBoard HW Reference Manual (rev. A5)]<br />
* [http://focus.ti.com/docs/prod/folders/print/omap3530.html OMAP3530] processor description and manuals<br />
* [http://code.google.com/p/beagleboard/ Beagle at code.google.com]<br />
* [http://focus.ti.com/dsp/docs/dspsupporttechdocs.tsp?sectionId=3&tabId=409&familyId=1526&documentCategoryId=4&techDoc=4 OMAP3530/25 CBB BSDL Model]<br />
* [http://www.micron.com/products/mcps/beagleboard Micron's multi chip packages (MCPs) for Beagle Board]<br />
* [http://beagleboard.org/resources Beagleboard resources page with hw docs]<br />
* Some [http://www.rasterman.com/ performance comparison] of BeagleBoard Rev. B with some other ARM/PC systems.<br />
* OMAP3 pinmux [http://www.hy-research.com/omap3_pinmux.html setup]<br />
* [http://elinux.org/BeagleBoardPinMux OMAP3 eLinux pinmux page]<br />
<br />
==Contact and communication==<br />
* [http://groups.google.com/group/beagleboard Beagle board discussion list]<br />
* [http://code.google.com/p/beagleboard/issues/list Beagle board open point list & issue tracker]<br />
* [http://beagleboard.blogspot.com/ Beagle board blog]<br />
* [http://feeds.feedburner.com/BeagleBoard Beagle board RSS feed]<br />
* Chat:<br />
** [http://beagleboard.org/chat Beagle Board chat]<br />
** IRC: #beagle channel on irc.freenode.net<br />
** [http://www.beagleboard.org/irclogs/index.php IRC archive]<br />
* [http://www.beaglesride.org/ Beagles Ride], a site about building a community around the BeagleBoard focused on in vehicle applications<br />
* [http://www.beagleboard.de/ German Beagle Board Forum and Wiki]<br />
<br />
==TI resources==<br />
* [http://opensource.ti.com/ TI open source page]<br />
* [https://community.ti.com/ TI E2E (Engineer-to-Engineer) Community]<br />
* [http://marc.info/?l=linux-omap&m=120761100810527&w=2 DSP Bridge driver for OMAP3 platform]<br />
* [http://lists.arm.linux.org.uk/lurker/message/20080701.142512.5eeff26b.en.html ARMv7 Oprofile support]<br />
* [http://focus.ti.com/pdfs/wtbu/swpu114g.pdf OMAP34xx Wireless Technical Reference Manual] (swpu114g.pdf, 47 MB)<br />
* [http://amethyst.openembedded.net/~koen/index.php?sort=date&order=desc&path=beagleboard/ Koen's (OpenEmbeded) BeagleBoard source and binaries]<br />
* [http://del.icio.us/tag/beagleboard+peripheral+verified Verified peripherals for BeagleBoard]<br />
* [http://www.celinux.org/elc08_presentations/TI_OMAP3430_Linux_PM_reference.ppt OMAP3430 Linux Power Management presentation]<br />
==Articles==<br />
* [http://linuxdevices.com/news/NS5852740920.html LinuxDevices article about Beagle]<br />
* [http://www.linuxdevices.com/news/NS8479495970.html LinuxDevices article about Digi-Key launch]<br />
* [http://www.linuxdevices.com/news/NS5682470737.html LinuxDevices article about Beagle Rev C, Beagle MID from HY Research, Touch Book and Sponsored Projects Contest]<br />
<br />
==Books==<br />
* [[OMAP_and_DaVinci_Software_for_Dummies|OMAP and DaVinci Software for Dummies]]<br />
==Past Beagle events==<br />
* TIDC, February 26-28, 2008: [http://www.beagleboard.org/uploads/tidc_opensource.pdf Slides from TI developer conference (TIDC) open source session], covering also beagle board<br />
* [http://www.lugradio.org/live/USA2008/ LUG RADIO Live USA 2008, April 12-13, 2008]: [http://www.beagleboard.org/uploads/lugradio_20080411.PPT TI/Beagle Presentation] and [http://forums.lugradio.org/viewtopic.php?f=4&t=4094&st=0&sk=t&sd=a&sid=d69cc807569ab41e33f93af698c536b8&start=15#p41549 video]<br />
* LinuxTag, May 28-31, 2008: [http://www.flickr.com/photos/jadon/2551439955/in/pool-beagleboard picture 1] and [http://www.flickr.com/photos/jadon/2535692865/in/pool-beagleboard picture 2]<br />
* [http://lugradio.org/live/UK2008/travel LugRadio Live UK 2008], July 19 - July 20, 2008: [http://www.flickr.com/photos/koenkooi/tags/lugradiolive/ Koen's pictures] showing e.g. [http://www.bigbuckbunny.org/index.php/download/ Big Buck BUNNY] playing at Beagle. [http://linuxoutlaws.com/podcast/48 Interview with Linux Outlaws (52:06)] and the [http://www.youtube.com/watch?v=m9xVbntl-DY video]<br />
* [http://osscamp.in/index.php/OSScamp_Bengaluru_Mobile_2008 OSScamp Bengaluru Mobile 2008], July 19, 2008<br />
* [http://www.linuxworldexpo.com LinuxWorld Conference & Expo], August 4 - August 7, 2008: [http://www.flickr.com/photos/jadon/sets/72157606586084668/ pictures with living beagle] and from [http://www.flickr.com/photos/linuxjournal/2738316951/in/set-72157606634486338/ Linux Journal's photostream]<br />
* BeagleBoard.org event at Jillian's during LinuxWorldExpo, August 5, 2008, 5:30-7:30 pm<br />
* [http://barcamp.pbwiki.com/BarCampHouston3 BarCamp Houston 3], August 9, 2008, 9:00 A.M.: [http://www.flickr.com/photos/jadon/sets/72157606656532041/ pictures]<br />
* NIT Suratkal, India [http://www.nitkieee.com/site/sp-connect2/schedule IEEE SP Connect 2], August 30, 20008<br />
* [http://barcampbangalore.org/wiki/BCB7_Demos BarCamp Bangalore], India, September 13, 2008<br />
* [http://www.ibc.org/ IBC 2008], September 11 - September 16, 2008: [http://www.flickr.com/photos/koenkooi/tags/ibc2008/ pictures]<br />
* Free Open "Embedded Linux" Training for Students in India, [http://code.google.com/p/beagleboard/wiki/Trainings?updated=Trainings&ts=1220250913 beagleboard.org Trainings in India], September 20, 2008: [http://www.youtube.com/watch?v=A6FLdmgQlb4&feature=PlayList&p=1BAB6EE9CC7285AD&index=0 video], [http://www.flickr.com/photos/25691331@N04/sets/72157607419766102/ photos] and [http://lakshmansrikanth.blogspot.com/2008/09/linux-embedded.html blog]<br />
* [http://www.embedded.co.uk/ Embedded Systems Show 2008], Birmingham, UK, October 1-2, 2008<br />
* [http://www.mvista.com/vision/ MontaVista Vision 2008 Embedded Linux Developers Conference], San Francisco, California, October 1-3, 2008 : [http://www.mvista.com/download/topic.php?t=18 Video and presentation overview], [http://www.mvista.com/download/fetchdoc.php?docid=323 William Mills' presentation], [http://www.mvista.com/download/fetchdoc.php?docid=333 Jason Kridner's presentation]<br />
* [http://www.rtcgroup.com/arm/2008/ ARM Developers' Conference], Santa Clara Convention Center, Santa Clara, Calif., USA, October 7-9, 2008<br />
* [http://www.cmp-egevents.com/web/escb Embedded Systems Conference Boston 2008], Hynes Convention Center, Boston, USA, October 26 - October 30, 2008: [http://beagleboard.org/demo/esc Resources]<br />
* [[BeagleBoard/contest|BeagleBoard contest]] #1: Create a cool BeagleBoard application and win a Rev C1! Closed, ran until January 9, 2009<br />
* [http://www.silica.com/events/seminars/seminar-overview/ti-omp-workshop.html OMAP35x training by Silica], January 21, 2009, Cambridge, UK, ARM Holdings Lecture Theatre. [[RichardB's notes from the seminar]]<br />
* [[BeagleBoard/contest|BeagleBoard contest #2]], unitl February 27, 2009: : Create a cool BeagleBoard application and win a Rev C2!<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/b15cf8a5797c73a2 Silica - Free TI - ARM OMAP Workshop], Brussels, Europe, March 31st 2009<br />
* SILICA's [http://www.silica.com/events/seminars/seminar-overview/ti-omap-piccolo-poing.html Texas Instruments 2-in-1 Seminar: OMAP & Piccolo], May 13th 2009: Poing (Munich) - Germany<br />
* 24th until 27th June 2009: [http://www.linuxtag.org/2009/en.html Linux Tag Germany] with [http://groups.google.com/group/beagleboard/msg/27fefef5f1d2ef73 TI booth] and [http://www.linuxtag.org/2009/en/program/freies-vortragsprogramm/all-events/details.html?talkid=183 Beagle presentation]<br />
* until 31st July 2009: [http://www.cranessoftware.com/services/training/beagledesigncontest.html BeagleBoard Design Contest INDIA Edition] ([http://beagleboard.blogspot.com/2009/04/beagleboard-design-contest-india.html blog entry])<br />
* TI Technology Day Dallas, Tex. on June 16 will held a [http://www.linuxdevices.com/news/NS5682470737.html BeagleBoard users group meeting] (see section ''Availability'').<br />
<br />
==Beagle wiki pages==<br />
* [[BeagleBoardBeginners|BeagleBoard beginners guides]]<br />
* [[BeagleBoardAndOpenEmbeddedGit|BeagleBoard and OpenEmbedded Git]] installation guide and [[BeagleBoardOpenEmbeddedDevelopment|OpenEmbedded development]]<br />
* [[BeagleBoardDebian|Debian on BeagleBoard]] usage guide<br />
* [[BeagleBoardHandheldsMojo|Handhelds Mojo (ARM) on BeagleBoard]] usage guide (formerly known as Ubuntu (ARM))<br />
* [[BeagleBoardUbuntu|Ubuntu (ARM EABI) distribution at BeagleBoard]]<br />
* [[BeagleBoardRecovery|BeagleBoard recovery]] about fixing boards not booting any more because of broken NAND content<br />
* [[BeagleBoardJTAG|BeagleBoard JTAG]] and [[OMAP3530_ICEPICK|OMAP3530_ICEPICK]] about JTAG on BeagleBoard<br />
* [[BeagleBoardOpenOCD|BeagleBoard OpenOCD]] has infos about status and usage of open source JTAG software OpenOCD with Beagle<br />
* [[BeagleBoardNAND|BeagleBoard NAND boot]] about how to boot BeagleBoard from NAND flash<br />
* [[BeagleBoardPeripherals|BeagleBoard peripherals and adapters page]] about useful BeagleBoard add ons.<br />
* [[Mount_BeagleBoard_Root_Filesystem_over_NFS_via_USB|Mount BeagleBoard root file system over NFS via USB]]<br />
* [[BeagleBoardFAQ|BeagleBoard FAQ]]<br />
* [[BeagleBoardSugar|Sugar on BeagleBoard]]<br />
* [[BeagleBoard/DSP_Howto|BeagleBoard DSP howto]]<br />
* [[BeagleBoardRawLCD|Interfacing BeagleBoard to Raw LCD]]<br />
* [[BeagleBoard/gst-openmax|BeagleBoard OpenMAX usage]]<br />
* [[BeagleBoard/video|BeagleBoard video]]<br />
* [[BeagleBoardOpenCV|Using OpenCV computer vision library with BeagleBoard]]<br />
* [[BeagleBoard/James|James]]: Just A Miniature Entertainment System<br />
* [[U-boot_musb_gadget_support|U-boot musb gadget support]]<br />
* [[BeagleBoard-JP|Japanese translation of this Beagle page]]<br />
* [[BeagleEPD|BeagleBoard E-Ink Platform Driver]]<br />
* [[BeagleBoardFedora|Random hacking notes for getting Fedora 10 to kinda work with the BeagleBoard]]<br />
* BeagleBoard specific [[BeagleBoard/GSoC|Google Summer of Code 2009]] page, [[BeagleBoard/Ideas-2009|GSoC project ideas]] and [[BeagleBoard/GSoC/Application|GSoc application]]<br />
* [[BeagleBoard/Poky|Poky]] for BeagleBoard<br />
* [[Xenarc_USB_touchscreen_for_Beagleboard/OMAP3_EVM|Xenarc USB touchscreen for Beagleboard/OMAP3 EVM]]<br />
* [[BeagleBoard/BugAdapter|BeagleBoard Bug Adapter board]]<br />
* [[BeagleBoardDebianWifiInstallInfo|BeagleBoard Debian WiFi install info]]<br />
* [[BeagleBoard/DSP_Clarification|Info about the various Linux DSP systems for OMAP chips]]<br />
* [[BeagleBoardPinMux|BeagleBoard PinMux]]<br />
* [[BeagleBoardLinuxKernel|BeagleBoard Linux kernel manual compile]]<br />
* [http://www.hervanta.com/stuff/Beaglebot Beaglebot]: build an experimental robotics project with Beagle<br />
* [http://code.google.com/p/beagleboard/w/list code.google.com BeagleBoard wiki]<br />
* '''[[BeagleBoard/contest|BeagleBoard contest]]'''<br />
* [http://en.wikipedia.org/wiki/Beagle_Board Wikipedia BeagleBoard page]<br />
* [http://labs.embinux.org/index.php/Android_Porting_Guide_to_Beagle_Board Android port for BeagleBoard]: Instructions for porting Android on BeagleBoard<br />
* [[BeagleBoard/bangalore_user_meet |BeagleBoard Bangalore User Meet]]<br />
* [[BeagleBoardEclipse|Using Eclipse with Beagle]] (for JTAG debugging)<br />
* [[Zoom2Beginners|Zoom2 for Beginners]]<br />
* [http://wh1t3s.com/2009/05/11/beagleboard-as-usb-mass-storage-device-via-usb-otg/ BeagleBoard as USB Mass Storage Device via USB OTG]<br />
* [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/index.htm BeagleBoard as solar powered computer]<br />
* [http://blog.makezine.com/archive/2009/02/blinking_leds_with_the_beagle_board.html Blinking LEDs with the Beagle Board] from Make:Online<br />
* [http://www.crashcourse.ca/wiki/index.php/BeagleBoard Robert's private Beagle wiki] (please don't add anything there, do it here. It will help to avoid scattering. Thanks!)<br />
* [http://felipec.wordpress.com/2009/03/26/omap3-public-dsp-binaries-now-work/ Felipe's blog] about D1 MPEG-4 decoding using less than 15% of CPU with help of DSP<br />
* [http://www.syspire.de/node/3 Embedded Mediacenter] based on BeagleBoard (German)<br />
* [http://pandorawiki.org/Floating_Point_Optimization Floating Point Optimization] with VFP-lite and NEON intro<br />
* [http://particolarmente-urgentissimo.blogspot.com/2009/09/beagleboard-setting-date-via-gps.html Beagleboard setting date via GPS]<br />
<br />
==Beagle photos==<br />
* [http://www.flickr.com/groups/beagleboard/pool/ Beagle board pictures at flickr]<br />
* [http://www.flickr.com/photos/32615155@N00/2439256116/ Beagle board and USRP]<br />
* [http://www.flickr.com/photos/nishanthmenon/2438406603/ Modify SDP3430 QUART cable for beagle]<br />
* [http://www.flickr.com/photos/koenkooi/2695061759/ MythTV on Beagle]<br />
==Beagle videos==<br />
* [http://uk.youtube.com/watch?v=fL_XMieanSc Beagle Board Beginnings]<br />
* [http://www.youtube.com/watch?v=cXr-D1wROfQ Beagleboard in the Living Room]<br />
* [http://uk.youtube.com/watch?v=FuVwh_VrIxk Beagle Board 3D, Angstrom, and Ubuntu]<br />
* [http://uk.youtube.com/watch?v=TUYOjRGYeYU testsprite with beagleboard]<br />
* [http://uk.youtube.com/watch?v=9Z4ZTovtFKk Beagleboard LED demo]<br />
* [http://uk.youtube.com/watch?v=R33dzREZGEk LCD2USB attached to a beagleboard]<br />
* [http://www.youtube.com/watch?v=7D3V6BUpGLE Video blending in hardware]<br />
* [http://www.youtube.com/watch?v=-tUBXD-KRp4 Beagle Running Angstrom (VGA) on DLP Pico Projector]<br />
* [http://www.youtube.com/watch?v=3ToYOgP9f9U SGX on Beagle working with Linux 2.6.27]<br />
* Not on Beagle OMAP3530: [http://youtube.com/watch?v=5i9cWOK1spw Ubuntu 7.04 on on OMAP3430 SDP]<br />
* [http://in.youtube.com/watch?v=nADn_vNVEKw Beagle Board booting Android]<br />
<br />
==Beagle manufacturing==<br />
* [http://www.youtube.com/watch?v=C-CwkjT9z_0&feature=related Beagle Solder Paste Screening]<br />
* [http://www.youtube.com/watch?v=9LLjDovIG2M&feature=related Beagle Assembly Inspection]<br />
* [http://www.youtube.com/watch?v=sbOZfBnoVnM&feature=related Beagle Functional Test]<br />
* [http://www.youtube.com/watch?v=cvDtXmJJcEI&feature=related Beagle Reflow]<br />
* [http://www.youtube.com/watch?v=W2o4NTASxN0&feature=related Beagle Board Assembly at Circuitco]<br />
==Fun==<br />
* Enjoy [http://www.beaglegame.com/ BeagleGame]<br />
<br />
=Other OMAP boards=<br />
<br />
* OMAP1 OMAP5912 (ARM9 + C5x DSP) based [[OSK|OSK]] board.<br />
* OMAP3 OMAP3430 based [https://gforge.ti.com/gf/project/omapzoom/wiki/?pagename=HardwareInformation Zoom MDK], which has been superseded by the [http://www.logicpd.com/products/development-kits/texas-instruments-zoom%E2%84%A2-omap34x-ii-mdp Zoom II], and other [http://www.logicpd.com/products LogicPD kits].<br />
* OMAP3 OMAP3530 based [http://www.openpandora.org/ Pandora]<br />
* OMAP3 OMAP3503 based [http://www.gumstix.net/Overo/cat/Overo/115.html Gumstix Overo]<br />
* OMAP3 OMAP35x based EVM from [http://mistralsolutions.com/products/omap_3evm.php Mistral] and [http://focus.ti.com/docs/toolsw/folders/print/tmdxevm3503.html TI] (both are the same)<br />
* OMAP3 OMAP3430 based [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12013&contentId=28741 Software Development Platform (SDP)]<br />
* OMAP3 OMAP3530 based board from [http://www.magniel.com/omap3.html Magniel Inc.]<br />
* OMAP3 based [http://www.archos.com/products/imt/index.html?country=us&lang=en Archos 5, ARCHOS 5G and ARCHOS 7]<br />
* OMAP3 OMAP35x based [http://www.logicpd.com/products/som/ti/omap35x OMAP35x SOM-LV]<br />
* OMAP3 based [[Mini_Board|ICETEK-OMAP3530-Mini]], a Chinese BeagleBoard clone, with a [[MiniBoardFAQ|FAQ]]<br />
* OMAP3 based [http://www.ebv.com/en/products/categories/details/product/ebvbeagle-board EBVBeagle], a German BeagleBoard clone<br />
* OMAP3530 based [http://www.bsquare.com/products/hardware_solutions/3530.asp BSQUARE’s Dev Kit OMAP3530]<br />
* OMAP3530 based [http://beaversource.oregonstate.edu/projects/cspfl/wiki/CSPFL_Hardware OSWALD]<br />
* OMAP3 BeagleBoard-based [http://www.alwaysinnovating.com/touchbook/ Touch Book]<br />
* OMAP3530 based [http://www.analogue-micro.com/Cobra3530.html Cobra 3530 OMAP3530 module ]<br />
* OMAP3 based [http://www.kwikbyte.com/KBOC.html KwikByte 35XX System Module]<br />
* OMAP3530 based [[DevKit8000]], a Chinese BeagleBoard clone, slightly larger with additional peripherals (e.g. LCD/TSP, Ethernet and keyboard)<br />
* OMAP3530 based [http://www.igep-platform.com/ IGEPv2 Platform], a Spanish BeagleBoard clone, slightly larger, with additional peripherals like e.g. ethernet connector, wifi+bluetooth.<br />
* OMAP35x based [http://www.ultratronik.de/mmi-rechnerplattformen.html MMI4 from Ultratronik]<br />
* OMAP35x based [http://www.technexion.com/index.php/tao-3530 TAO-3530 from TechNexion]</div>Rpjdayhttps://elinux.org/index.php?title=BeagleBoard_Community&diff=14329BeagleBoard Community2009-10-21T10:31:19Z<p>Rpjday: Add a section on USB-to-serial converters.</p>
<hr />
<div>[[Category: Linux]]<br />
[[Category: OMAP]]<br />
[[Category:Development Boards]]<br />
[[Category: BeagleBoard]]<br />
This page collects information about [http://www.ti.com/ TI's] [http://www.arm.com/ ARM] based [http://focus.ti.com/general/docs/gencontent.tsp?contentId=36915&amp;DCMP=OMAP_Feb27_2008&amp;HQS=Other+PR+omap3503pr OMAP3] [http://beagleboard.org Beagle Board].<br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:#ffffcc; align:right; "><br />
'''NEWS:''' [http://www.tincantools.com/product.php?productid=16147&cat=0&page=1&featured Zippy] Expansion boards for the [[BeagleBoard]] are now available! In Canada, check out [http://robotcraft.ca RobotCraft] in London, Ontario.<br />
</div><br />
<br />
<br />
=Events=<br />
* Each last Saturday of the month, next August 29, 2009: [[BeagleBoard/bangalore user meet|BeagleBoard Bangalore user meeting]] (Beagle Clinic India)<br />
* all over the world 2009: [http://www.ti.com/corp/docs/landing/techday09/index.shtml# TI Technology Days 2009]. <br />
* ongoing 2009: [[BeagleBoard/contest|Beagle Sponsored Project Program]] - add a cool project and get a free BeagleBoard to realize it!<br />
<br />
=Hardware=<br />
<br />
The Beagle Board is ''a low-cost, fan-less single-board computer based on TI's OMAP3 device family, with all of the expandability of today's desktop machines, but without the bulk, expense, or noise'' (from [http://beagleboard.org/ beagleboard.org]). It uses a TI [http://focus.ti.com/docs/prod/folders/print/omap3530.html OMAP3530] processor (ARM Cortex-A8 superscalar core ~600MHz paired with a TMS320C64x+ DSP ~430MHz and an Imagination SGX 2D/3D graphics processor). See [http://focus.ti.com/docs/prod/folders/print/omap3530.html#features OMAP3530 features] for more processor features. [[BeagleBoard#Availability|Price is USD 149]]. The design goal was to make it as simple and cheap as possible, e.g. not having a LCD added, but letting you connect all add-ons available as cheap external components. See [http://beagleboard.org/brief What is Beagle?] and [http://linuxdevices.com/news/NS5852740920.html LinuxDevices article] for more details.<br />
<br />
The videos [http://uk.youtube.com/watch?v=fL_XMieanSc Beagle Board Beginnings] and [http://uk.youtube.com/watch?v=FuVwh_VrIxk Beagle Board 3D, Angstrom, and Ubuntu] give you a good intro about what BeagleBoard is about and it's capabilities.<br />
<br />
==Components==<br />
<br />
{|border=0<br />
!Top view of rev B:<br />
!Top view of rev C:<br />
|-<br />
|[[Image:Bb revb top numbered.jpg]]<br />
|[[Image:Bb revc top numbered.jpg]]<br />
|-<br />
|}<br />
{|border=1<br />
!No.<br />
!Name<br />
!Comment<br />
|-<br />
|'''1'''<br />
|[http://www.ti.com/omap35x OMAP3530] processor + 256MB NAND<br />
<br />
+ 128MB DDR (rev B)<br />
<br />
+ 256MB DDR (rev C)<br />
|PoP: Package-On-Package implementation for Memory Stacking<br />
[http://www.micron.com/products/partdetail?part=MT29C2G24MAKLAJG-6%20IT 256MB NAND/128MB Mobile DDR SDRAM] available from [http://www.digikey.com/scripts/US/DKSUS.dll?Detail?name=557-1435-ND DigiKey]<br />
<br />
([http://www.micron.com/products/partdetail?part=MT29C4G48MAPLCJI-6%20IT 512MB NAND/256MB Mobile DDR SDRAM] available from [http://www.digikey.com/scripts/US/DKSUS.dll?Detail?name=557-1436-ND DigiKey])<br />
<br />
[http://www.micron.com/products/mcps/beagleboard Micron's multi chip packages (MCPs) for Beagle Board]<br />
|-<br />
|'''2'''<br />
|[http://focus.ti.com/docs/prod/folders/print/tfp410.html DVI chip (TFP410)]<br />
|<br />
|-<br />
|'''3'''<br />
|[[BeagleBoard#DVI|DVI-D]]<br />
|Connection via HDMI connector<br />
|-<br />
|'''4'''<br />
|[[BeagleBoard#JTAG|14-pin JTAG]]<br />
|1.8V only!<br />
|-<br />
|'''5'''<br />
|Expansion connector: I2C, I2S, SPI, MMC/SD<br />
|User must solder desired header into place<br />
|-<br />
|'''6'''<br />
|[[BeagleBoard#User_button|User button]] <br />
|Allows setting boot order.<br />
|-<br />
|'''7'''<br />
| Reset button<br />
|<br />
|-<br />
| '''8'''<br />
|[[BeagleBoard#EHCI|USB 2.0 EHCI HS]]<br />
|Rev A and B: not working, unpopulated<br />
<br />
Rev C: populated and working<br />
|-<br />
|'''9'''<br />
|SD/MMC+<br />
| SDHC cards are supported<br />
|-<br />
|'''10'''<br />
|[[BeagleBoard#RS232|RS-232 serial]]<br />
|<br />
|-<br />
|'''11'''<br />
|Alternate power <br />
|normally powered by USB (unmounted on REV Ax boards, see [[BeagleBoard#Errata|errata]])<br />
|-<br />
|'''12'''<br />
|[[BeagleBoard#OTG|USB 2.0 HS OTG]] <br />
|Mini-AB connector. Board can be powered from port. <br />
|-<br />
|'''13'''<br />
|Stereo In<br />
|<br />
|-<br />
|'''14'''<br />
|Stereo Out<br />
|<br />
|-<br />
|'''15'''<br />
|S-Video<br />
|<br />
|-<br />
|'''16'''<br />
|TWL4030 (Rev A thru C2 inc.)<br />
[http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] (Rev C3 onwards)<br />
|Audio CODEC, USB port, power-on reset and power management. The TWL4030 is pin-compatible with the [http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] chip and was used due to the very limited availability of the TPS65950 in early board revisions.<br />
|-<br />
|'''17'''<br />
|LCD<br />
|only rev C<br />
|-<br />
|'''18'''<br />
|USB power<br />
|<br />
|-<br />
|'''19'''<br />
|Host PHY<br />
|<br />
|-<br />
|'''20'''<br />
|32kHz<br />
|<br />
|-<br />
|'''21'''<br />
|12MHz<br />
|<br />
|-<br />
|'''22'''<br />
|RS232 XVCR<br />
|<br />
|-<br />
|'''23'''<br />
|PWR SW<br />
|<br />
|-<br />
|'''24'''<br />
|VBAT<br />
|<br />
|-<br />
|}<br />
<br />
* Board size: 3" x 3" (about 76.2 x 76.2 mm)<br />
* Weight: [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/beagleboard.png ~37g]<br />
* Currently 6 layer PCB; target: 4 layer<br />
<br />
'''Bottom of rev B:'''<br />
<br />
[[Image:Beagle_bottom.jpg]]<br />
<br />
See [http://www.flickr.com/photos/jadon/sets/72157606050144396/ jadonk's photostream] for some more detailed BeagleBoard pictures.<br />
<br />
==Manual==<br />
<br />
See [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard System Reference Manual (rev. C3.0)].<br />
<br />
==Schematic==<br />
<br />
Schematic of BeagleBoard Rev. C3 is available as part of [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard System Reference Manual (rev. C3.0)]. Rev C3 and previous are also available from [http://beagleboard.org/hardware/design BeagleBoard.org design page] including in PDF format. Please make sure that you ''read, understand and agree'' [http://groups.google.com/group/beagleboard/msg/ee3e1bc927551ffc Jason's mail] before using this.<br />
<br />
==Layout== <br />
<br />
Layout of BeagleBoard Rev. C3 is available as part of [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard System Reference Manual (rev. C3.0)]. Rev C3 and previous layouts are also available from the [http://beagleboard.org/hardware/design BeagleBoard.org design page]. Please make sure that you ''read, understand and agree'' [http://groups.google.com/group/beagleboard/msg/ee3e1bc927551ffc Jason's mail] before using this.<br />
<br />
==Errata==<br />
<br />
# ''Boards revision A only'': The DC power jack pinout is incorrect on the PCB layout. DC_5V and GND are switched on PCB layout. Normally, the power jack has DC_5V on the center pin and GND on the sleeve (see Figure 20 of [http://www.beagleboard.org/uploads/BBSRM_6.pdf Beagle HW manual]). But on revision Ax boards the PCB layout has GND on center and DC_5V on sleeve. For this reason it is currently removed. It will be back on the Rev B board. Workaround is to remove wire connecting the two power pins on revision Ax boards and use external [http://amethyst.openembedded.net/~koen/beagleboard/beagle-power-pads.jpg power supply with switched connector] (do not connect anything to the “?” terminal. USB power will be permanently disabled and the board can only be powered from the 5V.) See [http://www.flickr.com/photos/koenkooi/2512038988/ Koen's Beagleboard powermod picture] with short descriptions, too.<br />
# ''Boards revision < A5 only'': There is excess voltage drop across R6 which is used to measure the current consumption on the board. This needs to be a .1 ohm instead of a 1 ohm resistor (SMD 0805). All revision A5 boards have been updated to .1. You can also just solder in a jumper to J2 bypassing the current read point. This issue can cause issues with the USB host port as the voltage supplied to that port can be too low.<br />
# ''Boards revision A only'': User LEDs 0 and 1 are shorted on the layout preventing them from being controlled individually. You need to control both GPIO_149 and GPIO_150 to turn on or off both LEDs. This is fixed in the Rev B boards.<br />
# ''Boards revision < A5 only'': There is an issue where on some boards the 1.8V has excessive noise on it. This is the result of two incorrect parts L1 and L3 being installed on the board. The inductors that were initially installed in the switchers are 100uH and need to be 1uH. This change will require that the board be returned for update. To check for correct parts, have a look to bottom of BeagleBoard. L1 - L3 are the larger parts there. They all have to be labeled with "102" (== 1uH). If any of these three inductors are labeled with "104" (== 100uH) they are wrong and have to be exchanged.<br />
# ''Boards revision A and B'': USB HOST (EHCI) failures. See [http://code.google.com/p/beagleboard/issues/detail?id=15 issue 15] and [http://code.google.com/p/beagleboard/wiki/USBHostTestREPRODUCE USB host test reproduce]. This is a hardware defect. [http://www.beagleboard.org/irclogs/index.php?date=2008-05-29#T00:27:06 Most probably] Rev. B board does not have the EHCI USB connector mounted. Workaround: Use [[BeagleBoard#OTG|OTG port]] with something like [http://trisoft.de/pics/ZHost.JPG mini A to USB A adapter] instead.<br />
# ''Boards revision A and < B4'': Plugging in a USB OTG cable will prevent Beagle from booting (with git kernel), see [http://code.google.com/p/beagleboard/issues/detail?id=19 issue #19], too. This is due to missing filtering capacitor at USB OTG VBUS. When the kernel driver detects that a USB OTG cable is inserted it enables the charge pump to generate VBUS. With no filtering VBUS looks like any switching regulator output with no filtering -- a huge voltage spike when the switch is on, followed by a rapid decay to a low voltage until the next switch on period. The capacitor is there to store energy between the output switch ON and OFF time, the feedback loop in the regulator does sample the cap voltage. Fix is to piggy-back solder a 0603 2.2uF ceramic capacitor to D3, see [http://www.sakoman.net/omap3/beagle/vbus-mod-d3.jpg VBUS modification D3 picture]. Revision B4 boards and newer have this fix applied. Thanks to [http://groups.google.com/group/beagleboard/msg/eb789e15c99a673d Steve] for debugging this!<br />
# ''Boards revision A and < B5'': There is some issue with 32kHz clock depending on system configuration used to clock some OMAP3 peripherals. From this e.g. GPIOs, GPTIMERs, and USB on Beagle might be affected. See [http://code.google.com/p/beagleboard/issues/detail?id=22 Issue 22]. Symptom from this is that after booting Linux kernel serial console hangs after some time and no serial input/output is possible any more. There is one software workaround and one hardware fix for this: (A) Software workaround: Don't use 32kHz timer to clock Linux, instead use MPU timer. (B) Hardware workaround: Remove [http://www.flickr.com/photos/25691331@N04/2766671437/in/pool-beagleboard capacitor C70], which improves the 32kHz clock quality and avoids hang-up. Note: Revision A boards have capacitor C70 [http://www.flickr.com/photos/25691331@N04/2766671437/in/pool-beagleboard at the same location] as rev. B boards. Note: Board revision >= B5 removes capacitor C70.<br />
# ''Random boards, quite rare, revision < B6'': Some random boards and quite rare, show directly after purchasing broken serial communication from host PC to BeagleBoard. Symptom is that you get a new board, get serial output from BeagleBoard in terminal program, but can't type anything at U-Boot prompt (Note: Don't mix this with errata #7. With errata #7 you are able to use U-Boot normally, but Linux prompt input stops after some time). Most users don't have this issue, though. So, first double check your serial configuration ([[BeagleBoardFAQ#Serial_connection_.231|FAQ1]], [[BeagleBoardFAQ#Serial_connection_.232|FAQ2]] and [[BeagleBoardFAQ#Serial_connection_.233|FAQ3]]). Only if you are really, really sure that anything with your serial connection is fine, consider sending the board back doing a [http://beagleboard.org/support/rma RMA request]. This issue was resolved on revision B6 and later boards.<br />
<br />
For additional (software) issues and enhancement requests see [http://code.google.com/p/beagleboard/issues/list Beagle board open point list & issue tracker], too.<br />
<br />
Note: BeagleBoard revision B6 uses different package for U9/U11.<br />
<br />
==Clocking==<br />
<br />
Some [http://www.beagleboard.org/irclogs/index.php?date=2008-07-08#T21:12:23 notes] about (ARM processor) clock rates at BeagleBoard:<br />
<br />
* ARM Cortex-A8 processor is currently clocked at 500MHz<br />
* 500MHz is the default used because it is a balance of performance and longevity<br />
* For OMAP35x 600MHz is max recommended<br />
* At 600MHz OMAP35x is considered to be 'overdrive' and it does not have the same life expectancy<br />
* Higher than 600MHz is out of spec and no guarantee it will work at all (or not damage itself)<br />
* Also keep in mind that if you go higher you probably want to increase the core voltage. Some of this is mentioned in table 3-3 of the [http://focus.ti.com/lit/ds/symlink/omap3530.pdf OMAP3530 data sheet]. Some numbers:<br />
<br />
{| border="1"<br />
||'''ARM'''||'''DSP'''||'''core voltage'''<br />
|-<br />
|600 MHz||430 MHz||1.35V<br />
|-<br />
|550 MHz||400 MHz||1.27V<br />
|-<br />
|500 MHz||360 MHz||1.2V<br />
|}<br />
<br />
* For some OMAP3 clock, voltage and power management discussion see [http://focus.ti.com/lit/an/sprt495/sprt495.pdf OMAP3 power management white paper], too.<br />
* The OMAP3 chip on the Beagle lacks the efuses needed for using the SmartReflex technology, see [http://www.beagleboard.org/irclogs/index.php?date=2009-02-26#T10:44:24].<br />
* There is a thermal monitor in the core, you could use to scale frequency up and down<br />
<br />
To set CPU clock to 600 MHz, there are two options. Both '''do not''' adjust the voltage, so the system may become unstable:<br />
<br />
* The u-boot command "mw 48004940 0012580c" will temporarily set the CPU clock to 600 MHz (not permanent over reset).<br />
* To permanently set the CPU clock to 600 MHz, include the above command in the "bootcmd" variable or equivalent script.<br />
<br />
==Power management==<br />
<br />
* Latest Linux kernel power management development for TI OMAP SoCs is maintained in [http://git.kernel.org/?p=linux/kernel/git/khilman/linux-omap-pm.git;a=summary Kevin's linux-omap-pm git tree]<br />
* Russ' Beagle HW modifications resulted in [http://groups.google.com/group/beagleboard/browse_thread/thread/197a8ef6b46cc828 8mW sleep for Beagle Board]<br />
<br />
Without PM kernel, the Beagle [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/index.htm consumes ~1.5 watts idle, however it also uses the same amount under load] (see bottom of that page).<br />
<br />
==DLP Pico projector==<br />
<br />
Texas Instruments is developing a Pico Video Projector Kit (PVPK) as a peripheral for the Beagle Board. The stand alone pico projector will support VGA resolution (640 x 480), RGB 888 input through a DVI interface. The physical connector on the projector will be HDMI. See [http://groups.google.com/group/beagleboard/msg/10e218972380ee48 mailing list] and [http://www.youtube.com/watch?v=-tUBXD-KRp4 Beagle Running Angstrom (VGA) on DLP Pico Projector] for more details.<br />
<br />
It is available from [http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=296-23836-ND DigiKey] for $349.<br />
<br />
See [http://blog.makezine.com/archive/2009/01/tis_beagleboard_and_dlp_pico_projector.html?CMP=OTC-0D6B48984890 article from Make], too.<br />
<br />
DigiKey videos [http://www.youtube.com/watch?v=KBbCdnOj5vg part 1], [http://www.youtube.com/watch?v=zymOmduNWyI part 2] and [http://www.youtube.com/watch?v=Uj19Bi5NYeU part 3].<br />
<br />
==Interfacing to Raw LCD Panels==<br />
<br />
Currently on Rev A / B boards there is no direct access to the LCD lines before they enter the DVI framer. The REV C2 provides access to these lines. Several projects to interface an LCD to the beagleboard exist:<br />
<br />
* [[BeagleBoardRawLCD|interfacing to Raw LCD Panels]] article <br />
* [http://digitalsurveyinstruments.com/beagleperiphials/hdmi2parallel/doc/index.htm hdmi to parallel] workaround method<br />
* [http://www.harbaum.org/till/dvi2par/index.shtml dvi2par cheap diy HDMI to parallel converter]<br />
<br />
=Availability=<br />
<br />
BeagleBoards, currently Rev. C3 boards, are available from<br />
<br />
* [http://www.mouser.com/beagleboard Mouser]<br />
* [http://dkc1.digikey.com/us/mkt/beagleboard.html Digi-Key] with part number [http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=296-23428-ND 296-23428-ND].<br />
<br />
Note: For non-US Digi-Key free shipping orders:<br />
<br />
* Click the US flag on the top right corner of [http://dkc1.digikey.com/us/mkt/beagleboard.html Digi-Key] BeagleBoard page to come to the international page<br />
* Select ''Order Online'' for your country<br />
* Add quantity ''1'' and part number ''296-23428-ND''<br />
* Click ''Add to order''<br />
<br />
When ordering over 65 EUR / GBP 50 product (BeagleBoard is above), for Europe the price depends on the actual dollar to EUR/GBP rate. On nov 9, 2008 the price was EUR 124 with free shipping.<br />
<br />
Note: Some users report that they got some questions from DigiKey to be answered before board shipping is done.<br />
<br />
Note: While you get free shipping, most probably you have to pay tax e.g. ordering from Europe. Users report that they had to pay EUR ~34 - 44 VAT + importing taxes (depending on european country), resulting in EUR 137 - 147 ordering from Europe.<br />
<br />
Note: For European users, [http://www.ebv.com/fileadmin/products/Press_Print/Campaigns/2009/Product_Campaigns/Texas_Beagle_Board_englisch.pdf EBV Elektronik] sells its own blue version of the board for 179 EUR, which includes all useful accessories (DVI cable, serial cable, USB 2.0 Ethernet, USB hub, 2 GB MMC, power supply, Linux BSP).<br />
<br />
Note: German (Europe) users can order through German shops, too. For higher price, though. <br />
* [http://shop.embedded-projects.net/product_info.php/info/p159_BeagleBoard--OMAP-3-.html Embedded Projects Shop] sells BeagleBoard for EUR 199.00 + shipping.<br />
* [http://www.handheld-linux.com/wiki.php?page=Beagle%20Board Handheld-Linux]<br />
<br />
See below for ''hardware'' differences of the revisions. There are no ''software'' differences. <br />
<br />
==Revision A==<br />
<br />
There are some limited early revision Ax prototypes out there used by some hackers hanging around at #beagle channel on irc.freenode.net. See [[BeagleBoard#Errata|errata]] for limitations.<br />
<br />
==Revision B==<br />
<br />
Revision B is same as revision A, except<br />
* fix for shorted LEDs 0/1<br />
* fix for wrong power jack pinout<br />
* revision B6 uses different package for U9/U11<br />
Still has USB HOST (EHCI) failures. USB HOST (EHCI) connector isn't mounted.<br />
<br />
There are 4 revisions of the B board in the field: B4, B5, B6 and B7.<br />
<br />
The most notable difference is the use of the ES3.0 silicon in B6 and B7, other changes are not relevant to software developers.<br />
<br />
==Revision C2==<br />
Revision C2 is same as revision B7 except:<br />
* USB HOST (EHCI) is operational on revision C2, with standard USB A female connector.<br />
* Add interface for raw LCDs ([http://groups.google.com/group/beagleboard/msg/2e82c3ed6061d9d2 mockup])<br />
* It uses updated OMAP3 revision. BeagleBoard revisions B4+B5 uses OMAP3 ES 2.1 (engineering sample), while BeagleBoard revision C2 uses ES 3.0. OMAP3 ES 3.0 fixes minor issues:<br />
** updated ARM Cortex A8 silicon (r1p3) fixing a very rare [http://elinux.org/BeagleBoardFAQ#NEON_performance NEON issue] that has not been seen in real code<br />
* Power measurement feature<br />
* Uses [http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] OMAP power controller instead of TWL4030<br />
* Three additional PWM signals on the expansion connector added as pin mux options to existing pins ([http://groups.google.com/group/beagleboard/browse_thread/thread/d5872b7c6d74592c?hl=en# message])<br />
* Revision detection (to be able to identify C2 board from older boards by software, e.g. for different pin mux)<br />
* 256MB RAM ([http://groups.google.com/group/beagleboard/msg/3a38d0f21cefd6b1?hl=en message]) (and still 256MB NAND like rev B)<br />
<br />
Note: Revision C2 is the first production version, and all orders from from Digi-Key are shipped as Rev C2.<br />
<br />
==Revision C3==<br />
As revision C2 boards are [http://groups.google.com/group/beagleboard/msg/e41d3c97aa7d4951 sold out], revision C3 will ship now.<br />
<br />
Revision C3 is same as revision C2 [http://groups.google.com/group/beagleboard/msg/037318fbc44139d5 except]:<br />
* Optional RTC [http://parts.digikey.com/1/parts/1454-battery-lith-coin-3v-12-5mm-vert-vl-1220-vcn.html VL1220 series] backup battery<br />
* Mounting holes conected to ground<br />
* Slightly improved S-Video<br />
<br />
==Clones==<br />
===EBVBeagle===<br />
EBV build and sell their own BeagleBoard called [http://www.ebv.com/en/products/categories/details/product/ebvbeagle-board EBVBeagle], see e.g. [http://fl0rian.wordpress.com/2009/03/08/the-other-beagleboard/].<br />
It is actually a BeagleBoard revision C2 with green PCB boxed with some useful accessories. It comes as a quite complete starter kit with AC adapter, USB to Ethernet adapter, MMC card, USB hub and some cables.<br />
More information in [http://www.ebv.com/en/press-print/news-pr/details/news//press-releas-54.html official press release].<br />
<br />
===Mini Board===<br />
[[Mini_Board|ICETEK-OMAP3530-Mini]] is a chinese BeagleBoard clone.<br />
<br />
===DevKit 8000===<br />
[[DevKit8000]] is a Chinese BeagleBoard clone, slightly larger with additional peripherals (e.g. LCD/TSP, Ethernet and keyboard).<br />
<br />
===IGEPv2===<br />
[http://www.igep-platform.com/ IGEPv2 Platform] is a Spanish BeagleBoard clone, slightly larger, with additional peripherals like e.g. ethernet connector, wifi+bluetooth.<br />
<br />
==BeagleBoard-based products==<br />
* [http://www.alwaysinnovating.com/touchbook/ Always Innovating Touch Book], see [http://gigglehd.com/zbxe/hdforum/files/attach/images/899852/493/987/001/always_innovating_touch_book_0011.jpg]<br />
<br />
==Beagle case==<br />
<br />
*[http://specialcomp.com/beagleboard/ Special Computing]<br />
*[http://groups.google.com/group/beagleboard/browse_thread/thread/1c82316019633e51 SketchUp 3D model]<br />
<br />
=Adapters=<br />
<br />
For quite detailed information about all BeagleBoard peripherals see [http://www.beagleboard.org/uploads/BBSRM_6.pdf BeagleBoard HW Reference Manual (rev. B6)].<br />
<br />
See [[BeagleBoardPeripherals| BeagleBoard peripherals and adapters page]] for useful add ons for Beagle Board.<br />
<br />
==Expansion boards==<br />
* [[BeagleBoard Zippy]] expansion board is now available from [http://www.tincantools.com/product.php?productid=16147&cat=0&page=1&featured TinCanTools] for $79.00. basic specs are:<br />
** Battery Backed RTC<br />
** Second MMC slot<br />
** 10BaseT Ethernet<br />
** Second RS-232<br />
** +5V level I2C<br />
** AT24 EEPROM<br />
* [http://www.hy-research.com/beagle_expansion.html HY Research] has some expansion board basics and example.<br />
* [http://www.hervanta.com/stuff/Beaglebot#Expansion_Board Beaglebot] uses a custom extension board.<br />
* [http://beagleboard.org/leopard Leopard Board], a Beagle buddy web camera<br />
* There is also a VGA DB15 adapter board under development for the Rev C2 board. It should be available through a yet to be annnounced outlet.<br />
<br />
In Canada, check out [[http://robotcraft.ca RobotCraft]] in London, Ontario for expansion boards.<br />
<br />
==JTAG==<br />
<br />
Depending on your JTAG tool, you'd need a 14-pin to 20-pin adapter to use an ARM debugger. The 14-pin TI JTAG connector is used on BeagleBoard and is supported by a large number of JTAG emulation products.<br />
See [[BeagleBoardJTAG]] for more information.<br />
<br />
==RS232==<br />
<br />
The pinout on the beagle board is "AT/Everex" or "IDC10". You can buy [http://www.pccables.com/07120.htm IDC10 to DB9M adapters] in many places as they are commonly used for old PCs. You can also probably rip one of those cables out of any old desktop computer, where it's being used to support the serial port. Be careful, though -- some of those cables will have that tenth hole filled in so you'd have to snap off the extraneous pin on your BeagleBoard. Keep looking until you find a cable with all 10 holes open.<br />
<br />
Depending on your local configuration, you may need a [http://en.wikipedia.org/wiki/Null_modem 9-Pin NullModem] cable to connect BeagleBoard to serial port of your PC. From [http://www.tincantools.com/ TinCanTools] there is a [http://www.tincantools.com/product.php?productid=16144&cat=0&page=1&featured RS-232 DB-9 adapter] and [[media:flyswatter-ti-uart.pdf|adapter schematic]] available.<br />
<br />
==USB-to-Serial Converter==<br />
<br />
Since many systems no longer come with an actual serial port, you might need to pick up a USB-to-serial converter at your local computer store to connect to your BeagleBoard. Be warned that some of them simply do not work. Many of them are based on the Prolific chip, and require the pl2303 module to be loaded. But even when two converters appear to have exactly the same characteristics as listed in /var/log/messages, if you simply can't get one to work, be ready to try a different one.<br />
<br />
==USB==<br />
There are two USB ports on the BeagleBoard, one with an EHCI controller and another with an OTG controller. As of Rev B4, the usb EHCI has been removed because of a hardware defect. Rev C will include USB EHCI working properly.<br />
<br />
===EHCI===<br />
The HS ([http://en.wikipedia.org/wiki/USB#USB_signalling HighSpeed]) USB [http://en.wikipedia.org/wiki/EHCI ECHI] controller on OMAP3 on BeagleBoard supports high-speed only. This simplifies the logic on the device. FS/LS (FullSpeed/LowSpeed) devices, such as keyboards and mice, require going through a high-speed USB 2.0 hub.<br />
<br />
According to the BeagleBoard System Reference Manual Rev C2, the EHCI port can source 5V at 500mA which is enough to power a hub and several low-power devices. However, this is only true if the BeagleBoard is powered through its power jack from a well-regulated 5V external power supply. If the BeagleBoard is powered through the OTG port, the EHCI port sources an "extremely limited" ampount of power (probably 100mA or so) so you'll need a "self-powered" USB 2.0 hub with its own external power supply. [Reference: Sections 5.6 and 7.2 of the BBSRM Rev C2.2.]<br />
<br />
===OTG===<br />
The HS USB OTG ([http://en.wikipedia.org/wiki/USB_On-The-Go OnTheGo]) controller on OMAP3 on the BeagleBoard does have support for all the USB 2.0 speeds (LS/FS/HS) and can act as either a host or a gadget/device. The HS USB OTG port is used as the default power input for the BeagleBoard. It is possible to boot the BeagleBoard using this USB port.<br />
<br />
When using the OTG port in host mode, you must power the BeagleBoard using the +5V power jack. If you connect a USB hub, you'll probably also need external power for the USB hub as well, because according to the Hardware Reference manual the BeagleBoard OTG port only sources 100 mA. This is enough to drive a single low-power device, but probably won't work with multiple devices.<br />
<br />
The Linux kernel needs to know you want to use the OTG port in host mode. I believe OTG ports are supposed to figure this out for themselves using the OTG Host Negotiation Protocol, but for now the Linux kernel may need some help. Specifically, Pin 4 (ID) of the OTG connector needs to be shorted to Pin 5 (GND) by using a [http://trisoft.de/pics/ZHost.JPG 5-pin USB Mini-A plug] which shorts these pins together in the plug. A [http://en.wikipedia.org/wiki/USB#USB_cables 5-pin USB Mini-B plug] leaves Pin 4 floating. Unfortunately, most USB Mini plugs are unmarked as to whether they are "A" or "B".<br />
<br />
You can find "mini A" adapters that have Pin 4 shorted and offer out a full-sized USB A Female jack [http://www.electronicproductonline.com/catalog/product_info.php?products_id=2043 here.]<br />
<table><br />
<tr><td><br />
Since the right cables might be hard to get, you simply can<br />
* short circuit the two pins encircled in red in the image to the right. You can do this by running a wire between the two pins. That at least allows easier undoing the change. Actually you could even have a small switch or so between 4 and 5.<br />
or<br />
* use a "mini B" cable (easier to get) and try the soldering of the two pins at the cable's connector. Depending on the cable it should be possible to open the plastic covering of mini-B port with a sharp-edged knife, then solder the two pins together, close the covering again and use some tape. This leaves the BeagleBoard unmodified.<br />
</td><td>[[Image:usb_otg.png]]</td></tr></table><br />
The Rev C BeagleBoard has a pair of pads labeled J6 on the back of the board under the OTG connector. Shorting these pads together with a wire or solder blob connects pins 4 and 5.<br />
See Figure 20 in the BeagleBoard System Reference Manual Rev C2.2.<br />
<br />
==DVI==<br />
<br />
DVI-D connection on BeagleBoard uses a [http://en.wikipedia.org/wiki/HDMI HDMI connector]:<br />
<br />
''HDMI is backward-compatible with the single-link Digital Visual Interface carrying digital video (DVI-D or DVI-I, but not DVI-A) used on modern computer monitors and graphics cards. This means that a DVI-D source can drive a HDMI monitor, or vice versa, by means of a suitable adapter or cable, but the audio and remote control features of HDMI will not be available.''<br />
<br />
BeagleBoard can be connected to a DVI monitor using HDMI female to DVI male cable.<br />
<br />
=BootRom=<br />
<br />
OMAP3 on BeagleBoard contains a BootRom. With this, BeagleBoard can boot without any code in permanent storage (NAND) or from peripherals. This is useful for first board bring up or if your BeagleBoard is bricked. For more information about BootRom booting see [http://www.ti.com/litv/pdf/sprufd6a SPRUFD6]. <br />
<br />
==User button==<br />
<br />
With user button on BeagleBoard you can configure boot order. Depending on this button, the order used to scan boot devices is changed. The boot order is (the first is the default boot source):<br />
<br />
* User button ''not'' pressed: NAND -> USB -> UART -> MMC<br />
* User button ''is'' pressed: USB -> UART -> MMC -> NAND<br />
<br />
Technically speaking, the user button configures pin SYS.BOOT[5]. See [http://focus-webapps.ti.com/general/docs/sitesearch/searchsite.tsp?selectedTopic=1653260327&numRecords=25&searchTerm=sprufd6&statusCode=null SPRUFD6] for more details.<br />
<br />
==Serial and USB boot==<br />
<br />
Historically, using OMAP3's boot ROM for serial and USB boot, there are several tools around. The newest are Nishanth' ''OMAP U-Boot Utils'', while there are still some older tools for serial boot and USB boot. It is also possible the access the [[u-boot environment variables in linux|u-boot env from linux]].<br />
<br />
===OMAP U-Boot Utils===<br />
<br />
Nishanth' [http://code.google.com/p/omap-u-boot-utils/ OMAP U-Boot Utils] provide<br />
<br />
* ''pserial'' - OMAP specific utility which downloads a file in response to ASIC ID over serial port.<br />
* ''pusb'' - OMAP specific utility which downloads a file in response to ASIC ID over USB connection.<br />
* ''ucmd'' - Send a command to U-Boot and wait till a specific match appears.<br />
* ''ukermit - Download a file from host without using kermit to U-Boot.<br />
<br />
See [http://nishanthmenon.blogspot.com/ Nishanth' blog] and [http://groups.google.com/group/beagleboard/browse_thread/thread/c5bfb1b8ed528b52# announce mail], too.<br />
<br />
===Serial boot===<br />
<br />
Besides Nishanth' ''OMAP U-Boot Utils'', to boot from USB or UART, you need a PC tool which talks with OMAP BootRom and speaks the correct protocol to download ARM target code to BeagleBoard. Currently there are two older (experimental) tools for UART boot:<br />
<br />
* [http://omapzoom.org/gf/project/omaptools/wiki PC Serial Boot perl script]<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/80ad3da0eb2aa555 Linux C utility] (not working yet with below target code)<br />
<br />
See [http://groups.google.com/group/beagleboard/browse_thread/thread/ae2c601ebe104a4 USB and serial download target code] for some example target code to be downloaded to OMAP3 on BeagleBoard.<br />
<br />
===USB boot===<br />
<br />
Besides Nishanth' ''OMAP U-Boot Utils'', for USB boot, there is currently one (experimental) tool to boot BeagleBoard over USB:<br />
<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/2b9e99886bb7a747 Linux C utility]<br />
<br />
See [http://groups.google.com/group/beagleboard/browse_thread/thread/ae2c601ebe104a4 USB and serial download target code] for some example target code to be downloaded to OMAP3 on BeagleBoard.<br />
<br />
See [[BeagleBoardRecovery#USB_recovery|USB recovery section]] how to use USB boot for board recovery.<br />
<br />
==NAND boot==<br />
<br />
See [[BeagleBoardNAND|NAND boot]] article.<br />
<br />
==MMC/SD boot==<br />
<br />
Currently, [http://code.google.com/p/beagleboard/wiki/BootingBeagleBoard boot the BeagleBoard with MMC/SD] is the only working way for first board bring up.<br />
<br />
===MMC/SD formatting===<br />
<br />
As described in above MMC/SD boot description, you have to ''create a bootable partition on MMC/SD Card''. This can be done using e.g. Windows or Linux tools.<br />
<br />
'''Windows'''<br />
<br />
See ''HP USB Disk Storage Format Tool 2.0.6'' description on [http://code.google.com/p/beagleboard/wiki/BootingBeagleBoard boot the BeagleBoard with MMC/SD] page.<br />
<br />
'''Linux'''<br />
<br />
Please see [http://wiki.omap.com/index.php?title=MMC_Boot_Format OMAP3 MMC Boot Format].<br />
<br />
===Dual partition card===<br />
<br />
You can [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat create a dual-partition card], booting from a FAT partition that can be read by the OMAP3 ROM bootloader and Windows, then utilizing an ext2 partition for the Linux root file system.<br />
<br />
To mount second ext2 partition as root file system (e.g. containing contents of [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode rd-ext2.bin]) use kernel boot arguments (e.g. in uboot using ''setenv bootargs''):<br />
<br />
console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootwait<br />
<br />
===U-Boot booting===<br />
<br />
If your MMC/SD card formatting is correct and you put [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode MLO, u-boot.bin and uImage] on the card you should get a u-boot prompt after booting beagle board. E.g. (output from terminal program with 115200 8N1):<br />
<br />
...40T.........XH.H.U�..Instruments X-Loader 1.41<br />
Starting on with MMC<br />
Reading boot sector<br />
<br />
717948 Bytes Read from MMC<br />
Starting OS Bootloader from MMC...<br />
<br />
U-Boot 1.1.4 (Apr 2 2008 - 13:42:13)<br />
<br />
OMAP3430-GP rev 2, CPU-OPP2 L3-133MHz<br />
TI 3430Beagle 2.0 Version + mDDR (Boot ONND)<br />
DRAM: 128 MB<br />
Flash: 0 kB<br />
NAND:256 MiB<br />
In: serial<br />
Out: serial<br />
Err: serial<br />
Audio Tone on Speakers ... complete<br />
OMAP3 beagleboard.org #<br />
<br />
Using this u-boot prompt, you now can start kernel uImage stored on MMC card manually:<br />
<br />
OMAP3 beagleboard.org # mmc init<br />
OMAP3 beagleboard.org # fatload mmc 0:1 0x80000000 uimage<br />
OMAP3 beagleboard.org # bootm<br />
<br />
If you like to make that happen every boot:<br />
<br />
OMAP3 beagleboard.org # set bootcmd 'mmc init ; fatload mmc 0:1 0x80000000 uimage ; bootm' ; saveenv<br />
<br />
=Code=<br />
<br />
Code and binaries for BeagleBoard are available at various places.<br />
<br />
==Binaries==<br />
<br />
BeagleBoard pre-built binaries and source code can be found at [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode Beagle source code] and [http://code.google.com/p/beagleboard/downloads/list downloads] page. These are the locations where "official" TI code is available. Please note that this code is mainly for reference and testing. More up to date binaries and code is available by community. Community took (parts) of TI reference code, improves and updates it. <br />
<br />
Actually, [http://www.angstrom-distribution.org/node/47 Koen's prebuilt Beagleboard demo images] are up to date binaries including e17 as window manager, the abiword word processor, the gnumeric spreadsheet application, a NEON accelerated mplayer and the popular NEON accelerated omapfbplay which gives you fullscreen 720p decoding. The [http://www.angstrom-distribution.org/demo/beagleboard www.angstrom-distribution.org/demo/beagleboard] directory should contain all the files you need:<br />
<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/u-boot.bin u-boot.bin]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/MLO MLO]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/uImage uImage]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/Angstrom-Beagleboard-demo-image-glibc-ipk-2009.X-test-20090104-beagleboard.rootfs.tar.bz2 rootfs]<br />
<br />
See the [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat beagle wiki] on how to setup your SD card to use all this goodness.<br />
<br />
==Source==<br />
<br />
Besides above binary and source images (TI's and communities one), for various parts of Beagle software stack there are community supported [http://git.or.cz/ git] repositories available. <br />
<br />
===X-Loader===<br />
<br />
Steve did some work to consolidate and update X-Loader from various sources and put it in a [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=x-load-omap3.git;a=summary X-Loader git repository]. Get it by<br />
<br />
git clone git://gitorious.org/x-load-omap3/mainline.git xloader<br />
cd xloader/<br />
<br />
Build:<br />
<br />
make distclean<br />
make omap3530beagle_config<br />
make<br />
<br />
Result will be a ~20k sized ''x-load.bin'' in main directory.<br />
<br />
===U-Boot===<br />
<br />
[http://www.denx.de/wiki/U-Boot/WebHome Mainline U-Boot] has good support for BeagleBoard. Get it by:<br />
<br />
git clone git://git.denx.de/u-boot.git u-boot-main<br />
cd u-boot-main<br />
git checkout --track -b omap3 origin/master<br />
<br />
Build (assuming Code Sourcery GCC 2007q3):<br />
<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- mrproper<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- omap3_beagle_config<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- <br />
<br />
Result will be a ~160k sized ''u-boot.bin'' in main directory.<br />
<br />
Note: Due to (patch and binary) size, BeagleBoard splash screen was removed from upstream version. If you want it back, use [http://groups.google.com/group/beagleboard/browse_thread/thread/3ad9b803a3418624 U-Boot v1 BeagleBoard splash screen patch].<br />
<br />
Note: For experimental U-Boot patches not ready for mainline yet, Steve's [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=u-boot-omap3.git;a=summary Beagle U-Boot git repository] is used to test them. Get it by:<br />
<br />
git clone git://gitorious.org/u-boot-omap3/mainline.git u-boot-omap3<br />
cd u-boot-omap3<br />
git checkout --track -b omap3-dev origin/omap3-dev<br />
<br />
===Linux kernel===<br />
<br />
[http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git;a=summary Git repository] of [http://muru.com/linux/omap/ OMAP Linux kernel] contains Beagle support. Get it by:<br />
<br />
git clone git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git linux-omap-2.6<br />
cd linux-omap-2.6<br />
<br />
Build:<br />
<br />
make distclean<br />
make omap3_beagle_defconfig<br />
make menuconfig # only needed if you want to change the default configuration<br />
make uImage<br />
<br />
The result will be a ''uImage'' in ''arch/arm/boot/'' directory.<br />
<br />
If you use the OE toolchain and want to build outside of the OE tree you should do<br />
ARCH=arm<br />
PATH=~/oe/tmp/cross/armv7a/bin:~/oe/tmp/staging/i686-linux/usr/bin:$PATH # add cross tools to your path<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- distclean<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- omap3_beagle_defconfig<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- menuconfig # only needed if you want to change the default configuration<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- uImage<br />
Note: the staging dir in the path is for mkimage. If you've build a kernel before with oe, the program should be there<br />
<br />
Note: If you are interested in kernel development have a look to [[BeagleBoardLinuxKernel|manually compiling BeagleBoard kernel]], too.<br />
<br />
===Experimental kernel patches and hacks===<br />
<br />
Some beagle developers maintain their own kernel experimental patches and hacks not ready for upstream:<br />
<br />
* [http://cgit.openembedded.net/cgit.cgi?url=openembedded/tree/packages/linux/linux-omap Koen's collection of kernels patches for OE] and the [http://cgit.openembedded.net/cgit.cgi?url=openembedded/tree/packages/linux/linux-omap_git.bb list of relevant patches]<br />
* [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=linux-omap-2.6.git;a=shortlog;h=refs/heads/test Steve's kernel tree], a clone of main OMAP git with additional patches, mainly beagle audio (ASOC) related.<br />
* [http://git.mansr.com/?p=linux-omap;a=summary Mans' kernel tree], a clone of main OMAP git with additional patches, mainly display & framebuffer related.<br />
* [http://www.bat.org/~tomba/linux-omap.html Tomi's kernel tree], a clone of main OMAP git with display sub-system patches, replacing the entire display driver with one that is the likely direction moving forward.<br />
<br />
=Compiler=<br />
<br />
TI OMAP3530 processor on BeagleBoard contains an ARM Cortex-A8 general purpose processor and a TMS320C64x+ DSP.<br />
<br />
==ARM==<br />
<br />
There is broad compiler support including gcc - please see [http://www.elinux.org/ARMCompilers ARM Compilers]<br />
<br />
==C64x+ DSP==<br />
<br />
A free C64x DSP compiler is available as [https://www-a.ti.com/downloads/sds_support/targetcontent/LinuxDspTools/download.html Linux hosted C6x Code Generation Tools] (TMS320C6000 C/C++ CODE GENERATION TOOLS 6.1.3 July 2008).<br />
<br />
Note: my.TI account required. You may create an account [https://my.ti.com here]<br />
<br />
Note: Old c6000 Linux compiler available on [ftp://ftp.ti.com/pub/cs/linux_cgt500.tar.gz TI FTP site]. Does NOT support c64x+ core in OMAP3 devices. Not recommended.<br />
<br />
You can also utilize the [http://focus.ti.com/dsp/docs/dspsupportaut.tsp?familyId=44&sectionId=3&tabId=416&toolTypeId=30 full-CCS free evaluation tools for 120 days], but they currently require purchase to upgrade to service release 9 to support full JTAG debugging with supported JTAG hardware.<br />
<br />
See [[BeagleBoard/DSP_Howto| BeagleBoard DSP howto]] for information about how to use the DSP.<br />
<br />
=Cortex A8 ARM features =<br />
<br />
ARM Cortex-A8 in OMAP3 is a high performance dual-issue applications processor which reaches a performance of 2.0 DMIPS/MHz (compared to ARM11 at 1.2 DMIPS/MHz). It is ARM v7 architecture, which is fully backwards compatible with application code for previous ARM processors.<br />
<br />
It includes a floating point unit (ARM VFPv3 architecture) and the ARM NEON SIMD instruction set.<br />
<br />
See [http://pandorawiki.org/Floating_Point_Optimization Floating Point Optimization] article for an intro into VFP-lite and NEON.<br />
<br />
===ARM NEON===<br />
<br />
NEON is a 64/128-bit wide SIMD vector extension for ARM, which has been architected to be an efficient C compiler target as well as being used from assembly language. It has 32x 64-bit registers (with a dual view as 16x 128-bit registers) which can hold the following datatypes:<br />
* 64-bit signed/unsigned<br />
* 32-bit signed/unsigned<br />
* 32-bit single precision floating point<br />
* 16-bit signed/unsigned<br />
* 8-bit signed/unsigned<br />
<br />
The key advantage of NEON is very high performance vector math processing, whilst being easy to program. It is the same thread of control as the ARM (but different instructions), and is supported by the same tools, debuggers and operating systems.<br />
<br />
The NEON instruction set is documented in ARM's [http://infocenter.arm.com/help/topic/com.arm.doc.dui0204i/DUI0204I_rvct_assembler_guide.pdf RealView Compilation Tools Assembler Guide].<br />
<br />
For NEON optimized libraries see [http://www.us.design-reuse.com/news/18429/aac-mp3-mpeg-4-h-264-fft-openmax-cortex-a8-neon-arm11-processors.html ARM Releases AAC, MP3, MPEG-4, H.264 and FFT OpenMAX DL Libraries, Highly Optimized for Cortex-A8/NEON and ARM11 Processors]. Note: Read the [http://www.arm.com/products/esd/openmax_v7libraries.html EULA].<br />
<br />
NEON is currently used by<br />
* ffmpeg - libavcodec used by mplayer, omapfbplay, and many other linux applications<br />
* libpixman - used by X.org and Mozilla & Webkit browsers to render text and graphics<br />
* Bluez - official Linux Bluetooth stack<br />
<br />
=== ARM Cortex Floating Point ===<br />
<br />
There are two types of instructions in the ARM v7 ISA that handle floating point:<br />
<br />
1) '''VFPv3''' Floating point instruction set (used for single/double precision scalar operations).<br />
These is used by gcc for C floating point operations on 'float' and 'double'<br />
<br />
2) '''NEON''' [http://www.arm.com/products/multimedia/neon/ NEON] vectorized single precision operations (2 values in a D-register, or 4 values in a Q-register)<br />
These can be use by gcc when -ftree-vectorize is enabled and -mfpu=neon is specified, and the code can be vectorized. In other cases the VFPv3 scalar ops will be used.<br />
<br />
ARM Cortex-A processors have separate floating point pipelines that handle these different instructions.<br />
<br />
On Cortex-A8, the designers' focus was on the NEON unit performance which can sustain 1 cycle/instr throughput (processing 2 single-precision values at once). The scalar VFPv3 FPU cannot achieve this level of performance (cycle timings are in the Cortex-A8 TRM download), but it is still a lot better than doing floating point using integer instructions.<br />
<br />
If you need the highest performance floating point on Cortex-A8, you need to use single precision and ensure the code uses the NEON vectorized instructions:<br />
* use gcc with -ftree-vectorize (possibly modify source code to make it vector friendly)<br />
* use NEON instrinsics (#include <arm_neon.h>, float32x2_t datatype and vmul_f32() etc)<br />
* use NEON asm directly<br />
<br />
Keep in mind that mixing NEON and ARM load/stores can sometimes stall significantly. See [http://hardwarebug.org/2008/12/31/arm-neon-memory-hazards/ this link] for more info.<br />
<br />
On Cortex-A9, there is a much higher performance floating point unit which can sustain 1 cycle/instr throughput, with low result latencies.<br />
<br />
=Board recovery=<br />
<br />
If you played e.g. with the contents of the [http://www.sakoman.net/omap3/flash%20procedure.txt NAND], it might happen that the Board doesn't boot any more (without pressing user button) due to broken NAND content. See [[BeagleBoardRecovery|BeagleBoard recovery]] article how to fix this.<br />
<br />
=Development environments=<br />
<br />
Instead of just using compiler + editor, you can use complete image create "development tool chains" which integrate compiler, build system, packaging tools etc. in one tool chain.<br />
<br />
==OpenEmbedded==<br />
<br />
For [http://www.openembedded.org/ OpenEmbedded] (OE), there are some hints how to [http://www.beagleboard.org/irclogs/index.php?date=2008-04-29#T13:06:25 start with OE for BeagleBoard]. See [[BeagleBoardAndOpenEmbeddedGit|BeagleBoard and OpenEmbedded Git]] and [http://wiki.openembedded.org/index.php/Getting_Started OpenEmbedded getting started] as well.<br />
<br />
In the OE getting started document, for BeagleBoard replace ''MACHINE = "om-gta01"'' by ''MACHINE = "beagleboard"''. After confirming ''bitbake nano'' works, try ''bitbake console-image''. The first time you run bitbake OE will download all the needed source and build the tool chain. This will take several hours. After all went fine, the output is in ''${OE_ROOT}/tmp/deploy/glibc/images/beagleboard''.<br />
<br />
Note: Koen has some BeagleBoard [http://amethyst.openembedded.net/~koen/index.php?path=beagleboard/ source and binary images] built with OE. There, ''Angstrom-console*'' images don't include an X server, you can still use a e.g. DVI-D screen with console, but you won't have a GUI. ''Angstrom-x11*'' images contain an X server.<!-- DEAD LINK: resulting in something like [http://scap.linuxtogo.org/files/fc987d4acb2c745fb7e19cf4dca8de70.png this].--><br />
<br />
===One very important note:=== <br />
<br />
It's important to have an X-Loader on your Beagleboard that uses the uImage on the SD Card that goes with Angstrom. The B6 Beagleboards do not appear to come with such an X-Loader. So you likely will have to upgrade the X-Loader. Here's what to do:<br />
* Make an SD Card with the [http://www.angstrom-distribution.org/demo/beagleboard Angstrom Demo files]. See the [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat Beagleboard Wiki Page] for more info on making the SD Card.<br />
* Put the SD Card in the Beagle, and boot up to the U-Boot Prompt.<br />
* Do the first six instructions in the [http://code.google.com/p/beagleboard/wiki/BeagleNANDFlashing Flashing Commands with U-Boot] section. <br />
* Reboot the Beagle to see that the new X-Loader is properly loaded.<br />
<br />
This will update the X-Loader to a newer version that will automatically load uImage from the SD Card when present -- rather than always using the uImage in the Beagleboard NAND.<br />
<br />
==Eclipse==<br />
The Eclipse [http://www.eclipse.org/cdt/ C Development Tools Project] provides a "fully functional C and C++ Integrated Development Environment (IDE) for the Eclipse platform". The Eclipse [http://www.eclipse.org/dsdp/tm/ DSDP Target Managment Project] provides a "Remote System Explorer" (RSE) plugin that simplifies downloading files to the BeagleBoard and editing files on the BeagleBoard within the Eclipse IDE. A Linux Target Agent is available as part of the [http://wiki.eclipse.org/DSDP/TM/TCF_FAQ Target Communications Framework (TCF) component]. Info on how RSE is used for e.g. Gumstix development is described in [http://groups.google.com/group/beagleboard/browse_thread/thread/509831f7c24cb79f# this post].<br />
<br />
==Android==<br />
[http://source.android.com Android] platform is a software stack for mobile devices including an operating system, middleware and key applications. Developers can create applications for the platform using the [http://code.google.com/android/ Android SDK]. Applications are written using the Java programming language and run on Dalvik, a custom virtual machine designed for embedded use which runs on top of a Linux kernel.<br />
<br />
There are several resources for Android on OMAP (Beagle) available:<br />
<br />
'''OMAPZOOM'''<br />
<br />
You can find Android port for OMAP ZOOM architecture on [https://omapzoom.org/gf/project/omapandroid/wiki/ OMAPZoom.org's wiki page on Android]. <br />
<br />
'''EMBINUX'''<br />
<br />
[http://beagleboard.org/project/android Beagleboard.org's Android project page] [http://groups.google.com/group/beagleboard/browse_thread/thread/7b422f113ce489b5 announced], the successful porting of Android on Beagle board by [http://embinux.com EMBINUX&trade;] Team. The [http://labs.embinux.org/git/ source code] and [http://www.embinux.com/download_beagle.php binaries] are available for download and review. <br />
<br />
Detailed instructions, for porting Android on Beagle Board, are available [http://labs.embinux.org/index.php/Main_Page here]. Current release supports input devices (keyboard/mouse), network and sound.<br />
<br />
You can [http://in.youtube.com/watch?v=nADn_vNVEKw watch Android booting] on Beagle Board.<br />
<br />
'''Android on OMAP wiki'''<br />
<br />
Wiki page for Andorid on OMAP can be found [[Android on OMAP|here]]<br />
<br />
'''0xdroid'''<br />
<br />
[http://gitorious.org/0xdroid 0xdroid], the enhanced version of Android on Beagleboard by [http://0xlab.org 0xlab]. The [http://gitorious.org/0xdroid source code], [http://downloads.0xlab.org/ pre-built binaries], and [http://code.google.com/p/0xdroid/issues/list issue tracker] are available for review and reference.<br />
<br />
The latest development supports OMAP audio, OMAP video overlays, ARM Cortex A8 NEON/Thumb2 performance optimizations, mouse cursor, hot-pluggable USB keyboard & mouse, user-friendly installer for system image, and various Android tweaks. Detailed instructions for 0xdroid are available through [http://gitorious.org/0xdroid/pages/Home gitorious wiki].<br />
<br />
You can [http://www.youtube.com/watch?v=v6wdTOHrwQw watch 0xdroid demo video] on Beagle Board.<br />
<br />
==Mamona==<br />
<br />
[http://dev.openbossa.org/trac/mamona/wiki Mamona] is an embedded Linux distribution for ARM EABI. The main goal of the Mamona Project is to offer a completely open source alternative/experimental platform for [http://maemo.org/ Maemo] using only free and open source components. Mamona [http://rsalveti.wordpress.com/2008/09/12/mamona-02-is-out 0.2] [http://franciscoalecrim.com/blog/2008/07/29/mamona-working-with-beagleboard/ supports] [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12013&contentId=28741 OMAP3430 Software Development Platform (SDP)], so you can also use it at Beagle (OMAP3530), too. Work is being done to officially support Beagle.<br />
<br />
==Ubuntu==<br />
<br />
See [[BeagleBoardUbuntu|Ubuntu (ARM)]] installation guide how to install Ubuntu (ARM) on BeagleBoard.<br />
<br />
==Debian ARM==<br />
<br />
See [[BeagleBoardDebian|Debian (ARM)]] installation guide how to install Debian (ARM) on BeagleBoard.<br />
<br />
==Handhelds Mojo ARM==<br />
<br />
See [[BeagleBoardHandheldsMojo|Handhelds Mojo (ARM)]] installation guide how to install Handhelds Mojo (ARM) port of Ubuntu on BeagleBoard. (The Mojo project is no longer active, see the Official Ubuntu ARM-port above instead)<br />
<br />
==Scratchbox==<br />
<br />
[http://www.scratchbox.org/ Scratchbox] is a cross-compilation toolkit designed to make embedded Linux application development easier. It also provides a full set of tools to integrate and cross-compile an entire Linux distribution. See [http://felipec.wordpress.com/2009/06/07/installing-scratchbox-1-and-2-for-arm-cross-compilation/ Felipe's Scratbox 1 and 2 intro], too.<br />
<br />
=Software hints=<br />
<br />
This section collects hints, tips & tricks for various software components running on beagle.<br />
<br />
==QEMU==<br />
<br />
[[Qemu|QEMU]] [http://vm-kernel.org/blog/2008/12/15/linux-is-running-on-qemu-omap3/ supports OMAP3] being able to boot a BeagleBoard Linux kernel.<br />
<br />
==Linux hints==<br />
<br />
See BeagleBoard [http://code.google.com/p/beagleboard/wiki/LinuxHints Google wiki Linux hints] page (for Linux WTBU (Wireless TI Business Unit) kernel [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode 2.6.22]). Currently featuring:<br />
<br />
* Switching video output between DVI-D and S-Video<br />
* Disabling framebuffer blanking<br />
* Listing USB devices<br />
<br />
==lmbench==<br />
<br />
Avik posted a detailed [http://groups.google.com/group/beagleboard/browse_thread/thread/c8b8f07ce61161a1 step-by-step procedure] to run [http://sourceforge.net/project/showfiles.php?group_id=14418 lmbench] on Beagle.<br />
<br />
==Mediaplayer (FFmpeg)==<br />
<br />
There is a thread how to get a [http://groups.google.com/group/beagleboard/browse_thread/thread/9b8025fc15120fd9# mediaplayer] with NEON optimization (FFmpeg) to run on Beagle. Includes compiler hints and patches.<br />
<br />
==Java==<br />
<br />
When using the [[BeagleBoard#OpenEmbedded|OpenEmbedded]]-based Angstrom image you have the following options of Java support:<br />
* JamVM + GNU Classpath (small vm, fast interpreter, J2SE-like)<br />
* Cacao + GNU Classpath (JIT compiler, J2SE-like)<br />
* PhoneME Advanced Foundation (JIT compiler, CDC)<br />
<br />
Java support in OpenEmbedded/Angstrom ([http://wiki.openembedded.net/index.php/Java details]) is provided voluntarily through [http://jalimo.org Jalimo].<br />
<br />
See a [http://groups.google.com/group/beagleboard/browse_thread/thread/102f627253919783# post at mailing list], too.<br />
<br />
OpenEmbedded users can add the [http://evolvis.org/scm/?group_id=11 Jalimo Subversion repository] as an overlay (instructions are in the repository). This will allow them to build OpenJDK packages. Inclusion of these recipes in mainline OpenEmbedded is planned but still ongoing.<br />
<br />
The recipes offer the following functionality:<br />
<br />
* OpenJDK + Hotspot (Zero port) (all J2SE functionality, including JVMTI, interpreted only)<br />
* OpenJDK + Cacaco (all J2SE library features, missing JVMTI, decent JIT compiler)<br />
* OpenJDK + Hotspot (Shark port) (not working yet)<br />
<br />
Some guy from ARM Ltd. is working on interpreter optimization in Zero for ARM.<br />
<br />
People interested in getting this stuff working better should contact people on:<br />
* [http://evolvis.org/mail/?group_id=11 Jalimo Mailinglist]<br />
* [http://mail.openjdk.java.net/mailman/listinfo/distro-pkg-dev Icedtea Mailinglist]<br />
<br />
You should also check out IcedTea's [http://iced-tea.org/wiki/FrequentlyAskedQuestions FAQ].<br />
<br />
=Graphics accelerator=<br />
<br />
OMAP3530 used on BeagleBoard contains a graphics accelerator (SGX) based on the SGX core from [http://www.imgtec.com/ Imagination Technologies]. [http://www.imgtec.com/powervr/powervr-graphics.asp PowerVR] SGX530 is a new generation of programmable PowerVR graphics and video IP cores. Only the kernel portions of Linux drivers will be open source. The PowerVR folks will provide binary user-space libraries. Using the EMail contact at [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12700&contentId=27458 TIs Mobile Gaming Developers page] there are Linux v2.6 OMAP3430 SDKs for OMAP3 Zoom and SDP supporting OpenGL ES v2.0, OpenGL ES v1.1 and OpenVG 1.0 available.<br />
<br />
Tutorial:<br />
* [http://code.google.com/p/beagleboard/wiki/HowtoUseSGXunderAngstrom How to use SGX with Angstrom in OE]<br />
<br />
Some videos:<br />
<br />
* [http://www.youtube.com/watch?v=3ToYOgP9f9U SGX on Beagle working with Linux 2.6.27]<br />
* [http://www.youtube.com/watch?v=24TXpqa9jG0&feature=related OpenGL ES 2.0 shader effects on OMAP3]<br />
* [http://www.youtube.com/watch?v=-UFUbqoNgs8&feature=related 3D User Interface on OMAP3 Platform]<br />
* [http://www.youtube.com/watch?v=8KcNgeUriqA 3D Mapping using OpenGL ES 2.0 on OMAP3 Platform]<br />
* [http://www.youtube.com/watch?v=7D3V6BUpGLE Video blending in hardware]<br />
* [http://www.hitlabnz.org/wiki/EmbeddedAR An Augmented Reality application combining ARToolkit and OpenGL ES 2.0]<br />
<br />
=Beginners guide=<br />
<br />
You just got your new BeagleBoard, and now? See [[BeagleBoardBeginners|beginners guides]].<br />
<br />
=FAQ=<br />
<br />
For BeagleBoard frequently asked questions (FAQ) see [[BeagleBoardFAQ|community FAQ]] and "official" [http://beagleboard.org/support/faq BeagleBoard.org FAQ].<br />
<br />
=Links=<br />
==Home page==<br />
[http://beagleboard.org/ beagleboard.org] (beagle board home)<br />
* Using [http://www.google.de/ Google] you can search beagleboard.org (including [http://www.beagleboard.org/irclogs/ IRC logs]) using ''site:beagleboard.org <search term>''<br />
<br />
==Manuals and resources==<br />
* [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard HW Reference Manual (rev. C2)]<br />
* [http://beagle.s3.amazonaws.com/BBSRM_7_2_0.pdf BeagleBoard HW Reference Manual (rev. B7)]<br />
* [http://www.beagleboard.org/uploads/BBSRM_6.pdf BeagleBoard HW Reference Manual (rev. B6)]<br />
* [http://www.beagleboard.org/uploads/BBSRM_B5.pdf BeagleBoard HW Reference Manual (rev. B5)]<br />
* [http://www.beagleboard.org/uploads/Beagle_HRM_B4.pdf BeagleBoard HW Reference Manual (rev. B4)]<br />
* [http://www.beagleboard.org/uploads/Beagle_HW_Reference_Manual_A_5.pdf BeagleBoard HW Reference Manual (rev. A5)]<br />
* [http://focus.ti.com/docs/prod/folders/print/omap3530.html OMAP3530] processor description and manuals<br />
* [http://code.google.com/p/beagleboard/ Beagle at code.google.com]<br />
* [http://focus.ti.com/dsp/docs/dspsupporttechdocs.tsp?sectionId=3&tabId=409&familyId=1526&documentCategoryId=4&techDoc=4 OMAP3530/25 CBB BSDL Model]<br />
* [http://www.micron.com/products/mcps/beagleboard Micron's multi chip packages (MCPs) for Beagle Board]<br />
* [http://beagleboard.org/resources Beagleboard resources page with hw docs]<br />
* Some [http://www.rasterman.com/ performance comparison] of BeagleBoard Rev. B with some other ARM/PC systems.<br />
* OMAP3 pinmux [http://www.hy-research.com/omap3_pinmux.html setup]<br />
* [http://elinux.org/BeagleBoardPinMux OMAP3 eLinux pinmux page]<br />
<br />
==Contact and communication==<br />
* [http://groups.google.com/group/beagleboard Beagle board discussion list]<br />
* [http://code.google.com/p/beagleboard/issues/list Beagle board open point list & issue tracker]<br />
* [http://beagleboard.blogspot.com/ Beagle board blog]<br />
* [http://feeds.feedburner.com/BeagleBoard Beagle board RSS feed]<br />
* Chat:<br />
** [http://beagleboard.org/chat Beagle Board chat]<br />
** IRC: #beagle channel on irc.freenode.net<br />
** [http://www.beagleboard.org/irclogs/index.php IRC archive]<br />
* [http://www.beaglesride.org/ Beagles Ride], a site about building a community around the BeagleBoard focused on in vehicle applications<br />
* [http://www.beagleboard.de/ German Beagle Board Forum and Wiki]<br />
<br />
==TI resources==<br />
* [http://opensource.ti.com/ TI open source page]<br />
* [https://community.ti.com/ TI E2E (Engineer-to-Engineer) Community]<br />
* [http://marc.info/?l=linux-omap&m=120761100810527&w=2 DSP Bridge driver for OMAP3 platform]<br />
* [http://lists.arm.linux.org.uk/lurker/message/20080701.142512.5eeff26b.en.html ARMv7 Oprofile support]<br />
* [http://focus.ti.com/pdfs/wtbu/swpu114g.pdf OMAP34xx Wireless Technical Reference Manual] (swpu114g.pdf, 47 MB)<br />
* [http://amethyst.openembedded.net/~koen/index.php?sort=date&order=desc&path=beagleboard/ Koen's (OpenEmbeded) BeagleBoard source and binaries]<br />
* [http://del.icio.us/tag/beagleboard+peripheral+verified Verified peripherals for BeagleBoard]<br />
* [http://www.celinux.org/elc08_presentations/TI_OMAP3430_Linux_PM_reference.ppt OMAP3430 Linux Power Management presentation]<br />
==Articles==<br />
* [http://linuxdevices.com/news/NS5852740920.html LinuxDevices article about Beagle]<br />
* [http://www.linuxdevices.com/news/NS8479495970.html LinuxDevices article about Digi-Key launch]<br />
* [http://www.linuxdevices.com/news/NS5682470737.html LinuxDevices article about Beagle Rev C, Beagle MID from HY Research, Touch Book and Sponsored Projects Contest]<br />
<br />
==Books==<br />
* [[OMAP_and_DaVinci_Software_for_Dummies|OMAP and DaVinci Software for Dummies]]<br />
==Past Beagle events==<br />
* TIDC, February 26-28, 2008: [http://www.beagleboard.org/uploads/tidc_opensource.pdf Slides from TI developer conference (TIDC) open source session], covering also beagle board<br />
* [http://www.lugradio.org/live/USA2008/ LUG RADIO Live USA 2008, April 12-13, 2008]: [http://www.beagleboard.org/uploads/lugradio_20080411.PPT TI/Beagle Presentation] and [http://forums.lugradio.org/viewtopic.php?f=4&t=4094&st=0&sk=t&sd=a&sid=d69cc807569ab41e33f93af698c536b8&start=15#p41549 video]<br />
* LinuxTag, May 28-31, 2008: [http://www.flickr.com/photos/jadon/2551439955/in/pool-beagleboard picture 1] and [http://www.flickr.com/photos/jadon/2535692865/in/pool-beagleboard picture 2]<br />
* [http://lugradio.org/live/UK2008/travel LugRadio Live UK 2008], July 19 - July 20, 2008: [http://www.flickr.com/photos/koenkooi/tags/lugradiolive/ Koen's pictures] showing e.g. [http://www.bigbuckbunny.org/index.php/download/ Big Buck BUNNY] playing at Beagle. [http://linuxoutlaws.com/podcast/48 Interview with Linux Outlaws (52:06)] and the [http://www.youtube.com/watch?v=m9xVbntl-DY video]<br />
* [http://osscamp.in/index.php/OSScamp_Bengaluru_Mobile_2008 OSScamp Bengaluru Mobile 2008], July 19, 2008<br />
* [http://www.linuxworldexpo.com LinuxWorld Conference & Expo], August 4 - August 7, 2008: [http://www.flickr.com/photos/jadon/sets/72157606586084668/ pictures with living beagle] and from [http://www.flickr.com/photos/linuxjournal/2738316951/in/set-72157606634486338/ Linux Journal's photostream]<br />
* BeagleBoard.org event at Jillian's during LinuxWorldExpo, August 5, 2008, 5:30-7:30 pm<br />
* [http://barcamp.pbwiki.com/BarCampHouston3 BarCamp Houston 3], August 9, 2008, 9:00 A.M.: [http://www.flickr.com/photos/jadon/sets/72157606656532041/ pictures]<br />
* NIT Suratkal, India [http://www.nitkieee.com/site/sp-connect2/schedule IEEE SP Connect 2], August 30, 20008<br />
* [http://barcampbangalore.org/wiki/BCB7_Demos BarCamp Bangalore], India, September 13, 2008<br />
* [http://www.ibc.org/ IBC 2008], September 11 - September 16, 2008: [http://www.flickr.com/photos/koenkooi/tags/ibc2008/ pictures]<br />
* Free Open "Embedded Linux" Training for Students in India, [http://code.google.com/p/beagleboard/wiki/Trainings?updated=Trainings&ts=1220250913 beagleboard.org Trainings in India], September 20, 2008: [http://www.youtube.com/watch?v=A6FLdmgQlb4&feature=PlayList&p=1BAB6EE9CC7285AD&index=0 video], [http://www.flickr.com/photos/25691331@N04/sets/72157607419766102/ photos] and [http://lakshmansrikanth.blogspot.com/2008/09/linux-embedded.html blog]<br />
* [http://www.embedded.co.uk/ Embedded Systems Show 2008], Birmingham, UK, October 1-2, 2008<br />
* [http://www.mvista.com/vision/ MontaVista Vision 2008 Embedded Linux Developers Conference], San Francisco, California, October 1-3, 2008 : [http://www.mvista.com/download/topic.php?t=18 Video and presentation overview], [http://www.mvista.com/download/fetchdoc.php?docid=323 William Mills' presentation], [http://www.mvista.com/download/fetchdoc.php?docid=333 Jason Kridner's presentation]<br />
* [http://www.rtcgroup.com/arm/2008/ ARM Developers' Conference], Santa Clara Convention Center, Santa Clara, Calif., USA, October 7-9, 2008<br />
* [http://www.cmp-egevents.com/web/escb Embedded Systems Conference Boston 2008], Hynes Convention Center, Boston, USA, October 26 - October 30, 2008: [http://beagleboard.org/demo/esc Resources]<br />
* [[BeagleBoard/contest|BeagleBoard contest]] #1: Create a cool BeagleBoard application and win a Rev C1! Closed, ran until January 9, 2009<br />
* [http://www.silica.com/events/seminars/seminar-overview/ti-omp-workshop.html OMAP35x training by Silica], January 21, 2009, Cambridge, UK, ARM Holdings Lecture Theatre. [[RichardB's notes from the seminar]]<br />
* [[BeagleBoard/contest|BeagleBoard contest #2]], unitl February 27, 2009: : Create a cool BeagleBoard application and win a Rev C2!<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/b15cf8a5797c73a2 Silica - Free TI - ARM OMAP Workshop], Brussels, Europe, March 31st 2009<br />
* SILICA's [http://www.silica.com/events/seminars/seminar-overview/ti-omap-piccolo-poing.html Texas Instruments 2-in-1 Seminar: OMAP & Piccolo], May 13th 2009: Poing (Munich) - Germany<br />
* 24th until 27th June 2009: [http://www.linuxtag.org/2009/en.html Linux Tag Germany] with [http://groups.google.com/group/beagleboard/msg/27fefef5f1d2ef73 TI booth] and [http://www.linuxtag.org/2009/en/program/freies-vortragsprogramm/all-events/details.html?talkid=183 Beagle presentation]<br />
* until 31st July 2009: [http://www.cranessoftware.com/services/training/beagledesigncontest.html BeagleBoard Design Contest INDIA Edition] ([http://beagleboard.blogspot.com/2009/04/beagleboard-design-contest-india.html blog entry])<br />
* TI Technology Day Dallas, Tex. on June 16 will held a [http://www.linuxdevices.com/news/NS5682470737.html BeagleBoard users group meeting] (see section ''Availability'').<br />
<br />
==Beagle wiki pages==<br />
* [[BeagleBoardBeginners|BeagleBoard beginners guides]]<br />
* [[BeagleBoardAndOpenEmbeddedGit|BeagleBoard and OpenEmbedded Git]] installation guide and [[BeagleBoardOpenEmbeddedDevelopment|OpenEmbedded development]]<br />
* [[BeagleBoardDebian|Debian on BeagleBoard]] usage guide<br />
* [[BeagleBoardHandheldsMojo|Handhelds Mojo (ARM) on BeagleBoard]] usage guide (formerly known as Ubuntu (ARM))<br />
* [[BeagleBoardUbuntu|Ubuntu (ARM EABI) distribution at BeagleBoard]]<br />
* [[BeagleBoardRecovery|BeagleBoard recovery]] about fixing boards not booting any more because of broken NAND content<br />
* [[BeagleBoardJTAG|BeagleBoard JTAG]] and [[OMAP3530_ICEPICK|OMAP3530_ICEPICK]] about JTAG on BeagleBoard<br />
* [[BeagleBoardOpenOCD|BeagleBoard OpenOCD]] has infos about status and usage of open source JTAG software OpenOCD with Beagle<br />
* [[BeagleBoardNAND|BeagleBoard NAND boot]] about how to boot BeagleBoard from NAND flash<br />
* [[BeagleBoardPeripherals|BeagleBoard peripherals and adapters page]] about useful BeagleBoard add ons.<br />
* [[Mount_BeagleBoard_Root_Filesystem_over_NFS_via_USB|Mount BeagleBoard root file system over NFS via USB]]<br />
* [[BeagleBoardFAQ|BeagleBoard FAQ]]<br />
* [[BeagleBoardSugar|Sugar on BeagleBoard]]<br />
* [[BeagleBoard/DSP_Howto|BeagleBoard DSP howto]]<br />
* [[BeagleBoardRawLCD|Interfacing BeagleBoard to Raw LCD]]<br />
* [[BeagleBoard/gst-openmax|BeagleBoard OpenMAX usage]]<br />
* [[BeagleBoard/video|BeagleBoard video]]<br />
* [[BeagleBoardOpenCV|Using OpenCV computer vision library with BeagleBoard]]<br />
* [[BeagleBoard/James|James]]: Just A Miniature Entertainment System<br />
* [[U-boot_musb_gadget_support|U-boot musb gadget support]]<br />
* [[BeagleBoard-JP|Japanese translation of this Beagle page]]<br />
* [[BeagleEPD|BeagleBoard E-Ink Platform Driver]]<br />
* [[BeagleBoardFedora|Random hacking notes for getting Fedora 10 to kinda work with the BeagleBoard]]<br />
* BeagleBoard specific [[BeagleBoard/GSoC|Google Summer of Code 2009]] page, [[BeagleBoard/Ideas-2009|GSoC project ideas]] and [[BeagleBoard/GSoC/Application|GSoc application]]<br />
* [[BeagleBoard/Poky|Poky]] for BeagleBoard<br />
* [[Xenarc_USB_touchscreen_for_Beagleboard/OMAP3_EVM|Xenarc USB touchscreen for Beagleboard/OMAP3 EVM]]<br />
* [[BeagleBoard/BugAdapter|BeagleBoard Bug Adapter board]]<br />
* [[BeagleBoardDebianWifiInstallInfo|BeagleBoard Debian WiFi install info]]<br />
* [[BeagleBoard/DSP_Clarification|Info about the various Linux DSP systems for OMAP chips]]<br />
* [[BeagleBoardPinMux|BeagleBoard PinMux]]<br />
* [[BeagleBoardLinuxKernel|BeagleBoard Linux kernel manual compile]]<br />
* [http://www.hervanta.com/stuff/Beaglebot Beaglebot]: build an experimental robotics project with Beagle<br />
* [http://code.google.com/p/beagleboard/w/list code.google.com BeagleBoard wiki]<br />
* '''[[BeagleBoard/contest|BeagleBoard contest]]'''<br />
* [http://en.wikipedia.org/wiki/Beagle_Board Wikipedia BeagleBoard page]<br />
* [http://labs.embinux.org/index.php/Android_Porting_Guide_to_Beagle_Board Android port for BeagleBoard]: Instructions for porting Android on BeagleBoard<br />
* [[BeagleBoard/bangalore_user_meet |BeagleBoard Bangalore User Meet]]<br />
* [[BeagleBoardEclipse|Using Eclipse with Beagle]] (for JTAG debugging)<br />
* [[Zoom2Beginners|Zoom2 for Beginners]]<br />
* [http://wh1t3s.com/2009/05/11/beagleboard-as-usb-mass-storage-device-via-usb-otg/ BeagleBoard as USB Mass Storage Device via USB OTG]<br />
* [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/index.htm BeagleBoard as solar powered computer]<br />
* [http://blog.makezine.com/archive/2009/02/blinking_leds_with_the_beagle_board.html Blinking LEDs with the Beagle Board] from Make:Online<br />
* [http://www.crashcourse.ca/wiki/index.php/BeagleBoard Robert's private Beagle wiki] (please don't add anything there, do it here. It will help to avoid scattering. Thanks!)<br />
* [http://felipec.wordpress.com/2009/03/26/omap3-public-dsp-binaries-now-work/ Felipe's blog] about D1 MPEG-4 decoding using less than 15% of CPU with help of DSP<br />
* [http://www.syspire.de/node/3 Embedded Mediacenter] based on BeagleBoard (German)<br />
* [http://pandorawiki.org/Floating_Point_Optimization Floating Point Optimization] with VFP-lite and NEON intro<br />
* [http://particolarmente-urgentissimo.blogspot.com/2009/09/beagleboard-setting-date-via-gps.html Beagleboard setting date via GPS]<br />
<br />
==Beagle photos==<br />
* [http://www.flickr.com/groups/beagleboard/pool/ Beagle board pictures at flickr]<br />
* [http://www.flickr.com/photos/32615155@N00/2439256116/ Beagle board and USRP]<br />
* [http://www.flickr.com/photos/nishanthmenon/2438406603/ Modify SDP3430 QUART cable for beagle]<br />
* [http://www.flickr.com/photos/koenkooi/2695061759/ MythTV on Beagle]<br />
==Beagle videos==<br />
* [http://uk.youtube.com/watch?v=fL_XMieanSc Beagle Board Beginnings]<br />
* [http://www.youtube.com/watch?v=cXr-D1wROfQ Beagleboard in the Living Room]<br />
* [http://uk.youtube.com/watch?v=FuVwh_VrIxk Beagle Board 3D, Angstrom, and Ubuntu]<br />
* [http://uk.youtube.com/watch?v=TUYOjRGYeYU testsprite with beagleboard]<br />
* [http://uk.youtube.com/watch?v=9Z4ZTovtFKk Beagleboard LED demo]<br />
* [http://uk.youtube.com/watch?v=R33dzREZGEk LCD2USB attached to a beagleboard]<br />
* [http://www.youtube.com/watch?v=7D3V6BUpGLE Video blending in hardware]<br />
* [http://www.youtube.com/watch?v=-tUBXD-KRp4 Beagle Running Angstrom (VGA) on DLP Pico Projector]<br />
* [http://www.youtube.com/watch?v=3ToYOgP9f9U SGX on Beagle working with Linux 2.6.27]<br />
* Not on Beagle OMAP3530: [http://youtube.com/watch?v=5i9cWOK1spw Ubuntu 7.04 on on OMAP3430 SDP]<br />
* [http://in.youtube.com/watch?v=nADn_vNVEKw Beagle Board booting Android]<br />
<br />
==Beagle manufacturing==<br />
* [http://www.youtube.com/watch?v=C-CwkjT9z_0&feature=related Beagle Solder Paste Screening]<br />
* [http://www.youtube.com/watch?v=9LLjDovIG2M&feature=related Beagle Assembly Inspection]<br />
* [http://www.youtube.com/watch?v=sbOZfBnoVnM&feature=related Beagle Functional Test]<br />
* [http://www.youtube.com/watch?v=cvDtXmJJcEI&feature=related Beagle Reflow]<br />
* [http://www.youtube.com/watch?v=W2o4NTASxN0&feature=related Beagle Board Assembly at Circuitco]<br />
==Fun==<br />
* Enjoy [http://www.beaglegame.com/ BeagleGame]<br />
<br />
=Other OMAP boards=<br />
<br />
* OMAP1 OMAP5912 (ARM9 + C5x DSP) based [[OSK|OSK]] board.<br />
* OMAP3 OMAP3430 based [https://gforge.ti.com/gf/project/omapzoom/wiki/?pagename=HardwareInformation Zoom MDK], which has been superseded by the [http://www.logicpd.com/products/development-kits/texas-instruments-zoom%E2%84%A2-omap34x-ii-mdp Zoom II], and other [http://www.logicpd.com/products LogicPD kits].<br />
* OMAP3 OMAP3530 based [http://www.openpandora.org/ Pandora]<br />
* OMAP3 OMAP3503 based [http://www.gumstix.net/Overo/cat/Overo/115.html Gumstix Overo]<br />
* OMAP3 OMAP35x based EVM from [http://mistralsolutions.com/products/omap_3evm.php Mistral] and [http://focus.ti.com/docs/toolsw/folders/print/tmdxevm3503.html TI] (both are the same)<br />
* OMAP3 OMAP3430 based [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12013&contentId=28741 Software Development Platform (SDP)]<br />
* OMAP3 OMAP3530 based board from [http://www.magniel.com/omap3.html Magniel Inc.]<br />
* OMAP3 based [http://www.archos.com/products/imt/index.html?country=us&lang=en Archos 5, ARCHOS 5G and ARCHOS 7]<br />
* OMAP3 OMAP35x based [http://www.logicpd.com/products/som/ti/omap35x OMAP35x SOM-LV]<br />
* OMAP3 based [[Mini_Board|ICETEK-OMAP3530-Mini]], a Chinese BeagleBoard clone, with a [[MiniBoardFAQ|FAQ]]<br />
* OMAP3 based [http://www.ebv.com/en/products/categories/details/product/ebvbeagle-board EBVBeagle], a German BeagleBoard clone<br />
* OMAP3530 based [http://www.bsquare.com/products/hardware_solutions/3530.asp BSQUARE’s Dev Kit OMAP3530]<br />
* OMAP3530 based [http://beaversource.oregonstate.edu/projects/cspfl/wiki/CSPFL_Hardware OSWALD]<br />
* OMAP3 BeagleBoard-based [http://www.alwaysinnovating.com/touchbook/ Touch Book]<br />
* OMAP3530 based [http://www.analogue-micro.com/Cobra3530.html Cobra 3530 OMAP3530 module ]<br />
* OMAP3 based [http://www.kwikbyte.com/KBOC.html KwikByte 35XX System Module]<br />
* OMAP3530 based [[DevKit8000]], a Chinese BeagleBoard clone, slightly larger with additional peripherals (e.g. LCD/TSP, Ethernet and keyboard)<br />
* OMAP3530 based [http://www.igep-platform.com/ IGEPv2 Platform], a Spanish BeagleBoard clone, slightly larger, with additional peripherals like e.g. ethernet connector, wifi+bluetooth.<br />
* OMAP35x based [http://www.ultratronik.de/mmi-rechnerplattformen.html MMI4 from Ultratronik]<br />
* OMAP35x based [http://www.technexion.com/index.php/tao-3530 TAO-3530 from TechNexion]</div>Rpjdayhttps://elinux.org/index.php?title=BeagleBoard_Community&diff=14328BeagleBoard Community2009-10-21T08:13:56Z<p>Rpjday: Mention RobotCraft at top of page.</p>
<hr />
<div>[[Category: Linux]]<br />
[[Category: OMAP]]<br />
[[Category:Development Boards]]<br />
[[Category: BeagleBoard]]<br />
This page collects information about [http://www.ti.com/ TI's] [http://www.arm.com/ ARM] based [http://focus.ti.com/general/docs/gencontent.tsp?contentId=36915&amp;DCMP=OMAP_Feb27_2008&amp;HQS=Other+PR+omap3503pr OMAP3] [http://beagleboard.org Beagle Board].<br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:#ffffcc; align:right; "><br />
'''NEWS:''' [http://www.tincantools.com/product.php?productid=16147&cat=0&page=1&featured Zippy] Expansion boards for the [[BeagleBoard]] are now available! In Canada, check out [http://robotcraft.ca RobotCraft] in London, Ontario.<br />
</div><br />
<br />
<br />
=Events=<br />
* Each last Saturday of the month, next August 29, 2009: [[BeagleBoard/bangalore user meet|BeagleBoard Bangalore user meeting]] (Beagle Clinic India)<br />
* all over the world 2009: [http://www.ti.com/corp/docs/landing/techday09/index.shtml# TI Technology Days 2009]. <br />
* ongoing 2009: [[BeagleBoard/contest|Beagle Sponsored Project Program]] - add a cool project and get a free BeagleBoard to realize it!<br />
<br />
=Hardware=<br />
<br />
The Beagle Board is ''a low-cost, fan-less single-board computer based on TI's OMAP3 device family, with all of the expandability of today's desktop machines, but without the bulk, expense, or noise'' (from [http://beagleboard.org/ beagleboard.org]). It uses a TI [http://focus.ti.com/docs/prod/folders/print/omap3530.html OMAP3530] processor (ARM Cortex-A8 superscalar core ~600MHz paired with a TMS320C64x+ DSP ~430MHz and an Imagination SGX 2D/3D graphics processor). See [http://focus.ti.com/docs/prod/folders/print/omap3530.html#features OMAP3530 features] for more processor features. [[BeagleBoard#Availability|Price is USD 149]]. The design goal was to make it as simple and cheap as possible, e.g. not having a LCD added, but letting you connect all add-ons available as cheap external components. See [http://beagleboard.org/brief What is Beagle?] and [http://linuxdevices.com/news/NS5852740920.html LinuxDevices article] for more details.<br />
<br />
The videos [http://uk.youtube.com/watch?v=fL_XMieanSc Beagle Board Beginnings] and [http://uk.youtube.com/watch?v=FuVwh_VrIxk Beagle Board 3D, Angstrom, and Ubuntu] give you a good intro about what BeagleBoard is about and it's capabilities.<br />
<br />
==Components==<br />
<br />
{|border=0<br />
!Top view of rev B:<br />
!Top view of rev C:<br />
|-<br />
|[[Image:Bb revb top numbered.jpg]]<br />
|[[Image:Bb revc top numbered.jpg]]<br />
|-<br />
|}<br />
{|border=1<br />
!No.<br />
!Name<br />
!Comment<br />
|-<br />
|'''1'''<br />
|[http://www.ti.com/omap35x OMAP3530] processor + 256MB NAND<br />
<br />
+ 128MB DDR (rev B)<br />
<br />
+ 256MB DDR (rev C)<br />
|PoP: Package-On-Package implementation for Memory Stacking<br />
[http://www.micron.com/products/partdetail?part=MT29C2G24MAKLAJG-6%20IT 256MB NAND/128MB Mobile DDR SDRAM] available from [http://www.digikey.com/scripts/US/DKSUS.dll?Detail?name=557-1435-ND DigiKey]<br />
<br />
([http://www.micron.com/products/partdetail?part=MT29C4G48MAPLCJI-6%20IT 512MB NAND/256MB Mobile DDR SDRAM] available from [http://www.digikey.com/scripts/US/DKSUS.dll?Detail?name=557-1436-ND DigiKey])<br />
<br />
[http://www.micron.com/products/mcps/beagleboard Micron's multi chip packages (MCPs) for Beagle Board]<br />
|-<br />
|'''2'''<br />
|[http://focus.ti.com/docs/prod/folders/print/tfp410.html DVI chip (TFP410)]<br />
|<br />
|-<br />
|'''3'''<br />
|[[BeagleBoard#DVI|DVI-D]]<br />
|Connection via HDMI connector<br />
|-<br />
|'''4'''<br />
|[[BeagleBoard#JTAG|14-pin JTAG]]<br />
|1.8V only!<br />
|-<br />
|'''5'''<br />
|Expansion connector: I2C, I2S, SPI, MMC/SD<br />
|User must solder desired header into place<br />
|-<br />
|'''6'''<br />
|[[BeagleBoard#User_button|User button]] <br />
|Allows setting boot order.<br />
|-<br />
|'''7'''<br />
| Reset button<br />
|<br />
|-<br />
| '''8'''<br />
|[[BeagleBoard#EHCI|USB 2.0 EHCI HS]]<br />
|Rev A and B: not working, unpopulated<br />
<br />
Rev C: populated and working<br />
|-<br />
|'''9'''<br />
|SD/MMC+<br />
| SDHC cards are supported<br />
|-<br />
|'''10'''<br />
|[[BeagleBoard#RS232|RS-232 serial]]<br />
|<br />
|-<br />
|'''11'''<br />
|Alternate power <br />
|normally powered by USB (unmounted on REV Ax boards, see [[BeagleBoard#Errata|errata]])<br />
|-<br />
|'''12'''<br />
|[[BeagleBoard#OTG|USB 2.0 HS OTG]] <br />
|Mini-AB connector. Board can be powered from port. <br />
|-<br />
|'''13'''<br />
|Stereo In<br />
|<br />
|-<br />
|'''14'''<br />
|Stereo Out<br />
|<br />
|-<br />
|'''15'''<br />
|S-Video<br />
|<br />
|-<br />
|'''16'''<br />
|TWL4030 (Rev A thru C2 inc.)<br />
[http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] (Rev C3 onwards)<br />
|Audio CODEC, USB port, power-on reset and power management. The TWL4030 is pin-compatible with the [http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] chip and was used due to the very limited availability of the TPS65950 in early board revisions.<br />
|-<br />
|'''17'''<br />
|LCD<br />
|only rev C<br />
|-<br />
|'''18'''<br />
|USB power<br />
|<br />
|-<br />
|'''19'''<br />
|Host PHY<br />
|<br />
|-<br />
|'''20'''<br />
|32kHz<br />
|<br />
|-<br />
|'''21'''<br />
|12MHz<br />
|<br />
|-<br />
|'''22'''<br />
|RS232 XVCR<br />
|<br />
|-<br />
|'''23'''<br />
|PWR SW<br />
|<br />
|-<br />
|'''24'''<br />
|VBAT<br />
|<br />
|-<br />
|}<br />
<br />
* Board size: 3" x 3" (about 76.2 x 76.2 mm)<br />
* Weight: [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/beagleboard.png ~37g]<br />
* Currently 6 layer PCB; target: 4 layer<br />
<br />
'''Bottom of rev B:'''<br />
<br />
[[Image:Beagle_bottom.jpg]]<br />
<br />
See [http://www.flickr.com/photos/jadon/sets/72157606050144396/ jadonk's photostream] for some more detailed BeagleBoard pictures.<br />
<br />
==Manual==<br />
<br />
See [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard System Reference Manual (rev. C3.0)].<br />
<br />
==Schematic==<br />
<br />
Schematic of BeagleBoard Rev. C3 is available as part of [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard System Reference Manual (rev. C3.0)]. Rev C3 and previous are also available from [http://beagleboard.org/hardware/design BeagleBoard.org design page] including in PDF format. Please make sure that you ''read, understand and agree'' [http://groups.google.com/group/beagleboard/msg/ee3e1bc927551ffc Jason's mail] before using this.<br />
<br />
==Layout== <br />
<br />
Layout of BeagleBoard Rev. C3 is available as part of [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard System Reference Manual (rev. C3.0)]. Rev C3 and previous layouts are also available from the [http://beagleboard.org/hardware/design BeagleBoard.org design page]. Please make sure that you ''read, understand and agree'' [http://groups.google.com/group/beagleboard/msg/ee3e1bc927551ffc Jason's mail] before using this.<br />
<br />
==Errata==<br />
<br />
# ''Boards revision A only'': The DC power jack pinout is incorrect on the PCB layout. DC_5V and GND are switched on PCB layout. Normally, the power jack has DC_5V on the center pin and GND on the sleeve (see Figure 20 of [http://www.beagleboard.org/uploads/BBSRM_6.pdf Beagle HW manual]). But on revision Ax boards the PCB layout has GND on center and DC_5V on sleeve. For this reason it is currently removed. It will be back on the Rev B board. Workaround is to remove wire connecting the two power pins on revision Ax boards and use external [http://amethyst.openembedded.net/~koen/beagleboard/beagle-power-pads.jpg power supply with switched connector] (do not connect anything to the “?” terminal. USB power will be permanently disabled and the board can only be powered from the 5V.) See [http://www.flickr.com/photos/koenkooi/2512038988/ Koen's Beagleboard powermod picture] with short descriptions, too.<br />
# ''Boards revision < A5 only'': There is excess voltage drop across R6 which is used to measure the current consumption on the board. This needs to be a .1 ohm instead of a 1 ohm resistor (SMD 0805). All revision A5 boards have been updated to .1. You can also just solder in a jumper to J2 bypassing the current read point. This issue can cause issues with the USB host port as the voltage supplied to that port can be too low.<br />
# ''Boards revision A only'': User LEDs 0 and 1 are shorted on the layout preventing them from being controlled individually. You need to control both GPIO_149 and GPIO_150 to turn on or off both LEDs. This is fixed in the Rev B boards.<br />
# ''Boards revision < A5 only'': There is an issue where on some boards the 1.8V has excessive noise on it. This is the result of two incorrect parts L1 and L3 being installed on the board. The inductors that were initially installed in the switchers are 100uH and need to be 1uH. This change will require that the board be returned for update. To check for correct parts, have a look to bottom of BeagleBoard. L1 - L3 are the larger parts there. They all have to be labeled with "102" (== 1uH). If any of these three inductors are labeled with "104" (== 100uH) they are wrong and have to be exchanged.<br />
# ''Boards revision A and B'': USB HOST (EHCI) failures. See [http://code.google.com/p/beagleboard/issues/detail?id=15 issue 15] and [http://code.google.com/p/beagleboard/wiki/USBHostTestREPRODUCE USB host test reproduce]. This is a hardware defect. [http://www.beagleboard.org/irclogs/index.php?date=2008-05-29#T00:27:06 Most probably] Rev. B board does not have the EHCI USB connector mounted. Workaround: Use [[BeagleBoard#OTG|OTG port]] with something like [http://trisoft.de/pics/ZHost.JPG mini A to USB A adapter] instead.<br />
# ''Boards revision A and < B4'': Plugging in a USB OTG cable will prevent Beagle from booting (with git kernel), see [http://code.google.com/p/beagleboard/issues/detail?id=19 issue #19], too. This is due to missing filtering capacitor at USB OTG VBUS. When the kernel driver detects that a USB OTG cable is inserted it enables the charge pump to generate VBUS. With no filtering VBUS looks like any switching regulator output with no filtering -- a huge voltage spike when the switch is on, followed by a rapid decay to a low voltage until the next switch on period. The capacitor is there to store energy between the output switch ON and OFF time, the feedback loop in the regulator does sample the cap voltage. Fix is to piggy-back solder a 0603 2.2uF ceramic capacitor to D3, see [http://www.sakoman.net/omap3/beagle/vbus-mod-d3.jpg VBUS modification D3 picture]. Revision B4 boards and newer have this fix applied. Thanks to [http://groups.google.com/group/beagleboard/msg/eb789e15c99a673d Steve] for debugging this!<br />
# ''Boards revision A and < B5'': There is some issue with 32kHz clock depending on system configuration used to clock some OMAP3 peripherals. From this e.g. GPIOs, GPTIMERs, and USB on Beagle might be affected. See [http://code.google.com/p/beagleboard/issues/detail?id=22 Issue 22]. Symptom from this is that after booting Linux kernel serial console hangs after some time and no serial input/output is possible any more. There is one software workaround and one hardware fix for this: (A) Software workaround: Don't use 32kHz timer to clock Linux, instead use MPU timer. (B) Hardware workaround: Remove [http://www.flickr.com/photos/25691331@N04/2766671437/in/pool-beagleboard capacitor C70], which improves the 32kHz clock quality and avoids hang-up. Note: Revision A boards have capacitor C70 [http://www.flickr.com/photos/25691331@N04/2766671437/in/pool-beagleboard at the same location] as rev. B boards. Note: Board revision >= B5 removes capacitor C70.<br />
# ''Random boards, quite rare, revision < B6'': Some random boards and quite rare, show directly after purchasing broken serial communication from host PC to BeagleBoard. Symptom is that you get a new board, get serial output from BeagleBoard in terminal program, but can't type anything at U-Boot prompt (Note: Don't mix this with errata #7. With errata #7 you are able to use U-Boot normally, but Linux prompt input stops after some time). Most users don't have this issue, though. So, first double check your serial configuration ([[BeagleBoardFAQ#Serial_connection_.231|FAQ1]], [[BeagleBoardFAQ#Serial_connection_.232|FAQ2]] and [[BeagleBoardFAQ#Serial_connection_.233|FAQ3]]). Only if you are really, really sure that anything with your serial connection is fine, consider sending the board back doing a [http://beagleboard.org/support/rma RMA request]. This issue was resolved on revision B6 and later boards.<br />
<br />
For additional (software) issues and enhancement requests see [http://code.google.com/p/beagleboard/issues/list Beagle board open point list & issue tracker], too.<br />
<br />
Note: BeagleBoard revision B6 uses different package for U9/U11.<br />
<br />
==Clocking==<br />
<br />
Some [http://www.beagleboard.org/irclogs/index.php?date=2008-07-08#T21:12:23 notes] about (ARM processor) clock rates at BeagleBoard:<br />
<br />
* ARM Cortex-A8 processor is currently clocked at 500MHz<br />
* 500MHz is the default used because it is a balance of performance and longevity<br />
* For OMAP35x 600MHz is max recommended<br />
* At 600MHz OMAP35x is considered to be 'overdrive' and it does not have the same life expectancy<br />
* Higher than 600MHz is out of spec and no guarantee it will work at all (or not damage itself)<br />
* Also keep in mind that if you go higher you probably want to increase the core voltage. Some of this is mentioned in table 3-3 of the [http://focus.ti.com/lit/ds/symlink/omap3530.pdf OMAP3530 data sheet]. Some numbers:<br />
<br />
{| border="1"<br />
||'''ARM'''||'''DSP'''||'''core voltage'''<br />
|-<br />
|600 MHz||430 MHz||1.35V<br />
|-<br />
|550 MHz||400 MHz||1.27V<br />
|-<br />
|500 MHz||360 MHz||1.2V<br />
|}<br />
<br />
* For some OMAP3 clock, voltage and power management discussion see [http://focus.ti.com/lit/an/sprt495/sprt495.pdf OMAP3 power management white paper], too.<br />
* The OMAP3 chip on the Beagle lacks the efuses needed for using the SmartReflex technology, see [http://www.beagleboard.org/irclogs/index.php?date=2009-02-26#T10:44:24].<br />
* There is a thermal monitor in the core, you could use to scale frequency up and down<br />
<br />
To set CPU clock to 600 MHz, there are two options. Both '''do not''' adjust the voltage, so the system may become unstable:<br />
<br />
* The u-boot command "mw 48004940 0012580c" will temporarily set the CPU clock to 600 MHz (not permanent over reset).<br />
* To permanently set the CPU clock to 600 MHz, include the above command in the "bootcmd" variable or equivalent script.<br />
<br />
==Power management==<br />
<br />
* Latest Linux kernel power management development for TI OMAP SoCs is maintained in [http://git.kernel.org/?p=linux/kernel/git/khilman/linux-omap-pm.git;a=summary Kevin's linux-omap-pm git tree]<br />
* Russ' Beagle HW modifications resulted in [http://groups.google.com/group/beagleboard/browse_thread/thread/197a8ef6b46cc828 8mW sleep for Beagle Board]<br />
<br />
Without PM kernel, the Beagle [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/index.htm consumes ~1.5 watts idle, however it also uses the same amount under load] (see bottom of that page).<br />
<br />
==DLP Pico projector==<br />
<br />
Texas Instruments is developing a Pico Video Projector Kit (PVPK) as a peripheral for the Beagle Board. The stand alone pico projector will support VGA resolution (640 x 480), RGB 888 input through a DVI interface. The physical connector on the projector will be HDMI. See [http://groups.google.com/group/beagleboard/msg/10e218972380ee48 mailing list] and [http://www.youtube.com/watch?v=-tUBXD-KRp4 Beagle Running Angstrom (VGA) on DLP Pico Projector] for more details.<br />
<br />
It is available from [http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=296-23836-ND DigiKey] for $349.<br />
<br />
See [http://blog.makezine.com/archive/2009/01/tis_beagleboard_and_dlp_pico_projector.html?CMP=OTC-0D6B48984890 article from Make], too.<br />
<br />
DigiKey videos [http://www.youtube.com/watch?v=KBbCdnOj5vg part 1], [http://www.youtube.com/watch?v=zymOmduNWyI part 2] and [http://www.youtube.com/watch?v=Uj19Bi5NYeU part 3].<br />
<br />
==Interfacing to Raw LCD Panels==<br />
<br />
Currently on Rev A / B boards there is no direct access to the LCD lines before they enter the DVI framer. The REV C2 provides access to these lines. Several projects to interface an LCD to the beagleboard exist:<br />
<br />
* [[BeagleBoardRawLCD|interfacing to Raw LCD Panels]] article <br />
* [http://digitalsurveyinstruments.com/beagleperiphials/hdmi2parallel/doc/index.htm hdmi to parallel] workaround method<br />
* [http://www.harbaum.org/till/dvi2par/index.shtml dvi2par cheap diy HDMI to parallel converter]<br />
<br />
=Availability=<br />
<br />
BeagleBoards, currently Rev. C3 boards, are available from<br />
<br />
* [http://www.mouser.com/beagleboard Mouser]<br />
* [http://dkc1.digikey.com/us/mkt/beagleboard.html Digi-Key] with part number [http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=296-23428-ND 296-23428-ND].<br />
<br />
Note: For non-US Digi-Key free shipping orders:<br />
<br />
* Click the US flag on the top right corner of [http://dkc1.digikey.com/us/mkt/beagleboard.html Digi-Key] BeagleBoard page to come to the international page<br />
* Select ''Order Online'' for your country<br />
* Add quantity ''1'' and part number ''296-23428-ND''<br />
* Click ''Add to order''<br />
<br />
When ordering over 65 EUR / GBP 50 product (BeagleBoard is above), for Europe the price depends on the actual dollar to EUR/GBP rate. On nov 9, 2008 the price was EUR 124 with free shipping.<br />
<br />
Note: Some users report that they got some questions from DigiKey to be answered before board shipping is done.<br />
<br />
Note: While you get free shipping, most probably you have to pay tax e.g. ordering from Europe. Users report that they had to pay EUR ~34 - 44 VAT + importing taxes (depending on european country), resulting in EUR 137 - 147 ordering from Europe.<br />
<br />
Note: For European users, [http://www.ebv.com/fileadmin/products/Press_Print/Campaigns/2009/Product_Campaigns/Texas_Beagle_Board_englisch.pdf EBV Elektronik] sells its own blue version of the board for 179 EUR, which includes all useful accessories (DVI cable, serial cable, USB 2.0 Ethernet, USB hub, 2 GB MMC, power supply, Linux BSP).<br />
<br />
Note: German (Europe) users can order through German shops, too. For higher price, though. <br />
* [http://shop.embedded-projects.net/product_info.php/info/p159_BeagleBoard--OMAP-3-.html Embedded Projects Shop] sells BeagleBoard for EUR 199.00 + shipping.<br />
* [http://www.handheld-linux.com/wiki.php?page=Beagle%20Board Handheld-Linux]<br />
<br />
See below for ''hardware'' differences of the revisions. There are no ''software'' differences. <br />
<br />
==Revision A==<br />
<br />
There are some limited early revision Ax prototypes out there used by some hackers hanging around at #beagle channel on irc.freenode.net. See [[BeagleBoard#Errata|errata]] for limitations.<br />
<br />
==Revision B==<br />
<br />
Revision B is same as revision A, except<br />
* fix for shorted LEDs 0/1<br />
* fix for wrong power jack pinout<br />
* revision B6 uses different package for U9/U11<br />
Still has USB HOST (EHCI) failures. USB HOST (EHCI) connector isn't mounted.<br />
<br />
There are 4 revisions of the B board in the field: B4, B5, B6 and B7.<br />
<br />
The most notable difference is the use of the ES3.0 silicon in B6 and B7, other changes are not relevant to software developers.<br />
<br />
==Revision C2==<br />
Revision C2 is same as revision B7 except:<br />
* USB HOST (EHCI) is operational on revision C2, with standard USB A female connector.<br />
* Add interface for raw LCDs ([http://groups.google.com/group/beagleboard/msg/2e82c3ed6061d9d2 mockup])<br />
* It uses updated OMAP3 revision. BeagleBoard revisions B4+B5 uses OMAP3 ES 2.1 (engineering sample), while BeagleBoard revision C2 uses ES 3.0. OMAP3 ES 3.0 fixes minor issues:<br />
** updated ARM Cortex A8 silicon (r1p3) fixing a very rare [http://elinux.org/BeagleBoardFAQ#NEON_performance NEON issue] that has not been seen in real code<br />
* Power measurement feature<br />
* Uses [http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] OMAP power controller instead of TWL4030<br />
* Three additional PWM signals on the expansion connector added as pin mux options to existing pins ([http://groups.google.com/group/beagleboard/browse_thread/thread/d5872b7c6d74592c?hl=en# message])<br />
* Revision detection (to be able to identify C2 board from older boards by software, e.g. for different pin mux)<br />
* 256MB RAM ([http://groups.google.com/group/beagleboard/msg/3a38d0f21cefd6b1?hl=en message]) (and still 256MB NAND like rev B)<br />
<br />
Note: Revision C2 is the first production version, and all orders from from Digi-Key are shipped as Rev C2.<br />
<br />
==Revision C3==<br />
As revision C2 boards are [http://groups.google.com/group/beagleboard/msg/e41d3c97aa7d4951 sold out], revision C3 will ship now.<br />
<br />
Revision C3 is same as revision C2 [http://groups.google.com/group/beagleboard/msg/037318fbc44139d5 except]:<br />
* Optional RTC [http://parts.digikey.com/1/parts/1454-battery-lith-coin-3v-12-5mm-vert-vl-1220-vcn.html VL1220 series] backup battery<br />
* Mounting holes conected to ground<br />
* Slightly improved S-Video<br />
<br />
==Clones==<br />
===EBVBeagle===<br />
EBV build and sell their own BeagleBoard called [http://www.ebv.com/en/products/categories/details/product/ebvbeagle-board EBVBeagle], see e.g. [http://fl0rian.wordpress.com/2009/03/08/the-other-beagleboard/].<br />
It is actually a BeagleBoard revision C2 with green PCB boxed with some useful accessories. It comes as a quite complete starter kit with AC adapter, USB to Ethernet adapter, MMC card, USB hub and some cables.<br />
More information in [http://www.ebv.com/en/press-print/news-pr/details/news//press-releas-54.html official press release].<br />
<br />
===Mini Board===<br />
[[Mini_Board|ICETEK-OMAP3530-Mini]] is a chinese BeagleBoard clone.<br />
<br />
===DevKit 8000===<br />
[[DevKit8000]] is a Chinese BeagleBoard clone, slightly larger with additional peripherals (e.g. LCD/TSP, Ethernet and keyboard).<br />
<br />
===IGEPv2===<br />
[http://www.igep-platform.com/ IGEPv2 Platform] is a Spanish BeagleBoard clone, slightly larger, with additional peripherals like e.g. ethernet connector, wifi+bluetooth.<br />
<br />
==BeagleBoard-based products==<br />
* [http://www.alwaysinnovating.com/touchbook/ Always Innovating Touch Book], see [http://gigglehd.com/zbxe/hdforum/files/attach/images/899852/493/987/001/always_innovating_touch_book_0011.jpg]<br />
<br />
==Beagle case==<br />
<br />
*[http://specialcomp.com/beagleboard/ Special Computing]<br />
*[http://groups.google.com/group/beagleboard/browse_thread/thread/1c82316019633e51 SketchUp 3D model]<br />
<br />
=Adapters=<br />
<br />
For quite detailed information about all BeagleBoard peripherals see [http://www.beagleboard.org/uploads/BBSRM_6.pdf BeagleBoard HW Reference Manual (rev. B6)].<br />
<br />
See [[BeagleBoardPeripherals| BeagleBoard peripherals and adapters page]] for useful add ons for Beagle Board.<br />
<br />
==Expansion boards==<br />
* [[BeagleBoard Zippy]] expansion board is now available from [http://www.tincantools.com/product.php?productid=16147&cat=0&page=1&featured TinCanTools] for $79.00. basic specs are:<br />
** Battery Backed RTC<br />
** Second MMC slot<br />
** 10BaseT Ethernet<br />
** Second RS-232<br />
** +5V level I2C<br />
** AT24 EEPROM<br />
* [http://www.hy-research.com/beagle_expansion.html HY Research] has some expansion board basics and example.<br />
* [http://www.hervanta.com/stuff/Beaglebot#Expansion_Board Beaglebot] uses a custom extension board.<br />
* [http://beagleboard.org/leopard Leopard Board], a Beagle buddy web camera<br />
* There is also a VGA DB15 adapter board under development for the Rev C2 board. It should be available through a yet to be annnounced outlet.<br />
<br />
In Canada, check out [[http://robotcraft.ca RobotCraft]] in London, Ontario for expansion boards.<br />
<br />
==JTAG==<br />
<br />
Depending on your JTAG tool, you'd need a 14-pin to 20-pin adapter to use an ARM debugger. The 14-pin TI JTAG connector is used on BeagleBoard and is supported by a large number of JTAG emulation products.<br />
See [[BeagleBoardJTAG]] for more information.<br />
<br />
==RS232==<br />
<br />
The pinout on the beagle board is "AT/Everex" or "IDC10". You can buy [http://www.pccables.com/07120.htm IDC10 to DB9M adapters] in many places as they are commonly used for old PCs. You can also probably rip one of those cables out of any old desktop computer, where it's being used to support the serial port. Be careful, though -- some of those cables will have that tenth hole filled in so you'd have to snap off the extraneous pin on your BeagleBoard. Keep looking until you find a cable with all 10 holes open.<br />
<br />
Depending on your local configuration, you may need a [http://en.wikipedia.org/wiki/Null_modem 9-Pin NullModem] cable to connect BeagleBoard to serial port of your PC. From [http://www.tincantools.com/ TinCanTools] there is a [http://www.tincantools.com/product.php?productid=16144&cat=0&page=1&featured RS-232 DB-9 adapter] and [[media:flyswatter-ti-uart.pdf|adapter schematic]] available.<br />
<br />
==USB==<br />
There are two USB ports on the BeagleBoard, one with an EHCI controller and another with an OTG controller. As of Rev B4, the usb EHCI has been removed because of a hardware defect. Rev C will include USB EHCI working properly.<br />
<br />
===EHCI===<br />
The HS ([http://en.wikipedia.org/wiki/USB#USB_signalling HighSpeed]) USB [http://en.wikipedia.org/wiki/EHCI ECHI] controller on OMAP3 on BeagleBoard supports high-speed only. This simplifies the logic on the device. FS/LS (FullSpeed/LowSpeed) devices, such as keyboards and mice, require going through a high-speed USB 2.0 hub.<br />
<br />
According to the BeagleBoard System Reference Manual Rev C2, the EHCI port can source 5V at 500mA which is enough to power a hub and several low-power devices. However, this is only true if the BeagleBoard is powered through its power jack from a well-regulated 5V external power supply. If the BeagleBoard is powered through the OTG port, the EHCI port sources an "extremely limited" ampount of power (probably 100mA or so) so you'll need a "self-powered" USB 2.0 hub with its own external power supply. [Reference: Sections 5.6 and 7.2 of the BBSRM Rev C2.2.]<br />
<br />
===OTG===<br />
The HS USB OTG ([http://en.wikipedia.org/wiki/USB_On-The-Go OnTheGo]) controller on OMAP3 on the BeagleBoard does have support for all the USB 2.0 speeds (LS/FS/HS) and can act as either a host or a gadget/device. The HS USB OTG port is used as the default power input for the BeagleBoard. It is possible to boot the BeagleBoard using this USB port.<br />
<br />
When using the OTG port in host mode, you must power the BeagleBoard using the +5V power jack. If you connect a USB hub, you'll probably also need external power for the USB hub as well, because according to the Hardware Reference manual the BeagleBoard OTG port only sources 100 mA. This is enough to drive a single low-power device, but probably won't work with multiple devices.<br />
<br />
The Linux kernel needs to know you want to use the OTG port in host mode. I believe OTG ports are supposed to figure this out for themselves using the OTG Host Negotiation Protocol, but for now the Linux kernel may need some help. Specifically, Pin 4 (ID) of the OTG connector needs to be shorted to Pin 5 (GND) by using a [http://trisoft.de/pics/ZHost.JPG 5-pin USB Mini-A plug] which shorts these pins together in the plug. A [http://en.wikipedia.org/wiki/USB#USB_cables 5-pin USB Mini-B plug] leaves Pin 4 floating. Unfortunately, most USB Mini plugs are unmarked as to whether they are "A" or "B".<br />
<br />
You can find "mini A" adapters that have Pin 4 shorted and offer out a full-sized USB A Female jack [http://www.electronicproductonline.com/catalog/product_info.php?products_id=2043 here.]<br />
<table><br />
<tr><td><br />
Since the right cables might be hard to get, you simply can<br />
* short circuit the two pins encircled in red in the image to the right. You can do this by running a wire between the two pins. That at least allows easier undoing the change. Actually you could even have a small switch or so between 4 and 5.<br />
or<br />
* use a "mini B" cable (easier to get) and try the soldering of the two pins at the cable's connector. Depending on the cable it should be possible to open the plastic covering of mini-B port with a sharp-edged knife, then solder the two pins together, close the covering again and use some tape. This leaves the BeagleBoard unmodified.<br />
</td><td>[[Image:usb_otg.png]]</td></tr></table><br />
The Rev C BeagleBoard has a pair of pads labeled J6 on the back of the board under the OTG connector. Shorting these pads together with a wire or solder blob connects pins 4 and 5.<br />
See Figure 20 in the BeagleBoard System Reference Manual Rev C2.2.<br />
<br />
==DVI==<br />
<br />
DVI-D connection on BeagleBoard uses a [http://en.wikipedia.org/wiki/HDMI HDMI connector]:<br />
<br />
''HDMI is backward-compatible with the single-link Digital Visual Interface carrying digital video (DVI-D or DVI-I, but not DVI-A) used on modern computer monitors and graphics cards. This means that a DVI-D source can drive a HDMI monitor, or vice versa, by means of a suitable adapter or cable, but the audio and remote control features of HDMI will not be available.''<br />
<br />
BeagleBoard can be connected to a DVI monitor using HDMI female to DVI male cable.<br />
<br />
=BootRom=<br />
<br />
OMAP3 on BeagleBoard contains a BootRom. With this, BeagleBoard can boot without any code in permanent storage (NAND) or from peripherals. This is useful for first board bring up or if your BeagleBoard is bricked. For more information about BootRom booting see [http://www.ti.com/litv/pdf/sprufd6a SPRUFD6]. <br />
<br />
==User button==<br />
<br />
With user button on BeagleBoard you can configure boot order. Depending on this button, the order used to scan boot devices is changed. The boot order is (the first is the default boot source):<br />
<br />
* User button ''not'' pressed: NAND -> USB -> UART -> MMC<br />
* User button ''is'' pressed: USB -> UART -> MMC -> NAND<br />
<br />
Technically speaking, the user button configures pin SYS.BOOT[5]. See [http://focus-webapps.ti.com/general/docs/sitesearch/searchsite.tsp?selectedTopic=1653260327&numRecords=25&searchTerm=sprufd6&statusCode=null SPRUFD6] for more details.<br />
<br />
==Serial and USB boot==<br />
<br />
Historically, using OMAP3's boot ROM for serial and USB boot, there are several tools around. The newest are Nishanth' ''OMAP U-Boot Utils'', while there are still some older tools for serial boot and USB boot. It is also possible the access the [[u-boot environment variables in linux|u-boot env from linux]].<br />
<br />
===OMAP U-Boot Utils===<br />
<br />
Nishanth' [http://code.google.com/p/omap-u-boot-utils/ OMAP U-Boot Utils] provide<br />
<br />
* ''pserial'' - OMAP specific utility which downloads a file in response to ASIC ID over serial port.<br />
* ''pusb'' - OMAP specific utility which downloads a file in response to ASIC ID over USB connection.<br />
* ''ucmd'' - Send a command to U-Boot and wait till a specific match appears.<br />
* ''ukermit - Download a file from host without using kermit to U-Boot.<br />
<br />
See [http://nishanthmenon.blogspot.com/ Nishanth' blog] and [http://groups.google.com/group/beagleboard/browse_thread/thread/c5bfb1b8ed528b52# announce mail], too.<br />
<br />
===Serial boot===<br />
<br />
Besides Nishanth' ''OMAP U-Boot Utils'', to boot from USB or UART, you need a PC tool which talks with OMAP BootRom and speaks the correct protocol to download ARM target code to BeagleBoard. Currently there are two older (experimental) tools for UART boot:<br />
<br />
* [http://omapzoom.org/gf/project/omaptools/wiki PC Serial Boot perl script]<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/80ad3da0eb2aa555 Linux C utility] (not working yet with below target code)<br />
<br />
See [http://groups.google.com/group/beagleboard/browse_thread/thread/ae2c601ebe104a4 USB and serial download target code] for some example target code to be downloaded to OMAP3 on BeagleBoard.<br />
<br />
===USB boot===<br />
<br />
Besides Nishanth' ''OMAP U-Boot Utils'', for USB boot, there is currently one (experimental) tool to boot BeagleBoard over USB:<br />
<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/2b9e99886bb7a747 Linux C utility]<br />
<br />
See [http://groups.google.com/group/beagleboard/browse_thread/thread/ae2c601ebe104a4 USB and serial download target code] for some example target code to be downloaded to OMAP3 on BeagleBoard.<br />
<br />
See [[BeagleBoardRecovery#USB_recovery|USB recovery section]] how to use USB boot for board recovery.<br />
<br />
==NAND boot==<br />
<br />
See [[BeagleBoardNAND|NAND boot]] article.<br />
<br />
==MMC/SD boot==<br />
<br />
Currently, [http://code.google.com/p/beagleboard/wiki/BootingBeagleBoard boot the BeagleBoard with MMC/SD] is the only working way for first board bring up.<br />
<br />
===MMC/SD formatting===<br />
<br />
As described in above MMC/SD boot description, you have to ''create a bootable partition on MMC/SD Card''. This can be done using e.g. Windows or Linux tools.<br />
<br />
'''Windows'''<br />
<br />
See ''HP USB Disk Storage Format Tool 2.0.6'' description on [http://code.google.com/p/beagleboard/wiki/BootingBeagleBoard boot the BeagleBoard with MMC/SD] page.<br />
<br />
'''Linux'''<br />
<br />
Please see [http://wiki.omap.com/index.php?title=MMC_Boot_Format OMAP3 MMC Boot Format].<br />
<br />
===Dual partition card===<br />
<br />
You can [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat create a dual-partition card], booting from a FAT partition that can be read by the OMAP3 ROM bootloader and Windows, then utilizing an ext2 partition for the Linux root file system.<br />
<br />
To mount second ext2 partition as root file system (e.g. containing contents of [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode rd-ext2.bin]) use kernel boot arguments (e.g. in uboot using ''setenv bootargs''):<br />
<br />
console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootwait<br />
<br />
===U-Boot booting===<br />
<br />
If your MMC/SD card formatting is correct and you put [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode MLO, u-boot.bin and uImage] on the card you should get a u-boot prompt after booting beagle board. E.g. (output from terminal program with 115200 8N1):<br />
<br />
...40T.........XH.H.U�..Instruments X-Loader 1.41<br />
Starting on with MMC<br />
Reading boot sector<br />
<br />
717948 Bytes Read from MMC<br />
Starting OS Bootloader from MMC...<br />
<br />
U-Boot 1.1.4 (Apr 2 2008 - 13:42:13)<br />
<br />
OMAP3430-GP rev 2, CPU-OPP2 L3-133MHz<br />
TI 3430Beagle 2.0 Version + mDDR (Boot ONND)<br />
DRAM: 128 MB<br />
Flash: 0 kB<br />
NAND:256 MiB<br />
In: serial<br />
Out: serial<br />
Err: serial<br />
Audio Tone on Speakers ... complete<br />
OMAP3 beagleboard.org #<br />
<br />
Using this u-boot prompt, you now can start kernel uImage stored on MMC card manually:<br />
<br />
OMAP3 beagleboard.org # mmc init<br />
OMAP3 beagleboard.org # fatload mmc 0:1 0x80000000 uimage<br />
OMAP3 beagleboard.org # bootm<br />
<br />
If you like to make that happen every boot:<br />
<br />
OMAP3 beagleboard.org # set bootcmd 'mmc init ; fatload mmc 0:1 0x80000000 uimage ; bootm' ; saveenv<br />
<br />
=Code=<br />
<br />
Code and binaries for BeagleBoard are available at various places.<br />
<br />
==Binaries==<br />
<br />
BeagleBoard pre-built binaries and source code can be found at [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode Beagle source code] and [http://code.google.com/p/beagleboard/downloads/list downloads] page. These are the locations where "official" TI code is available. Please note that this code is mainly for reference and testing. More up to date binaries and code is available by community. Community took (parts) of TI reference code, improves and updates it. <br />
<br />
Actually, [http://www.angstrom-distribution.org/node/47 Koen's prebuilt Beagleboard demo images] are up to date binaries including e17 as window manager, the abiword word processor, the gnumeric spreadsheet application, a NEON accelerated mplayer and the popular NEON accelerated omapfbplay which gives you fullscreen 720p decoding. The [http://www.angstrom-distribution.org/demo/beagleboard www.angstrom-distribution.org/demo/beagleboard] directory should contain all the files you need:<br />
<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/u-boot.bin u-boot.bin]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/MLO MLO]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/uImage uImage]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/Angstrom-Beagleboard-demo-image-glibc-ipk-2009.X-test-20090104-beagleboard.rootfs.tar.bz2 rootfs]<br />
<br />
See the [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat beagle wiki] on how to setup your SD card to use all this goodness.<br />
<br />
==Source==<br />
<br />
Besides above binary and source images (TI's and communities one), for various parts of Beagle software stack there are community supported [http://git.or.cz/ git] repositories available. <br />
<br />
===X-Loader===<br />
<br />
Steve did some work to consolidate and update X-Loader from various sources and put it in a [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=x-load-omap3.git;a=summary X-Loader git repository]. Get it by<br />
<br />
git clone git://gitorious.org/x-load-omap3/mainline.git xloader<br />
cd xloader/<br />
<br />
Build:<br />
<br />
make distclean<br />
make omap3530beagle_config<br />
make<br />
<br />
Result will be a ~20k sized ''x-load.bin'' in main directory.<br />
<br />
===U-Boot===<br />
<br />
[http://www.denx.de/wiki/U-Boot/WebHome Mainline U-Boot] has good support for BeagleBoard. Get it by:<br />
<br />
git clone git://git.denx.de/u-boot.git u-boot-main<br />
cd u-boot-main<br />
git checkout --track -b omap3 origin/master<br />
<br />
Build (assuming Code Sourcery GCC 2007q3):<br />
<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- mrproper<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- omap3_beagle_config<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- <br />
<br />
Result will be a ~160k sized ''u-boot.bin'' in main directory.<br />
<br />
Note: Due to (patch and binary) size, BeagleBoard splash screen was removed from upstream version. If you want it back, use [http://groups.google.com/group/beagleboard/browse_thread/thread/3ad9b803a3418624 U-Boot v1 BeagleBoard splash screen patch].<br />
<br />
Note: For experimental U-Boot patches not ready for mainline yet, Steve's [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=u-boot-omap3.git;a=summary Beagle U-Boot git repository] is used to test them. Get it by:<br />
<br />
git clone git://gitorious.org/u-boot-omap3/mainline.git u-boot-omap3<br />
cd u-boot-omap3<br />
git checkout --track -b omap3-dev origin/omap3-dev<br />
<br />
===Linux kernel===<br />
<br />
[http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git;a=summary Git repository] of [http://muru.com/linux/omap/ OMAP Linux kernel] contains Beagle support. Get it by:<br />
<br />
git clone git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git linux-omap-2.6<br />
cd linux-omap-2.6<br />
<br />
Build:<br />
<br />
make distclean<br />
make omap3_beagle_defconfig<br />
make menuconfig # only needed if you want to change the default configuration<br />
make uImage<br />
<br />
The result will be a ''uImage'' in ''arch/arm/boot/'' directory.<br />
<br />
If you use the OE toolchain and want to build outside of the OE tree you should do<br />
ARCH=arm<br />
PATH=~/oe/tmp/cross/armv7a/bin:~/oe/tmp/staging/i686-linux/usr/bin:$PATH # add cross tools to your path<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- distclean<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- omap3_beagle_defconfig<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- menuconfig # only needed if you want to change the default configuration<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- uImage<br />
Note: the staging dir in the path is for mkimage. If you've build a kernel before with oe, the program should be there<br />
<br />
Note: If you are interested in kernel development have a look to [[BeagleBoardLinuxKernel|manually compiling BeagleBoard kernel]], too.<br />
<br />
===Experimental kernel patches and hacks===<br />
<br />
Some beagle developers maintain their own kernel experimental patches and hacks not ready for upstream:<br />
<br />
* [http://cgit.openembedded.net/cgit.cgi?url=openembedded/tree/packages/linux/linux-omap Koen's collection of kernels patches for OE] and the [http://cgit.openembedded.net/cgit.cgi?url=openembedded/tree/packages/linux/linux-omap_git.bb list of relevant patches]<br />
* [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=linux-omap-2.6.git;a=shortlog;h=refs/heads/test Steve's kernel tree], a clone of main OMAP git with additional patches, mainly beagle audio (ASOC) related.<br />
* [http://git.mansr.com/?p=linux-omap;a=summary Mans' kernel tree], a clone of main OMAP git with additional patches, mainly display & framebuffer related.<br />
* [http://www.bat.org/~tomba/linux-omap.html Tomi's kernel tree], a clone of main OMAP git with display sub-system patches, replacing the entire display driver with one that is the likely direction moving forward.<br />
<br />
=Compiler=<br />
<br />
TI OMAP3530 processor on BeagleBoard contains an ARM Cortex-A8 general purpose processor and a TMS320C64x+ DSP.<br />
<br />
==ARM==<br />
<br />
There is broad compiler support including gcc - please see [http://www.elinux.org/ARMCompilers ARM Compilers]<br />
<br />
==C64x+ DSP==<br />
<br />
A free C64x DSP compiler is available as [https://www-a.ti.com/downloads/sds_support/targetcontent/LinuxDspTools/download.html Linux hosted C6x Code Generation Tools] (TMS320C6000 C/C++ CODE GENERATION TOOLS 6.1.3 July 2008).<br />
<br />
Note: my.TI account required. You may create an account [https://my.ti.com here]<br />
<br />
Note: Old c6000 Linux compiler available on [ftp://ftp.ti.com/pub/cs/linux_cgt500.tar.gz TI FTP site]. Does NOT support c64x+ core in OMAP3 devices. Not recommended.<br />
<br />
You can also utilize the [http://focus.ti.com/dsp/docs/dspsupportaut.tsp?familyId=44&sectionId=3&tabId=416&toolTypeId=30 full-CCS free evaluation tools for 120 days], but they currently require purchase to upgrade to service release 9 to support full JTAG debugging with supported JTAG hardware.<br />
<br />
See [[BeagleBoard/DSP_Howto| BeagleBoard DSP howto]] for information about how to use the DSP.<br />
<br />
=Cortex A8 ARM features =<br />
<br />
ARM Cortex-A8 in OMAP3 is a high performance dual-issue applications processor which reaches a performance of 2.0 DMIPS/MHz (compared to ARM11 at 1.2 DMIPS/MHz). It is ARM v7 architecture, which is fully backwards compatible with application code for previous ARM processors.<br />
<br />
It includes a floating point unit (ARM VFPv3 architecture) and the ARM NEON SIMD instruction set.<br />
<br />
See [http://pandorawiki.org/Floating_Point_Optimization Floating Point Optimization] article for an intro into VFP-lite and NEON.<br />
<br />
===ARM NEON===<br />
<br />
NEON is a 64/128-bit wide SIMD vector extension for ARM, which has been architected to be an efficient C compiler target as well as being used from assembly language. It has 32x 64-bit registers (with a dual view as 16x 128-bit registers) which can hold the following datatypes:<br />
* 64-bit signed/unsigned<br />
* 32-bit signed/unsigned<br />
* 32-bit single precision floating point<br />
* 16-bit signed/unsigned<br />
* 8-bit signed/unsigned<br />
<br />
The key advantage of NEON is very high performance vector math processing, whilst being easy to program. It is the same thread of control as the ARM (but different instructions), and is supported by the same tools, debuggers and operating systems.<br />
<br />
The NEON instruction set is documented in ARM's [http://infocenter.arm.com/help/topic/com.arm.doc.dui0204i/DUI0204I_rvct_assembler_guide.pdf RealView Compilation Tools Assembler Guide].<br />
<br />
For NEON optimized libraries see [http://www.us.design-reuse.com/news/18429/aac-mp3-mpeg-4-h-264-fft-openmax-cortex-a8-neon-arm11-processors.html ARM Releases AAC, MP3, MPEG-4, H.264 and FFT OpenMAX DL Libraries, Highly Optimized for Cortex-A8/NEON and ARM11 Processors]. Note: Read the [http://www.arm.com/products/esd/openmax_v7libraries.html EULA].<br />
<br />
NEON is currently used by<br />
* ffmpeg - libavcodec used by mplayer, omapfbplay, and many other linux applications<br />
* libpixman - used by X.org and Mozilla & Webkit browsers to render text and graphics<br />
* Bluez - official Linux Bluetooth stack<br />
<br />
=== ARM Cortex Floating Point ===<br />
<br />
There are two types of instructions in the ARM v7 ISA that handle floating point:<br />
<br />
1) '''VFPv3''' Floating point instruction set (used for single/double precision scalar operations).<br />
These is used by gcc for C floating point operations on 'float' and 'double'<br />
<br />
2) '''NEON''' [http://www.arm.com/products/multimedia/neon/ NEON] vectorized single precision operations (2 values in a D-register, or 4 values in a Q-register)<br />
These can be use by gcc when -ftree-vectorize is enabled and -mfpu=neon is specified, and the code can be vectorized. In other cases the VFPv3 scalar ops will be used.<br />
<br />
ARM Cortex-A processors have separate floating point pipelines that handle these different instructions.<br />
<br />
On Cortex-A8, the designers' focus was on the NEON unit performance which can sustain 1 cycle/instr throughput (processing 2 single-precision values at once). The scalar VFPv3 FPU cannot achieve this level of performance (cycle timings are in the Cortex-A8 TRM download), but it is still a lot better than doing floating point using integer instructions.<br />
<br />
If you need the highest performance floating point on Cortex-A8, you need to use single precision and ensure the code uses the NEON vectorized instructions:<br />
* use gcc with -ftree-vectorize (possibly modify source code to make it vector friendly)<br />
* use NEON instrinsics (#include <arm_neon.h>, float32x2_t datatype and vmul_f32() etc)<br />
* use NEON asm directly<br />
<br />
Keep in mind that mixing NEON and ARM load/stores can sometimes stall significantly. See [http://hardwarebug.org/2008/12/31/arm-neon-memory-hazards/ this link] for more info.<br />
<br />
On Cortex-A9, there is a much higher performance floating point unit which can sustain 1 cycle/instr throughput, with low result latencies.<br />
<br />
=Board recovery=<br />
<br />
If you played e.g. with the contents of the [http://www.sakoman.net/omap3/flash%20procedure.txt NAND], it might happen that the Board doesn't boot any more (without pressing user button) due to broken NAND content. See [[BeagleBoardRecovery|BeagleBoard recovery]] article how to fix this.<br />
<br />
=Development environments=<br />
<br />
Instead of just using compiler + editor, you can use complete image create "development tool chains" which integrate compiler, build system, packaging tools etc. in one tool chain.<br />
<br />
==OpenEmbedded==<br />
<br />
For [http://www.openembedded.org/ OpenEmbedded] (OE), there are some hints how to [http://www.beagleboard.org/irclogs/index.php?date=2008-04-29#T13:06:25 start with OE for BeagleBoard]. See [[BeagleBoardAndOpenEmbeddedGit|BeagleBoard and OpenEmbedded Git]] and [http://wiki.openembedded.org/index.php/Getting_Started OpenEmbedded getting started] as well.<br />
<br />
In the OE getting started document, for BeagleBoard replace ''MACHINE = "om-gta01"'' by ''MACHINE = "beagleboard"''. After confirming ''bitbake nano'' works, try ''bitbake console-image''. The first time you run bitbake OE will download all the needed source and build the tool chain. This will take several hours. After all went fine, the output is in ''${OE_ROOT}/tmp/deploy/glibc/images/beagleboard''.<br />
<br />
Note: Koen has some BeagleBoard [http://amethyst.openembedded.net/~koen/index.php?path=beagleboard/ source and binary images] built with OE. There, ''Angstrom-console*'' images don't include an X server, you can still use a e.g. DVI-D screen with console, but you won't have a GUI. ''Angstrom-x11*'' images contain an X server.<!-- DEAD LINK: resulting in something like [http://scap.linuxtogo.org/files/fc987d4acb2c745fb7e19cf4dca8de70.png this].--><br />
<br />
===One very important note:=== <br />
<br />
It's important to have an X-Loader on your Beagleboard that uses the uImage on the SD Card that goes with Angstrom. The B6 Beagleboards do not appear to come with such an X-Loader. So you likely will have to upgrade the X-Loader. Here's what to do:<br />
* Make an SD Card with the [http://www.angstrom-distribution.org/demo/beagleboard Angstrom Demo files]. See the [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat Beagleboard Wiki Page] for more info on making the SD Card.<br />
* Put the SD Card in the Beagle, and boot up to the U-Boot Prompt.<br />
* Do the first six instructions in the [http://code.google.com/p/beagleboard/wiki/BeagleNANDFlashing Flashing Commands with U-Boot] section. <br />
* Reboot the Beagle to see that the new X-Loader is properly loaded.<br />
<br />
This will update the X-Loader to a newer version that will automatically load uImage from the SD Card when present -- rather than always using the uImage in the Beagleboard NAND.<br />
<br />
==Eclipse==<br />
The Eclipse [http://www.eclipse.org/cdt/ C Development Tools Project] provides a "fully functional C and C++ Integrated Development Environment (IDE) for the Eclipse platform". The Eclipse [http://www.eclipse.org/dsdp/tm/ DSDP Target Managment Project] provides a "Remote System Explorer" (RSE) plugin that simplifies downloading files to the BeagleBoard and editing files on the BeagleBoard within the Eclipse IDE. A Linux Target Agent is available as part of the [http://wiki.eclipse.org/DSDP/TM/TCF_FAQ Target Communications Framework (TCF) component]. Info on how RSE is used for e.g. Gumstix development is described in [http://groups.google.com/group/beagleboard/browse_thread/thread/509831f7c24cb79f# this post].<br />
<br />
==Android==<br />
[http://source.android.com Android] platform is a software stack for mobile devices including an operating system, middleware and key applications. Developers can create applications for the platform using the [http://code.google.com/android/ Android SDK]. Applications are written using the Java programming language and run on Dalvik, a custom virtual machine designed for embedded use which runs on top of a Linux kernel.<br />
<br />
There are several resources for Android on OMAP (Beagle) available:<br />
<br />
'''OMAPZOOM'''<br />
<br />
You can find Android port for OMAP ZOOM architecture on [https://omapzoom.org/gf/project/omapandroid/wiki/ OMAPZoom.org's wiki page on Android]. <br />
<br />
'''EMBINUX'''<br />
<br />
[http://beagleboard.org/project/android Beagleboard.org's Android project page] [http://groups.google.com/group/beagleboard/browse_thread/thread/7b422f113ce489b5 announced], the successful porting of Android on Beagle board by [http://embinux.com EMBINUX&trade;] Team. The [http://labs.embinux.org/git/ source code] and [http://www.embinux.com/download_beagle.php binaries] are available for download and review. <br />
<br />
Detailed instructions, for porting Android on Beagle Board, are available [http://labs.embinux.org/index.php/Main_Page here]. Current release supports input devices (keyboard/mouse), network and sound.<br />
<br />
You can [http://in.youtube.com/watch?v=nADn_vNVEKw watch Android booting] on Beagle Board.<br />
<br />
'''Android on OMAP wiki'''<br />
<br />
Wiki page for Andorid on OMAP can be found [[Android on OMAP|here]]<br />
<br />
'''0xdroid'''<br />
<br />
[http://gitorious.org/0xdroid 0xdroid], the enhanced version of Android on Beagleboard by [http://0xlab.org 0xlab]. The [http://gitorious.org/0xdroid source code], [http://downloads.0xlab.org/ pre-built binaries], and [http://code.google.com/p/0xdroid/issues/list issue tracker] are available for review and reference.<br />
<br />
The latest development supports OMAP audio, OMAP video overlays, ARM Cortex A8 NEON/Thumb2 performance optimizations, mouse cursor, hot-pluggable USB keyboard & mouse, user-friendly installer for system image, and various Android tweaks. Detailed instructions for 0xdroid are available through [http://gitorious.org/0xdroid/pages/Home gitorious wiki].<br />
<br />
You can [http://www.youtube.com/watch?v=v6wdTOHrwQw watch 0xdroid demo video] on Beagle Board.<br />
<br />
==Mamona==<br />
<br />
[http://dev.openbossa.org/trac/mamona/wiki Mamona] is an embedded Linux distribution for ARM EABI. The main goal of the Mamona Project is to offer a completely open source alternative/experimental platform for [http://maemo.org/ Maemo] using only free and open source components. Mamona [http://rsalveti.wordpress.com/2008/09/12/mamona-02-is-out 0.2] [http://franciscoalecrim.com/blog/2008/07/29/mamona-working-with-beagleboard/ supports] [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12013&contentId=28741 OMAP3430 Software Development Platform (SDP)], so you can also use it at Beagle (OMAP3530), too. Work is being done to officially support Beagle.<br />
<br />
==Ubuntu==<br />
<br />
See [[BeagleBoardUbuntu|Ubuntu (ARM)]] installation guide how to install Ubuntu (ARM) on BeagleBoard.<br />
<br />
==Debian ARM==<br />
<br />
See [[BeagleBoardDebian|Debian (ARM)]] installation guide how to install Debian (ARM) on BeagleBoard.<br />
<br />
==Handhelds Mojo ARM==<br />
<br />
See [[BeagleBoardHandheldsMojo|Handhelds Mojo (ARM)]] installation guide how to install Handhelds Mojo (ARM) port of Ubuntu on BeagleBoard. (The Mojo project is no longer active, see the Official Ubuntu ARM-port above instead)<br />
<br />
==Scratchbox==<br />
<br />
[http://www.scratchbox.org/ Scratchbox] is a cross-compilation toolkit designed to make embedded Linux application development easier. It also provides a full set of tools to integrate and cross-compile an entire Linux distribution. See [http://felipec.wordpress.com/2009/06/07/installing-scratchbox-1-and-2-for-arm-cross-compilation/ Felipe's Scratbox 1 and 2 intro], too.<br />
<br />
=Software hints=<br />
<br />
This section collects hints, tips & tricks for various software components running on beagle.<br />
<br />
==QEMU==<br />
<br />
[[Qemu|QEMU]] [http://vm-kernel.org/blog/2008/12/15/linux-is-running-on-qemu-omap3/ supports OMAP3] being able to boot a BeagleBoard Linux kernel.<br />
<br />
==Linux hints==<br />
<br />
See BeagleBoard [http://code.google.com/p/beagleboard/wiki/LinuxHints Google wiki Linux hints] page (for Linux WTBU (Wireless TI Business Unit) kernel [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode 2.6.22]). Currently featuring:<br />
<br />
* Switching video output between DVI-D and S-Video<br />
* Disabling framebuffer blanking<br />
* Listing USB devices<br />
<br />
==lmbench==<br />
<br />
Avik posted a detailed [http://groups.google.com/group/beagleboard/browse_thread/thread/c8b8f07ce61161a1 step-by-step procedure] to run [http://sourceforge.net/project/showfiles.php?group_id=14418 lmbench] on Beagle.<br />
<br />
==Mediaplayer (FFmpeg)==<br />
<br />
There is a thread how to get a [http://groups.google.com/group/beagleboard/browse_thread/thread/9b8025fc15120fd9# mediaplayer] with NEON optimization (FFmpeg) to run on Beagle. Includes compiler hints and patches.<br />
<br />
==Java==<br />
<br />
When using the [[BeagleBoard#OpenEmbedded|OpenEmbedded]]-based Angstrom image you have the following options of Java support:<br />
* JamVM + GNU Classpath (small vm, fast interpreter, J2SE-like)<br />
* Cacao + GNU Classpath (JIT compiler, J2SE-like)<br />
* PhoneME Advanced Foundation (JIT compiler, CDC)<br />
<br />
Java support in OpenEmbedded/Angstrom ([http://wiki.openembedded.net/index.php/Java details]) is provided voluntarily through [http://jalimo.org Jalimo].<br />
<br />
See a [http://groups.google.com/group/beagleboard/browse_thread/thread/102f627253919783# post at mailing list], too.<br />
<br />
OpenEmbedded users can add the [http://evolvis.org/scm/?group_id=11 Jalimo Subversion repository] as an overlay (instructions are in the repository). This will allow them to build OpenJDK packages. Inclusion of these recipes in mainline OpenEmbedded is planned but still ongoing.<br />
<br />
The recipes offer the following functionality:<br />
<br />
* OpenJDK + Hotspot (Zero port) (all J2SE functionality, including JVMTI, interpreted only)<br />
* OpenJDK + Cacaco (all J2SE library features, missing JVMTI, decent JIT compiler)<br />
* OpenJDK + Hotspot (Shark port) (not working yet)<br />
<br />
Some guy from ARM Ltd. is working on interpreter optimization in Zero for ARM.<br />
<br />
People interested in getting this stuff working better should contact people on:<br />
* [http://evolvis.org/mail/?group_id=11 Jalimo Mailinglist]<br />
* [http://mail.openjdk.java.net/mailman/listinfo/distro-pkg-dev Icedtea Mailinglist]<br />
<br />
You should also check out IcedTea's [http://iced-tea.org/wiki/FrequentlyAskedQuestions FAQ].<br />
<br />
=Graphics accelerator=<br />
<br />
OMAP3530 used on BeagleBoard contains a graphics accelerator (SGX) based on the SGX core from [http://www.imgtec.com/ Imagination Technologies]. [http://www.imgtec.com/powervr/powervr-graphics.asp PowerVR] SGX530 is a new generation of programmable PowerVR graphics and video IP cores. Only the kernel portions of Linux drivers will be open source. The PowerVR folks will provide binary user-space libraries. Using the EMail contact at [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12700&contentId=27458 TIs Mobile Gaming Developers page] there are Linux v2.6 OMAP3430 SDKs for OMAP3 Zoom and SDP supporting OpenGL ES v2.0, OpenGL ES v1.1 and OpenVG 1.0 available.<br />
<br />
Tutorial:<br />
* [http://code.google.com/p/beagleboard/wiki/HowtoUseSGXunderAngstrom How to use SGX with Angstrom in OE]<br />
<br />
Some videos:<br />
<br />
* [http://www.youtube.com/watch?v=3ToYOgP9f9U SGX on Beagle working with Linux 2.6.27]<br />
* [http://www.youtube.com/watch?v=24TXpqa9jG0&feature=related OpenGL ES 2.0 shader effects on OMAP3]<br />
* [http://www.youtube.com/watch?v=-UFUbqoNgs8&feature=related 3D User Interface on OMAP3 Platform]<br />
* [http://www.youtube.com/watch?v=8KcNgeUriqA 3D Mapping using OpenGL ES 2.0 on OMAP3 Platform]<br />
* [http://www.youtube.com/watch?v=7D3V6BUpGLE Video blending in hardware]<br />
* [http://www.hitlabnz.org/wiki/EmbeddedAR An Augmented Reality application combining ARToolkit and OpenGL ES 2.0]<br />
<br />
=Beginners guide=<br />
<br />
You just got your new BeagleBoard, and now? See [[BeagleBoardBeginners|beginners guides]].<br />
<br />
=FAQ=<br />
<br />
For BeagleBoard frequently asked questions (FAQ) see [[BeagleBoardFAQ|community FAQ]] and "official" [http://beagleboard.org/support/faq BeagleBoard.org FAQ].<br />
<br />
=Links=<br />
==Home page==<br />
[http://beagleboard.org/ beagleboard.org] (beagle board home)<br />
* Using [http://www.google.de/ Google] you can search beagleboard.org (including [http://www.beagleboard.org/irclogs/ IRC logs]) using ''site:beagleboard.org <search term>''<br />
<br />
==Manuals and resources==<br />
* [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard HW Reference Manual (rev. C2)]<br />
* [http://beagle.s3.amazonaws.com/BBSRM_7_2_0.pdf BeagleBoard HW Reference Manual (rev. B7)]<br />
* [http://www.beagleboard.org/uploads/BBSRM_6.pdf BeagleBoard HW Reference Manual (rev. B6)]<br />
* [http://www.beagleboard.org/uploads/BBSRM_B5.pdf BeagleBoard HW Reference Manual (rev. B5)]<br />
* [http://www.beagleboard.org/uploads/Beagle_HRM_B4.pdf BeagleBoard HW Reference Manual (rev. B4)]<br />
* [http://www.beagleboard.org/uploads/Beagle_HW_Reference_Manual_A_5.pdf BeagleBoard HW Reference Manual (rev. A5)]<br />
* [http://focus.ti.com/docs/prod/folders/print/omap3530.html OMAP3530] processor description and manuals<br />
* [http://code.google.com/p/beagleboard/ Beagle at code.google.com]<br />
* [http://focus.ti.com/dsp/docs/dspsupporttechdocs.tsp?sectionId=3&tabId=409&familyId=1526&documentCategoryId=4&techDoc=4 OMAP3530/25 CBB BSDL Model]<br />
* [http://www.micron.com/products/mcps/beagleboard Micron's multi chip packages (MCPs) for Beagle Board]<br />
* [http://beagleboard.org/resources Beagleboard resources page with hw docs]<br />
* Some [http://www.rasterman.com/ performance comparison] of BeagleBoard Rev. B with some other ARM/PC systems.<br />
* OMAP3 pinmux [http://www.hy-research.com/omap3_pinmux.html setup]<br />
* [http://elinux.org/BeagleBoardPinMux OMAP3 eLinux pinmux page]<br />
<br />
==Contact and communication==<br />
* [http://groups.google.com/group/beagleboard Beagle board discussion list]<br />
* [http://code.google.com/p/beagleboard/issues/list Beagle board open point list & issue tracker]<br />
* [http://beagleboard.blogspot.com/ Beagle board blog]<br />
* [http://feeds.feedburner.com/BeagleBoard Beagle board RSS feed]<br />
* Chat:<br />
** [http://beagleboard.org/chat Beagle Board chat]<br />
** IRC: #beagle channel on irc.freenode.net<br />
** [http://www.beagleboard.org/irclogs/index.php IRC archive]<br />
* [http://www.beaglesride.org/ Beagles Ride], a site about building a community around the BeagleBoard focused on in vehicle applications<br />
* [http://www.beagleboard.de/ German Beagle Board Forum and Wiki]<br />
<br />
==TI resources==<br />
* [http://opensource.ti.com/ TI open source page]<br />
* [https://community.ti.com/ TI E2E (Engineer-to-Engineer) Community]<br />
* [http://marc.info/?l=linux-omap&m=120761100810527&w=2 DSP Bridge driver for OMAP3 platform]<br />
* [http://lists.arm.linux.org.uk/lurker/message/20080701.142512.5eeff26b.en.html ARMv7 Oprofile support]<br />
* [http://focus.ti.com/pdfs/wtbu/swpu114g.pdf OMAP34xx Wireless Technical Reference Manual] (swpu114g.pdf, 47 MB)<br />
* [http://amethyst.openembedded.net/~koen/index.php?sort=date&order=desc&path=beagleboard/ Koen's (OpenEmbeded) BeagleBoard source and binaries]<br />
* [http://del.icio.us/tag/beagleboard+peripheral+verified Verified peripherals for BeagleBoard]<br />
* [http://www.celinux.org/elc08_presentations/TI_OMAP3430_Linux_PM_reference.ppt OMAP3430 Linux Power Management presentation]<br />
==Articles==<br />
* [http://linuxdevices.com/news/NS5852740920.html LinuxDevices article about Beagle]<br />
* [http://www.linuxdevices.com/news/NS8479495970.html LinuxDevices article about Digi-Key launch]<br />
* [http://www.linuxdevices.com/news/NS5682470737.html LinuxDevices article about Beagle Rev C, Beagle MID from HY Research, Touch Book and Sponsored Projects Contest]<br />
<br />
==Books==<br />
* [[OMAP_and_DaVinci_Software_for_Dummies|OMAP and DaVinci Software for Dummies]]<br />
==Past Beagle events==<br />
* TIDC, February 26-28, 2008: [http://www.beagleboard.org/uploads/tidc_opensource.pdf Slides from TI developer conference (TIDC) open source session], covering also beagle board<br />
* [http://www.lugradio.org/live/USA2008/ LUG RADIO Live USA 2008, April 12-13, 2008]: [http://www.beagleboard.org/uploads/lugradio_20080411.PPT TI/Beagle Presentation] and [http://forums.lugradio.org/viewtopic.php?f=4&t=4094&st=0&sk=t&sd=a&sid=d69cc807569ab41e33f93af698c536b8&start=15#p41549 video]<br />
* LinuxTag, May 28-31, 2008: [http://www.flickr.com/photos/jadon/2551439955/in/pool-beagleboard picture 1] and [http://www.flickr.com/photos/jadon/2535692865/in/pool-beagleboard picture 2]<br />
* [http://lugradio.org/live/UK2008/travel LugRadio Live UK 2008], July 19 - July 20, 2008: [http://www.flickr.com/photos/koenkooi/tags/lugradiolive/ Koen's pictures] showing e.g. [http://www.bigbuckbunny.org/index.php/download/ Big Buck BUNNY] playing at Beagle. [http://linuxoutlaws.com/podcast/48 Interview with Linux Outlaws (52:06)] and the [http://www.youtube.com/watch?v=m9xVbntl-DY video]<br />
* [http://osscamp.in/index.php/OSScamp_Bengaluru_Mobile_2008 OSScamp Bengaluru Mobile 2008], July 19, 2008<br />
* [http://www.linuxworldexpo.com LinuxWorld Conference & Expo], August 4 - August 7, 2008: [http://www.flickr.com/photos/jadon/sets/72157606586084668/ pictures with living beagle] and from [http://www.flickr.com/photos/linuxjournal/2738316951/in/set-72157606634486338/ Linux Journal's photostream]<br />
* BeagleBoard.org event at Jillian's during LinuxWorldExpo, August 5, 2008, 5:30-7:30 pm<br />
* [http://barcamp.pbwiki.com/BarCampHouston3 BarCamp Houston 3], August 9, 2008, 9:00 A.M.: [http://www.flickr.com/photos/jadon/sets/72157606656532041/ pictures]<br />
* NIT Suratkal, India [http://www.nitkieee.com/site/sp-connect2/schedule IEEE SP Connect 2], August 30, 20008<br />
* [http://barcampbangalore.org/wiki/BCB7_Demos BarCamp Bangalore], India, September 13, 2008<br />
* [http://www.ibc.org/ IBC 2008], September 11 - September 16, 2008: [http://www.flickr.com/photos/koenkooi/tags/ibc2008/ pictures]<br />
* Free Open "Embedded Linux" Training for Students in India, [http://code.google.com/p/beagleboard/wiki/Trainings?updated=Trainings&ts=1220250913 beagleboard.org Trainings in India], September 20, 2008: [http://www.youtube.com/watch?v=A6FLdmgQlb4&feature=PlayList&p=1BAB6EE9CC7285AD&index=0 video], [http://www.flickr.com/photos/25691331@N04/sets/72157607419766102/ photos] and [http://lakshmansrikanth.blogspot.com/2008/09/linux-embedded.html blog]<br />
* [http://www.embedded.co.uk/ Embedded Systems Show 2008], Birmingham, UK, October 1-2, 2008<br />
* [http://www.mvista.com/vision/ MontaVista Vision 2008 Embedded Linux Developers Conference], San Francisco, California, October 1-3, 2008 : [http://www.mvista.com/download/topic.php?t=18 Video and presentation overview], [http://www.mvista.com/download/fetchdoc.php?docid=323 William Mills' presentation], [http://www.mvista.com/download/fetchdoc.php?docid=333 Jason Kridner's presentation]<br />
* [http://www.rtcgroup.com/arm/2008/ ARM Developers' Conference], Santa Clara Convention Center, Santa Clara, Calif., USA, October 7-9, 2008<br />
* [http://www.cmp-egevents.com/web/escb Embedded Systems Conference Boston 2008], Hynes Convention Center, Boston, USA, October 26 - October 30, 2008: [http://beagleboard.org/demo/esc Resources]<br />
* [[BeagleBoard/contest|BeagleBoard contest]] #1: Create a cool BeagleBoard application and win a Rev C1! Closed, ran until January 9, 2009<br />
* [http://www.silica.com/events/seminars/seminar-overview/ti-omp-workshop.html OMAP35x training by Silica], January 21, 2009, Cambridge, UK, ARM Holdings Lecture Theatre. [[RichardB's notes from the seminar]]<br />
* [[BeagleBoard/contest|BeagleBoard contest #2]], unitl February 27, 2009: : Create a cool BeagleBoard application and win a Rev C2!<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/b15cf8a5797c73a2 Silica - Free TI - ARM OMAP Workshop], Brussels, Europe, March 31st 2009<br />
* SILICA's [http://www.silica.com/events/seminars/seminar-overview/ti-omap-piccolo-poing.html Texas Instruments 2-in-1 Seminar: OMAP & Piccolo], May 13th 2009: Poing (Munich) - Germany<br />
* 24th until 27th June 2009: [http://www.linuxtag.org/2009/en.html Linux Tag Germany] with [http://groups.google.com/group/beagleboard/msg/27fefef5f1d2ef73 TI booth] and [http://www.linuxtag.org/2009/en/program/freies-vortragsprogramm/all-events/details.html?talkid=183 Beagle presentation]<br />
* until 31st July 2009: [http://www.cranessoftware.com/services/training/beagledesigncontest.html BeagleBoard Design Contest INDIA Edition] ([http://beagleboard.blogspot.com/2009/04/beagleboard-design-contest-india.html blog entry])<br />
* TI Technology Day Dallas, Tex. on June 16 will held a [http://www.linuxdevices.com/news/NS5682470737.html BeagleBoard users group meeting] (see section ''Availability'').<br />
<br />
==Beagle wiki pages==<br />
* [[BeagleBoardBeginners|BeagleBoard beginners guides]]<br />
* [[BeagleBoardAndOpenEmbeddedGit|BeagleBoard and OpenEmbedded Git]] installation guide and [[BeagleBoardOpenEmbeddedDevelopment|OpenEmbedded development]]<br />
* [[BeagleBoardDebian|Debian on BeagleBoard]] usage guide<br />
* [[BeagleBoardHandheldsMojo|Handhelds Mojo (ARM) on BeagleBoard]] usage guide (formerly known as Ubuntu (ARM))<br />
* [[BeagleBoardUbuntu|Ubuntu (ARM EABI) distribution at BeagleBoard]]<br />
* [[BeagleBoardRecovery|BeagleBoard recovery]] about fixing boards not booting any more because of broken NAND content<br />
* [[BeagleBoardJTAG|BeagleBoard JTAG]] and [[OMAP3530_ICEPICK|OMAP3530_ICEPICK]] about JTAG on BeagleBoard<br />
* [[BeagleBoardOpenOCD|BeagleBoard OpenOCD]] has infos about status and usage of open source JTAG software OpenOCD with Beagle<br />
* [[BeagleBoardNAND|BeagleBoard NAND boot]] about how to boot BeagleBoard from NAND flash<br />
* [[BeagleBoardPeripherals|BeagleBoard peripherals and adapters page]] about useful BeagleBoard add ons.<br />
* [[Mount_BeagleBoard_Root_Filesystem_over_NFS_via_USB|Mount BeagleBoard root file system over NFS via USB]]<br />
* [[BeagleBoardFAQ|BeagleBoard FAQ]]<br />
* [[BeagleBoardSugar|Sugar on BeagleBoard]]<br />
* [[BeagleBoard/DSP_Howto|BeagleBoard DSP howto]]<br />
* [[BeagleBoardRawLCD|Interfacing BeagleBoard to Raw LCD]]<br />
* [[BeagleBoard/gst-openmax|BeagleBoard OpenMAX usage]]<br />
* [[BeagleBoard/video|BeagleBoard video]]<br />
* [[BeagleBoardOpenCV|Using OpenCV computer vision library with BeagleBoard]]<br />
* [[BeagleBoard/James|James]]: Just A Miniature Entertainment System<br />
* [[U-boot_musb_gadget_support|U-boot musb gadget support]]<br />
* [[BeagleBoard-JP|Japanese translation of this Beagle page]]<br />
* [[BeagleEPD|BeagleBoard E-Ink Platform Driver]]<br />
* [[BeagleBoardFedora|Random hacking notes for getting Fedora 10 to kinda work with the BeagleBoard]]<br />
* BeagleBoard specific [[BeagleBoard/GSoC|Google Summer of Code 2009]] page, [[BeagleBoard/Ideas-2009|GSoC project ideas]] and [[BeagleBoard/GSoC/Application|GSoc application]]<br />
* [[BeagleBoard/Poky|Poky]] for BeagleBoard<br />
* [[Xenarc_USB_touchscreen_for_Beagleboard/OMAP3_EVM|Xenarc USB touchscreen for Beagleboard/OMAP3 EVM]]<br />
* [[BeagleBoard/BugAdapter|BeagleBoard Bug Adapter board]]<br />
* [[BeagleBoardDebianWifiInstallInfo|BeagleBoard Debian WiFi install info]]<br />
* [[BeagleBoard/DSP_Clarification|Info about the various Linux DSP systems for OMAP chips]]<br />
* [[BeagleBoardPinMux|BeagleBoard PinMux]]<br />
* [[BeagleBoardLinuxKernel|BeagleBoard Linux kernel manual compile]]<br />
* [http://www.hervanta.com/stuff/Beaglebot Beaglebot]: build an experimental robotics project with Beagle<br />
* [http://code.google.com/p/beagleboard/w/list code.google.com BeagleBoard wiki]<br />
* '''[[BeagleBoard/contest|BeagleBoard contest]]'''<br />
* [http://en.wikipedia.org/wiki/Beagle_Board Wikipedia BeagleBoard page]<br />
* [http://labs.embinux.org/index.php/Android_Porting_Guide_to_Beagle_Board Android port for BeagleBoard]: Instructions for porting Android on BeagleBoard<br />
* [[BeagleBoard/bangalore_user_meet |BeagleBoard Bangalore User Meet]]<br />
* [[BeagleBoardEclipse|Using Eclipse with Beagle]] (for JTAG debugging)<br />
* [[Zoom2Beginners|Zoom2 for Beginners]]<br />
* [http://wh1t3s.com/2009/05/11/beagleboard-as-usb-mass-storage-device-via-usb-otg/ BeagleBoard as USB Mass Storage Device via USB OTG]<br />
* [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/index.htm BeagleBoard as solar powered computer]<br />
* [http://blog.makezine.com/archive/2009/02/blinking_leds_with_the_beagle_board.html Blinking LEDs with the Beagle Board] from Make:Online<br />
* [http://www.crashcourse.ca/wiki/index.php/BeagleBoard Robert's private Beagle wiki] (please don't add anything there, do it here. It will help to avoid scattering. Thanks!)<br />
* [http://felipec.wordpress.com/2009/03/26/omap3-public-dsp-binaries-now-work/ Felipe's blog] about D1 MPEG-4 decoding using less than 15% of CPU with help of DSP<br />
* [http://www.syspire.de/node/3 Embedded Mediacenter] based on BeagleBoard (German)<br />
* [http://pandorawiki.org/Floating_Point_Optimization Floating Point Optimization] with VFP-lite and NEON intro<br />
* [http://particolarmente-urgentissimo.blogspot.com/2009/09/beagleboard-setting-date-via-gps.html Beagleboard setting date via GPS]<br />
<br />
==Beagle photos==<br />
* [http://www.flickr.com/groups/beagleboard/pool/ Beagle board pictures at flickr]<br />
* [http://www.flickr.com/photos/32615155@N00/2439256116/ Beagle board and USRP]<br />
* [http://www.flickr.com/photos/nishanthmenon/2438406603/ Modify SDP3430 QUART cable for beagle]<br />
* [http://www.flickr.com/photos/koenkooi/2695061759/ MythTV on Beagle]<br />
==Beagle videos==<br />
* [http://uk.youtube.com/watch?v=fL_XMieanSc Beagle Board Beginnings]<br />
* [http://www.youtube.com/watch?v=cXr-D1wROfQ Beagleboard in the Living Room]<br />
* [http://uk.youtube.com/watch?v=FuVwh_VrIxk Beagle Board 3D, Angstrom, and Ubuntu]<br />
* [http://uk.youtube.com/watch?v=TUYOjRGYeYU testsprite with beagleboard]<br />
* [http://uk.youtube.com/watch?v=9Z4ZTovtFKk Beagleboard LED demo]<br />
* [http://uk.youtube.com/watch?v=R33dzREZGEk LCD2USB attached to a beagleboard]<br />
* [http://www.youtube.com/watch?v=7D3V6BUpGLE Video blending in hardware]<br />
* [http://www.youtube.com/watch?v=-tUBXD-KRp4 Beagle Running Angstrom (VGA) on DLP Pico Projector]<br />
* [http://www.youtube.com/watch?v=3ToYOgP9f9U SGX on Beagle working with Linux 2.6.27]<br />
* Not on Beagle OMAP3530: [http://youtube.com/watch?v=5i9cWOK1spw Ubuntu 7.04 on on OMAP3430 SDP]<br />
* [http://in.youtube.com/watch?v=nADn_vNVEKw Beagle Board booting Android]<br />
<br />
==Beagle manufacturing==<br />
* [http://www.youtube.com/watch?v=C-CwkjT9z_0&feature=related Beagle Solder Paste Screening]<br />
* [http://www.youtube.com/watch?v=9LLjDovIG2M&feature=related Beagle Assembly Inspection]<br />
* [http://www.youtube.com/watch?v=sbOZfBnoVnM&feature=related Beagle Functional Test]<br />
* [http://www.youtube.com/watch?v=cvDtXmJJcEI&feature=related Beagle Reflow]<br />
* [http://www.youtube.com/watch?v=W2o4NTASxN0&feature=related Beagle Board Assembly at Circuitco]<br />
==Fun==<br />
* Enjoy [http://www.beaglegame.com/ BeagleGame]<br />
<br />
=Other OMAP boards=<br />
<br />
* OMAP1 OMAP5912 (ARM9 + C5x DSP) based [[OSK|OSK]] board.<br />
* OMAP3 OMAP3430 based [https://gforge.ti.com/gf/project/omapzoom/wiki/?pagename=HardwareInformation Zoom MDK], which has been superseded by the [http://www.logicpd.com/products/development-kits/texas-instruments-zoom%E2%84%A2-omap34x-ii-mdp Zoom II], and other [http://www.logicpd.com/products LogicPD kits].<br />
* OMAP3 OMAP3530 based [http://www.openpandora.org/ Pandora]<br />
* OMAP3 OMAP3503 based [http://www.gumstix.net/Overo/cat/Overo/115.html Gumstix Overo]<br />
* OMAP3 OMAP35x based EVM from [http://mistralsolutions.com/products/omap_3evm.php Mistral] and [http://focus.ti.com/docs/toolsw/folders/print/tmdxevm3503.html TI] (both are the same)<br />
* OMAP3 OMAP3430 based [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12013&contentId=28741 Software Development Platform (SDP)]<br />
* OMAP3 OMAP3530 based board from [http://www.magniel.com/omap3.html Magniel Inc.]<br />
* OMAP3 based [http://www.archos.com/products/imt/index.html?country=us&lang=en Archos 5, ARCHOS 5G and ARCHOS 7]<br />
* OMAP3 OMAP35x based [http://www.logicpd.com/products/som/ti/omap35x OMAP35x SOM-LV]<br />
* OMAP3 based [[Mini_Board|ICETEK-OMAP3530-Mini]], a Chinese BeagleBoard clone, with a [[MiniBoardFAQ|FAQ]]<br />
* OMAP3 based [http://www.ebv.com/en/products/categories/details/product/ebvbeagle-board EBVBeagle], a German BeagleBoard clone<br />
* OMAP3530 based [http://www.bsquare.com/products/hardware_solutions/3530.asp BSQUARE’s Dev Kit OMAP3530]<br />
* OMAP3530 based [http://beaversource.oregonstate.edu/projects/cspfl/wiki/CSPFL_Hardware OSWALD]<br />
* OMAP3 BeagleBoard-based [http://www.alwaysinnovating.com/touchbook/ Touch Book]<br />
* OMAP3530 based [http://www.analogue-micro.com/Cobra3530.html Cobra 3530 OMAP3530 module ]<br />
* OMAP3 based [http://www.kwikbyte.com/KBOC.html KwikByte 35XX System Module]<br />
* OMAP3530 based [[DevKit8000]], a Chinese BeagleBoard clone, slightly larger with additional peripherals (e.g. LCD/TSP, Ethernet and keyboard)<br />
* OMAP3530 based [http://www.igep-platform.com/ IGEPv2 Platform], a Spanish BeagleBoard clone, slightly larger, with additional peripherals like e.g. ethernet connector, wifi+bluetooth.<br />
* OMAP35x based [http://www.ultratronik.de/mmi-rechnerplattformen.html MMI4 from Ultratronik]<br />
* OMAP35x based [http://www.technexion.com/index.php/tao-3530 TAO-3530 from TechNexion]</div>Rpjdayhttps://elinux.org/index.php?title=BeagleBoard_Community&diff=14327BeagleBoard Community2009-10-20T22:39:57Z<p>Rpjday: Mention Robotcraft in London, ON.</p>
<hr />
<div>[[Category: Linux]]<br />
[[Category: OMAP]]<br />
[[Category:Development Boards]]<br />
[[Category: BeagleBoard]]<br />
This page collects information about [http://www.ti.com/ TI's] [http://www.arm.com/ ARM] based [http://focus.ti.com/general/docs/gencontent.tsp?contentId=36915&amp;DCMP=OMAP_Feb27_2008&amp;HQS=Other+PR+omap3503pr OMAP3] [http://beagleboard.org Beagle Board].<br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:#ffffcc; align:right; "><br />
'''NEWS:''' [http://www.tincantools.com/product.php?productid=16147&cat=0&page=1&featured Zippy] Expansion boards for the [[BeagleBoard]] are now available!<br />
</div><br />
<br />
<br />
=Events=<br />
* Each last Saturday of the month, next August 29, 2009: [[BeagleBoard/bangalore user meet|BeagleBoard Bangalore user meeting]] (Beagle Clinic India)<br />
* all over the world 2009: [http://www.ti.com/corp/docs/landing/techday09/index.shtml# TI Technology Days 2009]. <br />
* ongoing 2009: [[BeagleBoard/contest|Beagle Sponsored Project Program]] - add a cool project and get a free BeagleBoard to realize it!<br />
<br />
=Hardware=<br />
<br />
The Beagle Board is ''a low-cost, fan-less single-board computer based on TI's OMAP3 device family, with all of the expandability of today's desktop machines, but without the bulk, expense, or noise'' (from [http://beagleboard.org/ beagleboard.org]). It uses a TI [http://focus.ti.com/docs/prod/folders/print/omap3530.html OMAP3530] processor (ARM Cortex-A8 superscalar core ~600MHz paired with a TMS320C64x+ DSP ~430MHz and an Imagination SGX 2D/3D graphics processor). See [http://focus.ti.com/docs/prod/folders/print/omap3530.html#features OMAP3530 features] for more processor features. [[BeagleBoard#Availability|Price is USD 149]]. The design goal was to make it as simple and cheap as possible, e.g. not having a LCD added, but letting you connect all add-ons available as cheap external components. See [http://beagleboard.org/brief What is Beagle?] and [http://linuxdevices.com/news/NS5852740920.html LinuxDevices article] for more details.<br />
<br />
The videos [http://uk.youtube.com/watch?v=fL_XMieanSc Beagle Board Beginnings] and [http://uk.youtube.com/watch?v=FuVwh_VrIxk Beagle Board 3D, Angstrom, and Ubuntu] give you a good intro about what BeagleBoard is about and it's capabilities.<br />
<br />
==Components==<br />
<br />
{|border=0<br />
!Top view of rev B:<br />
!Top view of rev C:<br />
|-<br />
|[[Image:Bb revb top numbered.jpg]]<br />
|[[Image:Bb revc top numbered.jpg]]<br />
|-<br />
|}<br />
{|border=1<br />
!No.<br />
!Name<br />
!Comment<br />
|-<br />
|'''1'''<br />
|[http://www.ti.com/omap35x OMAP3530] processor + 256MB NAND<br />
<br />
+ 128MB DDR (rev B)<br />
<br />
+ 256MB DDR (rev C)<br />
|PoP: Package-On-Package implementation for Memory Stacking<br />
[http://www.micron.com/products/partdetail?part=MT29C2G24MAKLAJG-6%20IT 256MB NAND/128MB Mobile DDR SDRAM] available from [http://www.digikey.com/scripts/US/DKSUS.dll?Detail?name=557-1435-ND DigiKey]<br />
<br />
([http://www.micron.com/products/partdetail?part=MT29C4G48MAPLCJI-6%20IT 512MB NAND/256MB Mobile DDR SDRAM] available from [http://www.digikey.com/scripts/US/DKSUS.dll?Detail?name=557-1436-ND DigiKey])<br />
<br />
[http://www.micron.com/products/mcps/beagleboard Micron's multi chip packages (MCPs) for Beagle Board]<br />
|-<br />
|'''2'''<br />
|[http://focus.ti.com/docs/prod/folders/print/tfp410.html DVI chip (TFP410)]<br />
|<br />
|-<br />
|'''3'''<br />
|[[BeagleBoard#DVI|DVI-D]]<br />
|Connection via HDMI connector<br />
|-<br />
|'''4'''<br />
|[[BeagleBoard#JTAG|14-pin JTAG]]<br />
|1.8V only!<br />
|-<br />
|'''5'''<br />
|Expansion connector: I2C, I2S, SPI, MMC/SD<br />
|User must solder desired header into place<br />
|-<br />
|'''6'''<br />
|[[BeagleBoard#User_button|User button]] <br />
|Allows setting boot order.<br />
|-<br />
|'''7'''<br />
| Reset button<br />
|<br />
|-<br />
| '''8'''<br />
|[[BeagleBoard#EHCI|USB 2.0 EHCI HS]]<br />
|Rev A and B: not working, unpopulated<br />
<br />
Rev C: populated and working<br />
|-<br />
|'''9'''<br />
|SD/MMC+<br />
| SDHC cards are supported<br />
|-<br />
|'''10'''<br />
|[[BeagleBoard#RS232|RS-232 serial]]<br />
|<br />
|-<br />
|'''11'''<br />
|Alternate power <br />
|normally powered by USB (unmounted on REV Ax boards, see [[BeagleBoard#Errata|errata]])<br />
|-<br />
|'''12'''<br />
|[[BeagleBoard#OTG|USB 2.0 HS OTG]] <br />
|Mini-AB connector. Board can be powered from port. <br />
|-<br />
|'''13'''<br />
|Stereo In<br />
|<br />
|-<br />
|'''14'''<br />
|Stereo Out<br />
|<br />
|-<br />
|'''15'''<br />
|S-Video<br />
|<br />
|-<br />
|'''16'''<br />
|TWL4030 (Rev A thru C2 inc.)<br />
[http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] (Rev C3 onwards)<br />
|Audio CODEC, USB port, power-on reset and power management. The TWL4030 is pin-compatible with the [http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] chip and was used due to the very limited availability of the TPS65950 in early board revisions.<br />
|-<br />
|'''17'''<br />
|LCD<br />
|only rev C<br />
|-<br />
|'''18'''<br />
|USB power<br />
|<br />
|-<br />
|'''19'''<br />
|Host PHY<br />
|<br />
|-<br />
|'''20'''<br />
|32kHz<br />
|<br />
|-<br />
|'''21'''<br />
|12MHz<br />
|<br />
|-<br />
|'''22'''<br />
|RS232 XVCR<br />
|<br />
|-<br />
|'''23'''<br />
|PWR SW<br />
|<br />
|-<br />
|'''24'''<br />
|VBAT<br />
|<br />
|-<br />
|}<br />
<br />
* Board size: 3" x 3" (about 76.2 x 76.2 mm)<br />
* Weight: [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/beagleboard.png ~37g]<br />
* Currently 6 layer PCB; target: 4 layer<br />
<br />
'''Bottom of rev B:'''<br />
<br />
[[Image:Beagle_bottom.jpg]]<br />
<br />
See [http://www.flickr.com/photos/jadon/sets/72157606050144396/ jadonk's photostream] for some more detailed BeagleBoard pictures.<br />
<br />
==Manual==<br />
<br />
See [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard System Reference Manual (rev. C3.0)].<br />
<br />
==Schematic==<br />
<br />
Schematic of BeagleBoard Rev. C3 is available as part of [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard System Reference Manual (rev. C3.0)]. Rev C3 and previous are also available from [http://beagleboard.org/hardware/design BeagleBoard.org design page] including in PDF format. Please make sure that you ''read, understand and agree'' [http://groups.google.com/group/beagleboard/msg/ee3e1bc927551ffc Jason's mail] before using this.<br />
<br />
==Layout== <br />
<br />
Layout of BeagleBoard Rev. C3 is available as part of [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard System Reference Manual (rev. C3.0)]. Rev C3 and previous layouts are also available from the [http://beagleboard.org/hardware/design BeagleBoard.org design page]. Please make sure that you ''read, understand and agree'' [http://groups.google.com/group/beagleboard/msg/ee3e1bc927551ffc Jason's mail] before using this.<br />
<br />
==Errata==<br />
<br />
# ''Boards revision A only'': The DC power jack pinout is incorrect on the PCB layout. DC_5V and GND are switched on PCB layout. Normally, the power jack has DC_5V on the center pin and GND on the sleeve (see Figure 20 of [http://www.beagleboard.org/uploads/BBSRM_6.pdf Beagle HW manual]). But on revision Ax boards the PCB layout has GND on center and DC_5V on sleeve. For this reason it is currently removed. It will be back on the Rev B board. Workaround is to remove wire connecting the two power pins on revision Ax boards and use external [http://amethyst.openembedded.net/~koen/beagleboard/beagle-power-pads.jpg power supply with switched connector] (do not connect anything to the “?” terminal. USB power will be permanently disabled and the board can only be powered from the 5V.) See [http://www.flickr.com/photos/koenkooi/2512038988/ Koen's Beagleboard powermod picture] with short descriptions, too.<br />
# ''Boards revision < A5 only'': There is excess voltage drop across R6 which is used to measure the current consumption on the board. This needs to be a .1 ohm instead of a 1 ohm resistor (SMD 0805). All revision A5 boards have been updated to .1. You can also just solder in a jumper to J2 bypassing the current read point. This issue can cause issues with the USB host port as the voltage supplied to that port can be too low.<br />
# ''Boards revision A only'': User LEDs 0 and 1 are shorted on the layout preventing them from being controlled individually. You need to control both GPIO_149 and GPIO_150 to turn on or off both LEDs. This is fixed in the Rev B boards.<br />
# ''Boards revision < A5 only'': There is an issue where on some boards the 1.8V has excessive noise on it. This is the result of two incorrect parts L1 and L3 being installed on the board. The inductors that were initially installed in the switchers are 100uH and need to be 1uH. This change will require that the board be returned for update. To check for correct parts, have a look to bottom of BeagleBoard. L1 - L3 are the larger parts there. They all have to be labeled with "102" (== 1uH). If any of these three inductors are labeled with "104" (== 100uH) they are wrong and have to be exchanged.<br />
# ''Boards revision A and B'': USB HOST (EHCI) failures. See [http://code.google.com/p/beagleboard/issues/detail?id=15 issue 15] and [http://code.google.com/p/beagleboard/wiki/USBHostTestREPRODUCE USB host test reproduce]. This is a hardware defect. [http://www.beagleboard.org/irclogs/index.php?date=2008-05-29#T00:27:06 Most probably] Rev. B board does not have the EHCI USB connector mounted. Workaround: Use [[BeagleBoard#OTG|OTG port]] with something like [http://trisoft.de/pics/ZHost.JPG mini A to USB A adapter] instead.<br />
# ''Boards revision A and < B4'': Plugging in a USB OTG cable will prevent Beagle from booting (with git kernel), see [http://code.google.com/p/beagleboard/issues/detail?id=19 issue #19], too. This is due to missing filtering capacitor at USB OTG VBUS. When the kernel driver detects that a USB OTG cable is inserted it enables the charge pump to generate VBUS. With no filtering VBUS looks like any switching regulator output with no filtering -- a huge voltage spike when the switch is on, followed by a rapid decay to a low voltage until the next switch on period. The capacitor is there to store energy between the output switch ON and OFF time, the feedback loop in the regulator does sample the cap voltage. Fix is to piggy-back solder a 0603 2.2uF ceramic capacitor to D3, see [http://www.sakoman.net/omap3/beagle/vbus-mod-d3.jpg VBUS modification D3 picture]. Revision B4 boards and newer have this fix applied. Thanks to [http://groups.google.com/group/beagleboard/msg/eb789e15c99a673d Steve] for debugging this!<br />
# ''Boards revision A and < B5'': There is some issue with 32kHz clock depending on system configuration used to clock some OMAP3 peripherals. From this e.g. GPIOs, GPTIMERs, and USB on Beagle might be affected. See [http://code.google.com/p/beagleboard/issues/detail?id=22 Issue 22]. Symptom from this is that after booting Linux kernel serial console hangs after some time and no serial input/output is possible any more. There is one software workaround and one hardware fix for this: (A) Software workaround: Don't use 32kHz timer to clock Linux, instead use MPU timer. (B) Hardware workaround: Remove [http://www.flickr.com/photos/25691331@N04/2766671437/in/pool-beagleboard capacitor C70], which improves the 32kHz clock quality and avoids hang-up. Note: Revision A boards have capacitor C70 [http://www.flickr.com/photos/25691331@N04/2766671437/in/pool-beagleboard at the same location] as rev. B boards. Note: Board revision >= B5 removes capacitor C70.<br />
# ''Random boards, quite rare, revision < B6'': Some random boards and quite rare, show directly after purchasing broken serial communication from host PC to BeagleBoard. Symptom is that you get a new board, get serial output from BeagleBoard in terminal program, but can't type anything at U-Boot prompt (Note: Don't mix this with errata #7. With errata #7 you are able to use U-Boot normally, but Linux prompt input stops after some time). Most users don't have this issue, though. So, first double check your serial configuration ([[BeagleBoardFAQ#Serial_connection_.231|FAQ1]], [[BeagleBoardFAQ#Serial_connection_.232|FAQ2]] and [[BeagleBoardFAQ#Serial_connection_.233|FAQ3]]). Only if you are really, really sure that anything with your serial connection is fine, consider sending the board back doing a [http://beagleboard.org/support/rma RMA request]. This issue was resolved on revision B6 and later boards.<br />
<br />
For additional (software) issues and enhancement requests see [http://code.google.com/p/beagleboard/issues/list Beagle board open point list & issue tracker], too.<br />
<br />
Note: BeagleBoard revision B6 uses different package for U9/U11.<br />
<br />
==Clocking==<br />
<br />
Some [http://www.beagleboard.org/irclogs/index.php?date=2008-07-08#T21:12:23 notes] about (ARM processor) clock rates at BeagleBoard:<br />
<br />
* ARM Cortex-A8 processor is currently clocked at 500MHz<br />
* 500MHz is the default used because it is a balance of performance and longevity<br />
* For OMAP35x 600MHz is max recommended<br />
* At 600MHz OMAP35x is considered to be 'overdrive' and it does not have the same life expectancy<br />
* Higher than 600MHz is out of spec and no guarantee it will work at all (or not damage itself)<br />
* Also keep in mind that if you go higher you probably want to increase the core voltage. Some of this is mentioned in table 3-3 of the [http://focus.ti.com/lit/ds/symlink/omap3530.pdf OMAP3530 data sheet]. Some numbers:<br />
<br />
{| border="1"<br />
||'''ARM'''||'''DSP'''||'''core voltage'''<br />
|-<br />
|600 MHz||430 MHz||1.35V<br />
|-<br />
|550 MHz||400 MHz||1.27V<br />
|-<br />
|500 MHz||360 MHz||1.2V<br />
|}<br />
<br />
* For some OMAP3 clock, voltage and power management discussion see [http://focus.ti.com/lit/an/sprt495/sprt495.pdf OMAP3 power management white paper], too.<br />
* The OMAP3 chip on the Beagle lacks the efuses needed for using the SmartReflex technology, see [http://www.beagleboard.org/irclogs/index.php?date=2009-02-26#T10:44:24].<br />
* There is a thermal monitor in the core, you could use to scale frequency up and down<br />
<br />
To set CPU clock to 600 MHz, there are two options. Both '''do not''' adjust the voltage, so the system may become unstable:<br />
<br />
* The u-boot command "mw 48004940 0012580c" will temporarily set the CPU clock to 600 MHz (not permanent over reset).<br />
* To permanently set the CPU clock to 600 MHz, include the above command in the "bootcmd" variable or equivalent script.<br />
<br />
==Power management==<br />
<br />
* Latest Linux kernel power management development for TI OMAP SoCs is maintained in [http://git.kernel.org/?p=linux/kernel/git/khilman/linux-omap-pm.git;a=summary Kevin's linux-omap-pm git tree]<br />
* Russ' Beagle HW modifications resulted in [http://groups.google.com/group/beagleboard/browse_thread/thread/197a8ef6b46cc828 8mW sleep for Beagle Board]<br />
<br />
Without PM kernel, the Beagle [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/index.htm consumes ~1.5 watts idle, however it also uses the same amount under load] (see bottom of that page).<br />
<br />
==DLP Pico projector==<br />
<br />
Texas Instruments is developing a Pico Video Projector Kit (PVPK) as a peripheral for the Beagle Board. The stand alone pico projector will support VGA resolution (640 x 480), RGB 888 input through a DVI interface. The physical connector on the projector will be HDMI. See [http://groups.google.com/group/beagleboard/msg/10e218972380ee48 mailing list] and [http://www.youtube.com/watch?v=-tUBXD-KRp4 Beagle Running Angstrom (VGA) on DLP Pico Projector] for more details.<br />
<br />
It is available from [http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=296-23836-ND DigiKey] for $349.<br />
<br />
See [http://blog.makezine.com/archive/2009/01/tis_beagleboard_and_dlp_pico_projector.html?CMP=OTC-0D6B48984890 article from Make], too.<br />
<br />
DigiKey videos [http://www.youtube.com/watch?v=KBbCdnOj5vg part 1], [http://www.youtube.com/watch?v=zymOmduNWyI part 2] and [http://www.youtube.com/watch?v=Uj19Bi5NYeU part 3].<br />
<br />
==Interfacing to Raw LCD Panels==<br />
<br />
Currently on Rev A / B boards there is no direct access to the LCD lines before they enter the DVI framer. The REV C2 provides access to these lines. Several projects to interface an LCD to the beagleboard exist:<br />
<br />
* [[BeagleBoardRawLCD|interfacing to Raw LCD Panels]] article <br />
* [http://digitalsurveyinstruments.com/beagleperiphials/hdmi2parallel/doc/index.htm hdmi to parallel] workaround method<br />
* [http://www.harbaum.org/till/dvi2par/index.shtml dvi2par cheap diy HDMI to parallel converter]<br />
<br />
=Availability=<br />
<br />
BeagleBoards, currently Rev. C3 boards, are available from<br />
<br />
* [http://www.mouser.com/beagleboard Mouser]<br />
* [http://dkc1.digikey.com/us/mkt/beagleboard.html Digi-Key] with part number [http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=296-23428-ND 296-23428-ND].<br />
<br />
Note: For non-US Digi-Key free shipping orders:<br />
<br />
* Click the US flag on the top right corner of [http://dkc1.digikey.com/us/mkt/beagleboard.html Digi-Key] BeagleBoard page to come to the international page<br />
* Select ''Order Online'' for your country<br />
* Add quantity ''1'' and part number ''296-23428-ND''<br />
* Click ''Add to order''<br />
<br />
When ordering over 65 EUR / GBP 50 product (BeagleBoard is above), for Europe the price depends on the actual dollar to EUR/GBP rate. On nov 9, 2008 the price was EUR 124 with free shipping.<br />
<br />
Note: Some users report that they got some questions from DigiKey to be answered before board shipping is done.<br />
<br />
Note: While you get free shipping, most probably you have to pay tax e.g. ordering from Europe. Users report that they had to pay EUR ~34 - 44 VAT + importing taxes (depending on european country), resulting in EUR 137 - 147 ordering from Europe.<br />
<br />
Note: For European users, [http://www.ebv.com/fileadmin/products/Press_Print/Campaigns/2009/Product_Campaigns/Texas_Beagle_Board_englisch.pdf EBV Elektronik] sells its own blue version of the board for 179 EUR, which includes all useful accessories (DVI cable, serial cable, USB 2.0 Ethernet, USB hub, 2 GB MMC, power supply, Linux BSP).<br />
<br />
Note: German (Europe) users can order through German shops, too. For higher price, though. <br />
* [http://shop.embedded-projects.net/product_info.php/info/p159_BeagleBoard--OMAP-3-.html Embedded Projects Shop] sells BeagleBoard for EUR 199.00 + shipping.<br />
* [http://www.handheld-linux.com/wiki.php?page=Beagle%20Board Handheld-Linux]<br />
<br />
See below for ''hardware'' differences of the revisions. There are no ''software'' differences. <br />
<br />
==Revision A==<br />
<br />
There are some limited early revision Ax prototypes out there used by some hackers hanging around at #beagle channel on irc.freenode.net. See [[BeagleBoard#Errata|errata]] for limitations.<br />
<br />
==Revision B==<br />
<br />
Revision B is same as revision A, except<br />
* fix for shorted LEDs 0/1<br />
* fix for wrong power jack pinout<br />
* revision B6 uses different package for U9/U11<br />
Still has USB HOST (EHCI) failures. USB HOST (EHCI) connector isn't mounted.<br />
<br />
There are 4 revisions of the B board in the field: B4, B5, B6 and B7.<br />
<br />
The most notable difference is the use of the ES3.0 silicon in B6 and B7, other changes are not relevant to software developers.<br />
<br />
==Revision C2==<br />
Revision C2 is same as revision B7 except:<br />
* USB HOST (EHCI) is operational on revision C2, with standard USB A female connector.<br />
* Add interface for raw LCDs ([http://groups.google.com/group/beagleboard/msg/2e82c3ed6061d9d2 mockup])<br />
* It uses updated OMAP3 revision. BeagleBoard revisions B4+B5 uses OMAP3 ES 2.1 (engineering sample), while BeagleBoard revision C2 uses ES 3.0. OMAP3 ES 3.0 fixes minor issues:<br />
** updated ARM Cortex A8 silicon (r1p3) fixing a very rare [http://elinux.org/BeagleBoardFAQ#NEON_performance NEON issue] that has not been seen in real code<br />
* Power measurement feature<br />
* Uses [http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] OMAP power controller instead of TWL4030<br />
* Three additional PWM signals on the expansion connector added as pin mux options to existing pins ([http://groups.google.com/group/beagleboard/browse_thread/thread/d5872b7c6d74592c?hl=en# message])<br />
* Revision detection (to be able to identify C2 board from older boards by software, e.g. for different pin mux)<br />
* 256MB RAM ([http://groups.google.com/group/beagleboard/msg/3a38d0f21cefd6b1?hl=en message]) (and still 256MB NAND like rev B)<br />
<br />
Note: Revision C2 is the first production version, and all orders from from Digi-Key are shipped as Rev C2.<br />
<br />
==Revision C3==<br />
As revision C2 boards are [http://groups.google.com/group/beagleboard/msg/e41d3c97aa7d4951 sold out], revision C3 will ship now.<br />
<br />
Revision C3 is same as revision C2 [http://groups.google.com/group/beagleboard/msg/037318fbc44139d5 except]:<br />
* Optional RTC [http://parts.digikey.com/1/parts/1454-battery-lith-coin-3v-12-5mm-vert-vl-1220-vcn.html VL1220 series] backup battery<br />
* Mounting holes conected to ground<br />
* Slightly improved S-Video<br />
<br />
==Clones==<br />
===EBVBeagle===<br />
EBV build and sell their own BeagleBoard called [http://www.ebv.com/en/products/categories/details/product/ebvbeagle-board EBVBeagle], see e.g. [http://fl0rian.wordpress.com/2009/03/08/the-other-beagleboard/].<br />
It is actually a BeagleBoard revision C2 with green PCB boxed with some useful accessories. It comes as a quite complete starter kit with AC adapter, USB to Ethernet adapter, MMC card, USB hub and some cables.<br />
More information in [http://www.ebv.com/en/press-print/news-pr/details/news//press-releas-54.html official press release].<br />
<br />
===Mini Board===<br />
[[Mini_Board|ICETEK-OMAP3530-Mini]] is a chinese BeagleBoard clone.<br />
<br />
===DevKit 8000===<br />
[[DevKit8000]] is a Chinese BeagleBoard clone, slightly larger with additional peripherals (e.g. LCD/TSP, Ethernet and keyboard).<br />
<br />
===IGEPv2===<br />
[http://www.igep-platform.com/ IGEPv2 Platform] is a Spanish BeagleBoard clone, slightly larger, with additional peripherals like e.g. ethernet connector, wifi+bluetooth.<br />
<br />
==BeagleBoard-based products==<br />
* [http://www.alwaysinnovating.com/touchbook/ Always Innovating Touch Book], see [http://gigglehd.com/zbxe/hdforum/files/attach/images/899852/493/987/001/always_innovating_touch_book_0011.jpg]<br />
<br />
==Beagle case==<br />
<br />
*[http://specialcomp.com/beagleboard/ Special Computing]<br />
*[http://groups.google.com/group/beagleboard/browse_thread/thread/1c82316019633e51 SketchUp 3D model]<br />
<br />
=Adapters=<br />
<br />
For quite detailed information about all BeagleBoard peripherals see [http://www.beagleboard.org/uploads/BBSRM_6.pdf BeagleBoard HW Reference Manual (rev. B6)].<br />
<br />
See [[BeagleBoardPeripherals| BeagleBoard peripherals and adapters page]] for useful add ons for Beagle Board.<br />
<br />
==Expansion boards==<br />
* [[BeagleBoard Zippy]] expansion board is now available from [http://www.tincantools.com/product.php?productid=16147&cat=0&page=1&featured TinCanTools] for $79.00. basic specs are:<br />
** Battery Backed RTC<br />
** Second MMC slot<br />
** 10BaseT Ethernet<br />
** Second RS-232<br />
** +5V level I2C<br />
** AT24 EEPROM<br />
* [http://www.hy-research.com/beagle_expansion.html HY Research] has some expansion board basics and example.<br />
* [http://www.hervanta.com/stuff/Beaglebot#Expansion_Board Beaglebot] uses a custom extension board.<br />
* [http://beagleboard.org/leopard Leopard Board], a Beagle buddy web camera<br />
* There is also a VGA DB15 adapter board under development for the Rev C2 board. It should be available through a yet to be annnounced outlet.<br />
<br />
In Canada, check out [[http://robotcraft.ca RobotCraft]] in London, Ontario for expansion boards.<br />
<br />
==JTAG==<br />
<br />
Depending on your JTAG tool, you'd need a 14-pin to 20-pin adapter to use an ARM debugger. The 14-pin TI JTAG connector is used on BeagleBoard and is supported by a large number of JTAG emulation products.<br />
See [[BeagleBoardJTAG]] for more information.<br />
<br />
==RS232==<br />
<br />
The pinout on the beagle board is "AT/Everex" or "IDC10". You can buy [http://www.pccables.com/07120.htm IDC10 to DB9M adapters] in many places as they are commonly used for old PCs. You can also probably rip one of those cables out of any old desktop computer, where it's being used to support the serial port. Be careful, though -- some of those cables will have that tenth hole filled in so you'd have to snap off the extraneous pin on your BeagleBoard. Keep looking until you find a cable with all 10 holes open.<br />
<br />
Depending on your local configuration, you may need a [http://en.wikipedia.org/wiki/Null_modem 9-Pin NullModem] cable to connect BeagleBoard to serial port of your PC. From [http://www.tincantools.com/ TinCanTools] there is a [http://www.tincantools.com/product.php?productid=16144&cat=0&page=1&featured RS-232 DB-9 adapter] and [[media:flyswatter-ti-uart.pdf|adapter schematic]] available.<br />
<br />
==USB==<br />
There are two USB ports on the BeagleBoard, one with an EHCI controller and another with an OTG controller. As of Rev B4, the usb EHCI has been removed because of a hardware defect. Rev C will include USB EHCI working properly.<br />
<br />
===EHCI===<br />
The HS ([http://en.wikipedia.org/wiki/USB#USB_signalling HighSpeed]) USB [http://en.wikipedia.org/wiki/EHCI ECHI] controller on OMAP3 on BeagleBoard supports high-speed only. This simplifies the logic on the device. FS/LS (FullSpeed/LowSpeed) devices, such as keyboards and mice, require going through a high-speed USB 2.0 hub.<br />
<br />
According to the BeagleBoard System Reference Manual Rev C2, the EHCI port can source 5V at 500mA which is enough to power a hub and several low-power devices. However, this is only true if the BeagleBoard is powered through its power jack from a well-regulated 5V external power supply. If the BeagleBoard is powered through the OTG port, the EHCI port sources an "extremely limited" ampount of power (probably 100mA or so) so you'll need a "self-powered" USB 2.0 hub with its own external power supply. [Reference: Sections 5.6 and 7.2 of the BBSRM Rev C2.2.]<br />
<br />
===OTG===<br />
The HS USB OTG ([http://en.wikipedia.org/wiki/USB_On-The-Go OnTheGo]) controller on OMAP3 on the BeagleBoard does have support for all the USB 2.0 speeds (LS/FS/HS) and can act as either a host or a gadget/device. The HS USB OTG port is used as the default power input for the BeagleBoard. It is possible to boot the BeagleBoard using this USB port.<br />
<br />
When using the OTG port in host mode, you must power the BeagleBoard using the +5V power jack. If you connect a USB hub, you'll probably also need external power for the USB hub as well, because according to the Hardware Reference manual the BeagleBoard OTG port only sources 100 mA. This is enough to drive a single low-power device, but probably won't work with multiple devices.<br />
<br />
The Linux kernel needs to know you want to use the OTG port in host mode. I believe OTG ports are supposed to figure this out for themselves using the OTG Host Negotiation Protocol, but for now the Linux kernel may need some help. Specifically, Pin 4 (ID) of the OTG connector needs to be shorted to Pin 5 (GND) by using a [http://trisoft.de/pics/ZHost.JPG 5-pin USB Mini-A plug] which shorts these pins together in the plug. A [http://en.wikipedia.org/wiki/USB#USB_cables 5-pin USB Mini-B plug] leaves Pin 4 floating. Unfortunately, most USB Mini plugs are unmarked as to whether they are "A" or "B".<br />
<br />
You can find "mini A" adapters that have Pin 4 shorted and offer out a full-sized USB A Female jack [http://www.electronicproductonline.com/catalog/product_info.php?products_id=2043 here.]<br />
<table><br />
<tr><td><br />
Since the right cables might be hard to get, you simply can<br />
* short circuit the two pins encircled in red in the image to the right. You can do this by running a wire between the two pins. That at least allows easier undoing the change. Actually you could even have a small switch or so between 4 and 5.<br />
or<br />
* use a "mini B" cable (easier to get) and try the soldering of the two pins at the cable's connector. Depending on the cable it should be possible to open the plastic covering of mini-B port with a sharp-edged knife, then solder the two pins together, close the covering again and use some tape. This leaves the BeagleBoard unmodified.<br />
</td><td>[[Image:usb_otg.png]]</td></tr></table><br />
The Rev C BeagleBoard has a pair of pads labeled J6 on the back of the board under the OTG connector. Shorting these pads together with a wire or solder blob connects pins 4 and 5.<br />
See Figure 20 in the BeagleBoard System Reference Manual Rev C2.2.<br />
<br />
==DVI==<br />
<br />
DVI-D connection on BeagleBoard uses a [http://en.wikipedia.org/wiki/HDMI HDMI connector]:<br />
<br />
''HDMI is backward-compatible with the single-link Digital Visual Interface carrying digital video (DVI-D or DVI-I, but not DVI-A) used on modern computer monitors and graphics cards. This means that a DVI-D source can drive a HDMI monitor, or vice versa, by means of a suitable adapter or cable, but the audio and remote control features of HDMI will not be available.''<br />
<br />
BeagleBoard can be connected to a DVI monitor using HDMI female to DVI male cable.<br />
<br />
=BootRom=<br />
<br />
OMAP3 on BeagleBoard contains a BootRom. With this, BeagleBoard can boot without any code in permanent storage (NAND) or from peripherals. This is useful for first board bring up or if your BeagleBoard is bricked. For more information about BootRom booting see [http://www.ti.com/litv/pdf/sprufd6a SPRUFD6]. <br />
<br />
==User button==<br />
<br />
With user button on BeagleBoard you can configure boot order. Depending on this button, the order used to scan boot devices is changed. The boot order is (the first is the default boot source):<br />
<br />
* User button ''not'' pressed: NAND -> USB -> UART -> MMC<br />
* User button ''is'' pressed: USB -> UART -> MMC -> NAND<br />
<br />
Technically speaking, the user button configures pin SYS.BOOT[5]. See [http://focus-webapps.ti.com/general/docs/sitesearch/searchsite.tsp?selectedTopic=1653260327&numRecords=25&searchTerm=sprufd6&statusCode=null SPRUFD6] for more details.<br />
<br />
==Serial and USB boot==<br />
<br />
Historically, using OMAP3's boot ROM for serial and USB boot, there are several tools around. The newest are Nishanth' ''OMAP U-Boot Utils'', while there are still some older tools for serial boot and USB boot. It is also possible the access the [[u-boot environment variables in linux|u-boot env from linux]].<br />
<br />
===OMAP U-Boot Utils===<br />
<br />
Nishanth' [http://code.google.com/p/omap-u-boot-utils/ OMAP U-Boot Utils] provide<br />
<br />
* ''pserial'' - OMAP specific utility which downloads a file in response to ASIC ID over serial port.<br />
* ''pusb'' - OMAP specific utility which downloads a file in response to ASIC ID over USB connection.<br />
* ''ucmd'' - Send a command to U-Boot and wait till a specific match appears.<br />
* ''ukermit - Download a file from host without using kermit to U-Boot.<br />
<br />
See [http://nishanthmenon.blogspot.com/ Nishanth' blog] and [http://groups.google.com/group/beagleboard/browse_thread/thread/c5bfb1b8ed528b52# announce mail], too.<br />
<br />
===Serial boot===<br />
<br />
Besides Nishanth' ''OMAP U-Boot Utils'', to boot from USB or UART, you need a PC tool which talks with OMAP BootRom and speaks the correct protocol to download ARM target code to BeagleBoard. Currently there are two older (experimental) tools for UART boot:<br />
<br />
* [http://omapzoom.org/gf/project/omaptools/wiki PC Serial Boot perl script]<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/80ad3da0eb2aa555 Linux C utility] (not working yet with below target code)<br />
<br />
See [http://groups.google.com/group/beagleboard/browse_thread/thread/ae2c601ebe104a4 USB and serial download target code] for some example target code to be downloaded to OMAP3 on BeagleBoard.<br />
<br />
===USB boot===<br />
<br />
Besides Nishanth' ''OMAP U-Boot Utils'', for USB boot, there is currently one (experimental) tool to boot BeagleBoard over USB:<br />
<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/2b9e99886bb7a747 Linux C utility]<br />
<br />
See [http://groups.google.com/group/beagleboard/browse_thread/thread/ae2c601ebe104a4 USB and serial download target code] for some example target code to be downloaded to OMAP3 on BeagleBoard.<br />
<br />
See [[BeagleBoardRecovery#USB_recovery|USB recovery section]] how to use USB boot for board recovery.<br />
<br />
==NAND boot==<br />
<br />
See [[BeagleBoardNAND|NAND boot]] article.<br />
<br />
==MMC/SD boot==<br />
<br />
Currently, [http://code.google.com/p/beagleboard/wiki/BootingBeagleBoard boot the BeagleBoard with MMC/SD] is the only working way for first board bring up.<br />
<br />
===MMC/SD formatting===<br />
<br />
As described in above MMC/SD boot description, you have to ''create a bootable partition on MMC/SD Card''. This can be done using e.g. Windows or Linux tools.<br />
<br />
'''Windows'''<br />
<br />
See ''HP USB Disk Storage Format Tool 2.0.6'' description on [http://code.google.com/p/beagleboard/wiki/BootingBeagleBoard boot the BeagleBoard with MMC/SD] page.<br />
<br />
'''Linux'''<br />
<br />
Please see [http://wiki.omap.com/index.php?title=MMC_Boot_Format OMAP3 MMC Boot Format].<br />
<br />
===Dual partition card===<br />
<br />
You can [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat create a dual-partition card], booting from a FAT partition that can be read by the OMAP3 ROM bootloader and Windows, then utilizing an ext2 partition for the Linux root file system.<br />
<br />
To mount second ext2 partition as root file system (e.g. containing contents of [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode rd-ext2.bin]) use kernel boot arguments (e.g. in uboot using ''setenv bootargs''):<br />
<br />
console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootwait<br />
<br />
===U-Boot booting===<br />
<br />
If your MMC/SD card formatting is correct and you put [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode MLO, u-boot.bin and uImage] on the card you should get a u-boot prompt after booting beagle board. E.g. (output from terminal program with 115200 8N1):<br />
<br />
...40T.........XH.H.U�..Instruments X-Loader 1.41<br />
Starting on with MMC<br />
Reading boot sector<br />
<br />
717948 Bytes Read from MMC<br />
Starting OS Bootloader from MMC...<br />
<br />
U-Boot 1.1.4 (Apr 2 2008 - 13:42:13)<br />
<br />
OMAP3430-GP rev 2, CPU-OPP2 L3-133MHz<br />
TI 3430Beagle 2.0 Version + mDDR (Boot ONND)<br />
DRAM: 128 MB<br />
Flash: 0 kB<br />
NAND:256 MiB<br />
In: serial<br />
Out: serial<br />
Err: serial<br />
Audio Tone on Speakers ... complete<br />
OMAP3 beagleboard.org #<br />
<br />
Using this u-boot prompt, you now can start kernel uImage stored on MMC card manually:<br />
<br />
OMAP3 beagleboard.org # mmc init<br />
OMAP3 beagleboard.org # fatload mmc 0:1 0x80000000 uimage<br />
OMAP3 beagleboard.org # bootm<br />
<br />
If you like to make that happen every boot:<br />
<br />
OMAP3 beagleboard.org # set bootcmd 'mmc init ; fatload mmc 0:1 0x80000000 uimage ; bootm' ; saveenv<br />
<br />
=Code=<br />
<br />
Code and binaries for BeagleBoard are available at various places.<br />
<br />
==Binaries==<br />
<br />
BeagleBoard pre-built binaries and source code can be found at [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode Beagle source code] and [http://code.google.com/p/beagleboard/downloads/list downloads] page. These are the locations where "official" TI code is available. Please note that this code is mainly for reference and testing. More up to date binaries and code is available by community. Community took (parts) of TI reference code, improves and updates it. <br />
<br />
Actually, [http://www.angstrom-distribution.org/node/47 Koen's prebuilt Beagleboard demo images] are up to date binaries including e17 as window manager, the abiword word processor, the gnumeric spreadsheet application, a NEON accelerated mplayer and the popular NEON accelerated omapfbplay which gives you fullscreen 720p decoding. The [http://www.angstrom-distribution.org/demo/beagleboard www.angstrom-distribution.org/demo/beagleboard] directory should contain all the files you need:<br />
<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/u-boot.bin u-boot.bin]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/MLO MLO]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/uImage uImage]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/Angstrom-Beagleboard-demo-image-glibc-ipk-2009.X-test-20090104-beagleboard.rootfs.tar.bz2 rootfs]<br />
<br />
See the [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat beagle wiki] on how to setup your SD card to use all this goodness.<br />
<br />
==Source==<br />
<br />
Besides above binary and source images (TI's and communities one), for various parts of Beagle software stack there are community supported [http://git.or.cz/ git] repositories available. <br />
<br />
===X-Loader===<br />
<br />
Steve did some work to consolidate and update X-Loader from various sources and put it in a [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=x-load-omap3.git;a=summary X-Loader git repository]. Get it by<br />
<br />
git clone git://gitorious.org/x-load-omap3/mainline.git xloader<br />
cd xloader/<br />
<br />
Build:<br />
<br />
make distclean<br />
make omap3530beagle_config<br />
make<br />
<br />
Result will be a ~20k sized ''x-load.bin'' in main directory.<br />
<br />
===U-Boot===<br />
<br />
[http://www.denx.de/wiki/U-Boot/WebHome Mainline U-Boot] has good support for BeagleBoard. Get it by:<br />
<br />
git clone git://git.denx.de/u-boot.git u-boot-main<br />
cd u-boot-main<br />
git checkout --track -b omap3 origin/master<br />
<br />
Build (assuming Code Sourcery GCC 2007q3):<br />
<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- mrproper<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- omap3_beagle_config<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- <br />
<br />
Result will be a ~160k sized ''u-boot.bin'' in main directory.<br />
<br />
Note: Due to (patch and binary) size, BeagleBoard splash screen was removed from upstream version. If you want it back, use [http://groups.google.com/group/beagleboard/browse_thread/thread/3ad9b803a3418624 U-Boot v1 BeagleBoard splash screen patch].<br />
<br />
Note: For experimental U-Boot patches not ready for mainline yet, Steve's [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=u-boot-omap3.git;a=summary Beagle U-Boot git repository] is used to test them. Get it by:<br />
<br />
git clone git://gitorious.org/u-boot-omap3/mainline.git u-boot-omap3<br />
cd u-boot-omap3<br />
git checkout --track -b omap3-dev origin/omap3-dev<br />
<br />
===Linux kernel===<br />
<br />
[http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git;a=summary Git repository] of [http://muru.com/linux/omap/ OMAP Linux kernel] contains Beagle support. Get it by:<br />
<br />
git clone git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git linux-omap-2.6<br />
cd linux-omap-2.6<br />
<br />
Build:<br />
<br />
make distclean<br />
make omap3_beagle_defconfig<br />
make menuconfig # only needed if you want to change the default configuration<br />
make uImage<br />
<br />
The result will be a ''uImage'' in ''arch/arm/boot/'' directory.<br />
<br />
If you use the OE toolchain and want to build outside of the OE tree you should do<br />
ARCH=arm<br />
PATH=~/oe/tmp/cross/armv7a/bin:~/oe/tmp/staging/i686-linux/usr/bin:$PATH # add cross tools to your path<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- distclean<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- omap3_beagle_defconfig<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- menuconfig # only needed if you want to change the default configuration<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- uImage<br />
Note: the staging dir in the path is for mkimage. If you've build a kernel before with oe, the program should be there<br />
<br />
Note: If you are interested in kernel development have a look to [[BeagleBoardLinuxKernel|manually compiling BeagleBoard kernel]], too.<br />
<br />
===Experimental kernel patches and hacks===<br />
<br />
Some beagle developers maintain their own kernel experimental patches and hacks not ready for upstream:<br />
<br />
* [http://cgit.openembedded.net/cgit.cgi?url=openembedded/tree/packages/linux/linux-omap Koen's collection of kernels patches for OE] and the [http://cgit.openembedded.net/cgit.cgi?url=openembedded/tree/packages/linux/linux-omap_git.bb list of relevant patches]<br />
* [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=linux-omap-2.6.git;a=shortlog;h=refs/heads/test Steve's kernel tree], a clone of main OMAP git with additional patches, mainly beagle audio (ASOC) related.<br />
* [http://git.mansr.com/?p=linux-omap;a=summary Mans' kernel tree], a clone of main OMAP git with additional patches, mainly display & framebuffer related.<br />
* [http://www.bat.org/~tomba/linux-omap.html Tomi's kernel tree], a clone of main OMAP git with display sub-system patches, replacing the entire display driver with one that is the likely direction moving forward.<br />
<br />
=Compiler=<br />
<br />
TI OMAP3530 processor on BeagleBoard contains an ARM Cortex-A8 general purpose processor and a TMS320C64x+ DSP.<br />
<br />
==ARM==<br />
<br />
There is broad compiler support including gcc - please see [http://www.elinux.org/ARMCompilers ARM Compilers]<br />
<br />
==C64x+ DSP==<br />
<br />
A free C64x DSP compiler is available as [https://www-a.ti.com/downloads/sds_support/targetcontent/LinuxDspTools/download.html Linux hosted C6x Code Generation Tools] (TMS320C6000 C/C++ CODE GENERATION TOOLS 6.1.3 July 2008).<br />
<br />
Note: my.TI account required. You may create an account [https://my.ti.com here]<br />
<br />
Note: Old c6000 Linux compiler available on [ftp://ftp.ti.com/pub/cs/linux_cgt500.tar.gz TI FTP site]. Does NOT support c64x+ core in OMAP3 devices. Not recommended.<br />
<br />
You can also utilize the [http://focus.ti.com/dsp/docs/dspsupportaut.tsp?familyId=44&sectionId=3&tabId=416&toolTypeId=30 full-CCS free evaluation tools for 120 days], but they currently require purchase to upgrade to service release 9 to support full JTAG debugging with supported JTAG hardware.<br />
<br />
See [[BeagleBoard/DSP_Howto| BeagleBoard DSP howto]] for information about how to use the DSP.<br />
<br />
=Cortex A8 ARM features =<br />
<br />
ARM Cortex-A8 in OMAP3 is a high performance dual-issue applications processor which reaches a performance of 2.0 DMIPS/MHz (compared to ARM11 at 1.2 DMIPS/MHz). It is ARM v7 architecture, which is fully backwards compatible with application code for previous ARM processors.<br />
<br />
It includes a floating point unit (ARM VFPv3 architecture) and the ARM NEON SIMD instruction set.<br />
<br />
See [http://pandorawiki.org/Floating_Point_Optimization Floating Point Optimization] article for an intro into VFP-lite and NEON.<br />
<br />
===ARM NEON===<br />
<br />
NEON is a 64/128-bit wide SIMD vector extension for ARM, which has been architected to be an efficient C compiler target as well as being used from assembly language. It has 32x 64-bit registers (with a dual view as 16x 128-bit registers) which can hold the following datatypes:<br />
* 64-bit signed/unsigned<br />
* 32-bit signed/unsigned<br />
* 32-bit single precision floating point<br />
* 16-bit signed/unsigned<br />
* 8-bit signed/unsigned<br />
<br />
The key advantage of NEON is very high performance vector math processing, whilst being easy to program. It is the same thread of control as the ARM (but different instructions), and is supported by the same tools, debuggers and operating systems.<br />
<br />
The NEON instruction set is documented in ARM's [http://infocenter.arm.com/help/topic/com.arm.doc.dui0204i/DUI0204I_rvct_assembler_guide.pdf RealView Compilation Tools Assembler Guide].<br />
<br />
For NEON optimized libraries see [http://www.us.design-reuse.com/news/18429/aac-mp3-mpeg-4-h-264-fft-openmax-cortex-a8-neon-arm11-processors.html ARM Releases AAC, MP3, MPEG-4, H.264 and FFT OpenMAX DL Libraries, Highly Optimized for Cortex-A8/NEON and ARM11 Processors]. Note: Read the [http://www.arm.com/products/esd/openmax_v7libraries.html EULA].<br />
<br />
NEON is currently used by<br />
* ffmpeg - libavcodec used by mplayer, omapfbplay, and many other linux applications<br />
* libpixman - used by X.org and Mozilla & Webkit browsers to render text and graphics<br />
* Bluez - official Linux Bluetooth stack<br />
<br />
=== ARM Cortex Floating Point ===<br />
<br />
There are two types of instructions in the ARM v7 ISA that handle floating point:<br />
<br />
1) '''VFPv3''' Floating point instruction set (used for single/double precision scalar operations).<br />
These is used by gcc for C floating point operations on 'float' and 'double'<br />
<br />
2) '''NEON''' [http://www.arm.com/products/multimedia/neon/ NEON] vectorized single precision operations (2 values in a D-register, or 4 values in a Q-register)<br />
These can be use by gcc when -ftree-vectorize is enabled and -mfpu=neon is specified, and the code can be vectorized. In other cases the VFPv3 scalar ops will be used.<br />
<br />
ARM Cortex-A processors have separate floating point pipelines that handle these different instructions.<br />
<br />
On Cortex-A8, the designers' focus was on the NEON unit performance which can sustain 1 cycle/instr throughput (processing 2 single-precision values at once). The scalar VFPv3 FPU cannot achieve this level of performance (cycle timings are in the Cortex-A8 TRM download), but it is still a lot better than doing floating point using integer instructions.<br />
<br />
If you need the highest performance floating point on Cortex-A8, you need to use single precision and ensure the code uses the NEON vectorized instructions:<br />
* use gcc with -ftree-vectorize (possibly modify source code to make it vector friendly)<br />
* use NEON instrinsics (#include <arm_neon.h>, float32x2_t datatype and vmul_f32() etc)<br />
* use NEON asm directly<br />
<br />
Keep in mind that mixing NEON and ARM load/stores can sometimes stall significantly. See [http://hardwarebug.org/2008/12/31/arm-neon-memory-hazards/ this link] for more info.<br />
<br />
On Cortex-A9, there is a much higher performance floating point unit which can sustain 1 cycle/instr throughput, with low result latencies.<br />
<br />
=Board recovery=<br />
<br />
If you played e.g. with the contents of the [http://www.sakoman.net/omap3/flash%20procedure.txt NAND], it might happen that the Board doesn't boot any more (without pressing user button) due to broken NAND content. See [[BeagleBoardRecovery|BeagleBoard recovery]] article how to fix this.<br />
<br />
=Development environments=<br />
<br />
Instead of just using compiler + editor, you can use complete image create "development tool chains" which integrate compiler, build system, packaging tools etc. in one tool chain.<br />
<br />
==OpenEmbedded==<br />
<br />
For [http://www.openembedded.org/ OpenEmbedded] (OE), there are some hints how to [http://www.beagleboard.org/irclogs/index.php?date=2008-04-29#T13:06:25 start with OE for BeagleBoard]. See [[BeagleBoardAndOpenEmbeddedGit|BeagleBoard and OpenEmbedded Git]] and [http://wiki.openembedded.org/index.php/Getting_Started OpenEmbedded getting started] as well.<br />
<br />
In the OE getting started document, for BeagleBoard replace ''MACHINE = "om-gta01"'' by ''MACHINE = "beagleboard"''. After confirming ''bitbake nano'' works, try ''bitbake console-image''. The first time you run bitbake OE will download all the needed source and build the tool chain. This will take several hours. After all went fine, the output is in ''${OE_ROOT}/tmp/deploy/glibc/images/beagleboard''.<br />
<br />
Note: Koen has some BeagleBoard [http://amethyst.openembedded.net/~koen/index.php?path=beagleboard/ source and binary images] built with OE. There, ''Angstrom-console*'' images don't include an X server, you can still use a e.g. DVI-D screen with console, but you won't have a GUI. ''Angstrom-x11*'' images contain an X server.<!-- DEAD LINK: resulting in something like [http://scap.linuxtogo.org/files/fc987d4acb2c745fb7e19cf4dca8de70.png this].--><br />
<br />
===One very important note:=== <br />
<br />
It's important to have an X-Loader on your Beagleboard that uses the uImage on the SD Card that goes with Angstrom. The B6 Beagleboards do not appear to come with such an X-Loader. So you likely will have to upgrade the X-Loader. Here's what to do:<br />
* Make an SD Card with the [http://www.angstrom-distribution.org/demo/beagleboard Angstrom Demo files]. See the [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat Beagleboard Wiki Page] for more info on making the SD Card.<br />
* Put the SD Card in the Beagle, and boot up to the U-Boot Prompt.<br />
* Do the first six instructions in the [http://code.google.com/p/beagleboard/wiki/BeagleNANDFlashing Flashing Commands with U-Boot] section. <br />
* Reboot the Beagle to see that the new X-Loader is properly loaded.<br />
<br />
This will update the X-Loader to a newer version that will automatically load uImage from the SD Card when present -- rather than always using the uImage in the Beagleboard NAND.<br />
<br />
==Eclipse==<br />
The Eclipse [http://www.eclipse.org/cdt/ C Development Tools Project] provides a "fully functional C and C++ Integrated Development Environment (IDE) for the Eclipse platform". The Eclipse [http://www.eclipse.org/dsdp/tm/ DSDP Target Managment Project] provides a "Remote System Explorer" (RSE) plugin that simplifies downloading files to the BeagleBoard and editing files on the BeagleBoard within the Eclipse IDE. A Linux Target Agent is available as part of the [http://wiki.eclipse.org/DSDP/TM/TCF_FAQ Target Communications Framework (TCF) component]. Info on how RSE is used for e.g. Gumstix development is described in [http://groups.google.com/group/beagleboard/browse_thread/thread/509831f7c24cb79f# this post].<br />
<br />
==Android==<br />
[http://source.android.com Android] platform is a software stack for mobile devices including an operating system, middleware and key applications. Developers can create applications for the platform using the [http://code.google.com/android/ Android SDK]. Applications are written using the Java programming language and run on Dalvik, a custom virtual machine designed for embedded use which runs on top of a Linux kernel.<br />
<br />
There are several resources for Android on OMAP (Beagle) available:<br />
<br />
'''OMAPZOOM'''<br />
<br />
You can find Android port for OMAP ZOOM architecture on [https://omapzoom.org/gf/project/omapandroid/wiki/ OMAPZoom.org's wiki page on Android]. <br />
<br />
'''EMBINUX'''<br />
<br />
[http://beagleboard.org/project/android Beagleboard.org's Android project page] [http://groups.google.com/group/beagleboard/browse_thread/thread/7b422f113ce489b5 announced], the successful porting of Android on Beagle board by [http://embinux.com EMBINUX&trade;] Team. The [http://labs.embinux.org/git/ source code] and [http://www.embinux.com/download_beagle.php binaries] are available for download and review. <br />
<br />
Detailed instructions, for porting Android on Beagle Board, are available [http://labs.embinux.org/index.php/Main_Page here]. Current release supports input devices (keyboard/mouse), network and sound.<br />
<br />
You can [http://in.youtube.com/watch?v=nADn_vNVEKw watch Android booting] on Beagle Board.<br />
<br />
'''Android on OMAP wiki'''<br />
<br />
Wiki page for Andorid on OMAP can be found [[Android on OMAP|here]]<br />
<br />
'''0xdroid'''<br />
<br />
[http://gitorious.org/0xdroid 0xdroid], the enhanced version of Android on Beagleboard by [http://0xlab.org 0xlab]. The [http://gitorious.org/0xdroid source code], [http://downloads.0xlab.org/ pre-built binaries], and [http://code.google.com/p/0xdroid/issues/list issue tracker] are available for review and reference.<br />
<br />
The latest development supports OMAP audio, OMAP video overlays, ARM Cortex A8 NEON/Thumb2 performance optimizations, mouse cursor, hot-pluggable USB keyboard & mouse, user-friendly installer for system image, and various Android tweaks. Detailed instructions for 0xdroid are available through [http://gitorious.org/0xdroid/pages/Home gitorious wiki].<br />
<br />
You can [http://www.youtube.com/watch?v=v6wdTOHrwQw watch 0xdroid demo video] on Beagle Board.<br />
<br />
==Mamona==<br />
<br />
[http://dev.openbossa.org/trac/mamona/wiki Mamona] is an embedded Linux distribution for ARM EABI. The main goal of the Mamona Project is to offer a completely open source alternative/experimental platform for [http://maemo.org/ Maemo] using only free and open source components. Mamona [http://rsalveti.wordpress.com/2008/09/12/mamona-02-is-out 0.2] [http://franciscoalecrim.com/blog/2008/07/29/mamona-working-with-beagleboard/ supports] [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12013&contentId=28741 OMAP3430 Software Development Platform (SDP)], so you can also use it at Beagle (OMAP3530), too. Work is being done to officially support Beagle.<br />
<br />
==Ubuntu==<br />
<br />
See [[BeagleBoardUbuntu|Ubuntu (ARM)]] installation guide how to install Ubuntu (ARM) on BeagleBoard.<br />
<br />
==Debian ARM==<br />
<br />
See [[BeagleBoardDebian|Debian (ARM)]] installation guide how to install Debian (ARM) on BeagleBoard.<br />
<br />
==Handhelds Mojo ARM==<br />
<br />
See [[BeagleBoardHandheldsMojo|Handhelds Mojo (ARM)]] installation guide how to install Handhelds Mojo (ARM) port of Ubuntu on BeagleBoard. (The Mojo project is no longer active, see the Official Ubuntu ARM-port above instead)<br />
<br />
==Scratchbox==<br />
<br />
[http://www.scratchbox.org/ Scratchbox] is a cross-compilation toolkit designed to make embedded Linux application development easier. It also provides a full set of tools to integrate and cross-compile an entire Linux distribution. See [http://felipec.wordpress.com/2009/06/07/installing-scratchbox-1-and-2-for-arm-cross-compilation/ Felipe's Scratbox 1 and 2 intro], too.<br />
<br />
=Software hints=<br />
<br />
This section collects hints, tips & tricks for various software components running on beagle.<br />
<br />
==QEMU==<br />
<br />
[[Qemu|QEMU]] [http://vm-kernel.org/blog/2008/12/15/linux-is-running-on-qemu-omap3/ supports OMAP3] being able to boot a BeagleBoard Linux kernel.<br />
<br />
==Linux hints==<br />
<br />
See BeagleBoard [http://code.google.com/p/beagleboard/wiki/LinuxHints Google wiki Linux hints] page (for Linux WTBU (Wireless TI Business Unit) kernel [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode 2.6.22]). Currently featuring:<br />
<br />
* Switching video output between DVI-D and S-Video<br />
* Disabling framebuffer blanking<br />
* Listing USB devices<br />
<br />
==lmbench==<br />
<br />
Avik posted a detailed [http://groups.google.com/group/beagleboard/browse_thread/thread/c8b8f07ce61161a1 step-by-step procedure] to run [http://sourceforge.net/project/showfiles.php?group_id=14418 lmbench] on Beagle.<br />
<br />
==Mediaplayer (FFmpeg)==<br />
<br />
There is a thread how to get a [http://groups.google.com/group/beagleboard/browse_thread/thread/9b8025fc15120fd9# mediaplayer] with NEON optimization (FFmpeg) to run on Beagle. Includes compiler hints and patches.<br />
<br />
==Java==<br />
<br />
When using the [[BeagleBoard#OpenEmbedded|OpenEmbedded]]-based Angstrom image you have the following options of Java support:<br />
* JamVM + GNU Classpath (small vm, fast interpreter, J2SE-like)<br />
* Cacao + GNU Classpath (JIT compiler, J2SE-like)<br />
* PhoneME Advanced Foundation (JIT compiler, CDC)<br />
<br />
Java support in OpenEmbedded/Angstrom ([http://wiki.openembedded.net/index.php/Java details]) is provided voluntarily through [http://jalimo.org Jalimo].<br />
<br />
See a [http://groups.google.com/group/beagleboard/browse_thread/thread/102f627253919783# post at mailing list], too.<br />
<br />
OpenEmbedded users can add the [http://evolvis.org/scm/?group_id=11 Jalimo Subversion repository] as an overlay (instructions are in the repository). This will allow them to build OpenJDK packages. Inclusion of these recipes in mainline OpenEmbedded is planned but still ongoing.<br />
<br />
The recipes offer the following functionality:<br />
<br />
* OpenJDK + Hotspot (Zero port) (all J2SE functionality, including JVMTI, interpreted only)<br />
* OpenJDK + Cacaco (all J2SE library features, missing JVMTI, decent JIT compiler)<br />
* OpenJDK + Hotspot (Shark port) (not working yet)<br />
<br />
Some guy from ARM Ltd. is working on interpreter optimization in Zero for ARM.<br />
<br />
People interested in getting this stuff working better should contact people on:<br />
* [http://evolvis.org/mail/?group_id=11 Jalimo Mailinglist]<br />
* [http://mail.openjdk.java.net/mailman/listinfo/distro-pkg-dev Icedtea Mailinglist]<br />
<br />
You should also check out IcedTea's [http://iced-tea.org/wiki/FrequentlyAskedQuestions FAQ].<br />
<br />
=Graphics accelerator=<br />
<br />
OMAP3530 used on BeagleBoard contains a graphics accelerator (SGX) based on the SGX core from [http://www.imgtec.com/ Imagination Technologies]. [http://www.imgtec.com/powervr/powervr-graphics.asp PowerVR] SGX530 is a new generation of programmable PowerVR graphics and video IP cores. Only the kernel portions of Linux drivers will be open source. The PowerVR folks will provide binary user-space libraries. Using the EMail contact at [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12700&contentId=27458 TIs Mobile Gaming Developers page] there are Linux v2.6 OMAP3430 SDKs for OMAP3 Zoom and SDP supporting OpenGL ES v2.0, OpenGL ES v1.1 and OpenVG 1.0 available.<br />
<br />
Tutorial:<br />
* [http://code.google.com/p/beagleboard/wiki/HowtoUseSGXunderAngstrom How to use SGX with Angstrom in OE]<br />
<br />
Some videos:<br />
<br />
* [http://www.youtube.com/watch?v=3ToYOgP9f9U SGX on Beagle working with Linux 2.6.27]<br />
* [http://www.youtube.com/watch?v=24TXpqa9jG0&feature=related OpenGL ES 2.0 shader effects on OMAP3]<br />
* [http://www.youtube.com/watch?v=-UFUbqoNgs8&feature=related 3D User Interface on OMAP3 Platform]<br />
* [http://www.youtube.com/watch?v=8KcNgeUriqA 3D Mapping using OpenGL ES 2.0 on OMAP3 Platform]<br />
* [http://www.youtube.com/watch?v=7D3V6BUpGLE Video blending in hardware]<br />
* [http://www.hitlabnz.org/wiki/EmbeddedAR An Augmented Reality application combining ARToolkit and OpenGL ES 2.0]<br />
<br />
=Beginners guide=<br />
<br />
You just got your new BeagleBoard, and now? See [[BeagleBoardBeginners|beginners guides]].<br />
<br />
=FAQ=<br />
<br />
For BeagleBoard frequently asked questions (FAQ) see [[BeagleBoardFAQ|community FAQ]] and "official" [http://beagleboard.org/support/faq BeagleBoard.org FAQ].<br />
<br />
=Links=<br />
==Home page==<br />
[http://beagleboard.org/ beagleboard.org] (beagle board home)<br />
* Using [http://www.google.de/ Google] you can search beagleboard.org (including [http://www.beagleboard.org/irclogs/ IRC logs]) using ''site:beagleboard.org <search term>''<br />
<br />
==Manuals and resources==<br />
* [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard HW Reference Manual (rev. C2)]<br />
* [http://beagle.s3.amazonaws.com/BBSRM_7_2_0.pdf BeagleBoard HW Reference Manual (rev. B7)]<br />
* [http://www.beagleboard.org/uploads/BBSRM_6.pdf BeagleBoard HW Reference Manual (rev. B6)]<br />
* [http://www.beagleboard.org/uploads/BBSRM_B5.pdf BeagleBoard HW Reference Manual (rev. B5)]<br />
* [http://www.beagleboard.org/uploads/Beagle_HRM_B4.pdf BeagleBoard HW Reference Manual (rev. B4)]<br />
* [http://www.beagleboard.org/uploads/Beagle_HW_Reference_Manual_A_5.pdf BeagleBoard HW Reference Manual (rev. A5)]<br />
* [http://focus.ti.com/docs/prod/folders/print/omap3530.html OMAP3530] processor description and manuals<br />
* [http://code.google.com/p/beagleboard/ Beagle at code.google.com]<br />
* [http://focus.ti.com/dsp/docs/dspsupporttechdocs.tsp?sectionId=3&tabId=409&familyId=1526&documentCategoryId=4&techDoc=4 OMAP3530/25 CBB BSDL Model]<br />
* [http://www.micron.com/products/mcps/beagleboard Micron's multi chip packages (MCPs) for Beagle Board]<br />
* [http://beagleboard.org/resources Beagleboard resources page with hw docs]<br />
* Some [http://www.rasterman.com/ performance comparison] of BeagleBoard Rev. B with some other ARM/PC systems.<br />
* OMAP3 pinmux [http://www.hy-research.com/omap3_pinmux.html setup]<br />
* [http://elinux.org/BeagleBoardPinMux OMAP3 eLinux pinmux page]<br />
<br />
==Contact and communication==<br />
* [http://groups.google.com/group/beagleboard Beagle board discussion list]<br />
* [http://code.google.com/p/beagleboard/issues/list Beagle board open point list & issue tracker]<br />
* [http://beagleboard.blogspot.com/ Beagle board blog]<br />
* [http://feeds.feedburner.com/BeagleBoard Beagle board RSS feed]<br />
* Chat:<br />
** [http://beagleboard.org/chat Beagle Board chat]<br />
** IRC: #beagle channel on irc.freenode.net<br />
** [http://www.beagleboard.org/irclogs/index.php IRC archive]<br />
* [http://www.beaglesride.org/ Beagles Ride], a site about building a community around the BeagleBoard focused on in vehicle applications<br />
* [http://www.beagleboard.de/ German Beagle Board Forum and Wiki]<br />
<br />
==TI resources==<br />
* [http://opensource.ti.com/ TI open source page]<br />
* [https://community.ti.com/ TI E2E (Engineer-to-Engineer) Community]<br />
* [http://marc.info/?l=linux-omap&m=120761100810527&w=2 DSP Bridge driver for OMAP3 platform]<br />
* [http://lists.arm.linux.org.uk/lurker/message/20080701.142512.5eeff26b.en.html ARMv7 Oprofile support]<br />
* [http://focus.ti.com/pdfs/wtbu/swpu114g.pdf OMAP34xx Wireless Technical Reference Manual] (swpu114g.pdf, 47 MB)<br />
* [http://amethyst.openembedded.net/~koen/index.php?sort=date&order=desc&path=beagleboard/ Koen's (OpenEmbeded) BeagleBoard source and binaries]<br />
* [http://del.icio.us/tag/beagleboard+peripheral+verified Verified peripherals for BeagleBoard]<br />
* [http://www.celinux.org/elc08_presentations/TI_OMAP3430_Linux_PM_reference.ppt OMAP3430 Linux Power Management presentation]<br />
==Articles==<br />
* [http://linuxdevices.com/news/NS5852740920.html LinuxDevices article about Beagle]<br />
* [http://www.linuxdevices.com/news/NS8479495970.html LinuxDevices article about Digi-Key launch]<br />
* [http://www.linuxdevices.com/news/NS5682470737.html LinuxDevices article about Beagle Rev C, Beagle MID from HY Research, Touch Book and Sponsored Projects Contest]<br />
<br />
==Books==<br />
* [[OMAP_and_DaVinci_Software_for_Dummies|OMAP and DaVinci Software for Dummies]]<br />
==Past Beagle events==<br />
* TIDC, February 26-28, 2008: [http://www.beagleboard.org/uploads/tidc_opensource.pdf Slides from TI developer conference (TIDC) open source session], covering also beagle board<br />
* [http://www.lugradio.org/live/USA2008/ LUG RADIO Live USA 2008, April 12-13, 2008]: [http://www.beagleboard.org/uploads/lugradio_20080411.PPT TI/Beagle Presentation] and [http://forums.lugradio.org/viewtopic.php?f=4&t=4094&st=0&sk=t&sd=a&sid=d69cc807569ab41e33f93af698c536b8&start=15#p41549 video]<br />
* LinuxTag, May 28-31, 2008: [http://www.flickr.com/photos/jadon/2551439955/in/pool-beagleboard picture 1] and [http://www.flickr.com/photos/jadon/2535692865/in/pool-beagleboard picture 2]<br />
* [http://lugradio.org/live/UK2008/travel LugRadio Live UK 2008], July 19 - July 20, 2008: [http://www.flickr.com/photos/koenkooi/tags/lugradiolive/ Koen's pictures] showing e.g. [http://www.bigbuckbunny.org/index.php/download/ Big Buck BUNNY] playing at Beagle. [http://linuxoutlaws.com/podcast/48 Interview with Linux Outlaws (52:06)] and the [http://www.youtube.com/watch?v=m9xVbntl-DY video]<br />
* [http://osscamp.in/index.php/OSScamp_Bengaluru_Mobile_2008 OSScamp Bengaluru Mobile 2008], July 19, 2008<br />
* [http://www.linuxworldexpo.com LinuxWorld Conference & Expo], August 4 - August 7, 2008: [http://www.flickr.com/photos/jadon/sets/72157606586084668/ pictures with living beagle] and from [http://www.flickr.com/photos/linuxjournal/2738316951/in/set-72157606634486338/ Linux Journal's photostream]<br />
* BeagleBoard.org event at Jillian's during LinuxWorldExpo, August 5, 2008, 5:30-7:30 pm<br />
* [http://barcamp.pbwiki.com/BarCampHouston3 BarCamp Houston 3], August 9, 2008, 9:00 A.M.: [http://www.flickr.com/photos/jadon/sets/72157606656532041/ pictures]<br />
* NIT Suratkal, India [http://www.nitkieee.com/site/sp-connect2/schedule IEEE SP Connect 2], August 30, 20008<br />
* [http://barcampbangalore.org/wiki/BCB7_Demos BarCamp Bangalore], India, September 13, 2008<br />
* [http://www.ibc.org/ IBC 2008], September 11 - September 16, 2008: [http://www.flickr.com/photos/koenkooi/tags/ibc2008/ pictures]<br />
* Free Open "Embedded Linux" Training for Students in India, [http://code.google.com/p/beagleboard/wiki/Trainings?updated=Trainings&ts=1220250913 beagleboard.org Trainings in India], September 20, 2008: [http://www.youtube.com/watch?v=A6FLdmgQlb4&feature=PlayList&p=1BAB6EE9CC7285AD&index=0 video], [http://www.flickr.com/photos/25691331@N04/sets/72157607419766102/ photos] and [http://lakshmansrikanth.blogspot.com/2008/09/linux-embedded.html blog]<br />
* [http://www.embedded.co.uk/ Embedded Systems Show 2008], Birmingham, UK, October 1-2, 2008<br />
* [http://www.mvista.com/vision/ MontaVista Vision 2008 Embedded Linux Developers Conference], San Francisco, California, October 1-3, 2008 : [http://www.mvista.com/download/topic.php?t=18 Video and presentation overview], [http://www.mvista.com/download/fetchdoc.php?docid=323 William Mills' presentation], [http://www.mvista.com/download/fetchdoc.php?docid=333 Jason Kridner's presentation]<br />
* [http://www.rtcgroup.com/arm/2008/ ARM Developers' Conference], Santa Clara Convention Center, Santa Clara, Calif., USA, October 7-9, 2008<br />
* [http://www.cmp-egevents.com/web/escb Embedded Systems Conference Boston 2008], Hynes Convention Center, Boston, USA, October 26 - October 30, 2008: [http://beagleboard.org/demo/esc Resources]<br />
* [[BeagleBoard/contest|BeagleBoard contest]] #1: Create a cool BeagleBoard application and win a Rev C1! Closed, ran until January 9, 2009<br />
* [http://www.silica.com/events/seminars/seminar-overview/ti-omp-workshop.html OMAP35x training by Silica], January 21, 2009, Cambridge, UK, ARM Holdings Lecture Theatre. [[RichardB's notes from the seminar]]<br />
* [[BeagleBoard/contest|BeagleBoard contest #2]], unitl February 27, 2009: : Create a cool BeagleBoard application and win a Rev C2!<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/b15cf8a5797c73a2 Silica - Free TI - ARM OMAP Workshop], Brussels, Europe, March 31st 2009<br />
* SILICA's [http://www.silica.com/events/seminars/seminar-overview/ti-omap-piccolo-poing.html Texas Instruments 2-in-1 Seminar: OMAP & Piccolo], May 13th 2009: Poing (Munich) - Germany<br />
* 24th until 27th June 2009: [http://www.linuxtag.org/2009/en.html Linux Tag Germany] with [http://groups.google.com/group/beagleboard/msg/27fefef5f1d2ef73 TI booth] and [http://www.linuxtag.org/2009/en/program/freies-vortragsprogramm/all-events/details.html?talkid=183 Beagle presentation]<br />
* until 31st July 2009: [http://www.cranessoftware.com/services/training/beagledesigncontest.html BeagleBoard Design Contest INDIA Edition] ([http://beagleboard.blogspot.com/2009/04/beagleboard-design-contest-india.html blog entry])<br />
* TI Technology Day Dallas, Tex. on June 16 will held a [http://www.linuxdevices.com/news/NS5682470737.html BeagleBoard users group meeting] (see section ''Availability'').<br />
<br />
==Beagle wiki pages==<br />
* [[BeagleBoardBeginners|BeagleBoard beginners guides]]<br />
* [[BeagleBoardAndOpenEmbeddedGit|BeagleBoard and OpenEmbedded Git]] installation guide and [[BeagleBoardOpenEmbeddedDevelopment|OpenEmbedded development]]<br />
* [[BeagleBoardDebian|Debian on BeagleBoard]] usage guide<br />
* [[BeagleBoardHandheldsMojo|Handhelds Mojo (ARM) on BeagleBoard]] usage guide (formerly known as Ubuntu (ARM))<br />
* [[BeagleBoardUbuntu|Ubuntu (ARM EABI) distribution at BeagleBoard]]<br />
* [[BeagleBoardRecovery|BeagleBoard recovery]] about fixing boards not booting any more because of broken NAND content<br />
* [[BeagleBoardJTAG|BeagleBoard JTAG]] and [[OMAP3530_ICEPICK|OMAP3530_ICEPICK]] about JTAG on BeagleBoard<br />
* [[BeagleBoardOpenOCD|BeagleBoard OpenOCD]] has infos about status and usage of open source JTAG software OpenOCD with Beagle<br />
* [[BeagleBoardNAND|BeagleBoard NAND boot]] about how to boot BeagleBoard from NAND flash<br />
* [[BeagleBoardPeripherals|BeagleBoard peripherals and adapters page]] about useful BeagleBoard add ons.<br />
* [[Mount_BeagleBoard_Root_Filesystem_over_NFS_via_USB|Mount BeagleBoard root file system over NFS via USB]]<br />
* [[BeagleBoardFAQ|BeagleBoard FAQ]]<br />
* [[BeagleBoardSugar|Sugar on BeagleBoard]]<br />
* [[BeagleBoard/DSP_Howto|BeagleBoard DSP howto]]<br />
* [[BeagleBoardRawLCD|Interfacing BeagleBoard to Raw LCD]]<br />
* [[BeagleBoard/gst-openmax|BeagleBoard OpenMAX usage]]<br />
* [[BeagleBoard/video|BeagleBoard video]]<br />
* [[BeagleBoardOpenCV|Using OpenCV computer vision library with BeagleBoard]]<br />
* [[BeagleBoard/James|James]]: Just A Miniature Entertainment System<br />
* [[U-boot_musb_gadget_support|U-boot musb gadget support]]<br />
* [[BeagleBoard-JP|Japanese translation of this Beagle page]]<br />
* [[BeagleEPD|BeagleBoard E-Ink Platform Driver]]<br />
* [[BeagleBoardFedora|Random hacking notes for getting Fedora 10 to kinda work with the BeagleBoard]]<br />
* BeagleBoard specific [[BeagleBoard/GSoC|Google Summer of Code 2009]] page, [[BeagleBoard/Ideas-2009|GSoC project ideas]] and [[BeagleBoard/GSoC/Application|GSoc application]]<br />
* [[BeagleBoard/Poky|Poky]] for BeagleBoard<br />
* [[Xenarc_USB_touchscreen_for_Beagleboard/OMAP3_EVM|Xenarc USB touchscreen for Beagleboard/OMAP3 EVM]]<br />
* [[BeagleBoard/BugAdapter|BeagleBoard Bug Adapter board]]<br />
* [[BeagleBoardDebianWifiInstallInfo|BeagleBoard Debian WiFi install info]]<br />
* [[BeagleBoard/DSP_Clarification|Info about the various Linux DSP systems for OMAP chips]]<br />
* [[BeagleBoardPinMux|BeagleBoard PinMux]]<br />
* [[BeagleBoardLinuxKernel|BeagleBoard Linux kernel manual compile]]<br />
* [http://www.hervanta.com/stuff/Beaglebot Beaglebot]: build an experimental robotics project with Beagle<br />
* [http://code.google.com/p/beagleboard/w/list code.google.com BeagleBoard wiki]<br />
* '''[[BeagleBoard/contest|BeagleBoard contest]]'''<br />
* [http://en.wikipedia.org/wiki/Beagle_Board Wikipedia BeagleBoard page]<br />
* [http://labs.embinux.org/index.php/Android_Porting_Guide_to_Beagle_Board Android port for BeagleBoard]: Instructions for porting Android on BeagleBoard<br />
* [[BeagleBoard/bangalore_user_meet |BeagleBoard Bangalore User Meet]]<br />
* [[BeagleBoardEclipse|Using Eclipse with Beagle]] (for JTAG debugging)<br />
* [[Zoom2Beginners|Zoom2 for Beginners]]<br />
* [http://wh1t3s.com/2009/05/11/beagleboard-as-usb-mass-storage-device-via-usb-otg/ BeagleBoard as USB Mass Storage Device via USB OTG]<br />
* [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/index.htm BeagleBoard as solar powered computer]<br />
* [http://blog.makezine.com/archive/2009/02/blinking_leds_with_the_beagle_board.html Blinking LEDs with the Beagle Board] from Make:Online<br />
* [http://www.crashcourse.ca/wiki/index.php/BeagleBoard Robert's private Beagle wiki] (please don't add anything there, do it here. It will help to avoid scattering. Thanks!)<br />
* [http://felipec.wordpress.com/2009/03/26/omap3-public-dsp-binaries-now-work/ Felipe's blog] about D1 MPEG-4 decoding using less than 15% of CPU with help of DSP<br />
* [http://www.syspire.de/node/3 Embedded Mediacenter] based on BeagleBoard (German)<br />
* [http://pandorawiki.org/Floating_Point_Optimization Floating Point Optimization] with VFP-lite and NEON intro<br />
* [http://particolarmente-urgentissimo.blogspot.com/2009/09/beagleboard-setting-date-via-gps.html Beagleboard setting date via GPS]<br />
<br />
==Beagle photos==<br />
* [http://www.flickr.com/groups/beagleboard/pool/ Beagle board pictures at flickr]<br />
* [http://www.flickr.com/photos/32615155@N00/2439256116/ Beagle board and USRP]<br />
* [http://www.flickr.com/photos/nishanthmenon/2438406603/ Modify SDP3430 QUART cable for beagle]<br />
* [http://www.flickr.com/photos/koenkooi/2695061759/ MythTV on Beagle]<br />
==Beagle videos==<br />
* [http://uk.youtube.com/watch?v=fL_XMieanSc Beagle Board Beginnings]<br />
* [http://www.youtube.com/watch?v=cXr-D1wROfQ Beagleboard in the Living Room]<br />
* [http://uk.youtube.com/watch?v=FuVwh_VrIxk Beagle Board 3D, Angstrom, and Ubuntu]<br />
* [http://uk.youtube.com/watch?v=TUYOjRGYeYU testsprite with beagleboard]<br />
* [http://uk.youtube.com/watch?v=9Z4ZTovtFKk Beagleboard LED demo]<br />
* [http://uk.youtube.com/watch?v=R33dzREZGEk LCD2USB attached to a beagleboard]<br />
* [http://www.youtube.com/watch?v=7D3V6BUpGLE Video blending in hardware]<br />
* [http://www.youtube.com/watch?v=-tUBXD-KRp4 Beagle Running Angstrom (VGA) on DLP Pico Projector]<br />
* [http://www.youtube.com/watch?v=3ToYOgP9f9U SGX on Beagle working with Linux 2.6.27]<br />
* Not on Beagle OMAP3530: [http://youtube.com/watch?v=5i9cWOK1spw Ubuntu 7.04 on on OMAP3430 SDP]<br />
* [http://in.youtube.com/watch?v=nADn_vNVEKw Beagle Board booting Android]<br />
<br />
==Beagle manufacturing==<br />
* [http://www.youtube.com/watch?v=C-CwkjT9z_0&feature=related Beagle Solder Paste Screening]<br />
* [http://www.youtube.com/watch?v=9LLjDovIG2M&feature=related Beagle Assembly Inspection]<br />
* [http://www.youtube.com/watch?v=sbOZfBnoVnM&feature=related Beagle Functional Test]<br />
* [http://www.youtube.com/watch?v=cvDtXmJJcEI&feature=related Beagle Reflow]<br />
* [http://www.youtube.com/watch?v=W2o4NTASxN0&feature=related Beagle Board Assembly at Circuitco]<br />
==Fun==<br />
* Enjoy [http://www.beaglegame.com/ BeagleGame]<br />
<br />
=Other OMAP boards=<br />
<br />
* OMAP1 OMAP5912 (ARM9 + C5x DSP) based [[OSK|OSK]] board.<br />
* OMAP3 OMAP3430 based [https://gforge.ti.com/gf/project/omapzoom/wiki/?pagename=HardwareInformation Zoom MDK], which has been superseded by the [http://www.logicpd.com/products/development-kits/texas-instruments-zoom%E2%84%A2-omap34x-ii-mdp Zoom II], and other [http://www.logicpd.com/products LogicPD kits].<br />
* OMAP3 OMAP3530 based [http://www.openpandora.org/ Pandora]<br />
* OMAP3 OMAP3503 based [http://www.gumstix.net/Overo/cat/Overo/115.html Gumstix Overo]<br />
* OMAP3 OMAP35x based EVM from [http://mistralsolutions.com/products/omap_3evm.php Mistral] and [http://focus.ti.com/docs/toolsw/folders/print/tmdxevm3503.html TI] (both are the same)<br />
* OMAP3 OMAP3430 based [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12013&contentId=28741 Software Development Platform (SDP)]<br />
* OMAP3 OMAP3530 based board from [http://www.magniel.com/omap3.html Magniel Inc.]<br />
* OMAP3 based [http://www.archos.com/products/imt/index.html?country=us&lang=en Archos 5, ARCHOS 5G and ARCHOS 7]<br />
* OMAP3 OMAP35x based [http://www.logicpd.com/products/som/ti/omap35x OMAP35x SOM-LV]<br />
* OMAP3 based [[Mini_Board|ICETEK-OMAP3530-Mini]], a Chinese BeagleBoard clone, with a [[MiniBoardFAQ|FAQ]]<br />
* OMAP3 based [http://www.ebv.com/en/products/categories/details/product/ebvbeagle-board EBVBeagle], a German BeagleBoard clone<br />
* OMAP3530 based [http://www.bsquare.com/products/hardware_solutions/3530.asp BSQUARE’s Dev Kit OMAP3530]<br />
* OMAP3530 based [http://beaversource.oregonstate.edu/projects/cspfl/wiki/CSPFL_Hardware OSWALD]<br />
* OMAP3 BeagleBoard-based [http://www.alwaysinnovating.com/touchbook/ Touch Book]<br />
* OMAP3530 based [http://www.analogue-micro.com/Cobra3530.html Cobra 3530 OMAP3530 module ]<br />
* OMAP3 based [http://www.kwikbyte.com/KBOC.html KwikByte 35XX System Module]<br />
* OMAP3530 based [[DevKit8000]], a Chinese BeagleBoard clone, slightly larger with additional peripherals (e.g. LCD/TSP, Ethernet and keyboard)<br />
* OMAP3530 based [http://www.igep-platform.com/ IGEPv2 Platform], a Spanish BeagleBoard clone, slightly larger, with additional peripherals like e.g. ethernet connector, wifi+bluetooth.<br />
* OMAP35x based [http://www.ultratronik.de/mmi-rechnerplattformen.html MMI4 from Ultratronik]<br />
* OMAP35x based [http://www.technexion.com/index.php/tao-3530 TAO-3530 from TechNexion]</div>Rpjdayhttps://elinux.org/index.php?title=BeagleBoard_Community&diff=14326BeagleBoard Community2009-10-20T22:31:49Z<p>Rpjday: Correct the actual name and version of the SRM.</p>
<hr />
<div>[[Category: Linux]]<br />
[[Category: OMAP]]<br />
[[Category:Development Boards]]<br />
[[Category: BeagleBoard]]<br />
This page collects information about [http://www.ti.com/ TI's] [http://www.arm.com/ ARM] based [http://focus.ti.com/general/docs/gencontent.tsp?contentId=36915&amp;DCMP=OMAP_Feb27_2008&amp;HQS=Other+PR+omap3503pr OMAP3] [http://beagleboard.org Beagle Board].<br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:#ffffcc; align:right; "><br />
'''NEWS:''' [http://www.tincantools.com/product.php?productid=16147&cat=0&page=1&featured Zippy] Expansion boards for the [[BeagleBoard]] are now available!<br />
</div><br />
<br />
<br />
=Events=<br />
* Each last Saturday of the month, next August 29, 2009: [[BeagleBoard/bangalore user meet|BeagleBoard Bangalore user meeting]] (Beagle Clinic India)<br />
* all over the world 2009: [http://www.ti.com/corp/docs/landing/techday09/index.shtml# TI Technology Days 2009]. <br />
* ongoing 2009: [[BeagleBoard/contest|Beagle Sponsored Project Program]] - add a cool project and get a free BeagleBoard to realize it!<br />
<br />
=Hardware=<br />
<br />
The Beagle Board is ''a low-cost, fan-less single-board computer based on TI's OMAP3 device family, with all of the expandability of today's desktop machines, but without the bulk, expense, or noise'' (from [http://beagleboard.org/ beagleboard.org]). It uses a TI [http://focus.ti.com/docs/prod/folders/print/omap3530.html OMAP3530] processor (ARM Cortex-A8 superscalar core ~600MHz paired with a TMS320C64x+ DSP ~430MHz and an Imagination SGX 2D/3D graphics processor). See [http://focus.ti.com/docs/prod/folders/print/omap3530.html#features OMAP3530 features] for more processor features. [[BeagleBoard#Availability|Price is USD 149]]. The design goal was to make it as simple and cheap as possible, e.g. not having a LCD added, but letting you connect all add-ons available as cheap external components. See [http://beagleboard.org/brief What is Beagle?] and [http://linuxdevices.com/news/NS5852740920.html LinuxDevices article] for more details.<br />
<br />
The videos [http://uk.youtube.com/watch?v=fL_XMieanSc Beagle Board Beginnings] and [http://uk.youtube.com/watch?v=FuVwh_VrIxk Beagle Board 3D, Angstrom, and Ubuntu] give you a good intro about what BeagleBoard is about and it's capabilities.<br />
<br />
==Components==<br />
<br />
{|border=0<br />
!Top view of rev B:<br />
!Top view of rev C:<br />
|-<br />
|[[Image:Bb revb top numbered.jpg]]<br />
|[[Image:Bb revc top numbered.jpg]]<br />
|-<br />
|}<br />
{|border=1<br />
!No.<br />
!Name<br />
!Comment<br />
|-<br />
|'''1'''<br />
|[http://www.ti.com/omap35x OMAP3530] processor + 256MB NAND<br />
<br />
+ 128MB DDR (rev B)<br />
<br />
+ 256MB DDR (rev C)<br />
|PoP: Package-On-Package implementation for Memory Stacking<br />
[http://www.micron.com/products/partdetail?part=MT29C2G24MAKLAJG-6%20IT 256MB NAND/128MB Mobile DDR SDRAM] available from [http://www.digikey.com/scripts/US/DKSUS.dll?Detail?name=557-1435-ND DigiKey]<br />
<br />
([http://www.micron.com/products/partdetail?part=MT29C4G48MAPLCJI-6%20IT 512MB NAND/256MB Mobile DDR SDRAM] available from [http://www.digikey.com/scripts/US/DKSUS.dll?Detail?name=557-1436-ND DigiKey])<br />
<br />
[http://www.micron.com/products/mcps/beagleboard Micron's multi chip packages (MCPs) for Beagle Board]<br />
|-<br />
|'''2'''<br />
|[http://focus.ti.com/docs/prod/folders/print/tfp410.html DVI chip (TFP410)]<br />
|<br />
|-<br />
|'''3'''<br />
|[[BeagleBoard#DVI|DVI-D]]<br />
|Connection via HDMI connector<br />
|-<br />
|'''4'''<br />
|[[BeagleBoard#JTAG|14-pin JTAG]]<br />
|1.8V only!<br />
|-<br />
|'''5'''<br />
|Expansion connector: I2C, I2S, SPI, MMC/SD<br />
|User must solder desired header into place<br />
|-<br />
|'''6'''<br />
|[[BeagleBoard#User_button|User button]] <br />
|Allows setting boot order.<br />
|-<br />
|'''7'''<br />
| Reset button<br />
|<br />
|-<br />
| '''8'''<br />
|[[BeagleBoard#EHCI|USB 2.0 EHCI HS]]<br />
|Rev A and B: not working, unpopulated<br />
<br />
Rev C: populated and working<br />
|-<br />
|'''9'''<br />
|SD/MMC+<br />
| SDHC cards are supported<br />
|-<br />
|'''10'''<br />
|[[BeagleBoard#RS232|RS-232 serial]]<br />
|<br />
|-<br />
|'''11'''<br />
|Alternate power <br />
|normally powered by USB (unmounted on REV Ax boards, see [[BeagleBoard#Errata|errata]])<br />
|-<br />
|'''12'''<br />
|[[BeagleBoard#OTG|USB 2.0 HS OTG]] <br />
|Mini-AB connector. Board can be powered from port. <br />
|-<br />
|'''13'''<br />
|Stereo In<br />
|<br />
|-<br />
|'''14'''<br />
|Stereo Out<br />
|<br />
|-<br />
|'''15'''<br />
|S-Video<br />
|<br />
|-<br />
|'''16'''<br />
|TWL4030 (Rev A thru C2 inc.)<br />
[http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] (Rev C3 onwards)<br />
|Audio CODEC, USB port, power-on reset and power management. The TWL4030 is pin-compatible with the [http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] chip and was used due to the very limited availability of the TPS65950 in early board revisions.<br />
|-<br />
|'''17'''<br />
|LCD<br />
|only rev C<br />
|-<br />
|'''18'''<br />
|USB power<br />
|<br />
|-<br />
|'''19'''<br />
|Host PHY<br />
|<br />
|-<br />
|'''20'''<br />
|32kHz<br />
|<br />
|-<br />
|'''21'''<br />
|12MHz<br />
|<br />
|-<br />
|'''22'''<br />
|RS232 XVCR<br />
|<br />
|-<br />
|'''23'''<br />
|PWR SW<br />
|<br />
|-<br />
|'''24'''<br />
|VBAT<br />
|<br />
|-<br />
|}<br />
<br />
* Board size: 3" x 3" (about 76.2 x 76.2 mm)<br />
* Weight: [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/beagleboard.png ~37g]<br />
* Currently 6 layer PCB; target: 4 layer<br />
<br />
'''Bottom of rev B:'''<br />
<br />
[[Image:Beagle_bottom.jpg]]<br />
<br />
See [http://www.flickr.com/photos/jadon/sets/72157606050144396/ jadonk's photostream] for some more detailed BeagleBoard pictures.<br />
<br />
==Manual==<br />
<br />
See [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard System Reference Manual (rev. C3.0)].<br />
<br />
==Schematic==<br />
<br />
Schematic of BeagleBoard Rev. C3 is available as part of [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard System Reference Manual (rev. C3.0)]. Rev C3 and previous are also available from [http://beagleboard.org/hardware/design BeagleBoard.org design page] including in PDF format. Please make sure that you ''read, understand and agree'' [http://groups.google.com/group/beagleboard/msg/ee3e1bc927551ffc Jason's mail] before using this.<br />
<br />
==Layout== <br />
<br />
Layout of BeagleBoard Rev. C3 is available as part of [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard System Reference Manual (rev. C3.0)]. Rev C3 and previous layouts are also available from the [http://beagleboard.org/hardware/design BeagleBoard.org design page]. Please make sure that you ''read, understand and agree'' [http://groups.google.com/group/beagleboard/msg/ee3e1bc927551ffc Jason's mail] before using this.<br />
<br />
==Errata==<br />
<br />
# ''Boards revision A only'': The DC power jack pinout is incorrect on the PCB layout. DC_5V and GND are switched on PCB layout. Normally, the power jack has DC_5V on the center pin and GND on the sleeve (see Figure 20 of [http://www.beagleboard.org/uploads/BBSRM_6.pdf Beagle HW manual]). But on revision Ax boards the PCB layout has GND on center and DC_5V on sleeve. For this reason it is currently removed. It will be back on the Rev B board. Workaround is to remove wire connecting the two power pins on revision Ax boards and use external [http://amethyst.openembedded.net/~koen/beagleboard/beagle-power-pads.jpg power supply with switched connector] (do not connect anything to the “?” terminal. USB power will be permanently disabled and the board can only be powered from the 5V.) See [http://www.flickr.com/photos/koenkooi/2512038988/ Koen's Beagleboard powermod picture] with short descriptions, too.<br />
# ''Boards revision < A5 only'': There is excess voltage drop across R6 which is used to measure the current consumption on the board. This needs to be a .1 ohm instead of a 1 ohm resistor (SMD 0805). All revision A5 boards have been updated to .1. You can also just solder in a jumper to J2 bypassing the current read point. This issue can cause issues with the USB host port as the voltage supplied to that port can be too low.<br />
# ''Boards revision A only'': User LEDs 0 and 1 are shorted on the layout preventing them from being controlled individually. You need to control both GPIO_149 and GPIO_150 to turn on or off both LEDs. This is fixed in the Rev B boards.<br />
# ''Boards revision < A5 only'': There is an issue where on some boards the 1.8V has excessive noise on it. This is the result of two incorrect parts L1 and L3 being installed on the board. The inductors that were initially installed in the switchers are 100uH and need to be 1uH. This change will require that the board be returned for update. To check for correct parts, have a look to bottom of BeagleBoard. L1 - L3 are the larger parts there. They all have to be labeled with "102" (== 1uH). If any of these three inductors are labeled with "104" (== 100uH) they are wrong and have to be exchanged.<br />
# ''Boards revision A and B'': USB HOST (EHCI) failures. See [http://code.google.com/p/beagleboard/issues/detail?id=15 issue 15] and [http://code.google.com/p/beagleboard/wiki/USBHostTestREPRODUCE USB host test reproduce]. This is a hardware defect. [http://www.beagleboard.org/irclogs/index.php?date=2008-05-29#T00:27:06 Most probably] Rev. B board does not have the EHCI USB connector mounted. Workaround: Use [[BeagleBoard#OTG|OTG port]] with something like [http://trisoft.de/pics/ZHost.JPG mini A to USB A adapter] instead.<br />
# ''Boards revision A and < B4'': Plugging in a USB OTG cable will prevent Beagle from booting (with git kernel), see [http://code.google.com/p/beagleboard/issues/detail?id=19 issue #19], too. This is due to missing filtering capacitor at USB OTG VBUS. When the kernel driver detects that a USB OTG cable is inserted it enables the charge pump to generate VBUS. With no filtering VBUS looks like any switching regulator output with no filtering -- a huge voltage spike when the switch is on, followed by a rapid decay to a low voltage until the next switch on period. The capacitor is there to store energy between the output switch ON and OFF time, the feedback loop in the regulator does sample the cap voltage. Fix is to piggy-back solder a 0603 2.2uF ceramic capacitor to D3, see [http://www.sakoman.net/omap3/beagle/vbus-mod-d3.jpg VBUS modification D3 picture]. Revision B4 boards and newer have this fix applied. Thanks to [http://groups.google.com/group/beagleboard/msg/eb789e15c99a673d Steve] for debugging this!<br />
# ''Boards revision A and < B5'': There is some issue with 32kHz clock depending on system configuration used to clock some OMAP3 peripherals. From this e.g. GPIOs, GPTIMERs, and USB on Beagle might be affected. See [http://code.google.com/p/beagleboard/issues/detail?id=22 Issue 22]. Symptom from this is that after booting Linux kernel serial console hangs after some time and no serial input/output is possible any more. There is one software workaround and one hardware fix for this: (A) Software workaround: Don't use 32kHz timer to clock Linux, instead use MPU timer. (B) Hardware workaround: Remove [http://www.flickr.com/photos/25691331@N04/2766671437/in/pool-beagleboard capacitor C70], which improves the 32kHz clock quality and avoids hang-up. Note: Revision A boards have capacitor C70 [http://www.flickr.com/photos/25691331@N04/2766671437/in/pool-beagleboard at the same location] as rev. B boards. Note: Board revision >= B5 removes capacitor C70.<br />
# ''Random boards, quite rare, revision < B6'': Some random boards and quite rare, show directly after purchasing broken serial communication from host PC to BeagleBoard. Symptom is that you get a new board, get serial output from BeagleBoard in terminal program, but can't type anything at U-Boot prompt (Note: Don't mix this with errata #7. With errata #7 you are able to use U-Boot normally, but Linux prompt input stops after some time). Most users don't have this issue, though. So, first double check your serial configuration ([[BeagleBoardFAQ#Serial_connection_.231|FAQ1]], [[BeagleBoardFAQ#Serial_connection_.232|FAQ2]] and [[BeagleBoardFAQ#Serial_connection_.233|FAQ3]]). Only if you are really, really sure that anything with your serial connection is fine, consider sending the board back doing a [http://beagleboard.org/support/rma RMA request]. This issue was resolved on revision B6 and later boards.<br />
<br />
For additional (software) issues and enhancement requests see [http://code.google.com/p/beagleboard/issues/list Beagle board open point list & issue tracker], too.<br />
<br />
Note: BeagleBoard revision B6 uses different package for U9/U11.<br />
<br />
==Clocking==<br />
<br />
Some [http://www.beagleboard.org/irclogs/index.php?date=2008-07-08#T21:12:23 notes] about (ARM processor) clock rates at BeagleBoard:<br />
<br />
* ARM Cortex-A8 processor is currently clocked at 500MHz<br />
* 500MHz is the default used because it is a balance of performance and longevity<br />
* For OMAP35x 600MHz is max recommended<br />
* At 600MHz OMAP35x is considered to be 'overdrive' and it does not have the same life expectancy<br />
* Higher than 600MHz is out of spec and no guarantee it will work at all (or not damage itself)<br />
* Also keep in mind that if you go higher you probably want to increase the core voltage. Some of this is mentioned in table 3-3 of the [http://focus.ti.com/lit/ds/symlink/omap3530.pdf OMAP3530 data sheet]. Some numbers:<br />
<br />
{| border="1"<br />
||'''ARM'''||'''DSP'''||'''core voltage'''<br />
|-<br />
|600 MHz||430 MHz||1.35V<br />
|-<br />
|550 MHz||400 MHz||1.27V<br />
|-<br />
|500 MHz||360 MHz||1.2V<br />
|}<br />
<br />
* For some OMAP3 clock, voltage and power management discussion see [http://focus.ti.com/lit/an/sprt495/sprt495.pdf OMAP3 power management white paper], too.<br />
* The OMAP3 chip on the Beagle lacks the efuses needed for using the SmartReflex technology, see [http://www.beagleboard.org/irclogs/index.php?date=2009-02-26#T10:44:24].<br />
* There is a thermal monitor in the core, you could use to scale frequency up and down<br />
<br />
To set CPU clock to 600 MHz, there are two options. Both '''do not''' adjust the voltage, so the system may become unstable:<br />
<br />
* The u-boot command "mw 48004940 0012580c" will temporarily set the CPU clock to 600 MHz (not permanent over reset).<br />
* To permanently set the CPU clock to 600 MHz, include the above command in the "bootcmd" variable or equivalent script.<br />
<br />
==Power management==<br />
<br />
* Latest Linux kernel power management development for TI OMAP SoCs is maintained in [http://git.kernel.org/?p=linux/kernel/git/khilman/linux-omap-pm.git;a=summary Kevin's linux-omap-pm git tree]<br />
* Russ' Beagle HW modifications resulted in [http://groups.google.com/group/beagleboard/browse_thread/thread/197a8ef6b46cc828 8mW sleep for Beagle Board]<br />
<br />
Without PM kernel, the Beagle [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/index.htm consumes ~1.5 watts idle, however it also uses the same amount under load] (see bottom of that page).<br />
<br />
==DLP Pico projector==<br />
<br />
Texas Instruments is developing a Pico Video Projector Kit (PVPK) as a peripheral for the Beagle Board. The stand alone pico projector will support VGA resolution (640 x 480), RGB 888 input through a DVI interface. The physical connector on the projector will be HDMI. See [http://groups.google.com/group/beagleboard/msg/10e218972380ee48 mailing list] and [http://www.youtube.com/watch?v=-tUBXD-KRp4 Beagle Running Angstrom (VGA) on DLP Pico Projector] for more details.<br />
<br />
It is available from [http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=296-23836-ND DigiKey] for $349.<br />
<br />
See [http://blog.makezine.com/archive/2009/01/tis_beagleboard_and_dlp_pico_projector.html?CMP=OTC-0D6B48984890 article from Make], too.<br />
<br />
DigiKey videos [http://www.youtube.com/watch?v=KBbCdnOj5vg part 1], [http://www.youtube.com/watch?v=zymOmduNWyI part 2] and [http://www.youtube.com/watch?v=Uj19Bi5NYeU part 3].<br />
<br />
==Interfacing to Raw LCD Panels==<br />
<br />
Currently on Rev A / B boards there is no direct access to the LCD lines before they enter the DVI framer. The REV C2 provides access to these lines. Several projects to interface an LCD to the beagleboard exist:<br />
<br />
* [[BeagleBoardRawLCD|interfacing to Raw LCD Panels]] article <br />
* [http://digitalsurveyinstruments.com/beagleperiphials/hdmi2parallel/doc/index.htm hdmi to parallel] workaround method<br />
* [http://www.harbaum.org/till/dvi2par/index.shtml dvi2par cheap diy HDMI to parallel converter]<br />
<br />
=Availability=<br />
<br />
BeagleBoards, currently Rev. C3 boards, are available from<br />
<br />
* [http://www.mouser.com/beagleboard Mouser]<br />
* [http://dkc1.digikey.com/us/mkt/beagleboard.html Digi-Key] with part number [http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=296-23428-ND 296-23428-ND].<br />
<br />
Note: For non-US Digi-Key free shipping orders:<br />
<br />
* Click the US flag on the top right corner of [http://dkc1.digikey.com/us/mkt/beagleboard.html Digi-Key] BeagleBoard page to come to the international page<br />
* Select ''Order Online'' for your country<br />
* Add quantity ''1'' and part number ''296-23428-ND''<br />
* Click ''Add to order''<br />
<br />
When ordering over 65 EUR / GBP 50 product (BeagleBoard is above), for Europe the price depends on the actual dollar to EUR/GBP rate. On nov 9, 2008 the price was EUR 124 with free shipping.<br />
<br />
Note: Some users report that they got some questions from DigiKey to be answered before board shipping is done.<br />
<br />
Note: While you get free shipping, most probably you have to pay tax e.g. ordering from Europe. Users report that they had to pay EUR ~34 - 44 VAT + importing taxes (depending on european country), resulting in EUR 137 - 147 ordering from Europe.<br />
<br />
Note: For European users, [http://www.ebv.com/fileadmin/products/Press_Print/Campaigns/2009/Product_Campaigns/Texas_Beagle_Board_englisch.pdf EBV Elektronik] sells its own blue version of the board for 179 EUR, which includes all useful accessories (DVI cable, serial cable, USB 2.0 Ethernet, USB hub, 2 GB MMC, power supply, Linux BSP).<br />
<br />
Note: German (Europe) users can order through German shops, too. For higher price, though. <br />
* [http://shop.embedded-projects.net/product_info.php/info/p159_BeagleBoard--OMAP-3-.html Embedded Projects Shop] sells BeagleBoard for EUR 199.00 + shipping.<br />
* [http://www.handheld-linux.com/wiki.php?page=Beagle%20Board Handheld-Linux]<br />
<br />
See below for ''hardware'' differences of the revisions. There are no ''software'' differences. <br />
<br />
==Revision A==<br />
<br />
There are some limited early revision Ax prototypes out there used by some hackers hanging around at #beagle channel on irc.freenode.net. See [[BeagleBoard#Errata|errata]] for limitations.<br />
<br />
==Revision B==<br />
<br />
Revision B is same as revision A, except<br />
* fix for shorted LEDs 0/1<br />
* fix for wrong power jack pinout<br />
* revision B6 uses different package for U9/U11<br />
Still has USB HOST (EHCI) failures. USB HOST (EHCI) connector isn't mounted.<br />
<br />
There are 4 revisions of the B board in the field: B4, B5, B6 and B7.<br />
<br />
The most notable difference is the use of the ES3.0 silicon in B6 and B7, other changes are not relevant to software developers.<br />
<br />
==Revision C2==<br />
Revision C2 is same as revision B7 except:<br />
* USB HOST (EHCI) is operational on revision C2, with standard USB A female connector.<br />
* Add interface for raw LCDs ([http://groups.google.com/group/beagleboard/msg/2e82c3ed6061d9d2 mockup])<br />
* It uses updated OMAP3 revision. BeagleBoard revisions B4+B5 uses OMAP3 ES 2.1 (engineering sample), while BeagleBoard revision C2 uses ES 3.0. OMAP3 ES 3.0 fixes minor issues:<br />
** updated ARM Cortex A8 silicon (r1p3) fixing a very rare [http://elinux.org/BeagleBoardFAQ#NEON_performance NEON issue] that has not been seen in real code<br />
* Power measurement feature<br />
* Uses [http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] OMAP power controller instead of TWL4030<br />
* Three additional PWM signals on the expansion connector added as pin mux options to existing pins ([http://groups.google.com/group/beagleboard/browse_thread/thread/d5872b7c6d74592c?hl=en# message])<br />
* Revision detection (to be able to identify C2 board from older boards by software, e.g. for different pin mux)<br />
* 256MB RAM ([http://groups.google.com/group/beagleboard/msg/3a38d0f21cefd6b1?hl=en message]) (and still 256MB NAND like rev B)<br />
<br />
Note: Revision C2 is the first production version, and all orders from from Digi-Key are shipped as Rev C2.<br />
<br />
==Revision C3==<br />
As revision C2 boards are [http://groups.google.com/group/beagleboard/msg/e41d3c97aa7d4951 sold out], revision C3 will ship now.<br />
<br />
Revision C3 is same as revision C2 [http://groups.google.com/group/beagleboard/msg/037318fbc44139d5 except]:<br />
* Optional RTC [http://parts.digikey.com/1/parts/1454-battery-lith-coin-3v-12-5mm-vert-vl-1220-vcn.html VL1220 series] backup battery<br />
* Mounting holes conected to ground<br />
* Slightly improved S-Video<br />
<br />
==Clones==<br />
===EBVBeagle===<br />
EBV build and sell their own BeagleBoard called [http://www.ebv.com/en/products/categories/details/product/ebvbeagle-board EBVBeagle], see e.g. [http://fl0rian.wordpress.com/2009/03/08/the-other-beagleboard/].<br />
It is actually a BeagleBoard revision C2 with green PCB boxed with some useful accessories. It comes as a quite complete starter kit with AC adapter, USB to Ethernet adapter, MMC card, USB hub and some cables.<br />
More information in [http://www.ebv.com/en/press-print/news-pr/details/news//press-releas-54.html official press release].<br />
<br />
===Mini Board===<br />
[[Mini_Board|ICETEK-OMAP3530-Mini]] is a chinese BeagleBoard clone.<br />
<br />
===DevKit 8000===<br />
[[DevKit8000]] is a Chinese BeagleBoard clone, slightly larger with additional peripherals (e.g. LCD/TSP, Ethernet and keyboard).<br />
<br />
===IGEPv2===<br />
[http://www.igep-platform.com/ IGEPv2 Platform] is a Spanish BeagleBoard clone, slightly larger, with additional peripherals like e.g. ethernet connector, wifi+bluetooth.<br />
<br />
==BeagleBoard-based products==<br />
* [http://www.alwaysinnovating.com/touchbook/ Always Innovating Touch Book], see [http://gigglehd.com/zbxe/hdforum/files/attach/images/899852/493/987/001/always_innovating_touch_book_0011.jpg]<br />
<br />
==Beagle case==<br />
<br />
*[http://specialcomp.com/beagleboard/ Special Computing]<br />
*[http://groups.google.com/group/beagleboard/browse_thread/thread/1c82316019633e51 SketchUp 3D model]<br />
<br />
=Adapters=<br />
<br />
For quite detailed information about all BeagleBoard peripherals see [http://www.beagleboard.org/uploads/BBSRM_6.pdf BeagleBoard HW Reference Manual (rev. B6)].<br />
<br />
See [[BeagleBoardPeripherals| BeagleBoard peripherals and adapters page]] for useful add ons for Beagle Board.<br />
<br />
==Expansion boards==<br />
* [[BeagleBoard Zippy]] expansion board is now available from [http://www.tincantools.com/product.php?productid=16147&cat=0&page=1&featured TinCanTools] for $79.00. basic specs are:<br />
** Battery Backed RTC<br />
** Second MMC slot<br />
** 10BaseT Ethernet<br />
** Second RS-232<br />
** +5V level I2C<br />
** AT24 EEPROM<br />
* [http://www.hy-research.com/beagle_expansion.html HY Research] has some expansion board basics and example.<br />
* [http://www.hervanta.com/stuff/Beaglebot#Expansion_Board Beaglebot] uses a custom extension board.<br />
* [http://beagleboard.org/leopard Leopard Board], a Beagle buddy web camera<br />
* There is also a VGA DB15 adapter board under development for the Rev C2 board. It should be available through a yet to be annnounced outlet.<br />
<br />
==JTAG==<br />
<br />
Depending on your JTAG tool, you'd need a 14-pin to 20-pin adapter to use an ARM debugger. The 14-pin TI JTAG connector is used on BeagleBoard and is supported by a large number of JTAG emulation products.<br />
See [[BeagleBoardJTAG]] for more information.<br />
<br />
==RS232==<br />
<br />
The pinout on the beagle board is "AT/Everex" or "IDC10". You can buy [http://www.pccables.com/07120.htm IDC10 to DB9M adapters] in many places as they are commonly used for old PCs. You can also probably rip one of those cables out of any old desktop computer, where it's being used to support the serial port. Be careful, though -- some of those cables will have that tenth hole filled in so you'd have to snap off the extraneous pin on your BeagleBoard. Keep looking until you find a cable with all 10 holes open.<br />
<br />
Depending on your local configuration, you may need a [http://en.wikipedia.org/wiki/Null_modem 9-Pin NullModem] cable to connect BeagleBoard to serial port of your PC. From [http://www.tincantools.com/ TinCanTools] there is a [http://www.tincantools.com/product.php?productid=16144&cat=0&page=1&featured RS-232 DB-9 adapter] and [[media:flyswatter-ti-uart.pdf|adapter schematic]] available.<br />
<br />
==USB==<br />
There are two USB ports on the BeagleBoard, one with an EHCI controller and another with an OTG controller. As of Rev B4, the usb EHCI has been removed because of a hardware defect. Rev C will include USB EHCI working properly.<br />
<br />
===EHCI===<br />
The HS ([http://en.wikipedia.org/wiki/USB#USB_signalling HighSpeed]) USB [http://en.wikipedia.org/wiki/EHCI ECHI] controller on OMAP3 on BeagleBoard supports high-speed only. This simplifies the logic on the device. FS/LS (FullSpeed/LowSpeed) devices, such as keyboards and mice, require going through a high-speed USB 2.0 hub.<br />
<br />
According to the BeagleBoard System Reference Manual Rev C2, the EHCI port can source 5V at 500mA which is enough to power a hub and several low-power devices. However, this is only true if the BeagleBoard is powered through its power jack from a well-regulated 5V external power supply. If the BeagleBoard is powered through the OTG port, the EHCI port sources an "extremely limited" ampount of power (probably 100mA or so) so you'll need a "self-powered" USB 2.0 hub with its own external power supply. [Reference: Sections 5.6 and 7.2 of the BBSRM Rev C2.2.]<br />
<br />
===OTG===<br />
The HS USB OTG ([http://en.wikipedia.org/wiki/USB_On-The-Go OnTheGo]) controller on OMAP3 on the BeagleBoard does have support for all the USB 2.0 speeds (LS/FS/HS) and can act as either a host or a gadget/device. The HS USB OTG port is used as the default power input for the BeagleBoard. It is possible to boot the BeagleBoard using this USB port.<br />
<br />
When using the OTG port in host mode, you must power the BeagleBoard using the +5V power jack. If you connect a USB hub, you'll probably also need external power for the USB hub as well, because according to the Hardware Reference manual the BeagleBoard OTG port only sources 100 mA. This is enough to drive a single low-power device, but probably won't work with multiple devices.<br />
<br />
The Linux kernel needs to know you want to use the OTG port in host mode. I believe OTG ports are supposed to figure this out for themselves using the OTG Host Negotiation Protocol, but for now the Linux kernel may need some help. Specifically, Pin 4 (ID) of the OTG connector needs to be shorted to Pin 5 (GND) by using a [http://trisoft.de/pics/ZHost.JPG 5-pin USB Mini-A plug] which shorts these pins together in the plug. A [http://en.wikipedia.org/wiki/USB#USB_cables 5-pin USB Mini-B plug] leaves Pin 4 floating. Unfortunately, most USB Mini plugs are unmarked as to whether they are "A" or "B".<br />
<br />
You can find "mini A" adapters that have Pin 4 shorted and offer out a full-sized USB A Female jack [http://www.electronicproductonline.com/catalog/product_info.php?products_id=2043 here.]<br />
<table><br />
<tr><td><br />
Since the right cables might be hard to get, you simply can<br />
* short circuit the two pins encircled in red in the image to the right. You can do this by running a wire between the two pins. That at least allows easier undoing the change. Actually you could even have a small switch or so between 4 and 5.<br />
or<br />
* use a "mini B" cable (easier to get) and try the soldering of the two pins at the cable's connector. Depending on the cable it should be possible to open the plastic covering of mini-B port with a sharp-edged knife, then solder the two pins together, close the covering again and use some tape. This leaves the BeagleBoard unmodified.<br />
</td><td>[[Image:usb_otg.png]]</td></tr></table><br />
The Rev C BeagleBoard has a pair of pads labeled J6 on the back of the board under the OTG connector. Shorting these pads together with a wire or solder blob connects pins 4 and 5.<br />
See Figure 20 in the BeagleBoard System Reference Manual Rev C2.2.<br />
<br />
==DVI==<br />
<br />
DVI-D connection on BeagleBoard uses a [http://en.wikipedia.org/wiki/HDMI HDMI connector]:<br />
<br />
''HDMI is backward-compatible with the single-link Digital Visual Interface carrying digital video (DVI-D or DVI-I, but not DVI-A) used on modern computer monitors and graphics cards. This means that a DVI-D source can drive a HDMI monitor, or vice versa, by means of a suitable adapter or cable, but the audio and remote control features of HDMI will not be available.''<br />
<br />
BeagleBoard can be connected to a DVI monitor using HDMI female to DVI male cable.<br />
<br />
=BootRom=<br />
<br />
OMAP3 on BeagleBoard contains a BootRom. With this, BeagleBoard can boot without any code in permanent storage (NAND) or from peripherals. This is useful for first board bring up or if your BeagleBoard is bricked. For more information about BootRom booting see [http://www.ti.com/litv/pdf/sprufd6a SPRUFD6]. <br />
<br />
==User button==<br />
<br />
With user button on BeagleBoard you can configure boot order. Depending on this button, the order used to scan boot devices is changed. The boot order is (the first is the default boot source):<br />
<br />
* User button ''not'' pressed: NAND -> USB -> UART -> MMC<br />
* User button ''is'' pressed: USB -> UART -> MMC -> NAND<br />
<br />
Technically speaking, the user button configures pin SYS.BOOT[5]. See [http://focus-webapps.ti.com/general/docs/sitesearch/searchsite.tsp?selectedTopic=1653260327&numRecords=25&searchTerm=sprufd6&statusCode=null SPRUFD6] for more details.<br />
<br />
==Serial and USB boot==<br />
<br />
Historically, using OMAP3's boot ROM for serial and USB boot, there are several tools around. The newest are Nishanth' ''OMAP U-Boot Utils'', while there are still some older tools for serial boot and USB boot. It is also possible the access the [[u-boot environment variables in linux|u-boot env from linux]].<br />
<br />
===OMAP U-Boot Utils===<br />
<br />
Nishanth' [http://code.google.com/p/omap-u-boot-utils/ OMAP U-Boot Utils] provide<br />
<br />
* ''pserial'' - OMAP specific utility which downloads a file in response to ASIC ID over serial port.<br />
* ''pusb'' - OMAP specific utility which downloads a file in response to ASIC ID over USB connection.<br />
* ''ucmd'' - Send a command to U-Boot and wait till a specific match appears.<br />
* ''ukermit - Download a file from host without using kermit to U-Boot.<br />
<br />
See [http://nishanthmenon.blogspot.com/ Nishanth' blog] and [http://groups.google.com/group/beagleboard/browse_thread/thread/c5bfb1b8ed528b52# announce mail], too.<br />
<br />
===Serial boot===<br />
<br />
Besides Nishanth' ''OMAP U-Boot Utils'', to boot from USB or UART, you need a PC tool which talks with OMAP BootRom and speaks the correct protocol to download ARM target code to BeagleBoard. Currently there are two older (experimental) tools for UART boot:<br />
<br />
* [http://omapzoom.org/gf/project/omaptools/wiki PC Serial Boot perl script]<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/80ad3da0eb2aa555 Linux C utility] (not working yet with below target code)<br />
<br />
See [http://groups.google.com/group/beagleboard/browse_thread/thread/ae2c601ebe104a4 USB and serial download target code] for some example target code to be downloaded to OMAP3 on BeagleBoard.<br />
<br />
===USB boot===<br />
<br />
Besides Nishanth' ''OMAP U-Boot Utils'', for USB boot, there is currently one (experimental) tool to boot BeagleBoard over USB:<br />
<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/2b9e99886bb7a747 Linux C utility]<br />
<br />
See [http://groups.google.com/group/beagleboard/browse_thread/thread/ae2c601ebe104a4 USB and serial download target code] for some example target code to be downloaded to OMAP3 on BeagleBoard.<br />
<br />
See [[BeagleBoardRecovery#USB_recovery|USB recovery section]] how to use USB boot for board recovery.<br />
<br />
==NAND boot==<br />
<br />
See [[BeagleBoardNAND|NAND boot]] article.<br />
<br />
==MMC/SD boot==<br />
<br />
Currently, [http://code.google.com/p/beagleboard/wiki/BootingBeagleBoard boot the BeagleBoard with MMC/SD] is the only working way for first board bring up.<br />
<br />
===MMC/SD formatting===<br />
<br />
As described in above MMC/SD boot description, you have to ''create a bootable partition on MMC/SD Card''. This can be done using e.g. Windows or Linux tools.<br />
<br />
'''Windows'''<br />
<br />
See ''HP USB Disk Storage Format Tool 2.0.6'' description on [http://code.google.com/p/beagleboard/wiki/BootingBeagleBoard boot the BeagleBoard with MMC/SD] page.<br />
<br />
'''Linux'''<br />
<br />
Please see [http://wiki.omap.com/index.php?title=MMC_Boot_Format OMAP3 MMC Boot Format].<br />
<br />
===Dual partition card===<br />
<br />
You can [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat create a dual-partition card], booting from a FAT partition that can be read by the OMAP3 ROM bootloader and Windows, then utilizing an ext2 partition for the Linux root file system.<br />
<br />
To mount second ext2 partition as root file system (e.g. containing contents of [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode rd-ext2.bin]) use kernel boot arguments (e.g. in uboot using ''setenv bootargs''):<br />
<br />
console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootwait<br />
<br />
===U-Boot booting===<br />
<br />
If your MMC/SD card formatting is correct and you put [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode MLO, u-boot.bin and uImage] on the card you should get a u-boot prompt after booting beagle board. E.g. (output from terminal program with 115200 8N1):<br />
<br />
...40T.........XH.H.U�..Instruments X-Loader 1.41<br />
Starting on with MMC<br />
Reading boot sector<br />
<br />
717948 Bytes Read from MMC<br />
Starting OS Bootloader from MMC...<br />
<br />
U-Boot 1.1.4 (Apr 2 2008 - 13:42:13)<br />
<br />
OMAP3430-GP rev 2, CPU-OPP2 L3-133MHz<br />
TI 3430Beagle 2.0 Version + mDDR (Boot ONND)<br />
DRAM: 128 MB<br />
Flash: 0 kB<br />
NAND:256 MiB<br />
In: serial<br />
Out: serial<br />
Err: serial<br />
Audio Tone on Speakers ... complete<br />
OMAP3 beagleboard.org #<br />
<br />
Using this u-boot prompt, you now can start kernel uImage stored on MMC card manually:<br />
<br />
OMAP3 beagleboard.org # mmc init<br />
OMAP3 beagleboard.org # fatload mmc 0:1 0x80000000 uimage<br />
OMAP3 beagleboard.org # bootm<br />
<br />
If you like to make that happen every boot:<br />
<br />
OMAP3 beagleboard.org # set bootcmd 'mmc init ; fatload mmc 0:1 0x80000000 uimage ; bootm' ; saveenv<br />
<br />
=Code=<br />
<br />
Code and binaries for BeagleBoard are available at various places.<br />
<br />
==Binaries==<br />
<br />
BeagleBoard pre-built binaries and source code can be found at [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode Beagle source code] and [http://code.google.com/p/beagleboard/downloads/list downloads] page. These are the locations where "official" TI code is available. Please note that this code is mainly for reference and testing. More up to date binaries and code is available by community. Community took (parts) of TI reference code, improves and updates it. <br />
<br />
Actually, [http://www.angstrom-distribution.org/node/47 Koen's prebuilt Beagleboard demo images] are up to date binaries including e17 as window manager, the abiword word processor, the gnumeric spreadsheet application, a NEON accelerated mplayer and the popular NEON accelerated omapfbplay which gives you fullscreen 720p decoding. The [http://www.angstrom-distribution.org/demo/beagleboard www.angstrom-distribution.org/demo/beagleboard] directory should contain all the files you need:<br />
<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/u-boot.bin u-boot.bin]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/MLO MLO]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/uImage uImage]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/Angstrom-Beagleboard-demo-image-glibc-ipk-2009.X-test-20090104-beagleboard.rootfs.tar.bz2 rootfs]<br />
<br />
See the [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat beagle wiki] on how to setup your SD card to use all this goodness.<br />
<br />
==Source==<br />
<br />
Besides above binary and source images (TI's and communities one), for various parts of Beagle software stack there are community supported [http://git.or.cz/ git] repositories available. <br />
<br />
===X-Loader===<br />
<br />
Steve did some work to consolidate and update X-Loader from various sources and put it in a [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=x-load-omap3.git;a=summary X-Loader git repository]. Get it by<br />
<br />
git clone git://gitorious.org/x-load-omap3/mainline.git xloader<br />
cd xloader/<br />
<br />
Build:<br />
<br />
make distclean<br />
make omap3530beagle_config<br />
make<br />
<br />
Result will be a ~20k sized ''x-load.bin'' in main directory.<br />
<br />
===U-Boot===<br />
<br />
[http://www.denx.de/wiki/U-Boot/WebHome Mainline U-Boot] has good support for BeagleBoard. Get it by:<br />
<br />
git clone git://git.denx.de/u-boot.git u-boot-main<br />
cd u-boot-main<br />
git checkout --track -b omap3 origin/master<br />
<br />
Build (assuming Code Sourcery GCC 2007q3):<br />
<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- mrproper<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- omap3_beagle_config<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- <br />
<br />
Result will be a ~160k sized ''u-boot.bin'' in main directory.<br />
<br />
Note: Due to (patch and binary) size, BeagleBoard splash screen was removed from upstream version. If you want it back, use [http://groups.google.com/group/beagleboard/browse_thread/thread/3ad9b803a3418624 U-Boot v1 BeagleBoard splash screen patch].<br />
<br />
Note: For experimental U-Boot patches not ready for mainline yet, Steve's [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=u-boot-omap3.git;a=summary Beagle U-Boot git repository] is used to test them. Get it by:<br />
<br />
git clone git://gitorious.org/u-boot-omap3/mainline.git u-boot-omap3<br />
cd u-boot-omap3<br />
git checkout --track -b omap3-dev origin/omap3-dev<br />
<br />
===Linux kernel===<br />
<br />
[http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git;a=summary Git repository] of [http://muru.com/linux/omap/ OMAP Linux kernel] contains Beagle support. Get it by:<br />
<br />
git clone git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git linux-omap-2.6<br />
cd linux-omap-2.6<br />
<br />
Build:<br />
<br />
make distclean<br />
make omap3_beagle_defconfig<br />
make menuconfig # only needed if you want to change the default configuration<br />
make uImage<br />
<br />
The result will be a ''uImage'' in ''arch/arm/boot/'' directory.<br />
<br />
If you use the OE toolchain and want to build outside of the OE tree you should do<br />
ARCH=arm<br />
PATH=~/oe/tmp/cross/armv7a/bin:~/oe/tmp/staging/i686-linux/usr/bin:$PATH # add cross tools to your path<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- distclean<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- omap3_beagle_defconfig<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- menuconfig # only needed if you want to change the default configuration<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- uImage<br />
Note: the staging dir in the path is for mkimage. If you've build a kernel before with oe, the program should be there<br />
<br />
Note: If you are interested in kernel development have a look to [[BeagleBoardLinuxKernel|manually compiling BeagleBoard kernel]], too.<br />
<br />
===Experimental kernel patches and hacks===<br />
<br />
Some beagle developers maintain their own kernel experimental patches and hacks not ready for upstream:<br />
<br />
* [http://cgit.openembedded.net/cgit.cgi?url=openembedded/tree/packages/linux/linux-omap Koen's collection of kernels patches for OE] and the [http://cgit.openembedded.net/cgit.cgi?url=openembedded/tree/packages/linux/linux-omap_git.bb list of relevant patches]<br />
* [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=linux-omap-2.6.git;a=shortlog;h=refs/heads/test Steve's kernel tree], a clone of main OMAP git with additional patches, mainly beagle audio (ASOC) related.<br />
* [http://git.mansr.com/?p=linux-omap;a=summary Mans' kernel tree], a clone of main OMAP git with additional patches, mainly display & framebuffer related.<br />
* [http://www.bat.org/~tomba/linux-omap.html Tomi's kernel tree], a clone of main OMAP git with display sub-system patches, replacing the entire display driver with one that is the likely direction moving forward.<br />
<br />
=Compiler=<br />
<br />
TI OMAP3530 processor on BeagleBoard contains an ARM Cortex-A8 general purpose processor and a TMS320C64x+ DSP.<br />
<br />
==ARM==<br />
<br />
There is broad compiler support including gcc - please see [http://www.elinux.org/ARMCompilers ARM Compilers]<br />
<br />
==C64x+ DSP==<br />
<br />
A free C64x DSP compiler is available as [https://www-a.ti.com/downloads/sds_support/targetcontent/LinuxDspTools/download.html Linux hosted C6x Code Generation Tools] (TMS320C6000 C/C++ CODE GENERATION TOOLS 6.1.3 July 2008).<br />
<br />
Note: my.TI account required. You may create an account [https://my.ti.com here]<br />
<br />
Note: Old c6000 Linux compiler available on [ftp://ftp.ti.com/pub/cs/linux_cgt500.tar.gz TI FTP site]. Does NOT support c64x+ core in OMAP3 devices. Not recommended.<br />
<br />
You can also utilize the [http://focus.ti.com/dsp/docs/dspsupportaut.tsp?familyId=44&sectionId=3&tabId=416&toolTypeId=30 full-CCS free evaluation tools for 120 days], but they currently require purchase to upgrade to service release 9 to support full JTAG debugging with supported JTAG hardware.<br />
<br />
See [[BeagleBoard/DSP_Howto| BeagleBoard DSP howto]] for information about how to use the DSP.<br />
<br />
=Cortex A8 ARM features =<br />
<br />
ARM Cortex-A8 in OMAP3 is a high performance dual-issue applications processor which reaches a performance of 2.0 DMIPS/MHz (compared to ARM11 at 1.2 DMIPS/MHz). It is ARM v7 architecture, which is fully backwards compatible with application code for previous ARM processors.<br />
<br />
It includes a floating point unit (ARM VFPv3 architecture) and the ARM NEON SIMD instruction set.<br />
<br />
See [http://pandorawiki.org/Floating_Point_Optimization Floating Point Optimization] article for an intro into VFP-lite and NEON.<br />
<br />
===ARM NEON===<br />
<br />
NEON is a 64/128-bit wide SIMD vector extension for ARM, which has been architected to be an efficient C compiler target as well as being used from assembly language. It has 32x 64-bit registers (with a dual view as 16x 128-bit registers) which can hold the following datatypes:<br />
* 64-bit signed/unsigned<br />
* 32-bit signed/unsigned<br />
* 32-bit single precision floating point<br />
* 16-bit signed/unsigned<br />
* 8-bit signed/unsigned<br />
<br />
The key advantage of NEON is very high performance vector math processing, whilst being easy to program. It is the same thread of control as the ARM (but different instructions), and is supported by the same tools, debuggers and operating systems.<br />
<br />
The NEON instruction set is documented in ARM's [http://infocenter.arm.com/help/topic/com.arm.doc.dui0204i/DUI0204I_rvct_assembler_guide.pdf RealView Compilation Tools Assembler Guide].<br />
<br />
For NEON optimized libraries see [http://www.us.design-reuse.com/news/18429/aac-mp3-mpeg-4-h-264-fft-openmax-cortex-a8-neon-arm11-processors.html ARM Releases AAC, MP3, MPEG-4, H.264 and FFT OpenMAX DL Libraries, Highly Optimized for Cortex-A8/NEON and ARM11 Processors]. Note: Read the [http://www.arm.com/products/esd/openmax_v7libraries.html EULA].<br />
<br />
NEON is currently used by<br />
* ffmpeg - libavcodec used by mplayer, omapfbplay, and many other linux applications<br />
* libpixman - used by X.org and Mozilla & Webkit browsers to render text and graphics<br />
* Bluez - official Linux Bluetooth stack<br />
<br />
=== ARM Cortex Floating Point ===<br />
<br />
There are two types of instructions in the ARM v7 ISA that handle floating point:<br />
<br />
1) '''VFPv3''' Floating point instruction set (used for single/double precision scalar operations).<br />
These is used by gcc for C floating point operations on 'float' and 'double'<br />
<br />
2) '''NEON''' [http://www.arm.com/products/multimedia/neon/ NEON] vectorized single precision operations (2 values in a D-register, or 4 values in a Q-register)<br />
These can be use by gcc when -ftree-vectorize is enabled and -mfpu=neon is specified, and the code can be vectorized. In other cases the VFPv3 scalar ops will be used.<br />
<br />
ARM Cortex-A processors have separate floating point pipelines that handle these different instructions.<br />
<br />
On Cortex-A8, the designers' focus was on the NEON unit performance which can sustain 1 cycle/instr throughput (processing 2 single-precision values at once). The scalar VFPv3 FPU cannot achieve this level of performance (cycle timings are in the Cortex-A8 TRM download), but it is still a lot better than doing floating point using integer instructions.<br />
<br />
If you need the highest performance floating point on Cortex-A8, you need to use single precision and ensure the code uses the NEON vectorized instructions:<br />
* use gcc with -ftree-vectorize (possibly modify source code to make it vector friendly)<br />
* use NEON instrinsics (#include <arm_neon.h>, float32x2_t datatype and vmul_f32() etc)<br />
* use NEON asm directly<br />
<br />
Keep in mind that mixing NEON and ARM load/stores can sometimes stall significantly. See [http://hardwarebug.org/2008/12/31/arm-neon-memory-hazards/ this link] for more info.<br />
<br />
On Cortex-A9, there is a much higher performance floating point unit which can sustain 1 cycle/instr throughput, with low result latencies.<br />
<br />
=Board recovery=<br />
<br />
If you played e.g. with the contents of the [http://www.sakoman.net/omap3/flash%20procedure.txt NAND], it might happen that the Board doesn't boot any more (without pressing user button) due to broken NAND content. See [[BeagleBoardRecovery|BeagleBoard recovery]] article how to fix this.<br />
<br />
=Development environments=<br />
<br />
Instead of just using compiler + editor, you can use complete image create "development tool chains" which integrate compiler, build system, packaging tools etc. in one tool chain.<br />
<br />
==OpenEmbedded==<br />
<br />
For [http://www.openembedded.org/ OpenEmbedded] (OE), there are some hints how to [http://www.beagleboard.org/irclogs/index.php?date=2008-04-29#T13:06:25 start with OE for BeagleBoard]. See [[BeagleBoardAndOpenEmbeddedGit|BeagleBoard and OpenEmbedded Git]] and [http://wiki.openembedded.org/index.php/Getting_Started OpenEmbedded getting started] as well.<br />
<br />
In the OE getting started document, for BeagleBoard replace ''MACHINE = "om-gta01"'' by ''MACHINE = "beagleboard"''. After confirming ''bitbake nano'' works, try ''bitbake console-image''. The first time you run bitbake OE will download all the needed source and build the tool chain. This will take several hours. After all went fine, the output is in ''${OE_ROOT}/tmp/deploy/glibc/images/beagleboard''.<br />
<br />
Note: Koen has some BeagleBoard [http://amethyst.openembedded.net/~koen/index.php?path=beagleboard/ source and binary images] built with OE. There, ''Angstrom-console*'' images don't include an X server, you can still use a e.g. DVI-D screen with console, but you won't have a GUI. ''Angstrom-x11*'' images contain an X server.<!-- DEAD LINK: resulting in something like [http://scap.linuxtogo.org/files/fc987d4acb2c745fb7e19cf4dca8de70.png this].--><br />
<br />
===One very important note:=== <br />
<br />
It's important to have an X-Loader on your Beagleboard that uses the uImage on the SD Card that goes with Angstrom. The B6 Beagleboards do not appear to come with such an X-Loader. So you likely will have to upgrade the X-Loader. Here's what to do:<br />
* Make an SD Card with the [http://www.angstrom-distribution.org/demo/beagleboard Angstrom Demo files]. See the [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat Beagleboard Wiki Page] for more info on making the SD Card.<br />
* Put the SD Card in the Beagle, and boot up to the U-Boot Prompt.<br />
* Do the first six instructions in the [http://code.google.com/p/beagleboard/wiki/BeagleNANDFlashing Flashing Commands with U-Boot] section. <br />
* Reboot the Beagle to see that the new X-Loader is properly loaded.<br />
<br />
This will update the X-Loader to a newer version that will automatically load uImage from the SD Card when present -- rather than always using the uImage in the Beagleboard NAND.<br />
<br />
==Eclipse==<br />
The Eclipse [http://www.eclipse.org/cdt/ C Development Tools Project] provides a "fully functional C and C++ Integrated Development Environment (IDE) for the Eclipse platform". The Eclipse [http://www.eclipse.org/dsdp/tm/ DSDP Target Managment Project] provides a "Remote System Explorer" (RSE) plugin that simplifies downloading files to the BeagleBoard and editing files on the BeagleBoard within the Eclipse IDE. A Linux Target Agent is available as part of the [http://wiki.eclipse.org/DSDP/TM/TCF_FAQ Target Communications Framework (TCF) component]. Info on how RSE is used for e.g. Gumstix development is described in [http://groups.google.com/group/beagleboard/browse_thread/thread/509831f7c24cb79f# this post].<br />
<br />
==Android==<br />
[http://source.android.com Android] platform is a software stack for mobile devices including an operating system, middleware and key applications. Developers can create applications for the platform using the [http://code.google.com/android/ Android SDK]. Applications are written using the Java programming language and run on Dalvik, a custom virtual machine designed for embedded use which runs on top of a Linux kernel.<br />
<br />
There are several resources for Android on OMAP (Beagle) available:<br />
<br />
'''OMAPZOOM'''<br />
<br />
You can find Android port for OMAP ZOOM architecture on [https://omapzoom.org/gf/project/omapandroid/wiki/ OMAPZoom.org's wiki page on Android]. <br />
<br />
'''EMBINUX'''<br />
<br />
[http://beagleboard.org/project/android Beagleboard.org's Android project page] [http://groups.google.com/group/beagleboard/browse_thread/thread/7b422f113ce489b5 announced], the successful porting of Android on Beagle board by [http://embinux.com EMBINUX&trade;] Team. The [http://labs.embinux.org/git/ source code] and [http://www.embinux.com/download_beagle.php binaries] are available for download and review. <br />
<br />
Detailed instructions, for porting Android on Beagle Board, are available [http://labs.embinux.org/index.php/Main_Page here]. Current release supports input devices (keyboard/mouse), network and sound.<br />
<br />
You can [http://in.youtube.com/watch?v=nADn_vNVEKw watch Android booting] on Beagle Board.<br />
<br />
'''Android on OMAP wiki'''<br />
<br />
Wiki page for Andorid on OMAP can be found [[Android on OMAP|here]]<br />
<br />
'''0xdroid'''<br />
<br />
[http://gitorious.org/0xdroid 0xdroid], the enhanced version of Android on Beagleboard by [http://0xlab.org 0xlab]. The [http://gitorious.org/0xdroid source code], [http://downloads.0xlab.org/ pre-built binaries], and [http://code.google.com/p/0xdroid/issues/list issue tracker] are available for review and reference.<br />
<br />
The latest development supports OMAP audio, OMAP video overlays, ARM Cortex A8 NEON/Thumb2 performance optimizations, mouse cursor, hot-pluggable USB keyboard & mouse, user-friendly installer for system image, and various Android tweaks. Detailed instructions for 0xdroid are available through [http://gitorious.org/0xdroid/pages/Home gitorious wiki].<br />
<br />
You can [http://www.youtube.com/watch?v=v6wdTOHrwQw watch 0xdroid demo video] on Beagle Board.<br />
<br />
==Mamona==<br />
<br />
[http://dev.openbossa.org/trac/mamona/wiki Mamona] is an embedded Linux distribution for ARM EABI. The main goal of the Mamona Project is to offer a completely open source alternative/experimental platform for [http://maemo.org/ Maemo] using only free and open source components. Mamona [http://rsalveti.wordpress.com/2008/09/12/mamona-02-is-out 0.2] [http://franciscoalecrim.com/blog/2008/07/29/mamona-working-with-beagleboard/ supports] [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12013&contentId=28741 OMAP3430 Software Development Platform (SDP)], so you can also use it at Beagle (OMAP3530), too. Work is being done to officially support Beagle.<br />
<br />
==Ubuntu==<br />
<br />
See [[BeagleBoardUbuntu|Ubuntu (ARM)]] installation guide how to install Ubuntu (ARM) on BeagleBoard.<br />
<br />
==Debian ARM==<br />
<br />
See [[BeagleBoardDebian|Debian (ARM)]] installation guide how to install Debian (ARM) on BeagleBoard.<br />
<br />
==Handhelds Mojo ARM==<br />
<br />
See [[BeagleBoardHandheldsMojo|Handhelds Mojo (ARM)]] installation guide how to install Handhelds Mojo (ARM) port of Ubuntu on BeagleBoard. (The Mojo project is no longer active, see the Official Ubuntu ARM-port above instead)<br />
<br />
==Scratchbox==<br />
<br />
[http://www.scratchbox.org/ Scratchbox] is a cross-compilation toolkit designed to make embedded Linux application development easier. It also provides a full set of tools to integrate and cross-compile an entire Linux distribution. See [http://felipec.wordpress.com/2009/06/07/installing-scratchbox-1-and-2-for-arm-cross-compilation/ Felipe's Scratbox 1 and 2 intro], too.<br />
<br />
=Software hints=<br />
<br />
This section collects hints, tips & tricks for various software components running on beagle.<br />
<br />
==QEMU==<br />
<br />
[[Qemu|QEMU]] [http://vm-kernel.org/blog/2008/12/15/linux-is-running-on-qemu-omap3/ supports OMAP3] being able to boot a BeagleBoard Linux kernel.<br />
<br />
==Linux hints==<br />
<br />
See BeagleBoard [http://code.google.com/p/beagleboard/wiki/LinuxHints Google wiki Linux hints] page (for Linux WTBU (Wireless TI Business Unit) kernel [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode 2.6.22]). Currently featuring:<br />
<br />
* Switching video output between DVI-D and S-Video<br />
* Disabling framebuffer blanking<br />
* Listing USB devices<br />
<br />
==lmbench==<br />
<br />
Avik posted a detailed [http://groups.google.com/group/beagleboard/browse_thread/thread/c8b8f07ce61161a1 step-by-step procedure] to run [http://sourceforge.net/project/showfiles.php?group_id=14418 lmbench] on Beagle.<br />
<br />
==Mediaplayer (FFmpeg)==<br />
<br />
There is a thread how to get a [http://groups.google.com/group/beagleboard/browse_thread/thread/9b8025fc15120fd9# mediaplayer] with NEON optimization (FFmpeg) to run on Beagle. Includes compiler hints and patches.<br />
<br />
==Java==<br />
<br />
When using the [[BeagleBoard#OpenEmbedded|OpenEmbedded]]-based Angstrom image you have the following options of Java support:<br />
* JamVM + GNU Classpath (small vm, fast interpreter, J2SE-like)<br />
* Cacao + GNU Classpath (JIT compiler, J2SE-like)<br />
* PhoneME Advanced Foundation (JIT compiler, CDC)<br />
<br />
Java support in OpenEmbedded/Angstrom ([http://wiki.openembedded.net/index.php/Java details]) is provided voluntarily through [http://jalimo.org Jalimo].<br />
<br />
See a [http://groups.google.com/group/beagleboard/browse_thread/thread/102f627253919783# post at mailing list], too.<br />
<br />
OpenEmbedded users can add the [http://evolvis.org/scm/?group_id=11 Jalimo Subversion repository] as an overlay (instructions are in the repository). This will allow them to build OpenJDK packages. Inclusion of these recipes in mainline OpenEmbedded is planned but still ongoing.<br />
<br />
The recipes offer the following functionality:<br />
<br />
* OpenJDK + Hotspot (Zero port) (all J2SE functionality, including JVMTI, interpreted only)<br />
* OpenJDK + Cacaco (all J2SE library features, missing JVMTI, decent JIT compiler)<br />
* OpenJDK + Hotspot (Shark port) (not working yet)<br />
<br />
Some guy from ARM Ltd. is working on interpreter optimization in Zero for ARM.<br />
<br />
People interested in getting this stuff working better should contact people on:<br />
* [http://evolvis.org/mail/?group_id=11 Jalimo Mailinglist]<br />
* [http://mail.openjdk.java.net/mailman/listinfo/distro-pkg-dev Icedtea Mailinglist]<br />
<br />
You should also check out IcedTea's [http://iced-tea.org/wiki/FrequentlyAskedQuestions FAQ].<br />
<br />
=Graphics accelerator=<br />
<br />
OMAP3530 used on BeagleBoard contains a graphics accelerator (SGX) based on the SGX core from [http://www.imgtec.com/ Imagination Technologies]. [http://www.imgtec.com/powervr/powervr-graphics.asp PowerVR] SGX530 is a new generation of programmable PowerVR graphics and video IP cores. Only the kernel portions of Linux drivers will be open source. The PowerVR folks will provide binary user-space libraries. Using the EMail contact at [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12700&contentId=27458 TIs Mobile Gaming Developers page] there are Linux v2.6 OMAP3430 SDKs for OMAP3 Zoom and SDP supporting OpenGL ES v2.0, OpenGL ES v1.1 and OpenVG 1.0 available.<br />
<br />
Tutorial:<br />
* [http://code.google.com/p/beagleboard/wiki/HowtoUseSGXunderAngstrom How to use SGX with Angstrom in OE]<br />
<br />
Some videos:<br />
<br />
* [http://www.youtube.com/watch?v=3ToYOgP9f9U SGX on Beagle working with Linux 2.6.27]<br />
* [http://www.youtube.com/watch?v=24TXpqa9jG0&feature=related OpenGL ES 2.0 shader effects on OMAP3]<br />
* [http://www.youtube.com/watch?v=-UFUbqoNgs8&feature=related 3D User Interface on OMAP3 Platform]<br />
* [http://www.youtube.com/watch?v=8KcNgeUriqA 3D Mapping using OpenGL ES 2.0 on OMAP3 Platform]<br />
* [http://www.youtube.com/watch?v=7D3V6BUpGLE Video blending in hardware]<br />
* [http://www.hitlabnz.org/wiki/EmbeddedAR An Augmented Reality application combining ARToolkit and OpenGL ES 2.0]<br />
<br />
=Beginners guide=<br />
<br />
You just got your new BeagleBoard, and now? See [[BeagleBoardBeginners|beginners guides]].<br />
<br />
=FAQ=<br />
<br />
For BeagleBoard frequently asked questions (FAQ) see [[BeagleBoardFAQ|community FAQ]] and "official" [http://beagleboard.org/support/faq BeagleBoard.org FAQ].<br />
<br />
=Links=<br />
==Home page==<br />
[http://beagleboard.org/ beagleboard.org] (beagle board home)<br />
* Using [http://www.google.de/ Google] you can search beagleboard.org (including [http://www.beagleboard.org/irclogs/ IRC logs]) using ''site:beagleboard.org <search term>''<br />
<br />
==Manuals and resources==<br />
* [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard HW Reference Manual (rev. C2)]<br />
* [http://beagle.s3.amazonaws.com/BBSRM_7_2_0.pdf BeagleBoard HW Reference Manual (rev. B7)]<br />
* [http://www.beagleboard.org/uploads/BBSRM_6.pdf BeagleBoard HW Reference Manual (rev. B6)]<br />
* [http://www.beagleboard.org/uploads/BBSRM_B5.pdf BeagleBoard HW Reference Manual (rev. B5)]<br />
* [http://www.beagleboard.org/uploads/Beagle_HRM_B4.pdf BeagleBoard HW Reference Manual (rev. B4)]<br />
* [http://www.beagleboard.org/uploads/Beagle_HW_Reference_Manual_A_5.pdf BeagleBoard HW Reference Manual (rev. A5)]<br />
* [http://focus.ti.com/docs/prod/folders/print/omap3530.html OMAP3530] processor description and manuals<br />
* [http://code.google.com/p/beagleboard/ Beagle at code.google.com]<br />
* [http://focus.ti.com/dsp/docs/dspsupporttechdocs.tsp?sectionId=3&tabId=409&familyId=1526&documentCategoryId=4&techDoc=4 OMAP3530/25 CBB BSDL Model]<br />
* [http://www.micron.com/products/mcps/beagleboard Micron's multi chip packages (MCPs) for Beagle Board]<br />
* [http://beagleboard.org/resources Beagleboard resources page with hw docs]<br />
* Some [http://www.rasterman.com/ performance comparison] of BeagleBoard Rev. B with some other ARM/PC systems.<br />
* OMAP3 pinmux [http://www.hy-research.com/omap3_pinmux.html setup]<br />
* [http://elinux.org/BeagleBoardPinMux OMAP3 eLinux pinmux page]<br />
<br />
==Contact and communication==<br />
* [http://groups.google.com/group/beagleboard Beagle board discussion list]<br />
* [http://code.google.com/p/beagleboard/issues/list Beagle board open point list & issue tracker]<br />
* [http://beagleboard.blogspot.com/ Beagle board blog]<br />
* [http://feeds.feedburner.com/BeagleBoard Beagle board RSS feed]<br />
* Chat:<br />
** [http://beagleboard.org/chat Beagle Board chat]<br />
** IRC: #beagle channel on irc.freenode.net<br />
** [http://www.beagleboard.org/irclogs/index.php IRC archive]<br />
* [http://www.beaglesride.org/ Beagles Ride], a site about building a community around the BeagleBoard focused on in vehicle applications<br />
* [http://www.beagleboard.de/ German Beagle Board Forum and Wiki]<br />
<br />
==TI resources==<br />
* [http://opensource.ti.com/ TI open source page]<br />
* [https://community.ti.com/ TI E2E (Engineer-to-Engineer) Community]<br />
* [http://marc.info/?l=linux-omap&m=120761100810527&w=2 DSP Bridge driver for OMAP3 platform]<br />
* [http://lists.arm.linux.org.uk/lurker/message/20080701.142512.5eeff26b.en.html ARMv7 Oprofile support]<br />
* [http://focus.ti.com/pdfs/wtbu/swpu114g.pdf OMAP34xx Wireless Technical Reference Manual] (swpu114g.pdf, 47 MB)<br />
* [http://amethyst.openembedded.net/~koen/index.php?sort=date&order=desc&path=beagleboard/ Koen's (OpenEmbeded) BeagleBoard source and binaries]<br />
* [http://del.icio.us/tag/beagleboard+peripheral+verified Verified peripherals for BeagleBoard]<br />
* [http://www.celinux.org/elc08_presentations/TI_OMAP3430_Linux_PM_reference.ppt OMAP3430 Linux Power Management presentation]<br />
==Articles==<br />
* [http://linuxdevices.com/news/NS5852740920.html LinuxDevices article about Beagle]<br />
* [http://www.linuxdevices.com/news/NS8479495970.html LinuxDevices article about Digi-Key launch]<br />
* [http://www.linuxdevices.com/news/NS5682470737.html LinuxDevices article about Beagle Rev C, Beagle MID from HY Research, Touch Book and Sponsored Projects Contest]<br />
<br />
==Books==<br />
* [[OMAP_and_DaVinci_Software_for_Dummies|OMAP and DaVinci Software for Dummies]]<br />
==Past Beagle events==<br />
* TIDC, February 26-28, 2008: [http://www.beagleboard.org/uploads/tidc_opensource.pdf Slides from TI developer conference (TIDC) open source session], covering also beagle board<br />
* [http://www.lugradio.org/live/USA2008/ LUG RADIO Live USA 2008, April 12-13, 2008]: [http://www.beagleboard.org/uploads/lugradio_20080411.PPT TI/Beagle Presentation] and [http://forums.lugradio.org/viewtopic.php?f=4&t=4094&st=0&sk=t&sd=a&sid=d69cc807569ab41e33f93af698c536b8&start=15#p41549 video]<br />
* LinuxTag, May 28-31, 2008: [http://www.flickr.com/photos/jadon/2551439955/in/pool-beagleboard picture 1] and [http://www.flickr.com/photos/jadon/2535692865/in/pool-beagleboard picture 2]<br />
* [http://lugradio.org/live/UK2008/travel LugRadio Live UK 2008], July 19 - July 20, 2008: [http://www.flickr.com/photos/koenkooi/tags/lugradiolive/ Koen's pictures] showing e.g. [http://www.bigbuckbunny.org/index.php/download/ Big Buck BUNNY] playing at Beagle. [http://linuxoutlaws.com/podcast/48 Interview with Linux Outlaws (52:06)] and the [http://www.youtube.com/watch?v=m9xVbntl-DY video]<br />
* [http://osscamp.in/index.php/OSScamp_Bengaluru_Mobile_2008 OSScamp Bengaluru Mobile 2008], July 19, 2008<br />
* [http://www.linuxworldexpo.com LinuxWorld Conference & Expo], August 4 - August 7, 2008: [http://www.flickr.com/photos/jadon/sets/72157606586084668/ pictures with living beagle] and from [http://www.flickr.com/photos/linuxjournal/2738316951/in/set-72157606634486338/ Linux Journal's photostream]<br />
* BeagleBoard.org event at Jillian's during LinuxWorldExpo, August 5, 2008, 5:30-7:30 pm<br />
* [http://barcamp.pbwiki.com/BarCampHouston3 BarCamp Houston 3], August 9, 2008, 9:00 A.M.: [http://www.flickr.com/photos/jadon/sets/72157606656532041/ pictures]<br />
* NIT Suratkal, India [http://www.nitkieee.com/site/sp-connect2/schedule IEEE SP Connect 2], August 30, 20008<br />
* [http://barcampbangalore.org/wiki/BCB7_Demos BarCamp Bangalore], India, September 13, 2008<br />
* [http://www.ibc.org/ IBC 2008], September 11 - September 16, 2008: [http://www.flickr.com/photos/koenkooi/tags/ibc2008/ pictures]<br />
* Free Open "Embedded Linux" Training for Students in India, [http://code.google.com/p/beagleboard/wiki/Trainings?updated=Trainings&ts=1220250913 beagleboard.org Trainings in India], September 20, 2008: [http://www.youtube.com/watch?v=A6FLdmgQlb4&feature=PlayList&p=1BAB6EE9CC7285AD&index=0 video], [http://www.flickr.com/photos/25691331@N04/sets/72157607419766102/ photos] and [http://lakshmansrikanth.blogspot.com/2008/09/linux-embedded.html blog]<br />
* [http://www.embedded.co.uk/ Embedded Systems Show 2008], Birmingham, UK, October 1-2, 2008<br />
* [http://www.mvista.com/vision/ MontaVista Vision 2008 Embedded Linux Developers Conference], San Francisco, California, October 1-3, 2008 : [http://www.mvista.com/download/topic.php?t=18 Video and presentation overview], [http://www.mvista.com/download/fetchdoc.php?docid=323 William Mills' presentation], [http://www.mvista.com/download/fetchdoc.php?docid=333 Jason Kridner's presentation]<br />
* [http://www.rtcgroup.com/arm/2008/ ARM Developers' Conference], Santa Clara Convention Center, Santa Clara, Calif., USA, October 7-9, 2008<br />
* [http://www.cmp-egevents.com/web/escb Embedded Systems Conference Boston 2008], Hynes Convention Center, Boston, USA, October 26 - October 30, 2008: [http://beagleboard.org/demo/esc Resources]<br />
* [[BeagleBoard/contest|BeagleBoard contest]] #1: Create a cool BeagleBoard application and win a Rev C1! Closed, ran until January 9, 2009<br />
* [http://www.silica.com/events/seminars/seminar-overview/ti-omp-workshop.html OMAP35x training by Silica], January 21, 2009, Cambridge, UK, ARM Holdings Lecture Theatre. [[RichardB's notes from the seminar]]<br />
* [[BeagleBoard/contest|BeagleBoard contest #2]], unitl February 27, 2009: : Create a cool BeagleBoard application and win a Rev C2!<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/b15cf8a5797c73a2 Silica - Free TI - ARM OMAP Workshop], Brussels, Europe, March 31st 2009<br />
* SILICA's [http://www.silica.com/events/seminars/seminar-overview/ti-omap-piccolo-poing.html Texas Instruments 2-in-1 Seminar: OMAP & Piccolo], May 13th 2009: Poing (Munich) - Germany<br />
* 24th until 27th June 2009: [http://www.linuxtag.org/2009/en.html Linux Tag Germany] with [http://groups.google.com/group/beagleboard/msg/27fefef5f1d2ef73 TI booth] and [http://www.linuxtag.org/2009/en/program/freies-vortragsprogramm/all-events/details.html?talkid=183 Beagle presentation]<br />
* until 31st July 2009: [http://www.cranessoftware.com/services/training/beagledesigncontest.html BeagleBoard Design Contest INDIA Edition] ([http://beagleboard.blogspot.com/2009/04/beagleboard-design-contest-india.html blog entry])<br />
* TI Technology Day Dallas, Tex. on June 16 will held a [http://www.linuxdevices.com/news/NS5682470737.html BeagleBoard users group meeting] (see section ''Availability'').<br />
<br />
==Beagle wiki pages==<br />
* [[BeagleBoardBeginners|BeagleBoard beginners guides]]<br />
* [[BeagleBoardAndOpenEmbeddedGit|BeagleBoard and OpenEmbedded Git]] installation guide and [[BeagleBoardOpenEmbeddedDevelopment|OpenEmbedded development]]<br />
* [[BeagleBoardDebian|Debian on BeagleBoard]] usage guide<br />
* [[BeagleBoardHandheldsMojo|Handhelds Mojo (ARM) on BeagleBoard]] usage guide (formerly known as Ubuntu (ARM))<br />
* [[BeagleBoardUbuntu|Ubuntu (ARM EABI) distribution at BeagleBoard]]<br />
* [[BeagleBoardRecovery|BeagleBoard recovery]] about fixing boards not booting any more because of broken NAND content<br />
* [[BeagleBoardJTAG|BeagleBoard JTAG]] and [[OMAP3530_ICEPICK|OMAP3530_ICEPICK]] about JTAG on BeagleBoard<br />
* [[BeagleBoardOpenOCD|BeagleBoard OpenOCD]] has infos about status and usage of open source JTAG software OpenOCD with Beagle<br />
* [[BeagleBoardNAND|BeagleBoard NAND boot]] about how to boot BeagleBoard from NAND flash<br />
* [[BeagleBoardPeripherals|BeagleBoard peripherals and adapters page]] about useful BeagleBoard add ons.<br />
* [[Mount_BeagleBoard_Root_Filesystem_over_NFS_via_USB|Mount BeagleBoard root file system over NFS via USB]]<br />
* [[BeagleBoardFAQ|BeagleBoard FAQ]]<br />
* [[BeagleBoardSugar|Sugar on BeagleBoard]]<br />
* [[BeagleBoard/DSP_Howto|BeagleBoard DSP howto]]<br />
* [[BeagleBoardRawLCD|Interfacing BeagleBoard to Raw LCD]]<br />
* [[BeagleBoard/gst-openmax|BeagleBoard OpenMAX usage]]<br />
* [[BeagleBoard/video|BeagleBoard video]]<br />
* [[BeagleBoardOpenCV|Using OpenCV computer vision library with BeagleBoard]]<br />
* [[BeagleBoard/James|James]]: Just A Miniature Entertainment System<br />
* [[U-boot_musb_gadget_support|U-boot musb gadget support]]<br />
* [[BeagleBoard-JP|Japanese translation of this Beagle page]]<br />
* [[BeagleEPD|BeagleBoard E-Ink Platform Driver]]<br />
* [[BeagleBoardFedora|Random hacking notes for getting Fedora 10 to kinda work with the BeagleBoard]]<br />
* BeagleBoard specific [[BeagleBoard/GSoC|Google Summer of Code 2009]] page, [[BeagleBoard/Ideas-2009|GSoC project ideas]] and [[BeagleBoard/GSoC/Application|GSoc application]]<br />
* [[BeagleBoard/Poky|Poky]] for BeagleBoard<br />
* [[Xenarc_USB_touchscreen_for_Beagleboard/OMAP3_EVM|Xenarc USB touchscreen for Beagleboard/OMAP3 EVM]]<br />
* [[BeagleBoard/BugAdapter|BeagleBoard Bug Adapter board]]<br />
* [[BeagleBoardDebianWifiInstallInfo|BeagleBoard Debian WiFi install info]]<br />
* [[BeagleBoard/DSP_Clarification|Info about the various Linux DSP systems for OMAP chips]]<br />
* [[BeagleBoardPinMux|BeagleBoard PinMux]]<br />
* [[BeagleBoardLinuxKernel|BeagleBoard Linux kernel manual compile]]<br />
* [http://www.hervanta.com/stuff/Beaglebot Beaglebot]: build an experimental robotics project with Beagle<br />
* [http://code.google.com/p/beagleboard/w/list code.google.com BeagleBoard wiki]<br />
* '''[[BeagleBoard/contest|BeagleBoard contest]]'''<br />
* [http://en.wikipedia.org/wiki/Beagle_Board Wikipedia BeagleBoard page]<br />
* [http://labs.embinux.org/index.php/Android_Porting_Guide_to_Beagle_Board Android port for BeagleBoard]: Instructions for porting Android on BeagleBoard<br />
* [[BeagleBoard/bangalore_user_meet |BeagleBoard Bangalore User Meet]]<br />
* [[BeagleBoardEclipse|Using Eclipse with Beagle]] (for JTAG debugging)<br />
* [[Zoom2Beginners|Zoom2 for Beginners]]<br />
* [http://wh1t3s.com/2009/05/11/beagleboard-as-usb-mass-storage-device-via-usb-otg/ BeagleBoard as USB Mass Storage Device via USB OTG]<br />
* [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/index.htm BeagleBoard as solar powered computer]<br />
* [http://blog.makezine.com/archive/2009/02/blinking_leds_with_the_beagle_board.html Blinking LEDs with the Beagle Board] from Make:Online<br />
* [http://www.crashcourse.ca/wiki/index.php/BeagleBoard Robert's private Beagle wiki] (please don't add anything there, do it here. It will help to avoid scattering. Thanks!)<br />
* [http://felipec.wordpress.com/2009/03/26/omap3-public-dsp-binaries-now-work/ Felipe's blog] about D1 MPEG-4 decoding using less than 15% of CPU with help of DSP<br />
* [http://www.syspire.de/node/3 Embedded Mediacenter] based on BeagleBoard (German)<br />
* [http://pandorawiki.org/Floating_Point_Optimization Floating Point Optimization] with VFP-lite and NEON intro<br />
* [http://particolarmente-urgentissimo.blogspot.com/2009/09/beagleboard-setting-date-via-gps.html Beagleboard setting date via GPS]<br />
<br />
==Beagle photos==<br />
* [http://www.flickr.com/groups/beagleboard/pool/ Beagle board pictures at flickr]<br />
* [http://www.flickr.com/photos/32615155@N00/2439256116/ Beagle board and USRP]<br />
* [http://www.flickr.com/photos/nishanthmenon/2438406603/ Modify SDP3430 QUART cable for beagle]<br />
* [http://www.flickr.com/photos/koenkooi/2695061759/ MythTV on Beagle]<br />
==Beagle videos==<br />
* [http://uk.youtube.com/watch?v=fL_XMieanSc Beagle Board Beginnings]<br />
* [http://www.youtube.com/watch?v=cXr-D1wROfQ Beagleboard in the Living Room]<br />
* [http://uk.youtube.com/watch?v=FuVwh_VrIxk Beagle Board 3D, Angstrom, and Ubuntu]<br />
* [http://uk.youtube.com/watch?v=TUYOjRGYeYU testsprite with beagleboard]<br />
* [http://uk.youtube.com/watch?v=9Z4ZTovtFKk Beagleboard LED demo]<br />
* [http://uk.youtube.com/watch?v=R33dzREZGEk LCD2USB attached to a beagleboard]<br />
* [http://www.youtube.com/watch?v=7D3V6BUpGLE Video blending in hardware]<br />
* [http://www.youtube.com/watch?v=-tUBXD-KRp4 Beagle Running Angstrom (VGA) on DLP Pico Projector]<br />
* [http://www.youtube.com/watch?v=3ToYOgP9f9U SGX on Beagle working with Linux 2.6.27]<br />
* Not on Beagle OMAP3530: [http://youtube.com/watch?v=5i9cWOK1spw Ubuntu 7.04 on on OMAP3430 SDP]<br />
* [http://in.youtube.com/watch?v=nADn_vNVEKw Beagle Board booting Android]<br />
<br />
==Beagle manufacturing==<br />
* [http://www.youtube.com/watch?v=C-CwkjT9z_0&feature=related Beagle Solder Paste Screening]<br />
* [http://www.youtube.com/watch?v=9LLjDovIG2M&feature=related Beagle Assembly Inspection]<br />
* [http://www.youtube.com/watch?v=sbOZfBnoVnM&feature=related Beagle Functional Test]<br />
* [http://www.youtube.com/watch?v=cvDtXmJJcEI&feature=related Beagle Reflow]<br />
* [http://www.youtube.com/watch?v=W2o4NTASxN0&feature=related Beagle Board Assembly at Circuitco]<br />
==Fun==<br />
* Enjoy [http://www.beaglegame.com/ BeagleGame]<br />
<br />
=Other OMAP boards=<br />
<br />
* OMAP1 OMAP5912 (ARM9 + C5x DSP) based [[OSK|OSK]] board.<br />
* OMAP3 OMAP3430 based [https://gforge.ti.com/gf/project/omapzoom/wiki/?pagename=HardwareInformation Zoom MDK], which has been superseded by the [http://www.logicpd.com/products/development-kits/texas-instruments-zoom%E2%84%A2-omap34x-ii-mdp Zoom II], and other [http://www.logicpd.com/products LogicPD kits].<br />
* OMAP3 OMAP3530 based [http://www.openpandora.org/ Pandora]<br />
* OMAP3 OMAP3503 based [http://www.gumstix.net/Overo/cat/Overo/115.html Gumstix Overo]<br />
* OMAP3 OMAP35x based EVM from [http://mistralsolutions.com/products/omap_3evm.php Mistral] and [http://focus.ti.com/docs/toolsw/folders/print/tmdxevm3503.html TI] (both are the same)<br />
* OMAP3 OMAP3430 based [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12013&contentId=28741 Software Development Platform (SDP)]<br />
* OMAP3 OMAP3530 based board from [http://www.magniel.com/omap3.html Magniel Inc.]<br />
* OMAP3 based [http://www.archos.com/products/imt/index.html?country=us&lang=en Archos 5, ARCHOS 5G and ARCHOS 7]<br />
* OMAP3 OMAP35x based [http://www.logicpd.com/products/som/ti/omap35x OMAP35x SOM-LV]<br />
* OMAP3 based [[Mini_Board|ICETEK-OMAP3530-Mini]], a Chinese BeagleBoard clone, with a [[MiniBoardFAQ|FAQ]]<br />
* OMAP3 based [http://www.ebv.com/en/products/categories/details/product/ebvbeagle-board EBVBeagle], a German BeagleBoard clone<br />
* OMAP3530 based [http://www.bsquare.com/products/hardware_solutions/3530.asp BSQUARE’s Dev Kit OMAP3530]<br />
* OMAP3530 based [http://beaversource.oregonstate.edu/projects/cspfl/wiki/CSPFL_Hardware OSWALD]<br />
* OMAP3 BeagleBoard-based [http://www.alwaysinnovating.com/touchbook/ Touch Book]<br />
* OMAP3530 based [http://www.analogue-micro.com/Cobra3530.html Cobra 3530 OMAP3530 module ]<br />
* OMAP3 based [http://www.kwikbyte.com/KBOC.html KwikByte 35XX System Module]<br />
* OMAP3530 based [[DevKit8000]], a Chinese BeagleBoard clone, slightly larger with additional peripherals (e.g. LCD/TSP, Ethernet and keyboard)<br />
* OMAP3530 based [http://www.igep-platform.com/ IGEPv2 Platform], a Spanish BeagleBoard clone, slightly larger, with additional peripherals like e.g. ethernet connector, wifi+bluetooth.<br />
* OMAP35x based [http://www.ultratronik.de/mmi-rechnerplattformen.html MMI4 from Ultratronik]<br />
* OMAP35x based [http://www.technexion.com/index.php/tao-3530 TAO-3530 from TechNexion]</div>Rpjdayhttps://elinux.org/index.php?title=BeagleBoard_Community&diff=14325BeagleBoard Community2009-10-20T22:31:08Z<p>Rpjday: Correct the actual name and version of the SRM.</p>
<hr />
<div>[[Category: Linux]]<br />
[[Category: OMAP]]<br />
[[Category:Development Boards]]<br />
[[Category: BeagleBoard]]<br />
This page collects information about [http://www.ti.com/ TI's] [http://www.arm.com/ ARM] based [http://focus.ti.com/general/docs/gencontent.tsp?contentId=36915&amp;DCMP=OMAP_Feb27_2008&amp;HQS=Other+PR+omap3503pr OMAP3] [http://beagleboard.org Beagle Board].<br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:#ffffcc; align:right; "><br />
'''NEWS:''' [http://www.tincantools.com/product.php?productid=16147&cat=0&page=1&featured Zippy] Expansion boards for the [[BeagleBoard]] are now available!<br />
</div><br />
<br />
<br />
=Events=<br />
* Each last Saturday of the month, next August 29, 2009: [[BeagleBoard/bangalore user meet|BeagleBoard Bangalore user meeting]] (Beagle Clinic India)<br />
* all over the world 2009: [http://www.ti.com/corp/docs/landing/techday09/index.shtml# TI Technology Days 2009]. <br />
* ongoing 2009: [[BeagleBoard/contest|Beagle Sponsored Project Program]] - add a cool project and get a free BeagleBoard to realize it!<br />
<br />
=Hardware=<br />
<br />
The Beagle Board is ''a low-cost, fan-less single-board computer based on TI's OMAP3 device family, with all of the expandability of today's desktop machines, but without the bulk, expense, or noise'' (from [http://beagleboard.org/ beagleboard.org]). It uses a TI [http://focus.ti.com/docs/prod/folders/print/omap3530.html OMAP3530] processor (ARM Cortex-A8 superscalar core ~600MHz paired with a TMS320C64x+ DSP ~430MHz and an Imagination SGX 2D/3D graphics processor). See [http://focus.ti.com/docs/prod/folders/print/omap3530.html#features OMAP3530 features] for more processor features. [[BeagleBoard#Availability|Price is USD 149]]. The design goal was to make it as simple and cheap as possible, e.g. not having a LCD added, but letting you connect all add-ons available as cheap external components. See [http://beagleboard.org/brief What is Beagle?] and [http://linuxdevices.com/news/NS5852740920.html LinuxDevices article] for more details.<br />
<br />
The videos [http://uk.youtube.com/watch?v=fL_XMieanSc Beagle Board Beginnings] and [http://uk.youtube.com/watch?v=FuVwh_VrIxk Beagle Board 3D, Angstrom, and Ubuntu] give you a good intro about what BeagleBoard is about and it's capabilities.<br />
<br />
==Components==<br />
<br />
{|border=0<br />
!Top view of rev B:<br />
!Top view of rev C:<br />
|-<br />
|[[Image:Bb revb top numbered.jpg]]<br />
|[[Image:Bb revc top numbered.jpg]]<br />
|-<br />
|}<br />
{|border=1<br />
!No.<br />
!Name<br />
!Comment<br />
|-<br />
|'''1'''<br />
|[http://www.ti.com/omap35x OMAP3530] processor + 256MB NAND<br />
<br />
+ 128MB DDR (rev B)<br />
<br />
+ 256MB DDR (rev C)<br />
|PoP: Package-On-Package implementation for Memory Stacking<br />
[http://www.micron.com/products/partdetail?part=MT29C2G24MAKLAJG-6%20IT 256MB NAND/128MB Mobile DDR SDRAM] available from [http://www.digikey.com/scripts/US/DKSUS.dll?Detail?name=557-1435-ND DigiKey]<br />
<br />
([http://www.micron.com/products/partdetail?part=MT29C4G48MAPLCJI-6%20IT 512MB NAND/256MB Mobile DDR SDRAM] available from [http://www.digikey.com/scripts/US/DKSUS.dll?Detail?name=557-1436-ND DigiKey])<br />
<br />
[http://www.micron.com/products/mcps/beagleboard Micron's multi chip packages (MCPs) for Beagle Board]<br />
|-<br />
|'''2'''<br />
|[http://focus.ti.com/docs/prod/folders/print/tfp410.html DVI chip (TFP410)]<br />
|<br />
|-<br />
|'''3'''<br />
|[[BeagleBoard#DVI|DVI-D]]<br />
|Connection via HDMI connector<br />
|-<br />
|'''4'''<br />
|[[BeagleBoard#JTAG|14-pin JTAG]]<br />
|1.8V only!<br />
|-<br />
|'''5'''<br />
|Expansion connector: I2C, I2S, SPI, MMC/SD<br />
|User must solder desired header into place<br />
|-<br />
|'''6'''<br />
|[[BeagleBoard#User_button|User button]] <br />
|Allows setting boot order.<br />
|-<br />
|'''7'''<br />
| Reset button<br />
|<br />
|-<br />
| '''8'''<br />
|[[BeagleBoard#EHCI|USB 2.0 EHCI HS]]<br />
|Rev A and B: not working, unpopulated<br />
<br />
Rev C: populated and working<br />
|-<br />
|'''9'''<br />
|SD/MMC+<br />
| SDHC cards are supported<br />
|-<br />
|'''10'''<br />
|[[BeagleBoard#RS232|RS-232 serial]]<br />
|<br />
|-<br />
|'''11'''<br />
|Alternate power <br />
|normally powered by USB (unmounted on REV Ax boards, see [[BeagleBoard#Errata|errata]])<br />
|-<br />
|'''12'''<br />
|[[BeagleBoard#OTG|USB 2.0 HS OTG]] <br />
|Mini-AB connector. Board can be powered from port. <br />
|-<br />
|'''13'''<br />
|Stereo In<br />
|<br />
|-<br />
|'''14'''<br />
|Stereo Out<br />
|<br />
|-<br />
|'''15'''<br />
|S-Video<br />
|<br />
|-<br />
|'''16'''<br />
|TWL4030 (Rev A thru C2 inc.)<br />
[http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] (Rev C3 onwards)<br />
|Audio CODEC, USB port, power-on reset and power management. The TWL4030 is pin-compatible with the [http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] chip and was used due to the very limited availability of the TPS65950 in early board revisions.<br />
|-<br />
|'''17'''<br />
|LCD<br />
|only rev C<br />
|-<br />
|'''18'''<br />
|USB power<br />
|<br />
|-<br />
|'''19'''<br />
|Host PHY<br />
|<br />
|-<br />
|'''20'''<br />
|32kHz<br />
|<br />
|-<br />
|'''21'''<br />
|12MHz<br />
|<br />
|-<br />
|'''22'''<br />
|RS232 XVCR<br />
|<br />
|-<br />
|'''23'''<br />
|PWR SW<br />
|<br />
|-<br />
|'''24'''<br />
|VBAT<br />
|<br />
|-<br />
|}<br />
<br />
* Board size: 3" x 3" (about 76.2 x 76.2 mm)<br />
* Weight: [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/beagleboard.png ~37g]<br />
* Currently 6 layer PCB; target: 4 layer<br />
<br />
'''Bottom of rev B:'''<br />
<br />
[[Image:Beagle_bottom.jpg]]<br />
<br />
See [http://www.flickr.com/photos/jadon/sets/72157606050144396/ jadonk's photostream] for some more detailed BeagleBoard pictures.<br />
<br />
==Manual==<br />
<br />
See [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard System Reference Manual (rev. C3.0)].<br />
<br />
==Schematic==<br />
<br />
Schematic of BeagleBoard Rev. C3 is available as part of [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard System Reference Manual (rev. C3.0)]. Rev C3 and previous are also available from [http://beagleboard.org/hardware/design BeagleBoard.org design page] including in PDF format. Please make sure that you ''read, understand and agree'' [http://groups.google.com/group/beagleboard/msg/ee3e1bc927551ffc Jason's mail] before using this.<br />
<br />
==Layout== <br />
<br />
Layout of BeagleBoard Rev. C3 is available as part of [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard HW Reference Manual (rev. C3.2)]. Rev C3 and previous layouts are also available from the [http://beagleboard.org/hardware/design BeagleBoard.org design page]. Please make sure that you ''read, understand and agree'' [http://groups.google.com/group/beagleboard/msg/ee3e1bc927551ffc Jason's mail] before using this.<br />
<br />
==Errata==<br />
<br />
# ''Boards revision A only'': The DC power jack pinout is incorrect on the PCB layout. DC_5V and GND are switched on PCB layout. Normally, the power jack has DC_5V on the center pin and GND on the sleeve (see Figure 20 of [http://www.beagleboard.org/uploads/BBSRM_6.pdf Beagle HW manual]). But on revision Ax boards the PCB layout has GND on center and DC_5V on sleeve. For this reason it is currently removed. It will be back on the Rev B board. Workaround is to remove wire connecting the two power pins on revision Ax boards and use external [http://amethyst.openembedded.net/~koen/beagleboard/beagle-power-pads.jpg power supply with switched connector] (do not connect anything to the “?” terminal. USB power will be permanently disabled and the board can only be powered from the 5V.) See [http://www.flickr.com/photos/koenkooi/2512038988/ Koen's Beagleboard powermod picture] with short descriptions, too.<br />
# ''Boards revision < A5 only'': There is excess voltage drop across R6 which is used to measure the current consumption on the board. This needs to be a .1 ohm instead of a 1 ohm resistor (SMD 0805). All revision A5 boards have been updated to .1. You can also just solder in a jumper to J2 bypassing the current read point. This issue can cause issues with the USB host port as the voltage supplied to that port can be too low.<br />
# ''Boards revision A only'': User LEDs 0 and 1 are shorted on the layout preventing them from being controlled individually. You need to control both GPIO_149 and GPIO_150 to turn on or off both LEDs. This is fixed in the Rev B boards.<br />
# ''Boards revision < A5 only'': There is an issue where on some boards the 1.8V has excessive noise on it. This is the result of two incorrect parts L1 and L3 being installed on the board. The inductors that were initially installed in the switchers are 100uH and need to be 1uH. This change will require that the board be returned for update. To check for correct parts, have a look to bottom of BeagleBoard. L1 - L3 are the larger parts there. They all have to be labeled with "102" (== 1uH). If any of these three inductors are labeled with "104" (== 100uH) they are wrong and have to be exchanged.<br />
# ''Boards revision A and B'': USB HOST (EHCI) failures. See [http://code.google.com/p/beagleboard/issues/detail?id=15 issue 15] and [http://code.google.com/p/beagleboard/wiki/USBHostTestREPRODUCE USB host test reproduce]. This is a hardware defect. [http://www.beagleboard.org/irclogs/index.php?date=2008-05-29#T00:27:06 Most probably] Rev. B board does not have the EHCI USB connector mounted. Workaround: Use [[BeagleBoard#OTG|OTG port]] with something like [http://trisoft.de/pics/ZHost.JPG mini A to USB A adapter] instead.<br />
# ''Boards revision A and < B4'': Plugging in a USB OTG cable will prevent Beagle from booting (with git kernel), see [http://code.google.com/p/beagleboard/issues/detail?id=19 issue #19], too. This is due to missing filtering capacitor at USB OTG VBUS. When the kernel driver detects that a USB OTG cable is inserted it enables the charge pump to generate VBUS. With no filtering VBUS looks like any switching regulator output with no filtering -- a huge voltage spike when the switch is on, followed by a rapid decay to a low voltage until the next switch on period. The capacitor is there to store energy between the output switch ON and OFF time, the feedback loop in the regulator does sample the cap voltage. Fix is to piggy-back solder a 0603 2.2uF ceramic capacitor to D3, see [http://www.sakoman.net/omap3/beagle/vbus-mod-d3.jpg VBUS modification D3 picture]. Revision B4 boards and newer have this fix applied. Thanks to [http://groups.google.com/group/beagleboard/msg/eb789e15c99a673d Steve] for debugging this!<br />
# ''Boards revision A and < B5'': There is some issue with 32kHz clock depending on system configuration used to clock some OMAP3 peripherals. From this e.g. GPIOs, GPTIMERs, and USB on Beagle might be affected. See [http://code.google.com/p/beagleboard/issues/detail?id=22 Issue 22]. Symptom from this is that after booting Linux kernel serial console hangs after some time and no serial input/output is possible any more. There is one software workaround and one hardware fix for this: (A) Software workaround: Don't use 32kHz timer to clock Linux, instead use MPU timer. (B) Hardware workaround: Remove [http://www.flickr.com/photos/25691331@N04/2766671437/in/pool-beagleboard capacitor C70], which improves the 32kHz clock quality and avoids hang-up. Note: Revision A boards have capacitor C70 [http://www.flickr.com/photos/25691331@N04/2766671437/in/pool-beagleboard at the same location] as rev. B boards. Note: Board revision >= B5 removes capacitor C70.<br />
# ''Random boards, quite rare, revision < B6'': Some random boards and quite rare, show directly after purchasing broken serial communication from host PC to BeagleBoard. Symptom is that you get a new board, get serial output from BeagleBoard in terminal program, but can't type anything at U-Boot prompt (Note: Don't mix this with errata #7. With errata #7 you are able to use U-Boot normally, but Linux prompt input stops after some time). Most users don't have this issue, though. So, first double check your serial configuration ([[BeagleBoardFAQ#Serial_connection_.231|FAQ1]], [[BeagleBoardFAQ#Serial_connection_.232|FAQ2]] and [[BeagleBoardFAQ#Serial_connection_.233|FAQ3]]). Only if you are really, really sure that anything with your serial connection is fine, consider sending the board back doing a [http://beagleboard.org/support/rma RMA request]. This issue was resolved on revision B6 and later boards.<br />
<br />
For additional (software) issues and enhancement requests see [http://code.google.com/p/beagleboard/issues/list Beagle board open point list & issue tracker], too.<br />
<br />
Note: BeagleBoard revision B6 uses different package for U9/U11.<br />
<br />
==Clocking==<br />
<br />
Some [http://www.beagleboard.org/irclogs/index.php?date=2008-07-08#T21:12:23 notes] about (ARM processor) clock rates at BeagleBoard:<br />
<br />
* ARM Cortex-A8 processor is currently clocked at 500MHz<br />
* 500MHz is the default used because it is a balance of performance and longevity<br />
* For OMAP35x 600MHz is max recommended<br />
* At 600MHz OMAP35x is considered to be 'overdrive' and it does not have the same life expectancy<br />
* Higher than 600MHz is out of spec and no guarantee it will work at all (or not damage itself)<br />
* Also keep in mind that if you go higher you probably want to increase the core voltage. Some of this is mentioned in table 3-3 of the [http://focus.ti.com/lit/ds/symlink/omap3530.pdf OMAP3530 data sheet]. Some numbers:<br />
<br />
{| border="1"<br />
||'''ARM'''||'''DSP'''||'''core voltage'''<br />
|-<br />
|600 MHz||430 MHz||1.35V<br />
|-<br />
|550 MHz||400 MHz||1.27V<br />
|-<br />
|500 MHz||360 MHz||1.2V<br />
|}<br />
<br />
* For some OMAP3 clock, voltage and power management discussion see [http://focus.ti.com/lit/an/sprt495/sprt495.pdf OMAP3 power management white paper], too.<br />
* The OMAP3 chip on the Beagle lacks the efuses needed for using the SmartReflex technology, see [http://www.beagleboard.org/irclogs/index.php?date=2009-02-26#T10:44:24].<br />
* There is a thermal monitor in the core, you could use to scale frequency up and down<br />
<br />
To set CPU clock to 600 MHz, there are two options. Both '''do not''' adjust the voltage, so the system may become unstable:<br />
<br />
* The u-boot command "mw 48004940 0012580c" will temporarily set the CPU clock to 600 MHz (not permanent over reset).<br />
* To permanently set the CPU clock to 600 MHz, include the above command in the "bootcmd" variable or equivalent script.<br />
<br />
==Power management==<br />
<br />
* Latest Linux kernel power management development for TI OMAP SoCs is maintained in [http://git.kernel.org/?p=linux/kernel/git/khilman/linux-omap-pm.git;a=summary Kevin's linux-omap-pm git tree]<br />
* Russ' Beagle HW modifications resulted in [http://groups.google.com/group/beagleboard/browse_thread/thread/197a8ef6b46cc828 8mW sleep for Beagle Board]<br />
<br />
Without PM kernel, the Beagle [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/index.htm consumes ~1.5 watts idle, however it also uses the same amount under load] (see bottom of that page).<br />
<br />
==DLP Pico projector==<br />
<br />
Texas Instruments is developing a Pico Video Projector Kit (PVPK) as a peripheral for the Beagle Board. The stand alone pico projector will support VGA resolution (640 x 480), RGB 888 input through a DVI interface. The physical connector on the projector will be HDMI. See [http://groups.google.com/group/beagleboard/msg/10e218972380ee48 mailing list] and [http://www.youtube.com/watch?v=-tUBXD-KRp4 Beagle Running Angstrom (VGA) on DLP Pico Projector] for more details.<br />
<br />
It is available from [http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=296-23836-ND DigiKey] for $349.<br />
<br />
See [http://blog.makezine.com/archive/2009/01/tis_beagleboard_and_dlp_pico_projector.html?CMP=OTC-0D6B48984890 article from Make], too.<br />
<br />
DigiKey videos [http://www.youtube.com/watch?v=KBbCdnOj5vg part 1], [http://www.youtube.com/watch?v=zymOmduNWyI part 2] and [http://www.youtube.com/watch?v=Uj19Bi5NYeU part 3].<br />
<br />
==Interfacing to Raw LCD Panels==<br />
<br />
Currently on Rev A / B boards there is no direct access to the LCD lines before they enter the DVI framer. The REV C2 provides access to these lines. Several projects to interface an LCD to the beagleboard exist:<br />
<br />
* [[BeagleBoardRawLCD|interfacing to Raw LCD Panels]] article <br />
* [http://digitalsurveyinstruments.com/beagleperiphials/hdmi2parallel/doc/index.htm hdmi to parallel] workaround method<br />
* [http://www.harbaum.org/till/dvi2par/index.shtml dvi2par cheap diy HDMI to parallel converter]<br />
<br />
=Availability=<br />
<br />
BeagleBoards, currently Rev. C3 boards, are available from<br />
<br />
* [http://www.mouser.com/beagleboard Mouser]<br />
* [http://dkc1.digikey.com/us/mkt/beagleboard.html Digi-Key] with part number [http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=296-23428-ND 296-23428-ND].<br />
<br />
Note: For non-US Digi-Key free shipping orders:<br />
<br />
* Click the US flag on the top right corner of [http://dkc1.digikey.com/us/mkt/beagleboard.html Digi-Key] BeagleBoard page to come to the international page<br />
* Select ''Order Online'' for your country<br />
* Add quantity ''1'' and part number ''296-23428-ND''<br />
* Click ''Add to order''<br />
<br />
When ordering over 65 EUR / GBP 50 product (BeagleBoard is above), for Europe the price depends on the actual dollar to EUR/GBP rate. On nov 9, 2008 the price was EUR 124 with free shipping.<br />
<br />
Note: Some users report that they got some questions from DigiKey to be answered before board shipping is done.<br />
<br />
Note: While you get free shipping, most probably you have to pay tax e.g. ordering from Europe. Users report that they had to pay EUR ~34 - 44 VAT + importing taxes (depending on european country), resulting in EUR 137 - 147 ordering from Europe.<br />
<br />
Note: For European users, [http://www.ebv.com/fileadmin/products/Press_Print/Campaigns/2009/Product_Campaigns/Texas_Beagle_Board_englisch.pdf EBV Elektronik] sells its own blue version of the board for 179 EUR, which includes all useful accessories (DVI cable, serial cable, USB 2.0 Ethernet, USB hub, 2 GB MMC, power supply, Linux BSP).<br />
<br />
Note: German (Europe) users can order through German shops, too. For higher price, though. <br />
* [http://shop.embedded-projects.net/product_info.php/info/p159_BeagleBoard--OMAP-3-.html Embedded Projects Shop] sells BeagleBoard for EUR 199.00 + shipping.<br />
* [http://www.handheld-linux.com/wiki.php?page=Beagle%20Board Handheld-Linux]<br />
<br />
See below for ''hardware'' differences of the revisions. There are no ''software'' differences. <br />
<br />
==Revision A==<br />
<br />
There are some limited early revision Ax prototypes out there used by some hackers hanging around at #beagle channel on irc.freenode.net. See [[BeagleBoard#Errata|errata]] for limitations.<br />
<br />
==Revision B==<br />
<br />
Revision B is same as revision A, except<br />
* fix for shorted LEDs 0/1<br />
* fix for wrong power jack pinout<br />
* revision B6 uses different package for U9/U11<br />
Still has USB HOST (EHCI) failures. USB HOST (EHCI) connector isn't mounted.<br />
<br />
There are 4 revisions of the B board in the field: B4, B5, B6 and B7.<br />
<br />
The most notable difference is the use of the ES3.0 silicon in B6 and B7, other changes are not relevant to software developers.<br />
<br />
==Revision C2==<br />
Revision C2 is same as revision B7 except:<br />
* USB HOST (EHCI) is operational on revision C2, with standard USB A female connector.<br />
* Add interface for raw LCDs ([http://groups.google.com/group/beagleboard/msg/2e82c3ed6061d9d2 mockup])<br />
* It uses updated OMAP3 revision. BeagleBoard revisions B4+B5 uses OMAP3 ES 2.1 (engineering sample), while BeagleBoard revision C2 uses ES 3.0. OMAP3 ES 3.0 fixes minor issues:<br />
** updated ARM Cortex A8 silicon (r1p3) fixing a very rare [http://elinux.org/BeagleBoardFAQ#NEON_performance NEON issue] that has not been seen in real code<br />
* Power measurement feature<br />
* Uses [http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] OMAP power controller instead of TWL4030<br />
* Three additional PWM signals on the expansion connector added as pin mux options to existing pins ([http://groups.google.com/group/beagleboard/browse_thread/thread/d5872b7c6d74592c?hl=en# message])<br />
* Revision detection (to be able to identify C2 board from older boards by software, e.g. for different pin mux)<br />
* 256MB RAM ([http://groups.google.com/group/beagleboard/msg/3a38d0f21cefd6b1?hl=en message]) (and still 256MB NAND like rev B)<br />
<br />
Note: Revision C2 is the first production version, and all orders from from Digi-Key are shipped as Rev C2.<br />
<br />
==Revision C3==<br />
As revision C2 boards are [http://groups.google.com/group/beagleboard/msg/e41d3c97aa7d4951 sold out], revision C3 will ship now.<br />
<br />
Revision C3 is same as revision C2 [http://groups.google.com/group/beagleboard/msg/037318fbc44139d5 except]:<br />
* Optional RTC [http://parts.digikey.com/1/parts/1454-battery-lith-coin-3v-12-5mm-vert-vl-1220-vcn.html VL1220 series] backup battery<br />
* Mounting holes conected to ground<br />
* Slightly improved S-Video<br />
<br />
==Clones==<br />
===EBVBeagle===<br />
EBV build and sell their own BeagleBoard called [http://www.ebv.com/en/products/categories/details/product/ebvbeagle-board EBVBeagle], see e.g. [http://fl0rian.wordpress.com/2009/03/08/the-other-beagleboard/].<br />
It is actually a BeagleBoard revision C2 with green PCB boxed with some useful accessories. It comes as a quite complete starter kit with AC adapter, USB to Ethernet adapter, MMC card, USB hub and some cables.<br />
More information in [http://www.ebv.com/en/press-print/news-pr/details/news//press-releas-54.html official press release].<br />
<br />
===Mini Board===<br />
[[Mini_Board|ICETEK-OMAP3530-Mini]] is a chinese BeagleBoard clone.<br />
<br />
===DevKit 8000===<br />
[[DevKit8000]] is a Chinese BeagleBoard clone, slightly larger with additional peripherals (e.g. LCD/TSP, Ethernet and keyboard).<br />
<br />
===IGEPv2===<br />
[http://www.igep-platform.com/ IGEPv2 Platform] is a Spanish BeagleBoard clone, slightly larger, with additional peripherals like e.g. ethernet connector, wifi+bluetooth.<br />
<br />
==BeagleBoard-based products==<br />
* [http://www.alwaysinnovating.com/touchbook/ Always Innovating Touch Book], see [http://gigglehd.com/zbxe/hdforum/files/attach/images/899852/493/987/001/always_innovating_touch_book_0011.jpg]<br />
<br />
==Beagle case==<br />
<br />
*[http://specialcomp.com/beagleboard/ Special Computing]<br />
*[http://groups.google.com/group/beagleboard/browse_thread/thread/1c82316019633e51 SketchUp 3D model]<br />
<br />
=Adapters=<br />
<br />
For quite detailed information about all BeagleBoard peripherals see [http://www.beagleboard.org/uploads/BBSRM_6.pdf BeagleBoard HW Reference Manual (rev. B6)].<br />
<br />
See [[BeagleBoardPeripherals| BeagleBoard peripherals and adapters page]] for useful add ons for Beagle Board.<br />
<br />
==Expansion boards==<br />
* [[BeagleBoard Zippy]] expansion board is now available from [http://www.tincantools.com/product.php?productid=16147&cat=0&page=1&featured TinCanTools] for $79.00. basic specs are:<br />
** Battery Backed RTC<br />
** Second MMC slot<br />
** 10BaseT Ethernet<br />
** Second RS-232<br />
** +5V level I2C<br />
** AT24 EEPROM<br />
* [http://www.hy-research.com/beagle_expansion.html HY Research] has some expansion board basics and example.<br />
* [http://www.hervanta.com/stuff/Beaglebot#Expansion_Board Beaglebot] uses a custom extension board.<br />
* [http://beagleboard.org/leopard Leopard Board], a Beagle buddy web camera<br />
* There is also a VGA DB15 adapter board under development for the Rev C2 board. It should be available through a yet to be annnounced outlet.<br />
<br />
==JTAG==<br />
<br />
Depending on your JTAG tool, you'd need a 14-pin to 20-pin adapter to use an ARM debugger. The 14-pin TI JTAG connector is used on BeagleBoard and is supported by a large number of JTAG emulation products.<br />
See [[BeagleBoardJTAG]] for more information.<br />
<br />
==RS232==<br />
<br />
The pinout on the beagle board is "AT/Everex" or "IDC10". You can buy [http://www.pccables.com/07120.htm IDC10 to DB9M adapters] in many places as they are commonly used for old PCs. You can also probably rip one of those cables out of any old desktop computer, where it's being used to support the serial port. Be careful, though -- some of those cables will have that tenth hole filled in so you'd have to snap off the extraneous pin on your BeagleBoard. Keep looking until you find a cable with all 10 holes open.<br />
<br />
Depending on your local configuration, you may need a [http://en.wikipedia.org/wiki/Null_modem 9-Pin NullModem] cable to connect BeagleBoard to serial port of your PC. From [http://www.tincantools.com/ TinCanTools] there is a [http://www.tincantools.com/product.php?productid=16144&cat=0&page=1&featured RS-232 DB-9 adapter] and [[media:flyswatter-ti-uart.pdf|adapter schematic]] available.<br />
<br />
==USB==<br />
There are two USB ports on the BeagleBoard, one with an EHCI controller and another with an OTG controller. As of Rev B4, the usb EHCI has been removed because of a hardware defect. Rev C will include USB EHCI working properly.<br />
<br />
===EHCI===<br />
The HS ([http://en.wikipedia.org/wiki/USB#USB_signalling HighSpeed]) USB [http://en.wikipedia.org/wiki/EHCI ECHI] controller on OMAP3 on BeagleBoard supports high-speed only. This simplifies the logic on the device. FS/LS (FullSpeed/LowSpeed) devices, such as keyboards and mice, require going through a high-speed USB 2.0 hub.<br />
<br />
According to the BeagleBoard System Reference Manual Rev C2, the EHCI port can source 5V at 500mA which is enough to power a hub and several low-power devices. However, this is only true if the BeagleBoard is powered through its power jack from a well-regulated 5V external power supply. If the BeagleBoard is powered through the OTG port, the EHCI port sources an "extremely limited" ampount of power (probably 100mA or so) so you'll need a "self-powered" USB 2.0 hub with its own external power supply. [Reference: Sections 5.6 and 7.2 of the BBSRM Rev C2.2.]<br />
<br />
===OTG===<br />
The HS USB OTG ([http://en.wikipedia.org/wiki/USB_On-The-Go OnTheGo]) controller on OMAP3 on the BeagleBoard does have support for all the USB 2.0 speeds (LS/FS/HS) and can act as either a host or a gadget/device. The HS USB OTG port is used as the default power input for the BeagleBoard. It is possible to boot the BeagleBoard using this USB port.<br />
<br />
When using the OTG port in host mode, you must power the BeagleBoard using the +5V power jack. If you connect a USB hub, you'll probably also need external power for the USB hub as well, because according to the Hardware Reference manual the BeagleBoard OTG port only sources 100 mA. This is enough to drive a single low-power device, but probably won't work with multiple devices.<br />
<br />
The Linux kernel needs to know you want to use the OTG port in host mode. I believe OTG ports are supposed to figure this out for themselves using the OTG Host Negotiation Protocol, but for now the Linux kernel may need some help. Specifically, Pin 4 (ID) of the OTG connector needs to be shorted to Pin 5 (GND) by using a [http://trisoft.de/pics/ZHost.JPG 5-pin USB Mini-A plug] which shorts these pins together in the plug. A [http://en.wikipedia.org/wiki/USB#USB_cables 5-pin USB Mini-B plug] leaves Pin 4 floating. Unfortunately, most USB Mini plugs are unmarked as to whether they are "A" or "B".<br />
<br />
You can find "mini A" adapters that have Pin 4 shorted and offer out a full-sized USB A Female jack [http://www.electronicproductonline.com/catalog/product_info.php?products_id=2043 here.]<br />
<table><br />
<tr><td><br />
Since the right cables might be hard to get, you simply can<br />
* short circuit the two pins encircled in red in the image to the right. You can do this by running a wire between the two pins. That at least allows easier undoing the change. Actually you could even have a small switch or so between 4 and 5.<br />
or<br />
* use a "mini B" cable (easier to get) and try the soldering of the two pins at the cable's connector. Depending on the cable it should be possible to open the plastic covering of mini-B port with a sharp-edged knife, then solder the two pins together, close the covering again and use some tape. This leaves the BeagleBoard unmodified.<br />
</td><td>[[Image:usb_otg.png]]</td></tr></table><br />
The Rev C BeagleBoard has a pair of pads labeled J6 on the back of the board under the OTG connector. Shorting these pads together with a wire or solder blob connects pins 4 and 5.<br />
See Figure 20 in the BeagleBoard System Reference Manual Rev C2.2.<br />
<br />
==DVI==<br />
<br />
DVI-D connection on BeagleBoard uses a [http://en.wikipedia.org/wiki/HDMI HDMI connector]:<br />
<br />
''HDMI is backward-compatible with the single-link Digital Visual Interface carrying digital video (DVI-D or DVI-I, but not DVI-A) used on modern computer monitors and graphics cards. This means that a DVI-D source can drive a HDMI monitor, or vice versa, by means of a suitable adapter or cable, but the audio and remote control features of HDMI will not be available.''<br />
<br />
BeagleBoard can be connected to a DVI monitor using HDMI female to DVI male cable.<br />
<br />
=BootRom=<br />
<br />
OMAP3 on BeagleBoard contains a BootRom. With this, BeagleBoard can boot without any code in permanent storage (NAND) or from peripherals. This is useful for first board bring up or if your BeagleBoard is bricked. For more information about BootRom booting see [http://www.ti.com/litv/pdf/sprufd6a SPRUFD6]. <br />
<br />
==User button==<br />
<br />
With user button on BeagleBoard you can configure boot order. Depending on this button, the order used to scan boot devices is changed. The boot order is (the first is the default boot source):<br />
<br />
* User button ''not'' pressed: NAND -> USB -> UART -> MMC<br />
* User button ''is'' pressed: USB -> UART -> MMC -> NAND<br />
<br />
Technically speaking, the user button configures pin SYS.BOOT[5]. See [http://focus-webapps.ti.com/general/docs/sitesearch/searchsite.tsp?selectedTopic=1653260327&numRecords=25&searchTerm=sprufd6&statusCode=null SPRUFD6] for more details.<br />
<br />
==Serial and USB boot==<br />
<br />
Historically, using OMAP3's boot ROM for serial and USB boot, there are several tools around. The newest are Nishanth' ''OMAP U-Boot Utils'', while there are still some older tools for serial boot and USB boot. It is also possible the access the [[u-boot environment variables in linux|u-boot env from linux]].<br />
<br />
===OMAP U-Boot Utils===<br />
<br />
Nishanth' [http://code.google.com/p/omap-u-boot-utils/ OMAP U-Boot Utils] provide<br />
<br />
* ''pserial'' - OMAP specific utility which downloads a file in response to ASIC ID over serial port.<br />
* ''pusb'' - OMAP specific utility which downloads a file in response to ASIC ID over USB connection.<br />
* ''ucmd'' - Send a command to U-Boot and wait till a specific match appears.<br />
* ''ukermit - Download a file from host without using kermit to U-Boot.<br />
<br />
See [http://nishanthmenon.blogspot.com/ Nishanth' blog] and [http://groups.google.com/group/beagleboard/browse_thread/thread/c5bfb1b8ed528b52# announce mail], too.<br />
<br />
===Serial boot===<br />
<br />
Besides Nishanth' ''OMAP U-Boot Utils'', to boot from USB or UART, you need a PC tool which talks with OMAP BootRom and speaks the correct protocol to download ARM target code to BeagleBoard. Currently there are two older (experimental) tools for UART boot:<br />
<br />
* [http://omapzoom.org/gf/project/omaptools/wiki PC Serial Boot perl script]<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/80ad3da0eb2aa555 Linux C utility] (not working yet with below target code)<br />
<br />
See [http://groups.google.com/group/beagleboard/browse_thread/thread/ae2c601ebe104a4 USB and serial download target code] for some example target code to be downloaded to OMAP3 on BeagleBoard.<br />
<br />
===USB boot===<br />
<br />
Besides Nishanth' ''OMAP U-Boot Utils'', for USB boot, there is currently one (experimental) tool to boot BeagleBoard over USB:<br />
<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/2b9e99886bb7a747 Linux C utility]<br />
<br />
See [http://groups.google.com/group/beagleboard/browse_thread/thread/ae2c601ebe104a4 USB and serial download target code] for some example target code to be downloaded to OMAP3 on BeagleBoard.<br />
<br />
See [[BeagleBoardRecovery#USB_recovery|USB recovery section]] how to use USB boot for board recovery.<br />
<br />
==NAND boot==<br />
<br />
See [[BeagleBoardNAND|NAND boot]] article.<br />
<br />
==MMC/SD boot==<br />
<br />
Currently, [http://code.google.com/p/beagleboard/wiki/BootingBeagleBoard boot the BeagleBoard with MMC/SD] is the only working way for first board bring up.<br />
<br />
===MMC/SD formatting===<br />
<br />
As described in above MMC/SD boot description, you have to ''create a bootable partition on MMC/SD Card''. This can be done using e.g. Windows or Linux tools.<br />
<br />
'''Windows'''<br />
<br />
See ''HP USB Disk Storage Format Tool 2.0.6'' description on [http://code.google.com/p/beagleboard/wiki/BootingBeagleBoard boot the BeagleBoard with MMC/SD] page.<br />
<br />
'''Linux'''<br />
<br />
Please see [http://wiki.omap.com/index.php?title=MMC_Boot_Format OMAP3 MMC Boot Format].<br />
<br />
===Dual partition card===<br />
<br />
You can [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat create a dual-partition card], booting from a FAT partition that can be read by the OMAP3 ROM bootloader and Windows, then utilizing an ext2 partition for the Linux root file system.<br />
<br />
To mount second ext2 partition as root file system (e.g. containing contents of [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode rd-ext2.bin]) use kernel boot arguments (e.g. in uboot using ''setenv bootargs''):<br />
<br />
console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootwait<br />
<br />
===U-Boot booting===<br />
<br />
If your MMC/SD card formatting is correct and you put [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode MLO, u-boot.bin and uImage] on the card you should get a u-boot prompt after booting beagle board. E.g. (output from terminal program with 115200 8N1):<br />
<br />
...40T.........XH.H.U�..Instruments X-Loader 1.41<br />
Starting on with MMC<br />
Reading boot sector<br />
<br />
717948 Bytes Read from MMC<br />
Starting OS Bootloader from MMC...<br />
<br />
U-Boot 1.1.4 (Apr 2 2008 - 13:42:13)<br />
<br />
OMAP3430-GP rev 2, CPU-OPP2 L3-133MHz<br />
TI 3430Beagle 2.0 Version + mDDR (Boot ONND)<br />
DRAM: 128 MB<br />
Flash: 0 kB<br />
NAND:256 MiB<br />
In: serial<br />
Out: serial<br />
Err: serial<br />
Audio Tone on Speakers ... complete<br />
OMAP3 beagleboard.org #<br />
<br />
Using this u-boot prompt, you now can start kernel uImage stored on MMC card manually:<br />
<br />
OMAP3 beagleboard.org # mmc init<br />
OMAP3 beagleboard.org # fatload mmc 0:1 0x80000000 uimage<br />
OMAP3 beagleboard.org # bootm<br />
<br />
If you like to make that happen every boot:<br />
<br />
OMAP3 beagleboard.org # set bootcmd 'mmc init ; fatload mmc 0:1 0x80000000 uimage ; bootm' ; saveenv<br />
<br />
=Code=<br />
<br />
Code and binaries for BeagleBoard are available at various places.<br />
<br />
==Binaries==<br />
<br />
BeagleBoard pre-built binaries and source code can be found at [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode Beagle source code] and [http://code.google.com/p/beagleboard/downloads/list downloads] page. These are the locations where "official" TI code is available. Please note that this code is mainly for reference and testing. More up to date binaries and code is available by community. Community took (parts) of TI reference code, improves and updates it. <br />
<br />
Actually, [http://www.angstrom-distribution.org/node/47 Koen's prebuilt Beagleboard demo images] are up to date binaries including e17 as window manager, the abiword word processor, the gnumeric spreadsheet application, a NEON accelerated mplayer and the popular NEON accelerated omapfbplay which gives you fullscreen 720p decoding. The [http://www.angstrom-distribution.org/demo/beagleboard www.angstrom-distribution.org/demo/beagleboard] directory should contain all the files you need:<br />
<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/u-boot.bin u-boot.bin]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/MLO MLO]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/uImage uImage]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/Angstrom-Beagleboard-demo-image-glibc-ipk-2009.X-test-20090104-beagleboard.rootfs.tar.bz2 rootfs]<br />
<br />
See the [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat beagle wiki] on how to setup your SD card to use all this goodness.<br />
<br />
==Source==<br />
<br />
Besides above binary and source images (TI's and communities one), for various parts of Beagle software stack there are community supported [http://git.or.cz/ git] repositories available. <br />
<br />
===X-Loader===<br />
<br />
Steve did some work to consolidate and update X-Loader from various sources and put it in a [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=x-load-omap3.git;a=summary X-Loader git repository]. Get it by<br />
<br />
git clone git://gitorious.org/x-load-omap3/mainline.git xloader<br />
cd xloader/<br />
<br />
Build:<br />
<br />
make distclean<br />
make omap3530beagle_config<br />
make<br />
<br />
Result will be a ~20k sized ''x-load.bin'' in main directory.<br />
<br />
===U-Boot===<br />
<br />
[http://www.denx.de/wiki/U-Boot/WebHome Mainline U-Boot] has good support for BeagleBoard. Get it by:<br />
<br />
git clone git://git.denx.de/u-boot.git u-boot-main<br />
cd u-boot-main<br />
git checkout --track -b omap3 origin/master<br />
<br />
Build (assuming Code Sourcery GCC 2007q3):<br />
<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- mrproper<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- omap3_beagle_config<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- <br />
<br />
Result will be a ~160k sized ''u-boot.bin'' in main directory.<br />
<br />
Note: Due to (patch and binary) size, BeagleBoard splash screen was removed from upstream version. If you want it back, use [http://groups.google.com/group/beagleboard/browse_thread/thread/3ad9b803a3418624 U-Boot v1 BeagleBoard splash screen patch].<br />
<br />
Note: For experimental U-Boot patches not ready for mainline yet, Steve's [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=u-boot-omap3.git;a=summary Beagle U-Boot git repository] is used to test them. Get it by:<br />
<br />
git clone git://gitorious.org/u-boot-omap3/mainline.git u-boot-omap3<br />
cd u-boot-omap3<br />
git checkout --track -b omap3-dev origin/omap3-dev<br />
<br />
===Linux kernel===<br />
<br />
[http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git;a=summary Git repository] of [http://muru.com/linux/omap/ OMAP Linux kernel] contains Beagle support. Get it by:<br />
<br />
git clone git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git linux-omap-2.6<br />
cd linux-omap-2.6<br />
<br />
Build:<br />
<br />
make distclean<br />
make omap3_beagle_defconfig<br />
make menuconfig # only needed if you want to change the default configuration<br />
make uImage<br />
<br />
The result will be a ''uImage'' in ''arch/arm/boot/'' directory.<br />
<br />
If you use the OE toolchain and want to build outside of the OE tree you should do<br />
ARCH=arm<br />
PATH=~/oe/tmp/cross/armv7a/bin:~/oe/tmp/staging/i686-linux/usr/bin:$PATH # add cross tools to your path<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- distclean<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- omap3_beagle_defconfig<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- menuconfig # only needed if you want to change the default configuration<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- uImage<br />
Note: the staging dir in the path is for mkimage. If you've build a kernel before with oe, the program should be there<br />
<br />
Note: If you are interested in kernel development have a look to [[BeagleBoardLinuxKernel|manually compiling BeagleBoard kernel]], too.<br />
<br />
===Experimental kernel patches and hacks===<br />
<br />
Some beagle developers maintain their own kernel experimental patches and hacks not ready for upstream:<br />
<br />
* [http://cgit.openembedded.net/cgit.cgi?url=openembedded/tree/packages/linux/linux-omap Koen's collection of kernels patches for OE] and the [http://cgit.openembedded.net/cgit.cgi?url=openembedded/tree/packages/linux/linux-omap_git.bb list of relevant patches]<br />
* [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=linux-omap-2.6.git;a=shortlog;h=refs/heads/test Steve's kernel tree], a clone of main OMAP git with additional patches, mainly beagle audio (ASOC) related.<br />
* [http://git.mansr.com/?p=linux-omap;a=summary Mans' kernel tree], a clone of main OMAP git with additional patches, mainly display & framebuffer related.<br />
* [http://www.bat.org/~tomba/linux-omap.html Tomi's kernel tree], a clone of main OMAP git with display sub-system patches, replacing the entire display driver with one that is the likely direction moving forward.<br />
<br />
=Compiler=<br />
<br />
TI OMAP3530 processor on BeagleBoard contains an ARM Cortex-A8 general purpose processor and a TMS320C64x+ DSP.<br />
<br />
==ARM==<br />
<br />
There is broad compiler support including gcc - please see [http://www.elinux.org/ARMCompilers ARM Compilers]<br />
<br />
==C64x+ DSP==<br />
<br />
A free C64x DSP compiler is available as [https://www-a.ti.com/downloads/sds_support/targetcontent/LinuxDspTools/download.html Linux hosted C6x Code Generation Tools] (TMS320C6000 C/C++ CODE GENERATION TOOLS 6.1.3 July 2008).<br />
<br />
Note: my.TI account required. You may create an account [https://my.ti.com here]<br />
<br />
Note: Old c6000 Linux compiler available on [ftp://ftp.ti.com/pub/cs/linux_cgt500.tar.gz TI FTP site]. Does NOT support c64x+ core in OMAP3 devices. Not recommended.<br />
<br />
You can also utilize the [http://focus.ti.com/dsp/docs/dspsupportaut.tsp?familyId=44&sectionId=3&tabId=416&toolTypeId=30 full-CCS free evaluation tools for 120 days], but they currently require purchase to upgrade to service release 9 to support full JTAG debugging with supported JTAG hardware.<br />
<br />
See [[BeagleBoard/DSP_Howto| BeagleBoard DSP howto]] for information about how to use the DSP.<br />
<br />
=Cortex A8 ARM features =<br />
<br />
ARM Cortex-A8 in OMAP3 is a high performance dual-issue applications processor which reaches a performance of 2.0 DMIPS/MHz (compared to ARM11 at 1.2 DMIPS/MHz). It is ARM v7 architecture, which is fully backwards compatible with application code for previous ARM processors.<br />
<br />
It includes a floating point unit (ARM VFPv3 architecture) and the ARM NEON SIMD instruction set.<br />
<br />
See [http://pandorawiki.org/Floating_Point_Optimization Floating Point Optimization] article for an intro into VFP-lite and NEON.<br />
<br />
===ARM NEON===<br />
<br />
NEON is a 64/128-bit wide SIMD vector extension for ARM, which has been architected to be an efficient C compiler target as well as being used from assembly language. It has 32x 64-bit registers (with a dual view as 16x 128-bit registers) which can hold the following datatypes:<br />
* 64-bit signed/unsigned<br />
* 32-bit signed/unsigned<br />
* 32-bit single precision floating point<br />
* 16-bit signed/unsigned<br />
* 8-bit signed/unsigned<br />
<br />
The key advantage of NEON is very high performance vector math processing, whilst being easy to program. It is the same thread of control as the ARM (but different instructions), and is supported by the same tools, debuggers and operating systems.<br />
<br />
The NEON instruction set is documented in ARM's [http://infocenter.arm.com/help/topic/com.arm.doc.dui0204i/DUI0204I_rvct_assembler_guide.pdf RealView Compilation Tools Assembler Guide].<br />
<br />
For NEON optimized libraries see [http://www.us.design-reuse.com/news/18429/aac-mp3-mpeg-4-h-264-fft-openmax-cortex-a8-neon-arm11-processors.html ARM Releases AAC, MP3, MPEG-4, H.264 and FFT OpenMAX DL Libraries, Highly Optimized for Cortex-A8/NEON and ARM11 Processors]. Note: Read the [http://www.arm.com/products/esd/openmax_v7libraries.html EULA].<br />
<br />
NEON is currently used by<br />
* ffmpeg - libavcodec used by mplayer, omapfbplay, and many other linux applications<br />
* libpixman - used by X.org and Mozilla & Webkit browsers to render text and graphics<br />
* Bluez - official Linux Bluetooth stack<br />
<br />
=== ARM Cortex Floating Point ===<br />
<br />
There are two types of instructions in the ARM v7 ISA that handle floating point:<br />
<br />
1) '''VFPv3''' Floating point instruction set (used for single/double precision scalar operations).<br />
These is used by gcc for C floating point operations on 'float' and 'double'<br />
<br />
2) '''NEON''' [http://www.arm.com/products/multimedia/neon/ NEON] vectorized single precision operations (2 values in a D-register, or 4 values in a Q-register)<br />
These can be use by gcc when -ftree-vectorize is enabled and -mfpu=neon is specified, and the code can be vectorized. In other cases the VFPv3 scalar ops will be used.<br />
<br />
ARM Cortex-A processors have separate floating point pipelines that handle these different instructions.<br />
<br />
On Cortex-A8, the designers' focus was on the NEON unit performance which can sustain 1 cycle/instr throughput (processing 2 single-precision values at once). The scalar VFPv3 FPU cannot achieve this level of performance (cycle timings are in the Cortex-A8 TRM download), but it is still a lot better than doing floating point using integer instructions.<br />
<br />
If you need the highest performance floating point on Cortex-A8, you need to use single precision and ensure the code uses the NEON vectorized instructions:<br />
* use gcc with -ftree-vectorize (possibly modify source code to make it vector friendly)<br />
* use NEON instrinsics (#include <arm_neon.h>, float32x2_t datatype and vmul_f32() etc)<br />
* use NEON asm directly<br />
<br />
Keep in mind that mixing NEON and ARM load/stores can sometimes stall significantly. See [http://hardwarebug.org/2008/12/31/arm-neon-memory-hazards/ this link] for more info.<br />
<br />
On Cortex-A9, there is a much higher performance floating point unit which can sustain 1 cycle/instr throughput, with low result latencies.<br />
<br />
=Board recovery=<br />
<br />
If you played e.g. with the contents of the [http://www.sakoman.net/omap3/flash%20procedure.txt NAND], it might happen that the Board doesn't boot any more (without pressing user button) due to broken NAND content. See [[BeagleBoardRecovery|BeagleBoard recovery]] article how to fix this.<br />
<br />
=Development environments=<br />
<br />
Instead of just using compiler + editor, you can use complete image create "development tool chains" which integrate compiler, build system, packaging tools etc. in one tool chain.<br />
<br />
==OpenEmbedded==<br />
<br />
For [http://www.openembedded.org/ OpenEmbedded] (OE), there are some hints how to [http://www.beagleboard.org/irclogs/index.php?date=2008-04-29#T13:06:25 start with OE for BeagleBoard]. See [[BeagleBoardAndOpenEmbeddedGit|BeagleBoard and OpenEmbedded Git]] and [http://wiki.openembedded.org/index.php/Getting_Started OpenEmbedded getting started] as well.<br />
<br />
In the OE getting started document, for BeagleBoard replace ''MACHINE = "om-gta01"'' by ''MACHINE = "beagleboard"''. After confirming ''bitbake nano'' works, try ''bitbake console-image''. The first time you run bitbake OE will download all the needed source and build the tool chain. This will take several hours. After all went fine, the output is in ''${OE_ROOT}/tmp/deploy/glibc/images/beagleboard''.<br />
<br />
Note: Koen has some BeagleBoard [http://amethyst.openembedded.net/~koen/index.php?path=beagleboard/ source and binary images] built with OE. There, ''Angstrom-console*'' images don't include an X server, you can still use a e.g. DVI-D screen with console, but you won't have a GUI. ''Angstrom-x11*'' images contain an X server.<!-- DEAD LINK: resulting in something like [http://scap.linuxtogo.org/files/fc987d4acb2c745fb7e19cf4dca8de70.png this].--><br />
<br />
===One very important note:=== <br />
<br />
It's important to have an X-Loader on your Beagleboard that uses the uImage on the SD Card that goes with Angstrom. The B6 Beagleboards do not appear to come with such an X-Loader. So you likely will have to upgrade the X-Loader. Here's what to do:<br />
* Make an SD Card with the [http://www.angstrom-distribution.org/demo/beagleboard Angstrom Demo files]. See the [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat Beagleboard Wiki Page] for more info on making the SD Card.<br />
* Put the SD Card in the Beagle, and boot up to the U-Boot Prompt.<br />
* Do the first six instructions in the [http://code.google.com/p/beagleboard/wiki/BeagleNANDFlashing Flashing Commands with U-Boot] section. <br />
* Reboot the Beagle to see that the new X-Loader is properly loaded.<br />
<br />
This will update the X-Loader to a newer version that will automatically load uImage from the SD Card when present -- rather than always using the uImage in the Beagleboard NAND.<br />
<br />
==Eclipse==<br />
The Eclipse [http://www.eclipse.org/cdt/ C Development Tools Project] provides a "fully functional C and C++ Integrated Development Environment (IDE) for the Eclipse platform". The Eclipse [http://www.eclipse.org/dsdp/tm/ DSDP Target Managment Project] provides a "Remote System Explorer" (RSE) plugin that simplifies downloading files to the BeagleBoard and editing files on the BeagleBoard within the Eclipse IDE. A Linux Target Agent is available as part of the [http://wiki.eclipse.org/DSDP/TM/TCF_FAQ Target Communications Framework (TCF) component]. Info on how RSE is used for e.g. Gumstix development is described in [http://groups.google.com/group/beagleboard/browse_thread/thread/509831f7c24cb79f# this post].<br />
<br />
==Android==<br />
[http://source.android.com Android] platform is a software stack for mobile devices including an operating system, middleware and key applications. Developers can create applications for the platform using the [http://code.google.com/android/ Android SDK]. Applications are written using the Java programming language and run on Dalvik, a custom virtual machine designed for embedded use which runs on top of a Linux kernel.<br />
<br />
There are several resources for Android on OMAP (Beagle) available:<br />
<br />
'''OMAPZOOM'''<br />
<br />
You can find Android port for OMAP ZOOM architecture on [https://omapzoom.org/gf/project/omapandroid/wiki/ OMAPZoom.org's wiki page on Android]. <br />
<br />
'''EMBINUX'''<br />
<br />
[http://beagleboard.org/project/android Beagleboard.org's Android project page] [http://groups.google.com/group/beagleboard/browse_thread/thread/7b422f113ce489b5 announced], the successful porting of Android on Beagle board by [http://embinux.com EMBINUX&trade;] Team. The [http://labs.embinux.org/git/ source code] and [http://www.embinux.com/download_beagle.php binaries] are available for download and review. <br />
<br />
Detailed instructions, for porting Android on Beagle Board, are available [http://labs.embinux.org/index.php/Main_Page here]. Current release supports input devices (keyboard/mouse), network and sound.<br />
<br />
You can [http://in.youtube.com/watch?v=nADn_vNVEKw watch Android booting] on Beagle Board.<br />
<br />
'''Android on OMAP wiki'''<br />
<br />
Wiki page for Andorid on OMAP can be found [[Android on OMAP|here]]<br />
<br />
'''0xdroid'''<br />
<br />
[http://gitorious.org/0xdroid 0xdroid], the enhanced version of Android on Beagleboard by [http://0xlab.org 0xlab]. The [http://gitorious.org/0xdroid source code], [http://downloads.0xlab.org/ pre-built binaries], and [http://code.google.com/p/0xdroid/issues/list issue tracker] are available for review and reference.<br />
<br />
The latest development supports OMAP audio, OMAP video overlays, ARM Cortex A8 NEON/Thumb2 performance optimizations, mouse cursor, hot-pluggable USB keyboard & mouse, user-friendly installer for system image, and various Android tweaks. Detailed instructions for 0xdroid are available through [http://gitorious.org/0xdroid/pages/Home gitorious wiki].<br />
<br />
You can [http://www.youtube.com/watch?v=v6wdTOHrwQw watch 0xdroid demo video] on Beagle Board.<br />
<br />
==Mamona==<br />
<br />
[http://dev.openbossa.org/trac/mamona/wiki Mamona] is an embedded Linux distribution for ARM EABI. The main goal of the Mamona Project is to offer a completely open source alternative/experimental platform for [http://maemo.org/ Maemo] using only free and open source components. Mamona [http://rsalveti.wordpress.com/2008/09/12/mamona-02-is-out 0.2] [http://franciscoalecrim.com/blog/2008/07/29/mamona-working-with-beagleboard/ supports] [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12013&contentId=28741 OMAP3430 Software Development Platform (SDP)], so you can also use it at Beagle (OMAP3530), too. Work is being done to officially support Beagle.<br />
<br />
==Ubuntu==<br />
<br />
See [[BeagleBoardUbuntu|Ubuntu (ARM)]] installation guide how to install Ubuntu (ARM) on BeagleBoard.<br />
<br />
==Debian ARM==<br />
<br />
See [[BeagleBoardDebian|Debian (ARM)]] installation guide how to install Debian (ARM) on BeagleBoard.<br />
<br />
==Handhelds Mojo ARM==<br />
<br />
See [[BeagleBoardHandheldsMojo|Handhelds Mojo (ARM)]] installation guide how to install Handhelds Mojo (ARM) port of Ubuntu on BeagleBoard. (The Mojo project is no longer active, see the Official Ubuntu ARM-port above instead)<br />
<br />
==Scratchbox==<br />
<br />
[http://www.scratchbox.org/ Scratchbox] is a cross-compilation toolkit designed to make embedded Linux application development easier. It also provides a full set of tools to integrate and cross-compile an entire Linux distribution. See [http://felipec.wordpress.com/2009/06/07/installing-scratchbox-1-and-2-for-arm-cross-compilation/ Felipe's Scratbox 1 and 2 intro], too.<br />
<br />
=Software hints=<br />
<br />
This section collects hints, tips & tricks for various software components running on beagle.<br />
<br />
==QEMU==<br />
<br />
[[Qemu|QEMU]] [http://vm-kernel.org/blog/2008/12/15/linux-is-running-on-qemu-omap3/ supports OMAP3] being able to boot a BeagleBoard Linux kernel.<br />
<br />
==Linux hints==<br />
<br />
See BeagleBoard [http://code.google.com/p/beagleboard/wiki/LinuxHints Google wiki Linux hints] page (for Linux WTBU (Wireless TI Business Unit) kernel [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode 2.6.22]). Currently featuring:<br />
<br />
* Switching video output between DVI-D and S-Video<br />
* Disabling framebuffer blanking<br />
* Listing USB devices<br />
<br />
==lmbench==<br />
<br />
Avik posted a detailed [http://groups.google.com/group/beagleboard/browse_thread/thread/c8b8f07ce61161a1 step-by-step procedure] to run [http://sourceforge.net/project/showfiles.php?group_id=14418 lmbench] on Beagle.<br />
<br />
==Mediaplayer (FFmpeg)==<br />
<br />
There is a thread how to get a [http://groups.google.com/group/beagleboard/browse_thread/thread/9b8025fc15120fd9# mediaplayer] with NEON optimization (FFmpeg) to run on Beagle. Includes compiler hints and patches.<br />
<br />
==Java==<br />
<br />
When using the [[BeagleBoard#OpenEmbedded|OpenEmbedded]]-based Angstrom image you have the following options of Java support:<br />
* JamVM + GNU Classpath (small vm, fast interpreter, J2SE-like)<br />
* Cacao + GNU Classpath (JIT compiler, J2SE-like)<br />
* PhoneME Advanced Foundation (JIT compiler, CDC)<br />
<br />
Java support in OpenEmbedded/Angstrom ([http://wiki.openembedded.net/index.php/Java details]) is provided voluntarily through [http://jalimo.org Jalimo].<br />
<br />
See a [http://groups.google.com/group/beagleboard/browse_thread/thread/102f627253919783# post at mailing list], too.<br />
<br />
OpenEmbedded users can add the [http://evolvis.org/scm/?group_id=11 Jalimo Subversion repository] as an overlay (instructions are in the repository). This will allow them to build OpenJDK packages. Inclusion of these recipes in mainline OpenEmbedded is planned but still ongoing.<br />
<br />
The recipes offer the following functionality:<br />
<br />
* OpenJDK + Hotspot (Zero port) (all J2SE functionality, including JVMTI, interpreted only)<br />
* OpenJDK + Cacaco (all J2SE library features, missing JVMTI, decent JIT compiler)<br />
* OpenJDK + Hotspot (Shark port) (not working yet)<br />
<br />
Some guy from ARM Ltd. is working on interpreter optimization in Zero for ARM.<br />
<br />
People interested in getting this stuff working better should contact people on:<br />
* [http://evolvis.org/mail/?group_id=11 Jalimo Mailinglist]<br />
* [http://mail.openjdk.java.net/mailman/listinfo/distro-pkg-dev Icedtea Mailinglist]<br />
<br />
You should also check out IcedTea's [http://iced-tea.org/wiki/FrequentlyAskedQuestions FAQ].<br />
<br />
=Graphics accelerator=<br />
<br />
OMAP3530 used on BeagleBoard contains a graphics accelerator (SGX) based on the SGX core from [http://www.imgtec.com/ Imagination Technologies]. [http://www.imgtec.com/powervr/powervr-graphics.asp PowerVR] SGX530 is a new generation of programmable PowerVR graphics and video IP cores. Only the kernel portions of Linux drivers will be open source. The PowerVR folks will provide binary user-space libraries. Using the EMail contact at [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12700&contentId=27458 TIs Mobile Gaming Developers page] there are Linux v2.6 OMAP3430 SDKs for OMAP3 Zoom and SDP supporting OpenGL ES v2.0, OpenGL ES v1.1 and OpenVG 1.0 available.<br />
<br />
Tutorial:<br />
* [http://code.google.com/p/beagleboard/wiki/HowtoUseSGXunderAngstrom How to use SGX with Angstrom in OE]<br />
<br />
Some videos:<br />
<br />
* [http://www.youtube.com/watch?v=3ToYOgP9f9U SGX on Beagle working with Linux 2.6.27]<br />
* [http://www.youtube.com/watch?v=24TXpqa9jG0&feature=related OpenGL ES 2.0 shader effects on OMAP3]<br />
* [http://www.youtube.com/watch?v=-UFUbqoNgs8&feature=related 3D User Interface on OMAP3 Platform]<br />
* [http://www.youtube.com/watch?v=8KcNgeUriqA 3D Mapping using OpenGL ES 2.0 on OMAP3 Platform]<br />
* [http://www.youtube.com/watch?v=7D3V6BUpGLE Video blending in hardware]<br />
* [http://www.hitlabnz.org/wiki/EmbeddedAR An Augmented Reality application combining ARToolkit and OpenGL ES 2.0]<br />
<br />
=Beginners guide=<br />
<br />
You just got your new BeagleBoard, and now? See [[BeagleBoardBeginners|beginners guides]].<br />
<br />
=FAQ=<br />
<br />
For BeagleBoard frequently asked questions (FAQ) see [[BeagleBoardFAQ|community FAQ]] and "official" [http://beagleboard.org/support/faq BeagleBoard.org FAQ].<br />
<br />
=Links=<br />
==Home page==<br />
[http://beagleboard.org/ beagleboard.org] (beagle board home)<br />
* Using [http://www.google.de/ Google] you can search beagleboard.org (including [http://www.beagleboard.org/irclogs/ IRC logs]) using ''site:beagleboard.org <search term>''<br />
<br />
==Manuals and resources==<br />
* [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard HW Reference Manual (rev. C2)]<br />
* [http://beagle.s3.amazonaws.com/BBSRM_7_2_0.pdf BeagleBoard HW Reference Manual (rev. B7)]<br />
* [http://www.beagleboard.org/uploads/BBSRM_6.pdf BeagleBoard HW Reference Manual (rev. B6)]<br />
* [http://www.beagleboard.org/uploads/BBSRM_B5.pdf BeagleBoard HW Reference Manual (rev. B5)]<br />
* [http://www.beagleboard.org/uploads/Beagle_HRM_B4.pdf BeagleBoard HW Reference Manual (rev. B4)]<br />
* [http://www.beagleboard.org/uploads/Beagle_HW_Reference_Manual_A_5.pdf BeagleBoard HW Reference Manual (rev. A5)]<br />
* [http://focus.ti.com/docs/prod/folders/print/omap3530.html OMAP3530] processor description and manuals<br />
* [http://code.google.com/p/beagleboard/ Beagle at code.google.com]<br />
* [http://focus.ti.com/dsp/docs/dspsupporttechdocs.tsp?sectionId=3&tabId=409&familyId=1526&documentCategoryId=4&techDoc=4 OMAP3530/25 CBB BSDL Model]<br />
* [http://www.micron.com/products/mcps/beagleboard Micron's multi chip packages (MCPs) for Beagle Board]<br />
* [http://beagleboard.org/resources Beagleboard resources page with hw docs]<br />
* Some [http://www.rasterman.com/ performance comparison] of BeagleBoard Rev. B with some other ARM/PC systems.<br />
* OMAP3 pinmux [http://www.hy-research.com/omap3_pinmux.html setup]<br />
* [http://elinux.org/BeagleBoardPinMux OMAP3 eLinux pinmux page]<br />
<br />
==Contact and communication==<br />
* [http://groups.google.com/group/beagleboard Beagle board discussion list]<br />
* [http://code.google.com/p/beagleboard/issues/list Beagle board open point list & issue tracker]<br />
* [http://beagleboard.blogspot.com/ Beagle board blog]<br />
* [http://feeds.feedburner.com/BeagleBoard Beagle board RSS feed]<br />
* Chat:<br />
** [http://beagleboard.org/chat Beagle Board chat]<br />
** IRC: #beagle channel on irc.freenode.net<br />
** [http://www.beagleboard.org/irclogs/index.php IRC archive]<br />
* [http://www.beaglesride.org/ Beagles Ride], a site about building a community around the BeagleBoard focused on in vehicle applications<br />
* [http://www.beagleboard.de/ German Beagle Board Forum and Wiki]<br />
<br />
==TI resources==<br />
* [http://opensource.ti.com/ TI open source page]<br />
* [https://community.ti.com/ TI E2E (Engineer-to-Engineer) Community]<br />
* [http://marc.info/?l=linux-omap&m=120761100810527&w=2 DSP Bridge driver for OMAP3 platform]<br />
* [http://lists.arm.linux.org.uk/lurker/message/20080701.142512.5eeff26b.en.html ARMv7 Oprofile support]<br />
* [http://focus.ti.com/pdfs/wtbu/swpu114g.pdf OMAP34xx Wireless Technical Reference Manual] (swpu114g.pdf, 47 MB)<br />
* [http://amethyst.openembedded.net/~koen/index.php?sort=date&order=desc&path=beagleboard/ Koen's (OpenEmbeded) BeagleBoard source and binaries]<br />
* [http://del.icio.us/tag/beagleboard+peripheral+verified Verified peripherals for BeagleBoard]<br />
* [http://www.celinux.org/elc08_presentations/TI_OMAP3430_Linux_PM_reference.ppt OMAP3430 Linux Power Management presentation]<br />
==Articles==<br />
* [http://linuxdevices.com/news/NS5852740920.html LinuxDevices article about Beagle]<br />
* [http://www.linuxdevices.com/news/NS8479495970.html LinuxDevices article about Digi-Key launch]<br />
* [http://www.linuxdevices.com/news/NS5682470737.html LinuxDevices article about Beagle Rev C, Beagle MID from HY Research, Touch Book and Sponsored Projects Contest]<br />
<br />
==Books==<br />
* [[OMAP_and_DaVinci_Software_for_Dummies|OMAP and DaVinci Software for Dummies]]<br />
==Past Beagle events==<br />
* TIDC, February 26-28, 2008: [http://www.beagleboard.org/uploads/tidc_opensource.pdf Slides from TI developer conference (TIDC) open source session], covering also beagle board<br />
* [http://www.lugradio.org/live/USA2008/ LUG RADIO Live USA 2008, April 12-13, 2008]: [http://www.beagleboard.org/uploads/lugradio_20080411.PPT TI/Beagle Presentation] and [http://forums.lugradio.org/viewtopic.php?f=4&t=4094&st=0&sk=t&sd=a&sid=d69cc807569ab41e33f93af698c536b8&start=15#p41549 video]<br />
* LinuxTag, May 28-31, 2008: [http://www.flickr.com/photos/jadon/2551439955/in/pool-beagleboard picture 1] and [http://www.flickr.com/photos/jadon/2535692865/in/pool-beagleboard picture 2]<br />
* [http://lugradio.org/live/UK2008/travel LugRadio Live UK 2008], July 19 - July 20, 2008: [http://www.flickr.com/photos/koenkooi/tags/lugradiolive/ Koen's pictures] showing e.g. [http://www.bigbuckbunny.org/index.php/download/ Big Buck BUNNY] playing at Beagle. [http://linuxoutlaws.com/podcast/48 Interview with Linux Outlaws (52:06)] and the [http://www.youtube.com/watch?v=m9xVbntl-DY video]<br />
* [http://osscamp.in/index.php/OSScamp_Bengaluru_Mobile_2008 OSScamp Bengaluru Mobile 2008], July 19, 2008<br />
* [http://www.linuxworldexpo.com LinuxWorld Conference & Expo], August 4 - August 7, 2008: [http://www.flickr.com/photos/jadon/sets/72157606586084668/ pictures with living beagle] and from [http://www.flickr.com/photos/linuxjournal/2738316951/in/set-72157606634486338/ Linux Journal's photostream]<br />
* BeagleBoard.org event at Jillian's during LinuxWorldExpo, August 5, 2008, 5:30-7:30 pm<br />
* [http://barcamp.pbwiki.com/BarCampHouston3 BarCamp Houston 3], August 9, 2008, 9:00 A.M.: [http://www.flickr.com/photos/jadon/sets/72157606656532041/ pictures]<br />
* NIT Suratkal, India [http://www.nitkieee.com/site/sp-connect2/schedule IEEE SP Connect 2], August 30, 20008<br />
* [http://barcampbangalore.org/wiki/BCB7_Demos BarCamp Bangalore], India, September 13, 2008<br />
* [http://www.ibc.org/ IBC 2008], September 11 - September 16, 2008: [http://www.flickr.com/photos/koenkooi/tags/ibc2008/ pictures]<br />
* Free Open "Embedded Linux" Training for Students in India, [http://code.google.com/p/beagleboard/wiki/Trainings?updated=Trainings&ts=1220250913 beagleboard.org Trainings in India], September 20, 2008: [http://www.youtube.com/watch?v=A6FLdmgQlb4&feature=PlayList&p=1BAB6EE9CC7285AD&index=0 video], [http://www.flickr.com/photos/25691331@N04/sets/72157607419766102/ photos] and [http://lakshmansrikanth.blogspot.com/2008/09/linux-embedded.html blog]<br />
* [http://www.embedded.co.uk/ Embedded Systems Show 2008], Birmingham, UK, October 1-2, 2008<br />
* [http://www.mvista.com/vision/ MontaVista Vision 2008 Embedded Linux Developers Conference], San Francisco, California, October 1-3, 2008 : [http://www.mvista.com/download/topic.php?t=18 Video and presentation overview], [http://www.mvista.com/download/fetchdoc.php?docid=323 William Mills' presentation], [http://www.mvista.com/download/fetchdoc.php?docid=333 Jason Kridner's presentation]<br />
* [http://www.rtcgroup.com/arm/2008/ ARM Developers' Conference], Santa Clara Convention Center, Santa Clara, Calif., USA, October 7-9, 2008<br />
* [http://www.cmp-egevents.com/web/escb Embedded Systems Conference Boston 2008], Hynes Convention Center, Boston, USA, October 26 - October 30, 2008: [http://beagleboard.org/demo/esc Resources]<br />
* [[BeagleBoard/contest|BeagleBoard contest]] #1: Create a cool BeagleBoard application and win a Rev C1! Closed, ran until January 9, 2009<br />
* [http://www.silica.com/events/seminars/seminar-overview/ti-omp-workshop.html OMAP35x training by Silica], January 21, 2009, Cambridge, UK, ARM Holdings Lecture Theatre. [[RichardB's notes from the seminar]]<br />
* [[BeagleBoard/contest|BeagleBoard contest #2]], unitl February 27, 2009: : Create a cool BeagleBoard application and win a Rev C2!<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/b15cf8a5797c73a2 Silica - Free TI - ARM OMAP Workshop], Brussels, Europe, March 31st 2009<br />
* SILICA's [http://www.silica.com/events/seminars/seminar-overview/ti-omap-piccolo-poing.html Texas Instruments 2-in-1 Seminar: OMAP & Piccolo], May 13th 2009: Poing (Munich) - Germany<br />
* 24th until 27th June 2009: [http://www.linuxtag.org/2009/en.html Linux Tag Germany] with [http://groups.google.com/group/beagleboard/msg/27fefef5f1d2ef73 TI booth] and [http://www.linuxtag.org/2009/en/program/freies-vortragsprogramm/all-events/details.html?talkid=183 Beagle presentation]<br />
* until 31st July 2009: [http://www.cranessoftware.com/services/training/beagledesigncontest.html BeagleBoard Design Contest INDIA Edition] ([http://beagleboard.blogspot.com/2009/04/beagleboard-design-contest-india.html blog entry])<br />
* TI Technology Day Dallas, Tex. on June 16 will held a [http://www.linuxdevices.com/news/NS5682470737.html BeagleBoard users group meeting] (see section ''Availability'').<br />
<br />
==Beagle wiki pages==<br />
* [[BeagleBoardBeginners|BeagleBoard beginners guides]]<br />
* [[BeagleBoardAndOpenEmbeddedGit|BeagleBoard and OpenEmbedded Git]] installation guide and [[BeagleBoardOpenEmbeddedDevelopment|OpenEmbedded development]]<br />
* [[BeagleBoardDebian|Debian on BeagleBoard]] usage guide<br />
* [[BeagleBoardHandheldsMojo|Handhelds Mojo (ARM) on BeagleBoard]] usage guide (formerly known as Ubuntu (ARM))<br />
* [[BeagleBoardUbuntu|Ubuntu (ARM EABI) distribution at BeagleBoard]]<br />
* [[BeagleBoardRecovery|BeagleBoard recovery]] about fixing boards not booting any more because of broken NAND content<br />
* [[BeagleBoardJTAG|BeagleBoard JTAG]] and [[OMAP3530_ICEPICK|OMAP3530_ICEPICK]] about JTAG on BeagleBoard<br />
* [[BeagleBoardOpenOCD|BeagleBoard OpenOCD]] has infos about status and usage of open source JTAG software OpenOCD with Beagle<br />
* [[BeagleBoardNAND|BeagleBoard NAND boot]] about how to boot BeagleBoard from NAND flash<br />
* [[BeagleBoardPeripherals|BeagleBoard peripherals and adapters page]] about useful BeagleBoard add ons.<br />
* [[Mount_BeagleBoard_Root_Filesystem_over_NFS_via_USB|Mount BeagleBoard root file system over NFS via USB]]<br />
* [[BeagleBoardFAQ|BeagleBoard FAQ]]<br />
* [[BeagleBoardSugar|Sugar on BeagleBoard]]<br />
* [[BeagleBoard/DSP_Howto|BeagleBoard DSP howto]]<br />
* [[BeagleBoardRawLCD|Interfacing BeagleBoard to Raw LCD]]<br />
* [[BeagleBoard/gst-openmax|BeagleBoard OpenMAX usage]]<br />
* [[BeagleBoard/video|BeagleBoard video]]<br />
* [[BeagleBoardOpenCV|Using OpenCV computer vision library with BeagleBoard]]<br />
* [[BeagleBoard/James|James]]: Just A Miniature Entertainment System<br />
* [[U-boot_musb_gadget_support|U-boot musb gadget support]]<br />
* [[BeagleBoard-JP|Japanese translation of this Beagle page]]<br />
* [[BeagleEPD|BeagleBoard E-Ink Platform Driver]]<br />
* [[BeagleBoardFedora|Random hacking notes for getting Fedora 10 to kinda work with the BeagleBoard]]<br />
* BeagleBoard specific [[BeagleBoard/GSoC|Google Summer of Code 2009]] page, [[BeagleBoard/Ideas-2009|GSoC project ideas]] and [[BeagleBoard/GSoC/Application|GSoc application]]<br />
* [[BeagleBoard/Poky|Poky]] for BeagleBoard<br />
* [[Xenarc_USB_touchscreen_for_Beagleboard/OMAP3_EVM|Xenarc USB touchscreen for Beagleboard/OMAP3 EVM]]<br />
* [[BeagleBoard/BugAdapter|BeagleBoard Bug Adapter board]]<br />
* [[BeagleBoardDebianWifiInstallInfo|BeagleBoard Debian WiFi install info]]<br />
* [[BeagleBoard/DSP_Clarification|Info about the various Linux DSP systems for OMAP chips]]<br />
* [[BeagleBoardPinMux|BeagleBoard PinMux]]<br />
* [[BeagleBoardLinuxKernel|BeagleBoard Linux kernel manual compile]]<br />
* [http://www.hervanta.com/stuff/Beaglebot Beaglebot]: build an experimental robotics project with Beagle<br />
* [http://code.google.com/p/beagleboard/w/list code.google.com BeagleBoard wiki]<br />
* '''[[BeagleBoard/contest|BeagleBoard contest]]'''<br />
* [http://en.wikipedia.org/wiki/Beagle_Board Wikipedia BeagleBoard page]<br />
* [http://labs.embinux.org/index.php/Android_Porting_Guide_to_Beagle_Board Android port for BeagleBoard]: Instructions for porting Android on BeagleBoard<br />
* [[BeagleBoard/bangalore_user_meet |BeagleBoard Bangalore User Meet]]<br />
* [[BeagleBoardEclipse|Using Eclipse with Beagle]] (for JTAG debugging)<br />
* [[Zoom2Beginners|Zoom2 for Beginners]]<br />
* [http://wh1t3s.com/2009/05/11/beagleboard-as-usb-mass-storage-device-via-usb-otg/ BeagleBoard as USB Mass Storage Device via USB OTG]<br />
* [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/index.htm BeagleBoard as solar powered computer]<br />
* [http://blog.makezine.com/archive/2009/02/blinking_leds_with_the_beagle_board.html Blinking LEDs with the Beagle Board] from Make:Online<br />
* [http://www.crashcourse.ca/wiki/index.php/BeagleBoard Robert's private Beagle wiki] (please don't add anything there, do it here. It will help to avoid scattering. Thanks!)<br />
* [http://felipec.wordpress.com/2009/03/26/omap3-public-dsp-binaries-now-work/ Felipe's blog] about D1 MPEG-4 decoding using less than 15% of CPU with help of DSP<br />
* [http://www.syspire.de/node/3 Embedded Mediacenter] based on BeagleBoard (German)<br />
* [http://pandorawiki.org/Floating_Point_Optimization Floating Point Optimization] with VFP-lite and NEON intro<br />
* [http://particolarmente-urgentissimo.blogspot.com/2009/09/beagleboard-setting-date-via-gps.html Beagleboard setting date via GPS]<br />
<br />
==Beagle photos==<br />
* [http://www.flickr.com/groups/beagleboard/pool/ Beagle board pictures at flickr]<br />
* [http://www.flickr.com/photos/32615155@N00/2439256116/ Beagle board and USRP]<br />
* [http://www.flickr.com/photos/nishanthmenon/2438406603/ Modify SDP3430 QUART cable for beagle]<br />
* [http://www.flickr.com/photos/koenkooi/2695061759/ MythTV on Beagle]<br />
==Beagle videos==<br />
* [http://uk.youtube.com/watch?v=fL_XMieanSc Beagle Board Beginnings]<br />
* [http://www.youtube.com/watch?v=cXr-D1wROfQ Beagleboard in the Living Room]<br />
* [http://uk.youtube.com/watch?v=FuVwh_VrIxk Beagle Board 3D, Angstrom, and Ubuntu]<br />
* [http://uk.youtube.com/watch?v=TUYOjRGYeYU testsprite with beagleboard]<br />
* [http://uk.youtube.com/watch?v=9Z4ZTovtFKk Beagleboard LED demo]<br />
* [http://uk.youtube.com/watch?v=R33dzREZGEk LCD2USB attached to a beagleboard]<br />
* [http://www.youtube.com/watch?v=7D3V6BUpGLE Video blending in hardware]<br />
* [http://www.youtube.com/watch?v=-tUBXD-KRp4 Beagle Running Angstrom (VGA) on DLP Pico Projector]<br />
* [http://www.youtube.com/watch?v=3ToYOgP9f9U SGX on Beagle working with Linux 2.6.27]<br />
* Not on Beagle OMAP3530: [http://youtube.com/watch?v=5i9cWOK1spw Ubuntu 7.04 on on OMAP3430 SDP]<br />
* [http://in.youtube.com/watch?v=nADn_vNVEKw Beagle Board booting Android]<br />
<br />
==Beagle manufacturing==<br />
* [http://www.youtube.com/watch?v=C-CwkjT9z_0&feature=related Beagle Solder Paste Screening]<br />
* [http://www.youtube.com/watch?v=9LLjDovIG2M&feature=related Beagle Assembly Inspection]<br />
* [http://www.youtube.com/watch?v=sbOZfBnoVnM&feature=related Beagle Functional Test]<br />
* [http://www.youtube.com/watch?v=cvDtXmJJcEI&feature=related Beagle Reflow]<br />
* [http://www.youtube.com/watch?v=W2o4NTASxN0&feature=related Beagle Board Assembly at Circuitco]<br />
==Fun==<br />
* Enjoy [http://www.beaglegame.com/ BeagleGame]<br />
<br />
=Other OMAP boards=<br />
<br />
* OMAP1 OMAP5912 (ARM9 + C5x DSP) based [[OSK|OSK]] board.<br />
* OMAP3 OMAP3430 based [https://gforge.ti.com/gf/project/omapzoom/wiki/?pagename=HardwareInformation Zoom MDK], which has been superseded by the [http://www.logicpd.com/products/development-kits/texas-instruments-zoom%E2%84%A2-omap34x-ii-mdp Zoom II], and other [http://www.logicpd.com/products LogicPD kits].<br />
* OMAP3 OMAP3530 based [http://www.openpandora.org/ Pandora]<br />
* OMAP3 OMAP3503 based [http://www.gumstix.net/Overo/cat/Overo/115.html Gumstix Overo]<br />
* OMAP3 OMAP35x based EVM from [http://mistralsolutions.com/products/omap_3evm.php Mistral] and [http://focus.ti.com/docs/toolsw/folders/print/tmdxevm3503.html TI] (both are the same)<br />
* OMAP3 OMAP3430 based [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12013&contentId=28741 Software Development Platform (SDP)]<br />
* OMAP3 OMAP3530 based board from [http://www.magniel.com/omap3.html Magniel Inc.]<br />
* OMAP3 based [http://www.archos.com/products/imt/index.html?country=us&lang=en Archos 5, ARCHOS 5G and ARCHOS 7]<br />
* OMAP3 OMAP35x based [http://www.logicpd.com/products/som/ti/omap35x OMAP35x SOM-LV]<br />
* OMAP3 based [[Mini_Board|ICETEK-OMAP3530-Mini]], a Chinese BeagleBoard clone, with a [[MiniBoardFAQ|FAQ]]<br />
* OMAP3 based [http://www.ebv.com/en/products/categories/details/product/ebvbeagle-board EBVBeagle], a German BeagleBoard clone<br />
* OMAP3530 based [http://www.bsquare.com/products/hardware_solutions/3530.asp BSQUARE’s Dev Kit OMAP3530]<br />
* OMAP3530 based [http://beaversource.oregonstate.edu/projects/cspfl/wiki/CSPFL_Hardware OSWALD]<br />
* OMAP3 BeagleBoard-based [http://www.alwaysinnovating.com/touchbook/ Touch Book]<br />
* OMAP3530 based [http://www.analogue-micro.com/Cobra3530.html Cobra 3530 OMAP3530 module ]<br />
* OMAP3 based [http://www.kwikbyte.com/KBOC.html KwikByte 35XX System Module]<br />
* OMAP3530 based [[DevKit8000]], a Chinese BeagleBoard clone, slightly larger with additional peripherals (e.g. LCD/TSP, Ethernet and keyboard)<br />
* OMAP3530 based [http://www.igep-platform.com/ IGEPv2 Platform], a Spanish BeagleBoard clone, slightly larger, with additional peripherals like e.g. ethernet connector, wifi+bluetooth.<br />
* OMAP35x based [http://www.ultratronik.de/mmi-rechnerplattformen.html MMI4 from Ultratronik]<br />
* OMAP35x based [http://www.technexion.com/index.php/tao-3530 TAO-3530 from TechNexion]</div>Rpjdayhttps://elinux.org/index.php?title=BeagleBoard_Community&diff=14324BeagleBoard Community2009-10-20T22:28:06Z<p>Rpjday: Remove references to past events.</p>
<hr />
<div>[[Category: Linux]]<br />
[[Category: OMAP]]<br />
[[Category:Development Boards]]<br />
[[Category: BeagleBoard]]<br />
This page collects information about [http://www.ti.com/ TI's] [http://www.arm.com/ ARM] based [http://focus.ti.com/general/docs/gencontent.tsp?contentId=36915&amp;DCMP=OMAP_Feb27_2008&amp;HQS=Other+PR+omap3503pr OMAP3] [http://beagleboard.org Beagle Board].<br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:#ffffcc; align:right; "><br />
'''NEWS:''' [http://www.tincantools.com/product.php?productid=16147&cat=0&page=1&featured Zippy] Expansion boards for the [[BeagleBoard]] are now available!<br />
</div><br />
<br />
<br />
=Events=<br />
* Each last Saturday of the month, next August 29, 2009: [[BeagleBoard/bangalore user meet|BeagleBoard Bangalore user meeting]] (Beagle Clinic India)<br />
* all over the world 2009: [http://www.ti.com/corp/docs/landing/techday09/index.shtml# TI Technology Days 2009]. <br />
* ongoing 2009: [[BeagleBoard/contest|Beagle Sponsored Project Program]] - add a cool project and get a free BeagleBoard to realize it!<br />
<br />
=Hardware=<br />
<br />
The Beagle Board is ''a low-cost, fan-less single-board computer based on TI's OMAP3 device family, with all of the expandability of today's desktop machines, but without the bulk, expense, or noise'' (from [http://beagleboard.org/ beagleboard.org]). It uses a TI [http://focus.ti.com/docs/prod/folders/print/omap3530.html OMAP3530] processor (ARM Cortex-A8 superscalar core ~600MHz paired with a TMS320C64x+ DSP ~430MHz and an Imagination SGX 2D/3D graphics processor). See [http://focus.ti.com/docs/prod/folders/print/omap3530.html#features OMAP3530 features] for more processor features. [[BeagleBoard#Availability|Price is USD 149]]. The design goal was to make it as simple and cheap as possible, e.g. not having a LCD added, but letting you connect all add-ons available as cheap external components. See [http://beagleboard.org/brief What is Beagle?] and [http://linuxdevices.com/news/NS5852740920.html LinuxDevices article] for more details.<br />
<br />
The videos [http://uk.youtube.com/watch?v=fL_XMieanSc Beagle Board Beginnings] and [http://uk.youtube.com/watch?v=FuVwh_VrIxk Beagle Board 3D, Angstrom, and Ubuntu] give you a good intro about what BeagleBoard is about and it's capabilities.<br />
<br />
==Components==<br />
<br />
{|border=0<br />
!Top view of rev B:<br />
!Top view of rev C:<br />
|-<br />
|[[Image:Bb revb top numbered.jpg]]<br />
|[[Image:Bb revc top numbered.jpg]]<br />
|-<br />
|}<br />
{|border=1<br />
!No.<br />
!Name<br />
!Comment<br />
|-<br />
|'''1'''<br />
|[http://www.ti.com/omap35x OMAP3530] processor + 256MB NAND<br />
<br />
+ 128MB DDR (rev B)<br />
<br />
+ 256MB DDR (rev C)<br />
|PoP: Package-On-Package implementation for Memory Stacking<br />
[http://www.micron.com/products/partdetail?part=MT29C2G24MAKLAJG-6%20IT 256MB NAND/128MB Mobile DDR SDRAM] available from [http://www.digikey.com/scripts/US/DKSUS.dll?Detail?name=557-1435-ND DigiKey]<br />
<br />
([http://www.micron.com/products/partdetail?part=MT29C4G48MAPLCJI-6%20IT 512MB NAND/256MB Mobile DDR SDRAM] available from [http://www.digikey.com/scripts/US/DKSUS.dll?Detail?name=557-1436-ND DigiKey])<br />
<br />
[http://www.micron.com/products/mcps/beagleboard Micron's multi chip packages (MCPs) for Beagle Board]<br />
|-<br />
|'''2'''<br />
|[http://focus.ti.com/docs/prod/folders/print/tfp410.html DVI chip (TFP410)]<br />
|<br />
|-<br />
|'''3'''<br />
|[[BeagleBoard#DVI|DVI-D]]<br />
|Connection via HDMI connector<br />
|-<br />
|'''4'''<br />
|[[BeagleBoard#JTAG|14-pin JTAG]]<br />
|1.8V only!<br />
|-<br />
|'''5'''<br />
|Expansion connector: I2C, I2S, SPI, MMC/SD<br />
|User must solder desired header into place<br />
|-<br />
|'''6'''<br />
|[[BeagleBoard#User_button|User button]] <br />
|Allows setting boot order.<br />
|-<br />
|'''7'''<br />
| Reset button<br />
|<br />
|-<br />
| '''8'''<br />
|[[BeagleBoard#EHCI|USB 2.0 EHCI HS]]<br />
|Rev A and B: not working, unpopulated<br />
<br />
Rev C: populated and working<br />
|-<br />
|'''9'''<br />
|SD/MMC+<br />
| SDHC cards are supported<br />
|-<br />
|'''10'''<br />
|[[BeagleBoard#RS232|RS-232 serial]]<br />
|<br />
|-<br />
|'''11'''<br />
|Alternate power <br />
|normally powered by USB (unmounted on REV Ax boards, see [[BeagleBoard#Errata|errata]])<br />
|-<br />
|'''12'''<br />
|[[BeagleBoard#OTG|USB 2.0 HS OTG]] <br />
|Mini-AB connector. Board can be powered from port. <br />
|-<br />
|'''13'''<br />
|Stereo In<br />
|<br />
|-<br />
|'''14'''<br />
|Stereo Out<br />
|<br />
|-<br />
|'''15'''<br />
|S-Video<br />
|<br />
|-<br />
|'''16'''<br />
|TWL4030 (Rev A thru C2 inc.)<br />
[http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] (Rev C3 onwards)<br />
|Audio CODEC, USB port, power-on reset and power management. The TWL4030 is pin-compatible with the [http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] chip and was used due to the very limited availability of the TPS65950 in early board revisions.<br />
|-<br />
|'''17'''<br />
|LCD<br />
|only rev C<br />
|-<br />
|'''18'''<br />
|USB power<br />
|<br />
|-<br />
|'''19'''<br />
|Host PHY<br />
|<br />
|-<br />
|'''20'''<br />
|32kHz<br />
|<br />
|-<br />
|'''21'''<br />
|12MHz<br />
|<br />
|-<br />
|'''22'''<br />
|RS232 XVCR<br />
|<br />
|-<br />
|'''23'''<br />
|PWR SW<br />
|<br />
|-<br />
|'''24'''<br />
|VBAT<br />
|<br />
|-<br />
|}<br />
<br />
* Board size: 3" x 3" (about 76.2 x 76.2 mm)<br />
* Weight: [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/beagleboard.png ~37g]<br />
* Currently 6 layer PCB; target: 4 layer<br />
<br />
'''Bottom of rev B:'''<br />
<br />
[[Image:Beagle_bottom.jpg]]<br />
<br />
See [http://www.flickr.com/photos/jadon/sets/72157606050144396/ jadonk's photostream] for some more detailed BeagleBoard pictures.<br />
<br />
==Manual==<br />
<br />
See [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard System Reference Manual (rev. C3.0)].<br />
<br />
==Schematic==<br />
<br />
Schematic of BeagleBoard Rev. C3 is available as part of [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard HW Reference Manual (rev. C3.2)]. Rev C3 and previous are also available from [http://beagleboard.org/hardware/design BeagleBoard.org design page] including in PDF format. Please make sure that you ''read, understand and agree'' [http://groups.google.com/group/beagleboard/msg/ee3e1bc927551ffc Jason's mail] before using this.<br />
<br />
==Layout== <br />
<br />
Layout of BeagleBoard Rev. C3 is available as part of [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard HW Reference Manual (rev. C3.2)]. Rev C3 and previous layouts are also available from the [http://beagleboard.org/hardware/design BeagleBoard.org design page]. Please make sure that you ''read, understand and agree'' [http://groups.google.com/group/beagleboard/msg/ee3e1bc927551ffc Jason's mail] before using this.<br />
<br />
==Errata==<br />
<br />
# ''Boards revision A only'': The DC power jack pinout is incorrect on the PCB layout. DC_5V and GND are switched on PCB layout. Normally, the power jack has DC_5V on the center pin and GND on the sleeve (see Figure 20 of [http://www.beagleboard.org/uploads/BBSRM_6.pdf Beagle HW manual]). But on revision Ax boards the PCB layout has GND on center and DC_5V on sleeve. For this reason it is currently removed. It will be back on the Rev B board. Workaround is to remove wire connecting the two power pins on revision Ax boards and use external [http://amethyst.openembedded.net/~koen/beagleboard/beagle-power-pads.jpg power supply with switched connector] (do not connect anything to the “?” terminal. USB power will be permanently disabled and the board can only be powered from the 5V.) See [http://www.flickr.com/photos/koenkooi/2512038988/ Koen's Beagleboard powermod picture] with short descriptions, too.<br />
# ''Boards revision < A5 only'': There is excess voltage drop across R6 which is used to measure the current consumption on the board. This needs to be a .1 ohm instead of a 1 ohm resistor (SMD 0805). All revision A5 boards have been updated to .1. You can also just solder in a jumper to J2 bypassing the current read point. This issue can cause issues with the USB host port as the voltage supplied to that port can be too low.<br />
# ''Boards revision A only'': User LEDs 0 and 1 are shorted on the layout preventing them from being controlled individually. You need to control both GPIO_149 and GPIO_150 to turn on or off both LEDs. This is fixed in the Rev B boards.<br />
# ''Boards revision < A5 only'': There is an issue where on some boards the 1.8V has excessive noise on it. This is the result of two incorrect parts L1 and L3 being installed on the board. The inductors that were initially installed in the switchers are 100uH and need to be 1uH. This change will require that the board be returned for update. To check for correct parts, have a look to bottom of BeagleBoard. L1 - L3 are the larger parts there. They all have to be labeled with "102" (== 1uH). If any of these three inductors are labeled with "104" (== 100uH) they are wrong and have to be exchanged.<br />
# ''Boards revision A and B'': USB HOST (EHCI) failures. See [http://code.google.com/p/beagleboard/issues/detail?id=15 issue 15] and [http://code.google.com/p/beagleboard/wiki/USBHostTestREPRODUCE USB host test reproduce]. This is a hardware defect. [http://www.beagleboard.org/irclogs/index.php?date=2008-05-29#T00:27:06 Most probably] Rev. B board does not have the EHCI USB connector mounted. Workaround: Use [[BeagleBoard#OTG|OTG port]] with something like [http://trisoft.de/pics/ZHost.JPG mini A to USB A adapter] instead.<br />
# ''Boards revision A and < B4'': Plugging in a USB OTG cable will prevent Beagle from booting (with git kernel), see [http://code.google.com/p/beagleboard/issues/detail?id=19 issue #19], too. This is due to missing filtering capacitor at USB OTG VBUS. When the kernel driver detects that a USB OTG cable is inserted it enables the charge pump to generate VBUS. With no filtering VBUS looks like any switching regulator output with no filtering -- a huge voltage spike when the switch is on, followed by a rapid decay to a low voltage until the next switch on period. The capacitor is there to store energy between the output switch ON and OFF time, the feedback loop in the regulator does sample the cap voltage. Fix is to piggy-back solder a 0603 2.2uF ceramic capacitor to D3, see [http://www.sakoman.net/omap3/beagle/vbus-mod-d3.jpg VBUS modification D3 picture]. Revision B4 boards and newer have this fix applied. Thanks to [http://groups.google.com/group/beagleboard/msg/eb789e15c99a673d Steve] for debugging this!<br />
# ''Boards revision A and < B5'': There is some issue with 32kHz clock depending on system configuration used to clock some OMAP3 peripherals. From this e.g. GPIOs, GPTIMERs, and USB on Beagle might be affected. See [http://code.google.com/p/beagleboard/issues/detail?id=22 Issue 22]. Symptom from this is that after booting Linux kernel serial console hangs after some time and no serial input/output is possible any more. There is one software workaround and one hardware fix for this: (A) Software workaround: Don't use 32kHz timer to clock Linux, instead use MPU timer. (B) Hardware workaround: Remove [http://www.flickr.com/photos/25691331@N04/2766671437/in/pool-beagleboard capacitor C70], which improves the 32kHz clock quality and avoids hang-up. Note: Revision A boards have capacitor C70 [http://www.flickr.com/photos/25691331@N04/2766671437/in/pool-beagleboard at the same location] as rev. B boards. Note: Board revision >= B5 removes capacitor C70.<br />
# ''Random boards, quite rare, revision < B6'': Some random boards and quite rare, show directly after purchasing broken serial communication from host PC to BeagleBoard. Symptom is that you get a new board, get serial output from BeagleBoard in terminal program, but can't type anything at U-Boot prompt (Note: Don't mix this with errata #7. With errata #7 you are able to use U-Boot normally, but Linux prompt input stops after some time). Most users don't have this issue, though. So, first double check your serial configuration ([[BeagleBoardFAQ#Serial_connection_.231|FAQ1]], [[BeagleBoardFAQ#Serial_connection_.232|FAQ2]] and [[BeagleBoardFAQ#Serial_connection_.233|FAQ3]]). Only if you are really, really sure that anything with your serial connection is fine, consider sending the board back doing a [http://beagleboard.org/support/rma RMA request]. This issue was resolved on revision B6 and later boards.<br />
<br />
For additional (software) issues and enhancement requests see [http://code.google.com/p/beagleboard/issues/list Beagle board open point list & issue tracker], too.<br />
<br />
Note: BeagleBoard revision B6 uses different package for U9/U11.<br />
<br />
==Clocking==<br />
<br />
Some [http://www.beagleboard.org/irclogs/index.php?date=2008-07-08#T21:12:23 notes] about (ARM processor) clock rates at BeagleBoard:<br />
<br />
* ARM Cortex-A8 processor is currently clocked at 500MHz<br />
* 500MHz is the default used because it is a balance of performance and longevity<br />
* For OMAP35x 600MHz is max recommended<br />
* At 600MHz OMAP35x is considered to be 'overdrive' and it does not have the same life expectancy<br />
* Higher than 600MHz is out of spec and no guarantee it will work at all (or not damage itself)<br />
* Also keep in mind that if you go higher you probably want to increase the core voltage. Some of this is mentioned in table 3-3 of the [http://focus.ti.com/lit/ds/symlink/omap3530.pdf OMAP3530 data sheet]. Some numbers:<br />
<br />
{| border="1"<br />
||'''ARM'''||'''DSP'''||'''core voltage'''<br />
|-<br />
|600 MHz||430 MHz||1.35V<br />
|-<br />
|550 MHz||400 MHz||1.27V<br />
|-<br />
|500 MHz||360 MHz||1.2V<br />
|}<br />
<br />
* For some OMAP3 clock, voltage and power management discussion see [http://focus.ti.com/lit/an/sprt495/sprt495.pdf OMAP3 power management white paper], too.<br />
* The OMAP3 chip on the Beagle lacks the efuses needed for using the SmartReflex technology, see [http://www.beagleboard.org/irclogs/index.php?date=2009-02-26#T10:44:24].<br />
* There is a thermal monitor in the core, you could use to scale frequency up and down<br />
<br />
To set CPU clock to 600 MHz, there are two options. Both '''do not''' adjust the voltage, so the system may become unstable:<br />
<br />
* The u-boot command "mw 48004940 0012580c" will temporarily set the CPU clock to 600 MHz (not permanent over reset).<br />
* To permanently set the CPU clock to 600 MHz, include the above command in the "bootcmd" variable or equivalent script.<br />
<br />
==Power management==<br />
<br />
* Latest Linux kernel power management development for TI OMAP SoCs is maintained in [http://git.kernel.org/?p=linux/kernel/git/khilman/linux-omap-pm.git;a=summary Kevin's linux-omap-pm git tree]<br />
* Russ' Beagle HW modifications resulted in [http://groups.google.com/group/beagleboard/browse_thread/thread/197a8ef6b46cc828 8mW sleep for Beagle Board]<br />
<br />
Without PM kernel, the Beagle [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/index.htm consumes ~1.5 watts idle, however it also uses the same amount under load] (see bottom of that page).<br />
<br />
==DLP Pico projector==<br />
<br />
Texas Instruments is developing a Pico Video Projector Kit (PVPK) as a peripheral for the Beagle Board. The stand alone pico projector will support VGA resolution (640 x 480), RGB 888 input through a DVI interface. The physical connector on the projector will be HDMI. See [http://groups.google.com/group/beagleboard/msg/10e218972380ee48 mailing list] and [http://www.youtube.com/watch?v=-tUBXD-KRp4 Beagle Running Angstrom (VGA) on DLP Pico Projector] for more details.<br />
<br />
It is available from [http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=296-23836-ND DigiKey] for $349.<br />
<br />
See [http://blog.makezine.com/archive/2009/01/tis_beagleboard_and_dlp_pico_projector.html?CMP=OTC-0D6B48984890 article from Make], too.<br />
<br />
DigiKey videos [http://www.youtube.com/watch?v=KBbCdnOj5vg part 1], [http://www.youtube.com/watch?v=zymOmduNWyI part 2] and [http://www.youtube.com/watch?v=Uj19Bi5NYeU part 3].<br />
<br />
==Interfacing to Raw LCD Panels==<br />
<br />
Currently on Rev A / B boards there is no direct access to the LCD lines before they enter the DVI framer. The REV C2 provides access to these lines. Several projects to interface an LCD to the beagleboard exist:<br />
<br />
* [[BeagleBoardRawLCD|interfacing to Raw LCD Panels]] article <br />
* [http://digitalsurveyinstruments.com/beagleperiphials/hdmi2parallel/doc/index.htm hdmi to parallel] workaround method<br />
* [http://www.harbaum.org/till/dvi2par/index.shtml dvi2par cheap diy HDMI to parallel converter]<br />
<br />
=Availability=<br />
<br />
BeagleBoards, currently Rev. C3 boards, are available from<br />
<br />
* [http://www.mouser.com/beagleboard Mouser]<br />
* [http://dkc1.digikey.com/us/mkt/beagleboard.html Digi-Key] with part number [http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=296-23428-ND 296-23428-ND].<br />
<br />
Note: For non-US Digi-Key free shipping orders:<br />
<br />
* Click the US flag on the top right corner of [http://dkc1.digikey.com/us/mkt/beagleboard.html Digi-Key] BeagleBoard page to come to the international page<br />
* Select ''Order Online'' for your country<br />
* Add quantity ''1'' and part number ''296-23428-ND''<br />
* Click ''Add to order''<br />
<br />
When ordering over 65 EUR / GBP 50 product (BeagleBoard is above), for Europe the price depends on the actual dollar to EUR/GBP rate. On nov 9, 2008 the price was EUR 124 with free shipping.<br />
<br />
Note: Some users report that they got some questions from DigiKey to be answered before board shipping is done.<br />
<br />
Note: While you get free shipping, most probably you have to pay tax e.g. ordering from Europe. Users report that they had to pay EUR ~34 - 44 VAT + importing taxes (depending on european country), resulting in EUR 137 - 147 ordering from Europe.<br />
<br />
Note: For European users, [http://www.ebv.com/fileadmin/products/Press_Print/Campaigns/2009/Product_Campaigns/Texas_Beagle_Board_englisch.pdf EBV Elektronik] sells its own blue version of the board for 179 EUR, which includes all useful accessories (DVI cable, serial cable, USB 2.0 Ethernet, USB hub, 2 GB MMC, power supply, Linux BSP).<br />
<br />
Note: German (Europe) users can order through German shops, too. For higher price, though. <br />
* [http://shop.embedded-projects.net/product_info.php/info/p159_BeagleBoard--OMAP-3-.html Embedded Projects Shop] sells BeagleBoard for EUR 199.00 + shipping.<br />
* [http://www.handheld-linux.com/wiki.php?page=Beagle%20Board Handheld-Linux]<br />
<br />
See below for ''hardware'' differences of the revisions. There are no ''software'' differences. <br />
<br />
==Revision A==<br />
<br />
There are some limited early revision Ax prototypes out there used by some hackers hanging around at #beagle channel on irc.freenode.net. See [[BeagleBoard#Errata|errata]] for limitations.<br />
<br />
==Revision B==<br />
<br />
Revision B is same as revision A, except<br />
* fix for shorted LEDs 0/1<br />
* fix for wrong power jack pinout<br />
* revision B6 uses different package for U9/U11<br />
Still has USB HOST (EHCI) failures. USB HOST (EHCI) connector isn't mounted.<br />
<br />
There are 4 revisions of the B board in the field: B4, B5, B6 and B7.<br />
<br />
The most notable difference is the use of the ES3.0 silicon in B6 and B7, other changes are not relevant to software developers.<br />
<br />
==Revision C2==<br />
Revision C2 is same as revision B7 except:<br />
* USB HOST (EHCI) is operational on revision C2, with standard USB A female connector.<br />
* Add interface for raw LCDs ([http://groups.google.com/group/beagleboard/msg/2e82c3ed6061d9d2 mockup])<br />
* It uses updated OMAP3 revision. BeagleBoard revisions B4+B5 uses OMAP3 ES 2.1 (engineering sample), while BeagleBoard revision C2 uses ES 3.0. OMAP3 ES 3.0 fixes minor issues:<br />
** updated ARM Cortex A8 silicon (r1p3) fixing a very rare [http://elinux.org/BeagleBoardFAQ#NEON_performance NEON issue] that has not been seen in real code<br />
* Power measurement feature<br />
* Uses [http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] OMAP power controller instead of TWL4030<br />
* Three additional PWM signals on the expansion connector added as pin mux options to existing pins ([http://groups.google.com/group/beagleboard/browse_thread/thread/d5872b7c6d74592c?hl=en# message])<br />
* Revision detection (to be able to identify C2 board from older boards by software, e.g. for different pin mux)<br />
* 256MB RAM ([http://groups.google.com/group/beagleboard/msg/3a38d0f21cefd6b1?hl=en message]) (and still 256MB NAND like rev B)<br />
<br />
Note: Revision C2 is the first production version, and all orders from from Digi-Key are shipped as Rev C2.<br />
<br />
==Revision C3==<br />
As revision C2 boards are [http://groups.google.com/group/beagleboard/msg/e41d3c97aa7d4951 sold out], revision C3 will ship now.<br />
<br />
Revision C3 is same as revision C2 [http://groups.google.com/group/beagleboard/msg/037318fbc44139d5 except]:<br />
* Optional RTC [http://parts.digikey.com/1/parts/1454-battery-lith-coin-3v-12-5mm-vert-vl-1220-vcn.html VL1220 series] backup battery<br />
* Mounting holes conected to ground<br />
* Slightly improved S-Video<br />
<br />
==Clones==<br />
===EBVBeagle===<br />
EBV build and sell their own BeagleBoard called [http://www.ebv.com/en/products/categories/details/product/ebvbeagle-board EBVBeagle], see e.g. [http://fl0rian.wordpress.com/2009/03/08/the-other-beagleboard/].<br />
It is actually a BeagleBoard revision C2 with green PCB boxed with some useful accessories. It comes as a quite complete starter kit with AC adapter, USB to Ethernet adapter, MMC card, USB hub and some cables.<br />
More information in [http://www.ebv.com/en/press-print/news-pr/details/news//press-releas-54.html official press release].<br />
<br />
===Mini Board===<br />
[[Mini_Board|ICETEK-OMAP3530-Mini]] is a chinese BeagleBoard clone.<br />
<br />
===DevKit 8000===<br />
[[DevKit8000]] is a Chinese BeagleBoard clone, slightly larger with additional peripherals (e.g. LCD/TSP, Ethernet and keyboard).<br />
<br />
===IGEPv2===<br />
[http://www.igep-platform.com/ IGEPv2 Platform] is a Spanish BeagleBoard clone, slightly larger, with additional peripherals like e.g. ethernet connector, wifi+bluetooth.<br />
<br />
==BeagleBoard-based products==<br />
* [http://www.alwaysinnovating.com/touchbook/ Always Innovating Touch Book], see [http://gigglehd.com/zbxe/hdforum/files/attach/images/899852/493/987/001/always_innovating_touch_book_0011.jpg]<br />
<br />
==Beagle case==<br />
<br />
*[http://specialcomp.com/beagleboard/ Special Computing]<br />
*[http://groups.google.com/group/beagleboard/browse_thread/thread/1c82316019633e51 SketchUp 3D model]<br />
<br />
=Adapters=<br />
<br />
For quite detailed information about all BeagleBoard peripherals see [http://www.beagleboard.org/uploads/BBSRM_6.pdf BeagleBoard HW Reference Manual (rev. B6)].<br />
<br />
See [[BeagleBoardPeripherals| BeagleBoard peripherals and adapters page]] for useful add ons for Beagle Board.<br />
<br />
==Expansion boards==<br />
* [[BeagleBoard Zippy]] expansion board is now available from [http://www.tincantools.com/product.php?productid=16147&cat=0&page=1&featured TinCanTools] for $79.00. basic specs are:<br />
** Battery Backed RTC<br />
** Second MMC slot<br />
** 10BaseT Ethernet<br />
** Second RS-232<br />
** +5V level I2C<br />
** AT24 EEPROM<br />
* [http://www.hy-research.com/beagle_expansion.html HY Research] has some expansion board basics and example.<br />
* [http://www.hervanta.com/stuff/Beaglebot#Expansion_Board Beaglebot] uses a custom extension board.<br />
* [http://beagleboard.org/leopard Leopard Board], a Beagle buddy web camera<br />
* There is also a VGA DB15 adapter board under development for the Rev C2 board. It should be available through a yet to be annnounced outlet.<br />
<br />
==JTAG==<br />
<br />
Depending on your JTAG tool, you'd need a 14-pin to 20-pin adapter to use an ARM debugger. The 14-pin TI JTAG connector is used on BeagleBoard and is supported by a large number of JTAG emulation products.<br />
See [[BeagleBoardJTAG]] for more information.<br />
<br />
==RS232==<br />
<br />
The pinout on the beagle board is "AT/Everex" or "IDC10". You can buy [http://www.pccables.com/07120.htm IDC10 to DB9M adapters] in many places as they are commonly used for old PCs. You can also probably rip one of those cables out of any old desktop computer, where it's being used to support the serial port. Be careful, though -- some of those cables will have that tenth hole filled in so you'd have to snap off the extraneous pin on your BeagleBoard. Keep looking until you find a cable with all 10 holes open.<br />
<br />
Depending on your local configuration, you may need a [http://en.wikipedia.org/wiki/Null_modem 9-Pin NullModem] cable to connect BeagleBoard to serial port of your PC. From [http://www.tincantools.com/ TinCanTools] there is a [http://www.tincantools.com/product.php?productid=16144&cat=0&page=1&featured RS-232 DB-9 adapter] and [[media:flyswatter-ti-uart.pdf|adapter schematic]] available.<br />
<br />
==USB==<br />
There are two USB ports on the BeagleBoard, one with an EHCI controller and another with an OTG controller. As of Rev B4, the usb EHCI has been removed because of a hardware defect. Rev C will include USB EHCI working properly.<br />
<br />
===EHCI===<br />
The HS ([http://en.wikipedia.org/wiki/USB#USB_signalling HighSpeed]) USB [http://en.wikipedia.org/wiki/EHCI ECHI] controller on OMAP3 on BeagleBoard supports high-speed only. This simplifies the logic on the device. FS/LS (FullSpeed/LowSpeed) devices, such as keyboards and mice, require going through a high-speed USB 2.0 hub.<br />
<br />
According to the BeagleBoard System Reference Manual Rev C2, the EHCI port can source 5V at 500mA which is enough to power a hub and several low-power devices. However, this is only true if the BeagleBoard is powered through its power jack from a well-regulated 5V external power supply. If the BeagleBoard is powered through the OTG port, the EHCI port sources an "extremely limited" ampount of power (probably 100mA or so) so you'll need a "self-powered" USB 2.0 hub with its own external power supply. [Reference: Sections 5.6 and 7.2 of the BBSRM Rev C2.2.]<br />
<br />
===OTG===<br />
The HS USB OTG ([http://en.wikipedia.org/wiki/USB_On-The-Go OnTheGo]) controller on OMAP3 on the BeagleBoard does have support for all the USB 2.0 speeds (LS/FS/HS) and can act as either a host or a gadget/device. The HS USB OTG port is used as the default power input for the BeagleBoard. It is possible to boot the BeagleBoard using this USB port.<br />
<br />
When using the OTG port in host mode, you must power the BeagleBoard using the +5V power jack. If you connect a USB hub, you'll probably also need external power for the USB hub as well, because according to the Hardware Reference manual the BeagleBoard OTG port only sources 100 mA. This is enough to drive a single low-power device, but probably won't work with multiple devices.<br />
<br />
The Linux kernel needs to know you want to use the OTG port in host mode. I believe OTG ports are supposed to figure this out for themselves using the OTG Host Negotiation Protocol, but for now the Linux kernel may need some help. Specifically, Pin 4 (ID) of the OTG connector needs to be shorted to Pin 5 (GND) by using a [http://trisoft.de/pics/ZHost.JPG 5-pin USB Mini-A plug] which shorts these pins together in the plug. A [http://en.wikipedia.org/wiki/USB#USB_cables 5-pin USB Mini-B plug] leaves Pin 4 floating. Unfortunately, most USB Mini plugs are unmarked as to whether they are "A" or "B".<br />
<br />
You can find "mini A" adapters that have Pin 4 shorted and offer out a full-sized USB A Female jack [http://www.electronicproductonline.com/catalog/product_info.php?products_id=2043 here.]<br />
<table><br />
<tr><td><br />
Since the right cables might be hard to get, you simply can<br />
* short circuit the two pins encircled in red in the image to the right. You can do this by running a wire between the two pins. That at least allows easier undoing the change. Actually you could even have a small switch or so between 4 and 5.<br />
or<br />
* use a "mini B" cable (easier to get) and try the soldering of the two pins at the cable's connector. Depending on the cable it should be possible to open the plastic covering of mini-B port with a sharp-edged knife, then solder the two pins together, close the covering again and use some tape. This leaves the BeagleBoard unmodified.<br />
</td><td>[[Image:usb_otg.png]]</td></tr></table><br />
The Rev C BeagleBoard has a pair of pads labeled J6 on the back of the board under the OTG connector. Shorting these pads together with a wire or solder blob connects pins 4 and 5.<br />
See Figure 20 in the BeagleBoard System Reference Manual Rev C2.2.<br />
<br />
==DVI==<br />
<br />
DVI-D connection on BeagleBoard uses a [http://en.wikipedia.org/wiki/HDMI HDMI connector]:<br />
<br />
''HDMI is backward-compatible with the single-link Digital Visual Interface carrying digital video (DVI-D or DVI-I, but not DVI-A) used on modern computer monitors and graphics cards. This means that a DVI-D source can drive a HDMI monitor, or vice versa, by means of a suitable adapter or cable, but the audio and remote control features of HDMI will not be available.''<br />
<br />
BeagleBoard can be connected to a DVI monitor using HDMI female to DVI male cable.<br />
<br />
=BootRom=<br />
<br />
OMAP3 on BeagleBoard contains a BootRom. With this, BeagleBoard can boot without any code in permanent storage (NAND) or from peripherals. This is useful for first board bring up or if your BeagleBoard is bricked. For more information about BootRom booting see [http://www.ti.com/litv/pdf/sprufd6a SPRUFD6]. <br />
<br />
==User button==<br />
<br />
With user button on BeagleBoard you can configure boot order. Depending on this button, the order used to scan boot devices is changed. The boot order is (the first is the default boot source):<br />
<br />
* User button ''not'' pressed: NAND -> USB -> UART -> MMC<br />
* User button ''is'' pressed: USB -> UART -> MMC -> NAND<br />
<br />
Technically speaking, the user button configures pin SYS.BOOT[5]. See [http://focus-webapps.ti.com/general/docs/sitesearch/searchsite.tsp?selectedTopic=1653260327&numRecords=25&searchTerm=sprufd6&statusCode=null SPRUFD6] for more details.<br />
<br />
==Serial and USB boot==<br />
<br />
Historically, using OMAP3's boot ROM for serial and USB boot, there are several tools around. The newest are Nishanth' ''OMAP U-Boot Utils'', while there are still some older tools for serial boot and USB boot. It is also possible the access the [[u-boot environment variables in linux|u-boot env from linux]].<br />
<br />
===OMAP U-Boot Utils===<br />
<br />
Nishanth' [http://code.google.com/p/omap-u-boot-utils/ OMAP U-Boot Utils] provide<br />
<br />
* ''pserial'' - OMAP specific utility which downloads a file in response to ASIC ID over serial port.<br />
* ''pusb'' - OMAP specific utility which downloads a file in response to ASIC ID over USB connection.<br />
* ''ucmd'' - Send a command to U-Boot and wait till a specific match appears.<br />
* ''ukermit - Download a file from host without using kermit to U-Boot.<br />
<br />
See [http://nishanthmenon.blogspot.com/ Nishanth' blog] and [http://groups.google.com/group/beagleboard/browse_thread/thread/c5bfb1b8ed528b52# announce mail], too.<br />
<br />
===Serial boot===<br />
<br />
Besides Nishanth' ''OMAP U-Boot Utils'', to boot from USB or UART, you need a PC tool which talks with OMAP BootRom and speaks the correct protocol to download ARM target code to BeagleBoard. Currently there are two older (experimental) tools for UART boot:<br />
<br />
* [http://omapzoom.org/gf/project/omaptools/wiki PC Serial Boot perl script]<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/80ad3da0eb2aa555 Linux C utility] (not working yet with below target code)<br />
<br />
See [http://groups.google.com/group/beagleboard/browse_thread/thread/ae2c601ebe104a4 USB and serial download target code] for some example target code to be downloaded to OMAP3 on BeagleBoard.<br />
<br />
===USB boot===<br />
<br />
Besides Nishanth' ''OMAP U-Boot Utils'', for USB boot, there is currently one (experimental) tool to boot BeagleBoard over USB:<br />
<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/2b9e99886bb7a747 Linux C utility]<br />
<br />
See [http://groups.google.com/group/beagleboard/browse_thread/thread/ae2c601ebe104a4 USB and serial download target code] for some example target code to be downloaded to OMAP3 on BeagleBoard.<br />
<br />
See [[BeagleBoardRecovery#USB_recovery|USB recovery section]] how to use USB boot for board recovery.<br />
<br />
==NAND boot==<br />
<br />
See [[BeagleBoardNAND|NAND boot]] article.<br />
<br />
==MMC/SD boot==<br />
<br />
Currently, [http://code.google.com/p/beagleboard/wiki/BootingBeagleBoard boot the BeagleBoard with MMC/SD] is the only working way for first board bring up.<br />
<br />
===MMC/SD formatting===<br />
<br />
As described in above MMC/SD boot description, you have to ''create a bootable partition on MMC/SD Card''. This can be done using e.g. Windows or Linux tools.<br />
<br />
'''Windows'''<br />
<br />
See ''HP USB Disk Storage Format Tool 2.0.6'' description on [http://code.google.com/p/beagleboard/wiki/BootingBeagleBoard boot the BeagleBoard with MMC/SD] page.<br />
<br />
'''Linux'''<br />
<br />
Please see [http://wiki.omap.com/index.php?title=MMC_Boot_Format OMAP3 MMC Boot Format].<br />
<br />
===Dual partition card===<br />
<br />
You can [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat create a dual-partition card], booting from a FAT partition that can be read by the OMAP3 ROM bootloader and Windows, then utilizing an ext2 partition for the Linux root file system.<br />
<br />
To mount second ext2 partition as root file system (e.g. containing contents of [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode rd-ext2.bin]) use kernel boot arguments (e.g. in uboot using ''setenv bootargs''):<br />
<br />
console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootwait<br />
<br />
===U-Boot booting===<br />
<br />
If your MMC/SD card formatting is correct and you put [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode MLO, u-boot.bin and uImage] on the card you should get a u-boot prompt after booting beagle board. E.g. (output from terminal program with 115200 8N1):<br />
<br />
...40T.........XH.H.U�..Instruments X-Loader 1.41<br />
Starting on with MMC<br />
Reading boot sector<br />
<br />
717948 Bytes Read from MMC<br />
Starting OS Bootloader from MMC...<br />
<br />
U-Boot 1.1.4 (Apr 2 2008 - 13:42:13)<br />
<br />
OMAP3430-GP rev 2, CPU-OPP2 L3-133MHz<br />
TI 3430Beagle 2.0 Version + mDDR (Boot ONND)<br />
DRAM: 128 MB<br />
Flash: 0 kB<br />
NAND:256 MiB<br />
In: serial<br />
Out: serial<br />
Err: serial<br />
Audio Tone on Speakers ... complete<br />
OMAP3 beagleboard.org #<br />
<br />
Using this u-boot prompt, you now can start kernel uImage stored on MMC card manually:<br />
<br />
OMAP3 beagleboard.org # mmc init<br />
OMAP3 beagleboard.org # fatload mmc 0:1 0x80000000 uimage<br />
OMAP3 beagleboard.org # bootm<br />
<br />
If you like to make that happen every boot:<br />
<br />
OMAP3 beagleboard.org # set bootcmd 'mmc init ; fatload mmc 0:1 0x80000000 uimage ; bootm' ; saveenv<br />
<br />
=Code=<br />
<br />
Code and binaries for BeagleBoard are available at various places.<br />
<br />
==Binaries==<br />
<br />
BeagleBoard pre-built binaries and source code can be found at [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode Beagle source code] and [http://code.google.com/p/beagleboard/downloads/list downloads] page. These are the locations where "official" TI code is available. Please note that this code is mainly for reference and testing. More up to date binaries and code is available by community. Community took (parts) of TI reference code, improves and updates it. <br />
<br />
Actually, [http://www.angstrom-distribution.org/node/47 Koen's prebuilt Beagleboard demo images] are up to date binaries including e17 as window manager, the abiword word processor, the gnumeric spreadsheet application, a NEON accelerated mplayer and the popular NEON accelerated omapfbplay which gives you fullscreen 720p decoding. The [http://www.angstrom-distribution.org/demo/beagleboard www.angstrom-distribution.org/demo/beagleboard] directory should contain all the files you need:<br />
<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/u-boot.bin u-boot.bin]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/MLO MLO]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/uImage uImage]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/Angstrom-Beagleboard-demo-image-glibc-ipk-2009.X-test-20090104-beagleboard.rootfs.tar.bz2 rootfs]<br />
<br />
See the [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat beagle wiki] on how to setup your SD card to use all this goodness.<br />
<br />
==Source==<br />
<br />
Besides above binary and source images (TI's and communities one), for various parts of Beagle software stack there are community supported [http://git.or.cz/ git] repositories available. <br />
<br />
===X-Loader===<br />
<br />
Steve did some work to consolidate and update X-Loader from various sources and put it in a [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=x-load-omap3.git;a=summary X-Loader git repository]. Get it by<br />
<br />
git clone git://gitorious.org/x-load-omap3/mainline.git xloader<br />
cd xloader/<br />
<br />
Build:<br />
<br />
make distclean<br />
make omap3530beagle_config<br />
make<br />
<br />
Result will be a ~20k sized ''x-load.bin'' in main directory.<br />
<br />
===U-Boot===<br />
<br />
[http://www.denx.de/wiki/U-Boot/WebHome Mainline U-Boot] has good support for BeagleBoard. Get it by:<br />
<br />
git clone git://git.denx.de/u-boot.git u-boot-main<br />
cd u-boot-main<br />
git checkout --track -b omap3 origin/master<br />
<br />
Build (assuming Code Sourcery GCC 2007q3):<br />
<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- mrproper<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- omap3_beagle_config<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- <br />
<br />
Result will be a ~160k sized ''u-boot.bin'' in main directory.<br />
<br />
Note: Due to (patch and binary) size, BeagleBoard splash screen was removed from upstream version. If you want it back, use [http://groups.google.com/group/beagleboard/browse_thread/thread/3ad9b803a3418624 U-Boot v1 BeagleBoard splash screen patch].<br />
<br />
Note: For experimental U-Boot patches not ready for mainline yet, Steve's [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=u-boot-omap3.git;a=summary Beagle U-Boot git repository] is used to test them. Get it by:<br />
<br />
git clone git://gitorious.org/u-boot-omap3/mainline.git u-boot-omap3<br />
cd u-boot-omap3<br />
git checkout --track -b omap3-dev origin/omap3-dev<br />
<br />
===Linux kernel===<br />
<br />
[http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git;a=summary Git repository] of [http://muru.com/linux/omap/ OMAP Linux kernel] contains Beagle support. Get it by:<br />
<br />
git clone git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git linux-omap-2.6<br />
cd linux-omap-2.6<br />
<br />
Build:<br />
<br />
make distclean<br />
make omap3_beagle_defconfig<br />
make menuconfig # only needed if you want to change the default configuration<br />
make uImage<br />
<br />
The result will be a ''uImage'' in ''arch/arm/boot/'' directory.<br />
<br />
If you use the OE toolchain and want to build outside of the OE tree you should do<br />
ARCH=arm<br />
PATH=~/oe/tmp/cross/armv7a/bin:~/oe/tmp/staging/i686-linux/usr/bin:$PATH # add cross tools to your path<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- distclean<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- omap3_beagle_defconfig<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- menuconfig # only needed if you want to change the default configuration<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- uImage<br />
Note: the staging dir in the path is for mkimage. If you've build a kernel before with oe, the program should be there<br />
<br />
Note: If you are interested in kernel development have a look to [[BeagleBoardLinuxKernel|manually compiling BeagleBoard kernel]], too.<br />
<br />
===Experimental kernel patches and hacks===<br />
<br />
Some beagle developers maintain their own kernel experimental patches and hacks not ready for upstream:<br />
<br />
* [http://cgit.openembedded.net/cgit.cgi?url=openembedded/tree/packages/linux/linux-omap Koen's collection of kernels patches for OE] and the [http://cgit.openembedded.net/cgit.cgi?url=openembedded/tree/packages/linux/linux-omap_git.bb list of relevant patches]<br />
* [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=linux-omap-2.6.git;a=shortlog;h=refs/heads/test Steve's kernel tree], a clone of main OMAP git with additional patches, mainly beagle audio (ASOC) related.<br />
* [http://git.mansr.com/?p=linux-omap;a=summary Mans' kernel tree], a clone of main OMAP git with additional patches, mainly display & framebuffer related.<br />
* [http://www.bat.org/~tomba/linux-omap.html Tomi's kernel tree], a clone of main OMAP git with display sub-system patches, replacing the entire display driver with one that is the likely direction moving forward.<br />
<br />
=Compiler=<br />
<br />
TI OMAP3530 processor on BeagleBoard contains an ARM Cortex-A8 general purpose processor and a TMS320C64x+ DSP.<br />
<br />
==ARM==<br />
<br />
There is broad compiler support including gcc - please see [http://www.elinux.org/ARMCompilers ARM Compilers]<br />
<br />
==C64x+ DSP==<br />
<br />
A free C64x DSP compiler is available as [https://www-a.ti.com/downloads/sds_support/targetcontent/LinuxDspTools/download.html Linux hosted C6x Code Generation Tools] (TMS320C6000 C/C++ CODE GENERATION TOOLS 6.1.3 July 2008).<br />
<br />
Note: my.TI account required. You may create an account [https://my.ti.com here]<br />
<br />
Note: Old c6000 Linux compiler available on [ftp://ftp.ti.com/pub/cs/linux_cgt500.tar.gz TI FTP site]. Does NOT support c64x+ core in OMAP3 devices. Not recommended.<br />
<br />
You can also utilize the [http://focus.ti.com/dsp/docs/dspsupportaut.tsp?familyId=44&sectionId=3&tabId=416&toolTypeId=30 full-CCS free evaluation tools for 120 days], but they currently require purchase to upgrade to service release 9 to support full JTAG debugging with supported JTAG hardware.<br />
<br />
See [[BeagleBoard/DSP_Howto| BeagleBoard DSP howto]] for information about how to use the DSP.<br />
<br />
=Cortex A8 ARM features =<br />
<br />
ARM Cortex-A8 in OMAP3 is a high performance dual-issue applications processor which reaches a performance of 2.0 DMIPS/MHz (compared to ARM11 at 1.2 DMIPS/MHz). It is ARM v7 architecture, which is fully backwards compatible with application code for previous ARM processors.<br />
<br />
It includes a floating point unit (ARM VFPv3 architecture) and the ARM NEON SIMD instruction set.<br />
<br />
See [http://pandorawiki.org/Floating_Point_Optimization Floating Point Optimization] article for an intro into VFP-lite and NEON.<br />
<br />
===ARM NEON===<br />
<br />
NEON is a 64/128-bit wide SIMD vector extension for ARM, which has been architected to be an efficient C compiler target as well as being used from assembly language. It has 32x 64-bit registers (with a dual view as 16x 128-bit registers) which can hold the following datatypes:<br />
* 64-bit signed/unsigned<br />
* 32-bit signed/unsigned<br />
* 32-bit single precision floating point<br />
* 16-bit signed/unsigned<br />
* 8-bit signed/unsigned<br />
<br />
The key advantage of NEON is very high performance vector math processing, whilst being easy to program. It is the same thread of control as the ARM (but different instructions), and is supported by the same tools, debuggers and operating systems.<br />
<br />
The NEON instruction set is documented in ARM's [http://infocenter.arm.com/help/topic/com.arm.doc.dui0204i/DUI0204I_rvct_assembler_guide.pdf RealView Compilation Tools Assembler Guide].<br />
<br />
For NEON optimized libraries see [http://www.us.design-reuse.com/news/18429/aac-mp3-mpeg-4-h-264-fft-openmax-cortex-a8-neon-arm11-processors.html ARM Releases AAC, MP3, MPEG-4, H.264 and FFT OpenMAX DL Libraries, Highly Optimized for Cortex-A8/NEON and ARM11 Processors]. Note: Read the [http://www.arm.com/products/esd/openmax_v7libraries.html EULA].<br />
<br />
NEON is currently used by<br />
* ffmpeg - libavcodec used by mplayer, omapfbplay, and many other linux applications<br />
* libpixman - used by X.org and Mozilla & Webkit browsers to render text and graphics<br />
* Bluez - official Linux Bluetooth stack<br />
<br />
=== ARM Cortex Floating Point ===<br />
<br />
There are two types of instructions in the ARM v7 ISA that handle floating point:<br />
<br />
1) '''VFPv3''' Floating point instruction set (used for single/double precision scalar operations).<br />
These is used by gcc for C floating point operations on 'float' and 'double'<br />
<br />
2) '''NEON''' [http://www.arm.com/products/multimedia/neon/ NEON] vectorized single precision operations (2 values in a D-register, or 4 values in a Q-register)<br />
These can be use by gcc when -ftree-vectorize is enabled and -mfpu=neon is specified, and the code can be vectorized. In other cases the VFPv3 scalar ops will be used.<br />
<br />
ARM Cortex-A processors have separate floating point pipelines that handle these different instructions.<br />
<br />
On Cortex-A8, the designers' focus was on the NEON unit performance which can sustain 1 cycle/instr throughput (processing 2 single-precision values at once). The scalar VFPv3 FPU cannot achieve this level of performance (cycle timings are in the Cortex-A8 TRM download), but it is still a lot better than doing floating point using integer instructions.<br />
<br />
If you need the highest performance floating point on Cortex-A8, you need to use single precision and ensure the code uses the NEON vectorized instructions:<br />
* use gcc with -ftree-vectorize (possibly modify source code to make it vector friendly)<br />
* use NEON instrinsics (#include <arm_neon.h>, float32x2_t datatype and vmul_f32() etc)<br />
* use NEON asm directly<br />
<br />
Keep in mind that mixing NEON and ARM load/stores can sometimes stall significantly. See [http://hardwarebug.org/2008/12/31/arm-neon-memory-hazards/ this link] for more info.<br />
<br />
On Cortex-A9, there is a much higher performance floating point unit which can sustain 1 cycle/instr throughput, with low result latencies.<br />
<br />
=Board recovery=<br />
<br />
If you played e.g. with the contents of the [http://www.sakoman.net/omap3/flash%20procedure.txt NAND], it might happen that the Board doesn't boot any more (without pressing user button) due to broken NAND content. See [[BeagleBoardRecovery|BeagleBoard recovery]] article how to fix this.<br />
<br />
=Development environments=<br />
<br />
Instead of just using compiler + editor, you can use complete image create "development tool chains" which integrate compiler, build system, packaging tools etc. in one tool chain.<br />
<br />
==OpenEmbedded==<br />
<br />
For [http://www.openembedded.org/ OpenEmbedded] (OE), there are some hints how to [http://www.beagleboard.org/irclogs/index.php?date=2008-04-29#T13:06:25 start with OE for BeagleBoard]. See [[BeagleBoardAndOpenEmbeddedGit|BeagleBoard and OpenEmbedded Git]] and [http://wiki.openembedded.org/index.php/Getting_Started OpenEmbedded getting started] as well.<br />
<br />
In the OE getting started document, for BeagleBoard replace ''MACHINE = "om-gta01"'' by ''MACHINE = "beagleboard"''. After confirming ''bitbake nano'' works, try ''bitbake console-image''. The first time you run bitbake OE will download all the needed source and build the tool chain. This will take several hours. After all went fine, the output is in ''${OE_ROOT}/tmp/deploy/glibc/images/beagleboard''.<br />
<br />
Note: Koen has some BeagleBoard [http://amethyst.openembedded.net/~koen/index.php?path=beagleboard/ source and binary images] built with OE. There, ''Angstrom-console*'' images don't include an X server, you can still use a e.g. DVI-D screen with console, but you won't have a GUI. ''Angstrom-x11*'' images contain an X server.<!-- DEAD LINK: resulting in something like [http://scap.linuxtogo.org/files/fc987d4acb2c745fb7e19cf4dca8de70.png this].--><br />
<br />
===One very important note:=== <br />
<br />
It's important to have an X-Loader on your Beagleboard that uses the uImage on the SD Card that goes with Angstrom. The B6 Beagleboards do not appear to come with such an X-Loader. So you likely will have to upgrade the X-Loader. Here's what to do:<br />
* Make an SD Card with the [http://www.angstrom-distribution.org/demo/beagleboard Angstrom Demo files]. See the [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat Beagleboard Wiki Page] for more info on making the SD Card.<br />
* Put the SD Card in the Beagle, and boot up to the U-Boot Prompt.<br />
* Do the first six instructions in the [http://code.google.com/p/beagleboard/wiki/BeagleNANDFlashing Flashing Commands with U-Boot] section. <br />
* Reboot the Beagle to see that the new X-Loader is properly loaded.<br />
<br />
This will update the X-Loader to a newer version that will automatically load uImage from the SD Card when present -- rather than always using the uImage in the Beagleboard NAND.<br />
<br />
==Eclipse==<br />
The Eclipse [http://www.eclipse.org/cdt/ C Development Tools Project] provides a "fully functional C and C++ Integrated Development Environment (IDE) for the Eclipse platform". The Eclipse [http://www.eclipse.org/dsdp/tm/ DSDP Target Managment Project] provides a "Remote System Explorer" (RSE) plugin that simplifies downloading files to the BeagleBoard and editing files on the BeagleBoard within the Eclipse IDE. A Linux Target Agent is available as part of the [http://wiki.eclipse.org/DSDP/TM/TCF_FAQ Target Communications Framework (TCF) component]. Info on how RSE is used for e.g. Gumstix development is described in [http://groups.google.com/group/beagleboard/browse_thread/thread/509831f7c24cb79f# this post].<br />
<br />
==Android==<br />
[http://source.android.com Android] platform is a software stack for mobile devices including an operating system, middleware and key applications. Developers can create applications for the platform using the [http://code.google.com/android/ Android SDK]. Applications are written using the Java programming language and run on Dalvik, a custom virtual machine designed for embedded use which runs on top of a Linux kernel.<br />
<br />
There are several resources for Android on OMAP (Beagle) available:<br />
<br />
'''OMAPZOOM'''<br />
<br />
You can find Android port for OMAP ZOOM architecture on [https://omapzoom.org/gf/project/omapandroid/wiki/ OMAPZoom.org's wiki page on Android]. <br />
<br />
'''EMBINUX'''<br />
<br />
[http://beagleboard.org/project/android Beagleboard.org's Android project page] [http://groups.google.com/group/beagleboard/browse_thread/thread/7b422f113ce489b5 announced], the successful porting of Android on Beagle board by [http://embinux.com EMBINUX&trade;] Team. The [http://labs.embinux.org/git/ source code] and [http://www.embinux.com/download_beagle.php binaries] are available for download and review. <br />
<br />
Detailed instructions, for porting Android on Beagle Board, are available [http://labs.embinux.org/index.php/Main_Page here]. Current release supports input devices (keyboard/mouse), network and sound.<br />
<br />
You can [http://in.youtube.com/watch?v=nADn_vNVEKw watch Android booting] on Beagle Board.<br />
<br />
'''Android on OMAP wiki'''<br />
<br />
Wiki page for Andorid on OMAP can be found [[Android on OMAP|here]]<br />
<br />
'''0xdroid'''<br />
<br />
[http://gitorious.org/0xdroid 0xdroid], the enhanced version of Android on Beagleboard by [http://0xlab.org 0xlab]. The [http://gitorious.org/0xdroid source code], [http://downloads.0xlab.org/ pre-built binaries], and [http://code.google.com/p/0xdroid/issues/list issue tracker] are available for review and reference.<br />
<br />
The latest development supports OMAP audio, OMAP video overlays, ARM Cortex A8 NEON/Thumb2 performance optimizations, mouse cursor, hot-pluggable USB keyboard & mouse, user-friendly installer for system image, and various Android tweaks. Detailed instructions for 0xdroid are available through [http://gitorious.org/0xdroid/pages/Home gitorious wiki].<br />
<br />
You can [http://www.youtube.com/watch?v=v6wdTOHrwQw watch 0xdroid demo video] on Beagle Board.<br />
<br />
==Mamona==<br />
<br />
[http://dev.openbossa.org/trac/mamona/wiki Mamona] is an embedded Linux distribution for ARM EABI. The main goal of the Mamona Project is to offer a completely open source alternative/experimental platform for [http://maemo.org/ Maemo] using only free and open source components. Mamona [http://rsalveti.wordpress.com/2008/09/12/mamona-02-is-out 0.2] [http://franciscoalecrim.com/blog/2008/07/29/mamona-working-with-beagleboard/ supports] [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12013&contentId=28741 OMAP3430 Software Development Platform (SDP)], so you can also use it at Beagle (OMAP3530), too. Work is being done to officially support Beagle.<br />
<br />
==Ubuntu==<br />
<br />
See [[BeagleBoardUbuntu|Ubuntu (ARM)]] installation guide how to install Ubuntu (ARM) on BeagleBoard.<br />
<br />
==Debian ARM==<br />
<br />
See [[BeagleBoardDebian|Debian (ARM)]] installation guide how to install Debian (ARM) on BeagleBoard.<br />
<br />
==Handhelds Mojo ARM==<br />
<br />
See [[BeagleBoardHandheldsMojo|Handhelds Mojo (ARM)]] installation guide how to install Handhelds Mojo (ARM) port of Ubuntu on BeagleBoard. (The Mojo project is no longer active, see the Official Ubuntu ARM-port above instead)<br />
<br />
==Scratchbox==<br />
<br />
[http://www.scratchbox.org/ Scratchbox] is a cross-compilation toolkit designed to make embedded Linux application development easier. It also provides a full set of tools to integrate and cross-compile an entire Linux distribution. See [http://felipec.wordpress.com/2009/06/07/installing-scratchbox-1-and-2-for-arm-cross-compilation/ Felipe's Scratbox 1 and 2 intro], too.<br />
<br />
=Software hints=<br />
<br />
This section collects hints, tips & tricks for various software components running on beagle.<br />
<br />
==QEMU==<br />
<br />
[[Qemu|QEMU]] [http://vm-kernel.org/blog/2008/12/15/linux-is-running-on-qemu-omap3/ supports OMAP3] being able to boot a BeagleBoard Linux kernel.<br />
<br />
==Linux hints==<br />
<br />
See BeagleBoard [http://code.google.com/p/beagleboard/wiki/LinuxHints Google wiki Linux hints] page (for Linux WTBU (Wireless TI Business Unit) kernel [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode 2.6.22]). Currently featuring:<br />
<br />
* Switching video output between DVI-D and S-Video<br />
* Disabling framebuffer blanking<br />
* Listing USB devices<br />
<br />
==lmbench==<br />
<br />
Avik posted a detailed [http://groups.google.com/group/beagleboard/browse_thread/thread/c8b8f07ce61161a1 step-by-step procedure] to run [http://sourceforge.net/project/showfiles.php?group_id=14418 lmbench] on Beagle.<br />
<br />
==Mediaplayer (FFmpeg)==<br />
<br />
There is a thread how to get a [http://groups.google.com/group/beagleboard/browse_thread/thread/9b8025fc15120fd9# mediaplayer] with NEON optimization (FFmpeg) to run on Beagle. Includes compiler hints and patches.<br />
<br />
==Java==<br />
<br />
When using the [[BeagleBoard#OpenEmbedded|OpenEmbedded]]-based Angstrom image you have the following options of Java support:<br />
* JamVM + GNU Classpath (small vm, fast interpreter, J2SE-like)<br />
* Cacao + GNU Classpath (JIT compiler, J2SE-like)<br />
* PhoneME Advanced Foundation (JIT compiler, CDC)<br />
<br />
Java support in OpenEmbedded/Angstrom ([http://wiki.openembedded.net/index.php/Java details]) is provided voluntarily through [http://jalimo.org Jalimo].<br />
<br />
See a [http://groups.google.com/group/beagleboard/browse_thread/thread/102f627253919783# post at mailing list], too.<br />
<br />
OpenEmbedded users can add the [http://evolvis.org/scm/?group_id=11 Jalimo Subversion repository] as an overlay (instructions are in the repository). This will allow them to build OpenJDK packages. Inclusion of these recipes in mainline OpenEmbedded is planned but still ongoing.<br />
<br />
The recipes offer the following functionality:<br />
<br />
* OpenJDK + Hotspot (Zero port) (all J2SE functionality, including JVMTI, interpreted only)<br />
* OpenJDK + Cacaco (all J2SE library features, missing JVMTI, decent JIT compiler)<br />
* OpenJDK + Hotspot (Shark port) (not working yet)<br />
<br />
Some guy from ARM Ltd. is working on interpreter optimization in Zero for ARM.<br />
<br />
People interested in getting this stuff working better should contact people on:<br />
* [http://evolvis.org/mail/?group_id=11 Jalimo Mailinglist]<br />
* [http://mail.openjdk.java.net/mailman/listinfo/distro-pkg-dev Icedtea Mailinglist]<br />
<br />
You should also check out IcedTea's [http://iced-tea.org/wiki/FrequentlyAskedQuestions FAQ].<br />
<br />
=Graphics accelerator=<br />
<br />
OMAP3530 used on BeagleBoard contains a graphics accelerator (SGX) based on the SGX core from [http://www.imgtec.com/ Imagination Technologies]. [http://www.imgtec.com/powervr/powervr-graphics.asp PowerVR] SGX530 is a new generation of programmable PowerVR graphics and video IP cores. Only the kernel portions of Linux drivers will be open source. The PowerVR folks will provide binary user-space libraries. Using the EMail contact at [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12700&contentId=27458 TIs Mobile Gaming Developers page] there are Linux v2.6 OMAP3430 SDKs for OMAP3 Zoom and SDP supporting OpenGL ES v2.0, OpenGL ES v1.1 and OpenVG 1.0 available.<br />
<br />
Tutorial:<br />
* [http://code.google.com/p/beagleboard/wiki/HowtoUseSGXunderAngstrom How to use SGX with Angstrom in OE]<br />
<br />
Some videos:<br />
<br />
* [http://www.youtube.com/watch?v=3ToYOgP9f9U SGX on Beagle working with Linux 2.6.27]<br />
* [http://www.youtube.com/watch?v=24TXpqa9jG0&feature=related OpenGL ES 2.0 shader effects on OMAP3]<br />
* [http://www.youtube.com/watch?v=-UFUbqoNgs8&feature=related 3D User Interface on OMAP3 Platform]<br />
* [http://www.youtube.com/watch?v=8KcNgeUriqA 3D Mapping using OpenGL ES 2.0 on OMAP3 Platform]<br />
* [http://www.youtube.com/watch?v=7D3V6BUpGLE Video blending in hardware]<br />
* [http://www.hitlabnz.org/wiki/EmbeddedAR An Augmented Reality application combining ARToolkit and OpenGL ES 2.0]<br />
<br />
=Beginners guide=<br />
<br />
You just got your new BeagleBoard, and now? See [[BeagleBoardBeginners|beginners guides]].<br />
<br />
=FAQ=<br />
<br />
For BeagleBoard frequently asked questions (FAQ) see [[BeagleBoardFAQ|community FAQ]] and "official" [http://beagleboard.org/support/faq BeagleBoard.org FAQ].<br />
<br />
=Links=<br />
==Home page==<br />
[http://beagleboard.org/ beagleboard.org] (beagle board home)<br />
* Using [http://www.google.de/ Google] you can search beagleboard.org (including [http://www.beagleboard.org/irclogs/ IRC logs]) using ''site:beagleboard.org <search term>''<br />
<br />
==Manuals and resources==<br />
* [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard HW Reference Manual (rev. C2)]<br />
* [http://beagle.s3.amazonaws.com/BBSRM_7_2_0.pdf BeagleBoard HW Reference Manual (rev. B7)]<br />
* [http://www.beagleboard.org/uploads/BBSRM_6.pdf BeagleBoard HW Reference Manual (rev. B6)]<br />
* [http://www.beagleboard.org/uploads/BBSRM_B5.pdf BeagleBoard HW Reference Manual (rev. B5)]<br />
* [http://www.beagleboard.org/uploads/Beagle_HRM_B4.pdf BeagleBoard HW Reference Manual (rev. B4)]<br />
* [http://www.beagleboard.org/uploads/Beagle_HW_Reference_Manual_A_5.pdf BeagleBoard HW Reference Manual (rev. A5)]<br />
* [http://focus.ti.com/docs/prod/folders/print/omap3530.html OMAP3530] processor description and manuals<br />
* [http://code.google.com/p/beagleboard/ Beagle at code.google.com]<br />
* [http://focus.ti.com/dsp/docs/dspsupporttechdocs.tsp?sectionId=3&tabId=409&familyId=1526&documentCategoryId=4&techDoc=4 OMAP3530/25 CBB BSDL Model]<br />
* [http://www.micron.com/products/mcps/beagleboard Micron's multi chip packages (MCPs) for Beagle Board]<br />
* [http://beagleboard.org/resources Beagleboard resources page with hw docs]<br />
* Some [http://www.rasterman.com/ performance comparison] of BeagleBoard Rev. B with some other ARM/PC systems.<br />
* OMAP3 pinmux [http://www.hy-research.com/omap3_pinmux.html setup]<br />
* [http://elinux.org/BeagleBoardPinMux OMAP3 eLinux pinmux page]<br />
<br />
==Contact and communication==<br />
* [http://groups.google.com/group/beagleboard Beagle board discussion list]<br />
* [http://code.google.com/p/beagleboard/issues/list Beagle board open point list & issue tracker]<br />
* [http://beagleboard.blogspot.com/ Beagle board blog]<br />
* [http://feeds.feedburner.com/BeagleBoard Beagle board RSS feed]<br />
* Chat:<br />
** [http://beagleboard.org/chat Beagle Board chat]<br />
** IRC: #beagle channel on irc.freenode.net<br />
** [http://www.beagleboard.org/irclogs/index.php IRC archive]<br />
* [http://www.beaglesride.org/ Beagles Ride], a site about building a community around the BeagleBoard focused on in vehicle applications<br />
* [http://www.beagleboard.de/ German Beagle Board Forum and Wiki]<br />
<br />
==TI resources==<br />
* [http://opensource.ti.com/ TI open source page]<br />
* [https://community.ti.com/ TI E2E (Engineer-to-Engineer) Community]<br />
* [http://marc.info/?l=linux-omap&m=120761100810527&w=2 DSP Bridge driver for OMAP3 platform]<br />
* [http://lists.arm.linux.org.uk/lurker/message/20080701.142512.5eeff26b.en.html ARMv7 Oprofile support]<br />
* [http://focus.ti.com/pdfs/wtbu/swpu114g.pdf OMAP34xx Wireless Technical Reference Manual] (swpu114g.pdf, 47 MB)<br />
* [http://amethyst.openembedded.net/~koen/index.php?sort=date&order=desc&path=beagleboard/ Koen's (OpenEmbeded) BeagleBoard source and binaries]<br />
* [http://del.icio.us/tag/beagleboard+peripheral+verified Verified peripherals for BeagleBoard]<br />
* [http://www.celinux.org/elc08_presentations/TI_OMAP3430_Linux_PM_reference.ppt OMAP3430 Linux Power Management presentation]<br />
==Articles==<br />
* [http://linuxdevices.com/news/NS5852740920.html LinuxDevices article about Beagle]<br />
* [http://www.linuxdevices.com/news/NS8479495970.html LinuxDevices article about Digi-Key launch]<br />
* [http://www.linuxdevices.com/news/NS5682470737.html LinuxDevices article about Beagle Rev C, Beagle MID from HY Research, Touch Book and Sponsored Projects Contest]<br />
<br />
==Books==<br />
* [[OMAP_and_DaVinci_Software_for_Dummies|OMAP and DaVinci Software for Dummies]]<br />
==Past Beagle events==<br />
* TIDC, February 26-28, 2008: [http://www.beagleboard.org/uploads/tidc_opensource.pdf Slides from TI developer conference (TIDC) open source session], covering also beagle board<br />
* [http://www.lugradio.org/live/USA2008/ LUG RADIO Live USA 2008, April 12-13, 2008]: [http://www.beagleboard.org/uploads/lugradio_20080411.PPT TI/Beagle Presentation] and [http://forums.lugradio.org/viewtopic.php?f=4&t=4094&st=0&sk=t&sd=a&sid=d69cc807569ab41e33f93af698c536b8&start=15#p41549 video]<br />
* LinuxTag, May 28-31, 2008: [http://www.flickr.com/photos/jadon/2551439955/in/pool-beagleboard picture 1] and [http://www.flickr.com/photos/jadon/2535692865/in/pool-beagleboard picture 2]<br />
* [http://lugradio.org/live/UK2008/travel LugRadio Live UK 2008], July 19 - July 20, 2008: [http://www.flickr.com/photos/koenkooi/tags/lugradiolive/ Koen's pictures] showing e.g. [http://www.bigbuckbunny.org/index.php/download/ Big Buck BUNNY] playing at Beagle. [http://linuxoutlaws.com/podcast/48 Interview with Linux Outlaws (52:06)] and the [http://www.youtube.com/watch?v=m9xVbntl-DY video]<br />
* [http://osscamp.in/index.php/OSScamp_Bengaluru_Mobile_2008 OSScamp Bengaluru Mobile 2008], July 19, 2008<br />
* [http://www.linuxworldexpo.com LinuxWorld Conference & Expo], August 4 - August 7, 2008: [http://www.flickr.com/photos/jadon/sets/72157606586084668/ pictures with living beagle] and from [http://www.flickr.com/photos/linuxjournal/2738316951/in/set-72157606634486338/ Linux Journal's photostream]<br />
* BeagleBoard.org event at Jillian's during LinuxWorldExpo, August 5, 2008, 5:30-7:30 pm<br />
* [http://barcamp.pbwiki.com/BarCampHouston3 BarCamp Houston 3], August 9, 2008, 9:00 A.M.: [http://www.flickr.com/photos/jadon/sets/72157606656532041/ pictures]<br />
* NIT Suratkal, India [http://www.nitkieee.com/site/sp-connect2/schedule IEEE SP Connect 2], August 30, 20008<br />
* [http://barcampbangalore.org/wiki/BCB7_Demos BarCamp Bangalore], India, September 13, 2008<br />
* [http://www.ibc.org/ IBC 2008], September 11 - September 16, 2008: [http://www.flickr.com/photos/koenkooi/tags/ibc2008/ pictures]<br />
* Free Open "Embedded Linux" Training for Students in India, [http://code.google.com/p/beagleboard/wiki/Trainings?updated=Trainings&ts=1220250913 beagleboard.org Trainings in India], September 20, 2008: [http://www.youtube.com/watch?v=A6FLdmgQlb4&feature=PlayList&p=1BAB6EE9CC7285AD&index=0 video], [http://www.flickr.com/photos/25691331@N04/sets/72157607419766102/ photos] and [http://lakshmansrikanth.blogspot.com/2008/09/linux-embedded.html blog]<br />
* [http://www.embedded.co.uk/ Embedded Systems Show 2008], Birmingham, UK, October 1-2, 2008<br />
* [http://www.mvista.com/vision/ MontaVista Vision 2008 Embedded Linux Developers Conference], San Francisco, California, October 1-3, 2008 : [http://www.mvista.com/download/topic.php?t=18 Video and presentation overview], [http://www.mvista.com/download/fetchdoc.php?docid=323 William Mills' presentation], [http://www.mvista.com/download/fetchdoc.php?docid=333 Jason Kridner's presentation]<br />
* [http://www.rtcgroup.com/arm/2008/ ARM Developers' Conference], Santa Clara Convention Center, Santa Clara, Calif., USA, October 7-9, 2008<br />
* [http://www.cmp-egevents.com/web/escb Embedded Systems Conference Boston 2008], Hynes Convention Center, Boston, USA, October 26 - October 30, 2008: [http://beagleboard.org/demo/esc Resources]<br />
* [[BeagleBoard/contest|BeagleBoard contest]] #1: Create a cool BeagleBoard application and win a Rev C1! Closed, ran until January 9, 2009<br />
* [http://www.silica.com/events/seminars/seminar-overview/ti-omp-workshop.html OMAP35x training by Silica], January 21, 2009, Cambridge, UK, ARM Holdings Lecture Theatre. [[RichardB's notes from the seminar]]<br />
* [[BeagleBoard/contest|BeagleBoard contest #2]], unitl February 27, 2009: : Create a cool BeagleBoard application and win a Rev C2!<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/b15cf8a5797c73a2 Silica - Free TI - ARM OMAP Workshop], Brussels, Europe, March 31st 2009<br />
* SILICA's [http://www.silica.com/events/seminars/seminar-overview/ti-omap-piccolo-poing.html Texas Instruments 2-in-1 Seminar: OMAP & Piccolo], May 13th 2009: Poing (Munich) - Germany<br />
* 24th until 27th June 2009: [http://www.linuxtag.org/2009/en.html Linux Tag Germany] with [http://groups.google.com/group/beagleboard/msg/27fefef5f1d2ef73 TI booth] and [http://www.linuxtag.org/2009/en/program/freies-vortragsprogramm/all-events/details.html?talkid=183 Beagle presentation]<br />
* until 31st July 2009: [http://www.cranessoftware.com/services/training/beagledesigncontest.html BeagleBoard Design Contest INDIA Edition] ([http://beagleboard.blogspot.com/2009/04/beagleboard-design-contest-india.html blog entry])<br />
* TI Technology Day Dallas, Tex. on June 16 will held a [http://www.linuxdevices.com/news/NS5682470737.html BeagleBoard users group meeting] (see section ''Availability'').<br />
<br />
==Beagle wiki pages==<br />
* [[BeagleBoardBeginners|BeagleBoard beginners guides]]<br />
* [[BeagleBoardAndOpenEmbeddedGit|BeagleBoard and OpenEmbedded Git]] installation guide and [[BeagleBoardOpenEmbeddedDevelopment|OpenEmbedded development]]<br />
* [[BeagleBoardDebian|Debian on BeagleBoard]] usage guide<br />
* [[BeagleBoardHandheldsMojo|Handhelds Mojo (ARM) on BeagleBoard]] usage guide (formerly known as Ubuntu (ARM))<br />
* [[BeagleBoardUbuntu|Ubuntu (ARM EABI) distribution at BeagleBoard]]<br />
* [[BeagleBoardRecovery|BeagleBoard recovery]] about fixing boards not booting any more because of broken NAND content<br />
* [[BeagleBoardJTAG|BeagleBoard JTAG]] and [[OMAP3530_ICEPICK|OMAP3530_ICEPICK]] about JTAG on BeagleBoard<br />
* [[BeagleBoardOpenOCD|BeagleBoard OpenOCD]] has infos about status and usage of open source JTAG software OpenOCD with Beagle<br />
* [[BeagleBoardNAND|BeagleBoard NAND boot]] about how to boot BeagleBoard from NAND flash<br />
* [[BeagleBoardPeripherals|BeagleBoard peripherals and adapters page]] about useful BeagleBoard add ons.<br />
* [[Mount_BeagleBoard_Root_Filesystem_over_NFS_via_USB|Mount BeagleBoard root file system over NFS via USB]]<br />
* [[BeagleBoardFAQ|BeagleBoard FAQ]]<br />
* [[BeagleBoardSugar|Sugar on BeagleBoard]]<br />
* [[BeagleBoard/DSP_Howto|BeagleBoard DSP howto]]<br />
* [[BeagleBoardRawLCD|Interfacing BeagleBoard to Raw LCD]]<br />
* [[BeagleBoard/gst-openmax|BeagleBoard OpenMAX usage]]<br />
* [[BeagleBoard/video|BeagleBoard video]]<br />
* [[BeagleBoardOpenCV|Using OpenCV computer vision library with BeagleBoard]]<br />
* [[BeagleBoard/James|James]]: Just A Miniature Entertainment System<br />
* [[U-boot_musb_gadget_support|U-boot musb gadget support]]<br />
* [[BeagleBoard-JP|Japanese translation of this Beagle page]]<br />
* [[BeagleEPD|BeagleBoard E-Ink Platform Driver]]<br />
* [[BeagleBoardFedora|Random hacking notes for getting Fedora 10 to kinda work with the BeagleBoard]]<br />
* BeagleBoard specific [[BeagleBoard/GSoC|Google Summer of Code 2009]] page, [[BeagleBoard/Ideas-2009|GSoC project ideas]] and [[BeagleBoard/GSoC/Application|GSoc application]]<br />
* [[BeagleBoard/Poky|Poky]] for BeagleBoard<br />
* [[Xenarc_USB_touchscreen_for_Beagleboard/OMAP3_EVM|Xenarc USB touchscreen for Beagleboard/OMAP3 EVM]]<br />
* [[BeagleBoard/BugAdapter|BeagleBoard Bug Adapter board]]<br />
* [[BeagleBoardDebianWifiInstallInfo|BeagleBoard Debian WiFi install info]]<br />
* [[BeagleBoard/DSP_Clarification|Info about the various Linux DSP systems for OMAP chips]]<br />
* [[BeagleBoardPinMux|BeagleBoard PinMux]]<br />
* [[BeagleBoardLinuxKernel|BeagleBoard Linux kernel manual compile]]<br />
* [http://www.hervanta.com/stuff/Beaglebot Beaglebot]: build an experimental robotics project with Beagle<br />
* [http://code.google.com/p/beagleboard/w/list code.google.com BeagleBoard wiki]<br />
* '''[[BeagleBoard/contest|BeagleBoard contest]]'''<br />
* [http://en.wikipedia.org/wiki/Beagle_Board Wikipedia BeagleBoard page]<br />
* [http://labs.embinux.org/index.php/Android_Porting_Guide_to_Beagle_Board Android port for BeagleBoard]: Instructions for porting Android on BeagleBoard<br />
* [[BeagleBoard/bangalore_user_meet |BeagleBoard Bangalore User Meet]]<br />
* [[BeagleBoardEclipse|Using Eclipse with Beagle]] (for JTAG debugging)<br />
* [[Zoom2Beginners|Zoom2 for Beginners]]<br />
* [http://wh1t3s.com/2009/05/11/beagleboard-as-usb-mass-storage-device-via-usb-otg/ BeagleBoard as USB Mass Storage Device via USB OTG]<br />
* [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/index.htm BeagleBoard as solar powered computer]<br />
* [http://blog.makezine.com/archive/2009/02/blinking_leds_with_the_beagle_board.html Blinking LEDs with the Beagle Board] from Make:Online<br />
* [http://www.crashcourse.ca/wiki/index.php/BeagleBoard Robert's private Beagle wiki] (please don't add anything there, do it here. It will help to avoid scattering. Thanks!)<br />
* [http://felipec.wordpress.com/2009/03/26/omap3-public-dsp-binaries-now-work/ Felipe's blog] about D1 MPEG-4 decoding using less than 15% of CPU with help of DSP<br />
* [http://www.syspire.de/node/3 Embedded Mediacenter] based on BeagleBoard (German)<br />
* [http://pandorawiki.org/Floating_Point_Optimization Floating Point Optimization] with VFP-lite and NEON intro<br />
* [http://particolarmente-urgentissimo.blogspot.com/2009/09/beagleboard-setting-date-via-gps.html Beagleboard setting date via GPS]<br />
<br />
==Beagle photos==<br />
* [http://www.flickr.com/groups/beagleboard/pool/ Beagle board pictures at flickr]<br />
* [http://www.flickr.com/photos/32615155@N00/2439256116/ Beagle board and USRP]<br />
* [http://www.flickr.com/photos/nishanthmenon/2438406603/ Modify SDP3430 QUART cable for beagle]<br />
* [http://www.flickr.com/photos/koenkooi/2695061759/ MythTV on Beagle]<br />
==Beagle videos==<br />
* [http://uk.youtube.com/watch?v=fL_XMieanSc Beagle Board Beginnings]<br />
* [http://www.youtube.com/watch?v=cXr-D1wROfQ Beagleboard in the Living Room]<br />
* [http://uk.youtube.com/watch?v=FuVwh_VrIxk Beagle Board 3D, Angstrom, and Ubuntu]<br />
* [http://uk.youtube.com/watch?v=TUYOjRGYeYU testsprite with beagleboard]<br />
* [http://uk.youtube.com/watch?v=9Z4ZTovtFKk Beagleboard LED demo]<br />
* [http://uk.youtube.com/watch?v=R33dzREZGEk LCD2USB attached to a beagleboard]<br />
* [http://www.youtube.com/watch?v=7D3V6BUpGLE Video blending in hardware]<br />
* [http://www.youtube.com/watch?v=-tUBXD-KRp4 Beagle Running Angstrom (VGA) on DLP Pico Projector]<br />
* [http://www.youtube.com/watch?v=3ToYOgP9f9U SGX on Beagle working with Linux 2.6.27]<br />
* Not on Beagle OMAP3530: [http://youtube.com/watch?v=5i9cWOK1spw Ubuntu 7.04 on on OMAP3430 SDP]<br />
* [http://in.youtube.com/watch?v=nADn_vNVEKw Beagle Board booting Android]<br />
<br />
==Beagle manufacturing==<br />
* [http://www.youtube.com/watch?v=C-CwkjT9z_0&feature=related Beagle Solder Paste Screening]<br />
* [http://www.youtube.com/watch?v=9LLjDovIG2M&feature=related Beagle Assembly Inspection]<br />
* [http://www.youtube.com/watch?v=sbOZfBnoVnM&feature=related Beagle Functional Test]<br />
* [http://www.youtube.com/watch?v=cvDtXmJJcEI&feature=related Beagle Reflow]<br />
* [http://www.youtube.com/watch?v=W2o4NTASxN0&feature=related Beagle Board Assembly at Circuitco]<br />
==Fun==<br />
* Enjoy [http://www.beaglegame.com/ BeagleGame]<br />
<br />
=Other OMAP boards=<br />
<br />
* OMAP1 OMAP5912 (ARM9 + C5x DSP) based [[OSK|OSK]] board.<br />
* OMAP3 OMAP3430 based [https://gforge.ti.com/gf/project/omapzoom/wiki/?pagename=HardwareInformation Zoom MDK], which has been superseded by the [http://www.logicpd.com/products/development-kits/texas-instruments-zoom%E2%84%A2-omap34x-ii-mdp Zoom II], and other [http://www.logicpd.com/products LogicPD kits].<br />
* OMAP3 OMAP3530 based [http://www.openpandora.org/ Pandora]<br />
* OMAP3 OMAP3503 based [http://www.gumstix.net/Overo/cat/Overo/115.html Gumstix Overo]<br />
* OMAP3 OMAP35x based EVM from [http://mistralsolutions.com/products/omap_3evm.php Mistral] and [http://focus.ti.com/docs/toolsw/folders/print/tmdxevm3503.html TI] (both are the same)<br />
* OMAP3 OMAP3430 based [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12013&contentId=28741 Software Development Platform (SDP)]<br />
* OMAP3 OMAP3530 based board from [http://www.magniel.com/omap3.html Magniel Inc.]<br />
* OMAP3 based [http://www.archos.com/products/imt/index.html?country=us&lang=en Archos 5, ARCHOS 5G and ARCHOS 7]<br />
* OMAP3 OMAP35x based [http://www.logicpd.com/products/som/ti/omap35x OMAP35x SOM-LV]<br />
* OMAP3 based [[Mini_Board|ICETEK-OMAP3530-Mini]], a Chinese BeagleBoard clone, with a [[MiniBoardFAQ|FAQ]]<br />
* OMAP3 based [http://www.ebv.com/en/products/categories/details/product/ebvbeagle-board EBVBeagle], a German BeagleBoard clone<br />
* OMAP3530 based [http://www.bsquare.com/products/hardware_solutions/3530.asp BSQUARE’s Dev Kit OMAP3530]<br />
* OMAP3530 based [http://beaversource.oregonstate.edu/projects/cspfl/wiki/CSPFL_Hardware OSWALD]<br />
* OMAP3 BeagleBoard-based [http://www.alwaysinnovating.com/touchbook/ Touch Book]<br />
* OMAP3530 based [http://www.analogue-micro.com/Cobra3530.html Cobra 3530 OMAP3530 module ]<br />
* OMAP3 based [http://www.kwikbyte.com/KBOC.html KwikByte 35XX System Module]<br />
* OMAP3530 based [[DevKit8000]], a Chinese BeagleBoard clone, slightly larger with additional peripherals (e.g. LCD/TSP, Ethernet and keyboard)<br />
* OMAP3530 based [http://www.igep-platform.com/ IGEPv2 Platform], a Spanish BeagleBoard clone, slightly larger, with additional peripherals like e.g. ethernet connector, wifi+bluetooth.<br />
* OMAP35x based [http://www.ultratronik.de/mmi-rechnerplattformen.html MMI4 from Ultratronik]<br />
* OMAP35x based [http://www.technexion.com/index.php/tao-3530 TAO-3530 from TechNexion]</div>Rpjdayhttps://elinux.org/index.php?title=BeagleBoard_Community&diff=14323BeagleBoard Community2009-10-20T22:25:04Z<p>Rpjday: Add where to salvage the IDC10 cable.</p>
<hr />
<div>[[Category: Linux]]<br />
[[Category: OMAP]]<br />
[[Category:Development Boards]]<br />
[[Category: BeagleBoard]]<br />
This page collects information about [http://www.ti.com/ TI's] [http://www.arm.com/ ARM] based [http://focus.ti.com/general/docs/gencontent.tsp?contentId=36915&amp;DCMP=OMAP_Feb27_2008&amp;HQS=Other+PR+omap3503pr OMAP3] [http://beagleboard.org Beagle Board].<br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:#ffffcc; align:right; "><br />
'''NEWS:''' [http://www.tincantools.com/product.php?productid=16147&cat=0&page=1&featured Zippy] Expansion boards for the [[BeagleBoard]] are now available!<br />
</div><br />
<br />
<br />
=Events=<br />
* Thursday, August 27th: [http://wiki.omap.com/index.php/ETechDays_Lightning_Talks ETechDays Lightning Talks]. 15 minute lightning talks via IRC, WebEx or Dial-In.<br />
* 22.- 23.08.2009, Sankt Augustin, Germany: [http://www.froscon.de/en/ FrOSCon 2009] ([http://groups.google.com/group/beagleboard/browse_thread/thread/6aee27a7d121f4f4# call for papers])<br />
* Each last Saturday of the month, next August 29, 2009: [[BeagleBoard/bangalore user meet|BeagleBoard Bangalore user meeting]] (Beagle Clinic India)<br />
* all over the world 2009: [http://www.ti.com/corp/docs/landing/techday09/index.shtml# TI Technology Days 2009]. <br />
* ongoing 2009: [[BeagleBoard/contest|Beagle Sponsored Project Program]] - add a cool project and get a free BeagleBoard to realize it!<br />
<br />
=Hardware=<br />
<br />
The Beagle Board is ''a low-cost, fan-less single-board computer based on TI's OMAP3 device family, with all of the expandability of today's desktop machines, but without the bulk, expense, or noise'' (from [http://beagleboard.org/ beagleboard.org]). It uses a TI [http://focus.ti.com/docs/prod/folders/print/omap3530.html OMAP3530] processor (ARM Cortex-A8 superscalar core ~600MHz paired with a TMS320C64x+ DSP ~430MHz and an Imagination SGX 2D/3D graphics processor). See [http://focus.ti.com/docs/prod/folders/print/omap3530.html#features OMAP3530 features] for more processor features. [[BeagleBoard#Availability|Price is USD 149]]. The design goal was to make it as simple and cheap as possible, e.g. not having a LCD added, but letting you connect all add-ons available as cheap external components. See [http://beagleboard.org/brief What is Beagle?] and [http://linuxdevices.com/news/NS5852740920.html LinuxDevices article] for more details.<br />
<br />
The videos [http://uk.youtube.com/watch?v=fL_XMieanSc Beagle Board Beginnings] and [http://uk.youtube.com/watch?v=FuVwh_VrIxk Beagle Board 3D, Angstrom, and Ubuntu] give you a good intro about what BeagleBoard is about and it's capabilities.<br />
<br />
==Components==<br />
<br />
{|border=0<br />
!Top view of rev B:<br />
!Top view of rev C:<br />
|-<br />
|[[Image:Bb revb top numbered.jpg]]<br />
|[[Image:Bb revc top numbered.jpg]]<br />
|-<br />
|}<br />
{|border=1<br />
!No.<br />
!Name<br />
!Comment<br />
|-<br />
|'''1'''<br />
|[http://www.ti.com/omap35x OMAP3530] processor + 256MB NAND<br />
<br />
+ 128MB DDR (rev B)<br />
<br />
+ 256MB DDR (rev C)<br />
|PoP: Package-On-Package implementation for Memory Stacking<br />
[http://www.micron.com/products/partdetail?part=MT29C2G24MAKLAJG-6%20IT 256MB NAND/128MB Mobile DDR SDRAM] available from [http://www.digikey.com/scripts/US/DKSUS.dll?Detail?name=557-1435-ND DigiKey]<br />
<br />
([http://www.micron.com/products/partdetail?part=MT29C4G48MAPLCJI-6%20IT 512MB NAND/256MB Mobile DDR SDRAM] available from [http://www.digikey.com/scripts/US/DKSUS.dll?Detail?name=557-1436-ND DigiKey])<br />
<br />
[http://www.micron.com/products/mcps/beagleboard Micron's multi chip packages (MCPs) for Beagle Board]<br />
|-<br />
|'''2'''<br />
|[http://focus.ti.com/docs/prod/folders/print/tfp410.html DVI chip (TFP410)]<br />
|<br />
|-<br />
|'''3'''<br />
|[[BeagleBoard#DVI|DVI-D]]<br />
|Connection via HDMI connector<br />
|-<br />
|'''4'''<br />
|[[BeagleBoard#JTAG|14-pin JTAG]]<br />
|1.8V only!<br />
|-<br />
|'''5'''<br />
|Expansion connector: I2C, I2S, SPI, MMC/SD<br />
|User must solder desired header into place<br />
|-<br />
|'''6'''<br />
|[[BeagleBoard#User_button|User button]] <br />
|Allows setting boot order.<br />
|-<br />
|'''7'''<br />
| Reset button<br />
|<br />
|-<br />
| '''8'''<br />
|[[BeagleBoard#EHCI|USB 2.0 EHCI HS]]<br />
|Rev A and B: not working, unpopulated<br />
<br />
Rev C: populated and working<br />
|-<br />
|'''9'''<br />
|SD/MMC+<br />
| SDHC cards are supported<br />
|-<br />
|'''10'''<br />
|[[BeagleBoard#RS232|RS-232 serial]]<br />
|<br />
|-<br />
|'''11'''<br />
|Alternate power <br />
|normally powered by USB (unmounted on REV Ax boards, see [[BeagleBoard#Errata|errata]])<br />
|-<br />
|'''12'''<br />
|[[BeagleBoard#OTG|USB 2.0 HS OTG]] <br />
|Mini-AB connector. Board can be powered from port. <br />
|-<br />
|'''13'''<br />
|Stereo In<br />
|<br />
|-<br />
|'''14'''<br />
|Stereo Out<br />
|<br />
|-<br />
|'''15'''<br />
|S-Video<br />
|<br />
|-<br />
|'''16'''<br />
|TWL4030 (Rev A thru C2 inc.)<br />
[http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] (Rev C3 onwards)<br />
|Audio CODEC, USB port, power-on reset and power management. The TWL4030 is pin-compatible with the [http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] chip and was used due to the very limited availability of the TPS65950 in early board revisions.<br />
|-<br />
|'''17'''<br />
|LCD<br />
|only rev C<br />
|-<br />
|'''18'''<br />
|USB power<br />
|<br />
|-<br />
|'''19'''<br />
|Host PHY<br />
|<br />
|-<br />
|'''20'''<br />
|32kHz<br />
|<br />
|-<br />
|'''21'''<br />
|12MHz<br />
|<br />
|-<br />
|'''22'''<br />
|RS232 XVCR<br />
|<br />
|-<br />
|'''23'''<br />
|PWR SW<br />
|<br />
|-<br />
|'''24'''<br />
|VBAT<br />
|<br />
|-<br />
|}<br />
<br />
* Board size: 3" x 3" (about 76.2 x 76.2 mm)<br />
* Weight: [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/beagleboard.png ~37g]<br />
* Currently 6 layer PCB; target: 4 layer<br />
<br />
'''Bottom of rev B:'''<br />
<br />
[[Image:Beagle_bottom.jpg]]<br />
<br />
See [http://www.flickr.com/photos/jadon/sets/72157606050144396/ jadonk's photostream] for some more detailed BeagleBoard pictures.<br />
<br />
==Manual==<br />
<br />
See [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard System Reference Manual (rev. C3.0)].<br />
<br />
==Schematic==<br />
<br />
Schematic of BeagleBoard Rev. C3 is available as part of [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard HW Reference Manual (rev. C3.2)]. Rev C3 and previous are also available from [http://beagleboard.org/hardware/design BeagleBoard.org design page] including in PDF format. Please make sure that you ''read, understand and agree'' [http://groups.google.com/group/beagleboard/msg/ee3e1bc927551ffc Jason's mail] before using this.<br />
<br />
==Layout== <br />
<br />
Layout of BeagleBoard Rev. C3 is available as part of [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard HW Reference Manual (rev. C3.2)]. Rev C3 and previous layouts are also available from the [http://beagleboard.org/hardware/design BeagleBoard.org design page]. Please make sure that you ''read, understand and agree'' [http://groups.google.com/group/beagleboard/msg/ee3e1bc927551ffc Jason's mail] before using this.<br />
<br />
==Errata==<br />
<br />
# ''Boards revision A only'': The DC power jack pinout is incorrect on the PCB layout. DC_5V and GND are switched on PCB layout. Normally, the power jack has DC_5V on the center pin and GND on the sleeve (see Figure 20 of [http://www.beagleboard.org/uploads/BBSRM_6.pdf Beagle HW manual]). But on revision Ax boards the PCB layout has GND on center and DC_5V on sleeve. For this reason it is currently removed. It will be back on the Rev B board. Workaround is to remove wire connecting the two power pins on revision Ax boards and use external [http://amethyst.openembedded.net/~koen/beagleboard/beagle-power-pads.jpg power supply with switched connector] (do not connect anything to the “?” terminal. USB power will be permanently disabled and the board can only be powered from the 5V.) See [http://www.flickr.com/photos/koenkooi/2512038988/ Koen's Beagleboard powermod picture] with short descriptions, too.<br />
# ''Boards revision < A5 only'': There is excess voltage drop across R6 which is used to measure the current consumption on the board. This needs to be a .1 ohm instead of a 1 ohm resistor (SMD 0805). All revision A5 boards have been updated to .1. You can also just solder in a jumper to J2 bypassing the current read point. This issue can cause issues with the USB host port as the voltage supplied to that port can be too low.<br />
# ''Boards revision A only'': User LEDs 0 and 1 are shorted on the layout preventing them from being controlled individually. You need to control both GPIO_149 and GPIO_150 to turn on or off both LEDs. This is fixed in the Rev B boards.<br />
# ''Boards revision < A5 only'': There is an issue where on some boards the 1.8V has excessive noise on it. This is the result of two incorrect parts L1 and L3 being installed on the board. The inductors that were initially installed in the switchers are 100uH and need to be 1uH. This change will require that the board be returned for update. To check for correct parts, have a look to bottom of BeagleBoard. L1 - L3 are the larger parts there. They all have to be labeled with "102" (== 1uH). If any of these three inductors are labeled with "104" (== 100uH) they are wrong and have to be exchanged.<br />
# ''Boards revision A and B'': USB HOST (EHCI) failures. See [http://code.google.com/p/beagleboard/issues/detail?id=15 issue 15] and [http://code.google.com/p/beagleboard/wiki/USBHostTestREPRODUCE USB host test reproduce]. This is a hardware defect. [http://www.beagleboard.org/irclogs/index.php?date=2008-05-29#T00:27:06 Most probably] Rev. B board does not have the EHCI USB connector mounted. Workaround: Use [[BeagleBoard#OTG|OTG port]] with something like [http://trisoft.de/pics/ZHost.JPG mini A to USB A adapter] instead.<br />
# ''Boards revision A and < B4'': Plugging in a USB OTG cable will prevent Beagle from booting (with git kernel), see [http://code.google.com/p/beagleboard/issues/detail?id=19 issue #19], too. This is due to missing filtering capacitor at USB OTG VBUS. When the kernel driver detects that a USB OTG cable is inserted it enables the charge pump to generate VBUS. With no filtering VBUS looks like any switching regulator output with no filtering -- a huge voltage spike when the switch is on, followed by a rapid decay to a low voltage until the next switch on period. The capacitor is there to store energy between the output switch ON and OFF time, the feedback loop in the regulator does sample the cap voltage. Fix is to piggy-back solder a 0603 2.2uF ceramic capacitor to D3, see [http://www.sakoman.net/omap3/beagle/vbus-mod-d3.jpg VBUS modification D3 picture]. Revision B4 boards and newer have this fix applied. Thanks to [http://groups.google.com/group/beagleboard/msg/eb789e15c99a673d Steve] for debugging this!<br />
# ''Boards revision A and < B5'': There is some issue with 32kHz clock depending on system configuration used to clock some OMAP3 peripherals. From this e.g. GPIOs, GPTIMERs, and USB on Beagle might be affected. See [http://code.google.com/p/beagleboard/issues/detail?id=22 Issue 22]. Symptom from this is that after booting Linux kernel serial console hangs after some time and no serial input/output is possible any more. There is one software workaround and one hardware fix for this: (A) Software workaround: Don't use 32kHz timer to clock Linux, instead use MPU timer. (B) Hardware workaround: Remove [http://www.flickr.com/photos/25691331@N04/2766671437/in/pool-beagleboard capacitor C70], which improves the 32kHz clock quality and avoids hang-up. Note: Revision A boards have capacitor C70 [http://www.flickr.com/photos/25691331@N04/2766671437/in/pool-beagleboard at the same location] as rev. B boards. Note: Board revision >= B5 removes capacitor C70.<br />
# ''Random boards, quite rare, revision < B6'': Some random boards and quite rare, show directly after purchasing broken serial communication from host PC to BeagleBoard. Symptom is that you get a new board, get serial output from BeagleBoard in terminal program, but can't type anything at U-Boot prompt (Note: Don't mix this with errata #7. With errata #7 you are able to use U-Boot normally, but Linux prompt input stops after some time). Most users don't have this issue, though. So, first double check your serial configuration ([[BeagleBoardFAQ#Serial_connection_.231|FAQ1]], [[BeagleBoardFAQ#Serial_connection_.232|FAQ2]] and [[BeagleBoardFAQ#Serial_connection_.233|FAQ3]]). Only if you are really, really sure that anything with your serial connection is fine, consider sending the board back doing a [http://beagleboard.org/support/rma RMA request]. This issue was resolved on revision B6 and later boards.<br />
<br />
For additional (software) issues and enhancement requests see [http://code.google.com/p/beagleboard/issues/list Beagle board open point list & issue tracker], too.<br />
<br />
Note: BeagleBoard revision B6 uses different package for U9/U11.<br />
<br />
==Clocking==<br />
<br />
Some [http://www.beagleboard.org/irclogs/index.php?date=2008-07-08#T21:12:23 notes] about (ARM processor) clock rates at BeagleBoard:<br />
<br />
* ARM Cortex-A8 processor is currently clocked at 500MHz<br />
* 500MHz is the default used because it is a balance of performance and longevity<br />
* For OMAP35x 600MHz is max recommended<br />
* At 600MHz OMAP35x is considered to be 'overdrive' and it does not have the same life expectancy<br />
* Higher than 600MHz is out of spec and no guarantee it will work at all (or not damage itself)<br />
* Also keep in mind that if you go higher you probably want to increase the core voltage. Some of this is mentioned in table 3-3 of the [http://focus.ti.com/lit/ds/symlink/omap3530.pdf OMAP3530 data sheet]. Some numbers:<br />
<br />
{| border="1"<br />
||'''ARM'''||'''DSP'''||'''core voltage'''<br />
|-<br />
|600 MHz||430 MHz||1.35V<br />
|-<br />
|550 MHz||400 MHz||1.27V<br />
|-<br />
|500 MHz||360 MHz||1.2V<br />
|}<br />
<br />
* For some OMAP3 clock, voltage and power management discussion see [http://focus.ti.com/lit/an/sprt495/sprt495.pdf OMAP3 power management white paper], too.<br />
* The OMAP3 chip on the Beagle lacks the efuses needed for using the SmartReflex technology, see [http://www.beagleboard.org/irclogs/index.php?date=2009-02-26#T10:44:24].<br />
* There is a thermal monitor in the core, you could use to scale frequency up and down<br />
<br />
To set CPU clock to 600 MHz, there are two options. Both '''do not''' adjust the voltage, so the system may become unstable:<br />
<br />
* The u-boot command "mw 48004940 0012580c" will temporarily set the CPU clock to 600 MHz (not permanent over reset).<br />
* To permanently set the CPU clock to 600 MHz, include the above command in the "bootcmd" variable or equivalent script.<br />
<br />
==Power management==<br />
<br />
* Latest Linux kernel power management development for TI OMAP SoCs is maintained in [http://git.kernel.org/?p=linux/kernel/git/khilman/linux-omap-pm.git;a=summary Kevin's linux-omap-pm git tree]<br />
* Russ' Beagle HW modifications resulted in [http://groups.google.com/group/beagleboard/browse_thread/thread/197a8ef6b46cc828 8mW sleep for Beagle Board]<br />
<br />
Without PM kernel, the Beagle [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/index.htm consumes ~1.5 watts idle, however it also uses the same amount under load] (see bottom of that page).<br />
<br />
==DLP Pico projector==<br />
<br />
Texas Instruments is developing a Pico Video Projector Kit (PVPK) as a peripheral for the Beagle Board. The stand alone pico projector will support VGA resolution (640 x 480), RGB 888 input through a DVI interface. The physical connector on the projector will be HDMI. See [http://groups.google.com/group/beagleboard/msg/10e218972380ee48 mailing list] and [http://www.youtube.com/watch?v=-tUBXD-KRp4 Beagle Running Angstrom (VGA) on DLP Pico Projector] for more details.<br />
<br />
It is available from [http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=296-23836-ND DigiKey] for $349.<br />
<br />
See [http://blog.makezine.com/archive/2009/01/tis_beagleboard_and_dlp_pico_projector.html?CMP=OTC-0D6B48984890 article from Make], too.<br />
<br />
DigiKey videos [http://www.youtube.com/watch?v=KBbCdnOj5vg part 1], [http://www.youtube.com/watch?v=zymOmduNWyI part 2] and [http://www.youtube.com/watch?v=Uj19Bi5NYeU part 3].<br />
<br />
==Interfacing to Raw LCD Panels==<br />
<br />
Currently on Rev A / B boards there is no direct access to the LCD lines before they enter the DVI framer. The REV C2 provides access to these lines. Several projects to interface an LCD to the beagleboard exist:<br />
<br />
* [[BeagleBoardRawLCD|interfacing to Raw LCD Panels]] article <br />
* [http://digitalsurveyinstruments.com/beagleperiphials/hdmi2parallel/doc/index.htm hdmi to parallel] workaround method<br />
* [http://www.harbaum.org/till/dvi2par/index.shtml dvi2par cheap diy HDMI to parallel converter]<br />
<br />
=Availability=<br />
<br />
BeagleBoards, currently Rev. C3 boards, are available from<br />
<br />
* [http://www.mouser.com/beagleboard Mouser]<br />
* [http://dkc1.digikey.com/us/mkt/beagleboard.html Digi-Key] with part number [http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=296-23428-ND 296-23428-ND].<br />
<br />
Note: For non-US Digi-Key free shipping orders:<br />
<br />
* Click the US flag on the top right corner of [http://dkc1.digikey.com/us/mkt/beagleboard.html Digi-Key] BeagleBoard page to come to the international page<br />
* Select ''Order Online'' for your country<br />
* Add quantity ''1'' and part number ''296-23428-ND''<br />
* Click ''Add to order''<br />
<br />
When ordering over 65 EUR / GBP 50 product (BeagleBoard is above), for Europe the price depends on the actual dollar to EUR/GBP rate. On nov 9, 2008 the price was EUR 124 with free shipping.<br />
<br />
Note: Some users report that they got some questions from DigiKey to be answered before board shipping is done.<br />
<br />
Note: While you get free shipping, most probably you have to pay tax e.g. ordering from Europe. Users report that they had to pay EUR ~34 - 44 VAT + importing taxes (depending on european country), resulting in EUR 137 - 147 ordering from Europe.<br />
<br />
Note: For European users, [http://www.ebv.com/fileadmin/products/Press_Print/Campaigns/2009/Product_Campaigns/Texas_Beagle_Board_englisch.pdf EBV Elektronik] sells its own blue version of the board for 179 EUR, which includes all useful accessories (DVI cable, serial cable, USB 2.0 Ethernet, USB hub, 2 GB MMC, power supply, Linux BSP).<br />
<br />
Note: German (Europe) users can order through German shops, too. For higher price, though. <br />
* [http://shop.embedded-projects.net/product_info.php/info/p159_BeagleBoard--OMAP-3-.html Embedded Projects Shop] sells BeagleBoard for EUR 199.00 + shipping.<br />
* [http://www.handheld-linux.com/wiki.php?page=Beagle%20Board Handheld-Linux]<br />
<br />
See below for ''hardware'' differences of the revisions. There are no ''software'' differences. <br />
<br />
==Revision A==<br />
<br />
There are some limited early revision Ax prototypes out there used by some hackers hanging around at #beagle channel on irc.freenode.net. See [[BeagleBoard#Errata|errata]] for limitations.<br />
<br />
==Revision B==<br />
<br />
Revision B is same as revision A, except<br />
* fix for shorted LEDs 0/1<br />
* fix for wrong power jack pinout<br />
* revision B6 uses different package for U9/U11<br />
Still has USB HOST (EHCI) failures. USB HOST (EHCI) connector isn't mounted.<br />
<br />
There are 4 revisions of the B board in the field: B4, B5, B6 and B7.<br />
<br />
The most notable difference is the use of the ES3.0 silicon in B6 and B7, other changes are not relevant to software developers.<br />
<br />
==Revision C2==<br />
Revision C2 is same as revision B7 except:<br />
* USB HOST (EHCI) is operational on revision C2, with standard USB A female connector.<br />
* Add interface for raw LCDs ([http://groups.google.com/group/beagleboard/msg/2e82c3ed6061d9d2 mockup])<br />
* It uses updated OMAP3 revision. BeagleBoard revisions B4+B5 uses OMAP3 ES 2.1 (engineering sample), while BeagleBoard revision C2 uses ES 3.0. OMAP3 ES 3.0 fixes minor issues:<br />
** updated ARM Cortex A8 silicon (r1p3) fixing a very rare [http://elinux.org/BeagleBoardFAQ#NEON_performance NEON issue] that has not been seen in real code<br />
* Power measurement feature<br />
* Uses [http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] OMAP power controller instead of TWL4030<br />
* Three additional PWM signals on the expansion connector added as pin mux options to existing pins ([http://groups.google.com/group/beagleboard/browse_thread/thread/d5872b7c6d74592c?hl=en# message])<br />
* Revision detection (to be able to identify C2 board from older boards by software, e.g. for different pin mux)<br />
* 256MB RAM ([http://groups.google.com/group/beagleboard/msg/3a38d0f21cefd6b1?hl=en message]) (and still 256MB NAND like rev B)<br />
<br />
Note: Revision C2 is the first production version, and all orders from from Digi-Key are shipped as Rev C2.<br />
<br />
==Revision C3==<br />
As revision C2 boards are [http://groups.google.com/group/beagleboard/msg/e41d3c97aa7d4951 sold out], revision C3 will ship now.<br />
<br />
Revision C3 is same as revision C2 [http://groups.google.com/group/beagleboard/msg/037318fbc44139d5 except]:<br />
* Optional RTC [http://parts.digikey.com/1/parts/1454-battery-lith-coin-3v-12-5mm-vert-vl-1220-vcn.html VL1220 series] backup battery<br />
* Mounting holes conected to ground<br />
* Slightly improved S-Video<br />
<br />
==Clones==<br />
===EBVBeagle===<br />
EBV build and sell their own BeagleBoard called [http://www.ebv.com/en/products/categories/details/product/ebvbeagle-board EBVBeagle], see e.g. [http://fl0rian.wordpress.com/2009/03/08/the-other-beagleboard/].<br />
It is actually a BeagleBoard revision C2 with green PCB boxed with some useful accessories. It comes as a quite complete starter kit with AC adapter, USB to Ethernet adapter, MMC card, USB hub and some cables.<br />
More information in [http://www.ebv.com/en/press-print/news-pr/details/news//press-releas-54.html official press release].<br />
<br />
===Mini Board===<br />
[[Mini_Board|ICETEK-OMAP3530-Mini]] is a chinese BeagleBoard clone.<br />
<br />
===DevKit 8000===<br />
[[DevKit8000]] is a Chinese BeagleBoard clone, slightly larger with additional peripherals (e.g. LCD/TSP, Ethernet and keyboard).<br />
<br />
===IGEPv2===<br />
[http://www.igep-platform.com/ IGEPv2 Platform] is a Spanish BeagleBoard clone, slightly larger, with additional peripherals like e.g. ethernet connector, wifi+bluetooth.<br />
<br />
==BeagleBoard-based products==<br />
* [http://www.alwaysinnovating.com/touchbook/ Always Innovating Touch Book], see [http://gigglehd.com/zbxe/hdforum/files/attach/images/899852/493/987/001/always_innovating_touch_book_0011.jpg]<br />
<br />
==Beagle case==<br />
<br />
*[http://specialcomp.com/beagleboard/ Special Computing]<br />
*[http://groups.google.com/group/beagleboard/browse_thread/thread/1c82316019633e51 SketchUp 3D model]<br />
<br />
=Adapters=<br />
<br />
For quite detailed information about all BeagleBoard peripherals see [http://www.beagleboard.org/uploads/BBSRM_6.pdf BeagleBoard HW Reference Manual (rev. B6)].<br />
<br />
See [[BeagleBoardPeripherals| BeagleBoard peripherals and adapters page]] for useful add ons for Beagle Board.<br />
<br />
==Expansion boards==<br />
* [[BeagleBoard Zippy]] expansion board is now available from [http://www.tincantools.com/product.php?productid=16147&cat=0&page=1&featured TinCanTools] for $79.00. basic specs are:<br />
** Battery Backed RTC<br />
** Second MMC slot<br />
** 10BaseT Ethernet<br />
** Second RS-232<br />
** +5V level I2C<br />
** AT24 EEPROM<br />
* [http://www.hy-research.com/beagle_expansion.html HY Research] has some expansion board basics and example.<br />
* [http://www.hervanta.com/stuff/Beaglebot#Expansion_Board Beaglebot] uses a custom extension board.<br />
* [http://beagleboard.org/leopard Leopard Board], a Beagle buddy web camera<br />
* There is also a VGA DB15 adapter board under development for the Rev C2 board. It should be available through a yet to be annnounced outlet.<br />
<br />
==JTAG==<br />
<br />
Depending on your JTAG tool, you'd need a 14-pin to 20-pin adapter to use an ARM debugger. The 14-pin TI JTAG connector is used on BeagleBoard and is supported by a large number of JTAG emulation products.<br />
See [[BeagleBoardJTAG]] for more information.<br />
<br />
==RS232==<br />
<br />
The pinout on the beagle board is "AT/Everex" or "IDC10". You can buy [http://www.pccables.com/07120.htm IDC10 to DB9M adapters] in many places as they are commonly used for old PCs. You can also probably rip one of those cables out of any old desktop computer, where it's being used to support the serial port. Be careful, though -- some of those cables will have that tenth hole filled in so you'd have to snap off the extraneous pin on your BeagleBoard. Keep looking until you find a cable with all 10 holes open.<br />
<br />
Depending on your local configuration, you may need a [http://en.wikipedia.org/wiki/Null_modem 9-Pin NullModem] cable to connect BeagleBoard to serial port of your PC. From [http://www.tincantools.com/ TinCanTools] there is a [http://www.tincantools.com/product.php?productid=16144&cat=0&page=1&featured RS-232 DB-9 adapter] and [[media:flyswatter-ti-uart.pdf|adapter schematic]] available.<br />
<br />
==USB==<br />
There are two USB ports on the BeagleBoard, one with an EHCI controller and another with an OTG controller. As of Rev B4, the usb EHCI has been removed because of a hardware defect. Rev C will include USB EHCI working properly.<br />
<br />
===EHCI===<br />
The HS ([http://en.wikipedia.org/wiki/USB#USB_signalling HighSpeed]) USB [http://en.wikipedia.org/wiki/EHCI ECHI] controller on OMAP3 on BeagleBoard supports high-speed only. This simplifies the logic on the device. FS/LS (FullSpeed/LowSpeed) devices, such as keyboards and mice, require going through a high-speed USB 2.0 hub.<br />
<br />
According to the BeagleBoard System Reference Manual Rev C2, the EHCI port can source 5V at 500mA which is enough to power a hub and several low-power devices. However, this is only true if the BeagleBoard is powered through its power jack from a well-regulated 5V external power supply. If the BeagleBoard is powered through the OTG port, the EHCI port sources an "extremely limited" ampount of power (probably 100mA or so) so you'll need a "self-powered" USB 2.0 hub with its own external power supply. [Reference: Sections 5.6 and 7.2 of the BBSRM Rev C2.2.]<br />
<br />
===OTG===<br />
The HS USB OTG ([http://en.wikipedia.org/wiki/USB_On-The-Go OnTheGo]) controller on OMAP3 on the BeagleBoard does have support for all the USB 2.0 speeds (LS/FS/HS) and can act as either a host or a gadget/device. The HS USB OTG port is used as the default power input for the BeagleBoard. It is possible to boot the BeagleBoard using this USB port.<br />
<br />
When using the OTG port in host mode, you must power the BeagleBoard using the +5V power jack. If you connect a USB hub, you'll probably also need external power for the USB hub as well, because according to the Hardware Reference manual the BeagleBoard OTG port only sources 100 mA. This is enough to drive a single low-power device, but probably won't work with multiple devices.<br />
<br />
The Linux kernel needs to know you want to use the OTG port in host mode. I believe OTG ports are supposed to figure this out for themselves using the OTG Host Negotiation Protocol, but for now the Linux kernel may need some help. Specifically, Pin 4 (ID) of the OTG connector needs to be shorted to Pin 5 (GND) by using a [http://trisoft.de/pics/ZHost.JPG 5-pin USB Mini-A plug] which shorts these pins together in the plug. A [http://en.wikipedia.org/wiki/USB#USB_cables 5-pin USB Mini-B plug] leaves Pin 4 floating. Unfortunately, most USB Mini plugs are unmarked as to whether they are "A" or "B".<br />
<br />
You can find "mini A" adapters that have Pin 4 shorted and offer out a full-sized USB A Female jack [http://www.electronicproductonline.com/catalog/product_info.php?products_id=2043 here.]<br />
<table><br />
<tr><td><br />
Since the right cables might be hard to get, you simply can<br />
* short circuit the two pins encircled in red in the image to the right. You can do this by running a wire between the two pins. That at least allows easier undoing the change. Actually you could even have a small switch or so between 4 and 5.<br />
or<br />
* use a "mini B" cable (easier to get) and try the soldering of the two pins at the cable's connector. Depending on the cable it should be possible to open the plastic covering of mini-B port with a sharp-edged knife, then solder the two pins together, close the covering again and use some tape. This leaves the BeagleBoard unmodified.<br />
</td><td>[[Image:usb_otg.png]]</td></tr></table><br />
The Rev C BeagleBoard has a pair of pads labeled J6 on the back of the board under the OTG connector. Shorting these pads together with a wire or solder blob connects pins 4 and 5.<br />
See Figure 20 in the BeagleBoard System Reference Manual Rev C2.2.<br />
<br />
==DVI==<br />
<br />
DVI-D connection on BeagleBoard uses a [http://en.wikipedia.org/wiki/HDMI HDMI connector]:<br />
<br />
''HDMI is backward-compatible with the single-link Digital Visual Interface carrying digital video (DVI-D or DVI-I, but not DVI-A) used on modern computer monitors and graphics cards. This means that a DVI-D source can drive a HDMI monitor, or vice versa, by means of a suitable adapter or cable, but the audio and remote control features of HDMI will not be available.''<br />
<br />
BeagleBoard can be connected to a DVI monitor using HDMI female to DVI male cable.<br />
<br />
=BootRom=<br />
<br />
OMAP3 on BeagleBoard contains a BootRom. With this, BeagleBoard can boot without any code in permanent storage (NAND) or from peripherals. This is useful for first board bring up or if your BeagleBoard is bricked. For more information about BootRom booting see [http://www.ti.com/litv/pdf/sprufd6a SPRUFD6]. <br />
<br />
==User button==<br />
<br />
With user button on BeagleBoard you can configure boot order. Depending on this button, the order used to scan boot devices is changed. The boot order is (the first is the default boot source):<br />
<br />
* User button ''not'' pressed: NAND -> USB -> UART -> MMC<br />
* User button ''is'' pressed: USB -> UART -> MMC -> NAND<br />
<br />
Technically speaking, the user button configures pin SYS.BOOT[5]. See [http://focus-webapps.ti.com/general/docs/sitesearch/searchsite.tsp?selectedTopic=1653260327&numRecords=25&searchTerm=sprufd6&statusCode=null SPRUFD6] for more details.<br />
<br />
==Serial and USB boot==<br />
<br />
Historically, using OMAP3's boot ROM for serial and USB boot, there are several tools around. The newest are Nishanth' ''OMAP U-Boot Utils'', while there are still some older tools for serial boot and USB boot. It is also possible the access the [[u-boot environment variables in linux|u-boot env from linux]].<br />
<br />
===OMAP U-Boot Utils===<br />
<br />
Nishanth' [http://code.google.com/p/omap-u-boot-utils/ OMAP U-Boot Utils] provide<br />
<br />
* ''pserial'' - OMAP specific utility which downloads a file in response to ASIC ID over serial port.<br />
* ''pusb'' - OMAP specific utility which downloads a file in response to ASIC ID over USB connection.<br />
* ''ucmd'' - Send a command to U-Boot and wait till a specific match appears.<br />
* ''ukermit - Download a file from host without using kermit to U-Boot.<br />
<br />
See [http://nishanthmenon.blogspot.com/ Nishanth' blog] and [http://groups.google.com/group/beagleboard/browse_thread/thread/c5bfb1b8ed528b52# announce mail], too.<br />
<br />
===Serial boot===<br />
<br />
Besides Nishanth' ''OMAP U-Boot Utils'', to boot from USB or UART, you need a PC tool which talks with OMAP BootRom and speaks the correct protocol to download ARM target code to BeagleBoard. Currently there are two older (experimental) tools for UART boot:<br />
<br />
* [http://omapzoom.org/gf/project/omaptools/wiki PC Serial Boot perl script]<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/80ad3da0eb2aa555 Linux C utility] (not working yet with below target code)<br />
<br />
See [http://groups.google.com/group/beagleboard/browse_thread/thread/ae2c601ebe104a4 USB and serial download target code] for some example target code to be downloaded to OMAP3 on BeagleBoard.<br />
<br />
===USB boot===<br />
<br />
Besides Nishanth' ''OMAP U-Boot Utils'', for USB boot, there is currently one (experimental) tool to boot BeagleBoard over USB:<br />
<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/2b9e99886bb7a747 Linux C utility]<br />
<br />
See [http://groups.google.com/group/beagleboard/browse_thread/thread/ae2c601ebe104a4 USB and serial download target code] for some example target code to be downloaded to OMAP3 on BeagleBoard.<br />
<br />
See [[BeagleBoardRecovery#USB_recovery|USB recovery section]] how to use USB boot for board recovery.<br />
<br />
==NAND boot==<br />
<br />
See [[BeagleBoardNAND|NAND boot]] article.<br />
<br />
==MMC/SD boot==<br />
<br />
Currently, [http://code.google.com/p/beagleboard/wiki/BootingBeagleBoard boot the BeagleBoard with MMC/SD] is the only working way for first board bring up.<br />
<br />
===MMC/SD formatting===<br />
<br />
As described in above MMC/SD boot description, you have to ''create a bootable partition on MMC/SD Card''. This can be done using e.g. Windows or Linux tools.<br />
<br />
'''Windows'''<br />
<br />
See ''HP USB Disk Storage Format Tool 2.0.6'' description on [http://code.google.com/p/beagleboard/wiki/BootingBeagleBoard boot the BeagleBoard with MMC/SD] page.<br />
<br />
'''Linux'''<br />
<br />
Please see [http://wiki.omap.com/index.php?title=MMC_Boot_Format OMAP3 MMC Boot Format].<br />
<br />
===Dual partition card===<br />
<br />
You can [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat create a dual-partition card], booting from a FAT partition that can be read by the OMAP3 ROM bootloader and Windows, then utilizing an ext2 partition for the Linux root file system.<br />
<br />
To mount second ext2 partition as root file system (e.g. containing contents of [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode rd-ext2.bin]) use kernel boot arguments (e.g. in uboot using ''setenv bootargs''):<br />
<br />
console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootwait<br />
<br />
===U-Boot booting===<br />
<br />
If your MMC/SD card formatting is correct and you put [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode MLO, u-boot.bin and uImage] on the card you should get a u-boot prompt after booting beagle board. E.g. (output from terminal program with 115200 8N1):<br />
<br />
...40T.........XH.H.U�..Instruments X-Loader 1.41<br />
Starting on with MMC<br />
Reading boot sector<br />
<br />
717948 Bytes Read from MMC<br />
Starting OS Bootloader from MMC...<br />
<br />
U-Boot 1.1.4 (Apr 2 2008 - 13:42:13)<br />
<br />
OMAP3430-GP rev 2, CPU-OPP2 L3-133MHz<br />
TI 3430Beagle 2.0 Version + mDDR (Boot ONND)<br />
DRAM: 128 MB<br />
Flash: 0 kB<br />
NAND:256 MiB<br />
In: serial<br />
Out: serial<br />
Err: serial<br />
Audio Tone on Speakers ... complete<br />
OMAP3 beagleboard.org #<br />
<br />
Using this u-boot prompt, you now can start kernel uImage stored on MMC card manually:<br />
<br />
OMAP3 beagleboard.org # mmc init<br />
OMAP3 beagleboard.org # fatload mmc 0:1 0x80000000 uimage<br />
OMAP3 beagleboard.org # bootm<br />
<br />
If you like to make that happen every boot:<br />
<br />
OMAP3 beagleboard.org # set bootcmd 'mmc init ; fatload mmc 0:1 0x80000000 uimage ; bootm' ; saveenv<br />
<br />
=Code=<br />
<br />
Code and binaries for BeagleBoard are available at various places.<br />
<br />
==Binaries==<br />
<br />
BeagleBoard pre-built binaries and source code can be found at [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode Beagle source code] and [http://code.google.com/p/beagleboard/downloads/list downloads] page. These are the locations where "official" TI code is available. Please note that this code is mainly for reference and testing. More up to date binaries and code is available by community. Community took (parts) of TI reference code, improves and updates it. <br />
<br />
Actually, [http://www.angstrom-distribution.org/node/47 Koen's prebuilt Beagleboard demo images] are up to date binaries including e17 as window manager, the abiword word processor, the gnumeric spreadsheet application, a NEON accelerated mplayer and the popular NEON accelerated omapfbplay which gives you fullscreen 720p decoding. The [http://www.angstrom-distribution.org/demo/beagleboard www.angstrom-distribution.org/demo/beagleboard] directory should contain all the files you need:<br />
<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/u-boot.bin u-boot.bin]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/MLO MLO]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/uImage uImage]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/Angstrom-Beagleboard-demo-image-glibc-ipk-2009.X-test-20090104-beagleboard.rootfs.tar.bz2 rootfs]<br />
<br />
See the [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat beagle wiki] on how to setup your SD card to use all this goodness.<br />
<br />
==Source==<br />
<br />
Besides above binary and source images (TI's and communities one), for various parts of Beagle software stack there are community supported [http://git.or.cz/ git] repositories available. <br />
<br />
===X-Loader===<br />
<br />
Steve did some work to consolidate and update X-Loader from various sources and put it in a [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=x-load-omap3.git;a=summary X-Loader git repository]. Get it by<br />
<br />
git clone git://gitorious.org/x-load-omap3/mainline.git xloader<br />
cd xloader/<br />
<br />
Build:<br />
<br />
make distclean<br />
make omap3530beagle_config<br />
make<br />
<br />
Result will be a ~20k sized ''x-load.bin'' in main directory.<br />
<br />
===U-Boot===<br />
<br />
[http://www.denx.de/wiki/U-Boot/WebHome Mainline U-Boot] has good support for BeagleBoard. Get it by:<br />
<br />
git clone git://git.denx.de/u-boot.git u-boot-main<br />
cd u-boot-main<br />
git checkout --track -b omap3 origin/master<br />
<br />
Build (assuming Code Sourcery GCC 2007q3):<br />
<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- mrproper<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- omap3_beagle_config<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- <br />
<br />
Result will be a ~160k sized ''u-boot.bin'' in main directory.<br />
<br />
Note: Due to (patch and binary) size, BeagleBoard splash screen was removed from upstream version. If you want it back, use [http://groups.google.com/group/beagleboard/browse_thread/thread/3ad9b803a3418624 U-Boot v1 BeagleBoard splash screen patch].<br />
<br />
Note: For experimental U-Boot patches not ready for mainline yet, Steve's [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=u-boot-omap3.git;a=summary Beagle U-Boot git repository] is used to test them. Get it by:<br />
<br />
git clone git://gitorious.org/u-boot-omap3/mainline.git u-boot-omap3<br />
cd u-boot-omap3<br />
git checkout --track -b omap3-dev origin/omap3-dev<br />
<br />
===Linux kernel===<br />
<br />
[http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git;a=summary Git repository] of [http://muru.com/linux/omap/ OMAP Linux kernel] contains Beagle support. Get it by:<br />
<br />
git clone git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git linux-omap-2.6<br />
cd linux-omap-2.6<br />
<br />
Build:<br />
<br />
make distclean<br />
make omap3_beagle_defconfig<br />
make menuconfig # only needed if you want to change the default configuration<br />
make uImage<br />
<br />
The result will be a ''uImage'' in ''arch/arm/boot/'' directory.<br />
<br />
If you use the OE toolchain and want to build outside of the OE tree you should do<br />
ARCH=arm<br />
PATH=~/oe/tmp/cross/armv7a/bin:~/oe/tmp/staging/i686-linux/usr/bin:$PATH # add cross tools to your path<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- distclean<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- omap3_beagle_defconfig<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- menuconfig # only needed if you want to change the default configuration<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- uImage<br />
Note: the staging dir in the path is for mkimage. If you've build a kernel before with oe, the program should be there<br />
<br />
Note: If you are interested in kernel development have a look to [[BeagleBoardLinuxKernel|manually compiling BeagleBoard kernel]], too.<br />
<br />
===Experimental kernel patches and hacks===<br />
<br />
Some beagle developers maintain their own kernel experimental patches and hacks not ready for upstream:<br />
<br />
* [http://cgit.openembedded.net/cgit.cgi?url=openembedded/tree/packages/linux/linux-omap Koen's collection of kernels patches for OE] and the [http://cgit.openembedded.net/cgit.cgi?url=openembedded/tree/packages/linux/linux-omap_git.bb list of relevant patches]<br />
* [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=linux-omap-2.6.git;a=shortlog;h=refs/heads/test Steve's kernel tree], a clone of main OMAP git with additional patches, mainly beagle audio (ASOC) related.<br />
* [http://git.mansr.com/?p=linux-omap;a=summary Mans' kernel tree], a clone of main OMAP git with additional patches, mainly display & framebuffer related.<br />
* [http://www.bat.org/~tomba/linux-omap.html Tomi's kernel tree], a clone of main OMAP git with display sub-system patches, replacing the entire display driver with one that is the likely direction moving forward.<br />
<br />
=Compiler=<br />
<br />
TI OMAP3530 processor on BeagleBoard contains an ARM Cortex-A8 general purpose processor and a TMS320C64x+ DSP.<br />
<br />
==ARM==<br />
<br />
There is broad compiler support including gcc - please see [http://www.elinux.org/ARMCompilers ARM Compilers]<br />
<br />
==C64x+ DSP==<br />
<br />
A free C64x DSP compiler is available as [https://www-a.ti.com/downloads/sds_support/targetcontent/LinuxDspTools/download.html Linux hosted C6x Code Generation Tools] (TMS320C6000 C/C++ CODE GENERATION TOOLS 6.1.3 July 2008).<br />
<br />
Note: my.TI account required. You may create an account [https://my.ti.com here]<br />
<br />
Note: Old c6000 Linux compiler available on [ftp://ftp.ti.com/pub/cs/linux_cgt500.tar.gz TI FTP site]. Does NOT support c64x+ core in OMAP3 devices. Not recommended.<br />
<br />
You can also utilize the [http://focus.ti.com/dsp/docs/dspsupportaut.tsp?familyId=44&sectionId=3&tabId=416&toolTypeId=30 full-CCS free evaluation tools for 120 days], but they currently require purchase to upgrade to service release 9 to support full JTAG debugging with supported JTAG hardware.<br />
<br />
See [[BeagleBoard/DSP_Howto| BeagleBoard DSP howto]] for information about how to use the DSP.<br />
<br />
=Cortex A8 ARM features =<br />
<br />
ARM Cortex-A8 in OMAP3 is a high performance dual-issue applications processor which reaches a performance of 2.0 DMIPS/MHz (compared to ARM11 at 1.2 DMIPS/MHz). It is ARM v7 architecture, which is fully backwards compatible with application code for previous ARM processors.<br />
<br />
It includes a floating point unit (ARM VFPv3 architecture) and the ARM NEON SIMD instruction set.<br />
<br />
See [http://pandorawiki.org/Floating_Point_Optimization Floating Point Optimization] article for an intro into VFP-lite and NEON.<br />
<br />
===ARM NEON===<br />
<br />
NEON is a 64/128-bit wide SIMD vector extension for ARM, which has been architected to be an efficient C compiler target as well as being used from assembly language. It has 32x 64-bit registers (with a dual view as 16x 128-bit registers) which can hold the following datatypes:<br />
* 64-bit signed/unsigned<br />
* 32-bit signed/unsigned<br />
* 32-bit single precision floating point<br />
* 16-bit signed/unsigned<br />
* 8-bit signed/unsigned<br />
<br />
The key advantage of NEON is very high performance vector math processing, whilst being easy to program. It is the same thread of control as the ARM (but different instructions), and is supported by the same tools, debuggers and operating systems.<br />
<br />
The NEON instruction set is documented in ARM's [http://infocenter.arm.com/help/topic/com.arm.doc.dui0204i/DUI0204I_rvct_assembler_guide.pdf RealView Compilation Tools Assembler Guide].<br />
<br />
For NEON optimized libraries see [http://www.us.design-reuse.com/news/18429/aac-mp3-mpeg-4-h-264-fft-openmax-cortex-a8-neon-arm11-processors.html ARM Releases AAC, MP3, MPEG-4, H.264 and FFT OpenMAX DL Libraries, Highly Optimized for Cortex-A8/NEON and ARM11 Processors]. Note: Read the [http://www.arm.com/products/esd/openmax_v7libraries.html EULA].<br />
<br />
NEON is currently used by<br />
* ffmpeg - libavcodec used by mplayer, omapfbplay, and many other linux applications<br />
* libpixman - used by X.org and Mozilla & Webkit browsers to render text and graphics<br />
* Bluez - official Linux Bluetooth stack<br />
<br />
=== ARM Cortex Floating Point ===<br />
<br />
There are two types of instructions in the ARM v7 ISA that handle floating point:<br />
<br />
1) '''VFPv3''' Floating point instruction set (used for single/double precision scalar operations).<br />
These is used by gcc for C floating point operations on 'float' and 'double'<br />
<br />
2) '''NEON''' [http://www.arm.com/products/multimedia/neon/ NEON] vectorized single precision operations (2 values in a D-register, or 4 values in a Q-register)<br />
These can be use by gcc when -ftree-vectorize is enabled and -mfpu=neon is specified, and the code can be vectorized. In other cases the VFPv3 scalar ops will be used.<br />
<br />
ARM Cortex-A processors have separate floating point pipelines that handle these different instructions.<br />
<br />
On Cortex-A8, the designers' focus was on the NEON unit performance which can sustain 1 cycle/instr throughput (processing 2 single-precision values at once). The scalar VFPv3 FPU cannot achieve this level of performance (cycle timings are in the Cortex-A8 TRM download), but it is still a lot better than doing floating point using integer instructions.<br />
<br />
If you need the highest performance floating point on Cortex-A8, you need to use single precision and ensure the code uses the NEON vectorized instructions:<br />
* use gcc with -ftree-vectorize (possibly modify source code to make it vector friendly)<br />
* use NEON instrinsics (#include <arm_neon.h>, float32x2_t datatype and vmul_f32() etc)<br />
* use NEON asm directly<br />
<br />
Keep in mind that mixing NEON and ARM load/stores can sometimes stall significantly. See [http://hardwarebug.org/2008/12/31/arm-neon-memory-hazards/ this link] for more info.<br />
<br />
On Cortex-A9, there is a much higher performance floating point unit which can sustain 1 cycle/instr throughput, with low result latencies.<br />
<br />
=Board recovery=<br />
<br />
If you played e.g. with the contents of the [http://www.sakoman.net/omap3/flash%20procedure.txt NAND], it might happen that the Board doesn't boot any more (without pressing user button) due to broken NAND content. See [[BeagleBoardRecovery|BeagleBoard recovery]] article how to fix this.<br />
<br />
=Development environments=<br />
<br />
Instead of just using compiler + editor, you can use complete image create "development tool chains" which integrate compiler, build system, packaging tools etc. in one tool chain.<br />
<br />
==OpenEmbedded==<br />
<br />
For [http://www.openembedded.org/ OpenEmbedded] (OE), there are some hints how to [http://www.beagleboard.org/irclogs/index.php?date=2008-04-29#T13:06:25 start with OE for BeagleBoard]. See [[BeagleBoardAndOpenEmbeddedGit|BeagleBoard and OpenEmbedded Git]] and [http://wiki.openembedded.org/index.php/Getting_Started OpenEmbedded getting started] as well.<br />
<br />
In the OE getting started document, for BeagleBoard replace ''MACHINE = "om-gta01"'' by ''MACHINE = "beagleboard"''. After confirming ''bitbake nano'' works, try ''bitbake console-image''. The first time you run bitbake OE will download all the needed source and build the tool chain. This will take several hours. After all went fine, the output is in ''${OE_ROOT}/tmp/deploy/glibc/images/beagleboard''.<br />
<br />
Note: Koen has some BeagleBoard [http://amethyst.openembedded.net/~koen/index.php?path=beagleboard/ source and binary images] built with OE. There, ''Angstrom-console*'' images don't include an X server, you can still use a e.g. DVI-D screen with console, but you won't have a GUI. ''Angstrom-x11*'' images contain an X server.<!-- DEAD LINK: resulting in something like [http://scap.linuxtogo.org/files/fc987d4acb2c745fb7e19cf4dca8de70.png this].--><br />
<br />
===One very important note:=== <br />
<br />
It's important to have an X-Loader on your Beagleboard that uses the uImage on the SD Card that goes with Angstrom. The B6 Beagleboards do not appear to come with such an X-Loader. So you likely will have to upgrade the X-Loader. Here's what to do:<br />
* Make an SD Card with the [http://www.angstrom-distribution.org/demo/beagleboard Angstrom Demo files]. See the [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat Beagleboard Wiki Page] for more info on making the SD Card.<br />
* Put the SD Card in the Beagle, and boot up to the U-Boot Prompt.<br />
* Do the first six instructions in the [http://code.google.com/p/beagleboard/wiki/BeagleNANDFlashing Flashing Commands with U-Boot] section. <br />
* Reboot the Beagle to see that the new X-Loader is properly loaded.<br />
<br />
This will update the X-Loader to a newer version that will automatically load uImage from the SD Card when present -- rather than always using the uImage in the Beagleboard NAND.<br />
<br />
==Eclipse==<br />
The Eclipse [http://www.eclipse.org/cdt/ C Development Tools Project] provides a "fully functional C and C++ Integrated Development Environment (IDE) for the Eclipse platform". The Eclipse [http://www.eclipse.org/dsdp/tm/ DSDP Target Managment Project] provides a "Remote System Explorer" (RSE) plugin that simplifies downloading files to the BeagleBoard and editing files on the BeagleBoard within the Eclipse IDE. A Linux Target Agent is available as part of the [http://wiki.eclipse.org/DSDP/TM/TCF_FAQ Target Communications Framework (TCF) component]. Info on how RSE is used for e.g. Gumstix development is described in [http://groups.google.com/group/beagleboard/browse_thread/thread/509831f7c24cb79f# this post].<br />
<br />
==Android==<br />
[http://source.android.com Android] platform is a software stack for mobile devices including an operating system, middleware and key applications. Developers can create applications for the platform using the [http://code.google.com/android/ Android SDK]. Applications are written using the Java programming language and run on Dalvik, a custom virtual machine designed for embedded use which runs on top of a Linux kernel.<br />
<br />
There are several resources for Android on OMAP (Beagle) available:<br />
<br />
'''OMAPZOOM'''<br />
<br />
You can find Android port for OMAP ZOOM architecture on [https://omapzoom.org/gf/project/omapandroid/wiki/ OMAPZoom.org's wiki page on Android]. <br />
<br />
'''EMBINUX'''<br />
<br />
[http://beagleboard.org/project/android Beagleboard.org's Android project page] [http://groups.google.com/group/beagleboard/browse_thread/thread/7b422f113ce489b5 announced], the successful porting of Android on Beagle board by [http://embinux.com EMBINUX&trade;] Team. The [http://labs.embinux.org/git/ source code] and [http://www.embinux.com/download_beagle.php binaries] are available for download and review. <br />
<br />
Detailed instructions, for porting Android on Beagle Board, are available [http://labs.embinux.org/index.php/Main_Page here]. Current release supports input devices (keyboard/mouse), network and sound.<br />
<br />
You can [http://in.youtube.com/watch?v=nADn_vNVEKw watch Android booting] on Beagle Board.<br />
<br />
'''Android on OMAP wiki'''<br />
<br />
Wiki page for Andorid on OMAP can be found [[Android on OMAP|here]]<br />
<br />
'''0xdroid'''<br />
<br />
[http://gitorious.org/0xdroid 0xdroid], the enhanced version of Android on Beagleboard by [http://0xlab.org 0xlab]. The [http://gitorious.org/0xdroid source code], [http://downloads.0xlab.org/ pre-built binaries], and [http://code.google.com/p/0xdroid/issues/list issue tracker] are available for review and reference.<br />
<br />
The latest development supports OMAP audio, OMAP video overlays, ARM Cortex A8 NEON/Thumb2 performance optimizations, mouse cursor, hot-pluggable USB keyboard & mouse, user-friendly installer for system image, and various Android tweaks. Detailed instructions for 0xdroid are available through [http://gitorious.org/0xdroid/pages/Home gitorious wiki].<br />
<br />
You can [http://www.youtube.com/watch?v=v6wdTOHrwQw watch 0xdroid demo video] on Beagle Board.<br />
<br />
==Mamona==<br />
<br />
[http://dev.openbossa.org/trac/mamona/wiki Mamona] is an embedded Linux distribution for ARM EABI. The main goal of the Mamona Project is to offer a completely open source alternative/experimental platform for [http://maemo.org/ Maemo] using only free and open source components. Mamona [http://rsalveti.wordpress.com/2008/09/12/mamona-02-is-out 0.2] [http://franciscoalecrim.com/blog/2008/07/29/mamona-working-with-beagleboard/ supports] [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12013&contentId=28741 OMAP3430 Software Development Platform (SDP)], so you can also use it at Beagle (OMAP3530), too. Work is being done to officially support Beagle.<br />
<br />
==Ubuntu==<br />
<br />
See [[BeagleBoardUbuntu|Ubuntu (ARM)]] installation guide how to install Ubuntu (ARM) on BeagleBoard.<br />
<br />
==Debian ARM==<br />
<br />
See [[BeagleBoardDebian|Debian (ARM)]] installation guide how to install Debian (ARM) on BeagleBoard.<br />
<br />
==Handhelds Mojo ARM==<br />
<br />
See [[BeagleBoardHandheldsMojo|Handhelds Mojo (ARM)]] installation guide how to install Handhelds Mojo (ARM) port of Ubuntu on BeagleBoard. (The Mojo project is no longer active, see the Official Ubuntu ARM-port above instead)<br />
<br />
==Scratchbox==<br />
<br />
[http://www.scratchbox.org/ Scratchbox] is a cross-compilation toolkit designed to make embedded Linux application development easier. It also provides a full set of tools to integrate and cross-compile an entire Linux distribution. See [http://felipec.wordpress.com/2009/06/07/installing-scratchbox-1-and-2-for-arm-cross-compilation/ Felipe's Scratbox 1 and 2 intro], too.<br />
<br />
=Software hints=<br />
<br />
This section collects hints, tips & tricks for various software components running on beagle.<br />
<br />
==QEMU==<br />
<br />
[[Qemu|QEMU]] [http://vm-kernel.org/blog/2008/12/15/linux-is-running-on-qemu-omap3/ supports OMAP3] being able to boot a BeagleBoard Linux kernel.<br />
<br />
==Linux hints==<br />
<br />
See BeagleBoard [http://code.google.com/p/beagleboard/wiki/LinuxHints Google wiki Linux hints] page (for Linux WTBU (Wireless TI Business Unit) kernel [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode 2.6.22]). Currently featuring:<br />
<br />
* Switching video output between DVI-D and S-Video<br />
* Disabling framebuffer blanking<br />
* Listing USB devices<br />
<br />
==lmbench==<br />
<br />
Avik posted a detailed [http://groups.google.com/group/beagleboard/browse_thread/thread/c8b8f07ce61161a1 step-by-step procedure] to run [http://sourceforge.net/project/showfiles.php?group_id=14418 lmbench] on Beagle.<br />
<br />
==Mediaplayer (FFmpeg)==<br />
<br />
There is a thread how to get a [http://groups.google.com/group/beagleboard/browse_thread/thread/9b8025fc15120fd9# mediaplayer] with NEON optimization (FFmpeg) to run on Beagle. Includes compiler hints and patches.<br />
<br />
==Java==<br />
<br />
When using the [[BeagleBoard#OpenEmbedded|OpenEmbedded]]-based Angstrom image you have the following options of Java support:<br />
* JamVM + GNU Classpath (small vm, fast interpreter, J2SE-like)<br />
* Cacao + GNU Classpath (JIT compiler, J2SE-like)<br />
* PhoneME Advanced Foundation (JIT compiler, CDC)<br />
<br />
Java support in OpenEmbedded/Angstrom ([http://wiki.openembedded.net/index.php/Java details]) is provided voluntarily through [http://jalimo.org Jalimo].<br />
<br />
See a [http://groups.google.com/group/beagleboard/browse_thread/thread/102f627253919783# post at mailing list], too.<br />
<br />
OpenEmbedded users can add the [http://evolvis.org/scm/?group_id=11 Jalimo Subversion repository] as an overlay (instructions are in the repository). This will allow them to build OpenJDK packages. Inclusion of these recipes in mainline OpenEmbedded is planned but still ongoing.<br />
<br />
The recipes offer the following functionality:<br />
<br />
* OpenJDK + Hotspot (Zero port) (all J2SE functionality, including JVMTI, interpreted only)<br />
* OpenJDK + Cacaco (all J2SE library features, missing JVMTI, decent JIT compiler)<br />
* OpenJDK + Hotspot (Shark port) (not working yet)<br />
<br />
Some guy from ARM Ltd. is working on interpreter optimization in Zero for ARM.<br />
<br />
People interested in getting this stuff working better should contact people on:<br />
* [http://evolvis.org/mail/?group_id=11 Jalimo Mailinglist]<br />
* [http://mail.openjdk.java.net/mailman/listinfo/distro-pkg-dev Icedtea Mailinglist]<br />
<br />
You should also check out IcedTea's [http://iced-tea.org/wiki/FrequentlyAskedQuestions FAQ].<br />
<br />
=Graphics accelerator=<br />
<br />
OMAP3530 used on BeagleBoard contains a graphics accelerator (SGX) based on the SGX core from [http://www.imgtec.com/ Imagination Technologies]. [http://www.imgtec.com/powervr/powervr-graphics.asp PowerVR] SGX530 is a new generation of programmable PowerVR graphics and video IP cores. Only the kernel portions of Linux drivers will be open source. The PowerVR folks will provide binary user-space libraries. Using the EMail contact at [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12700&contentId=27458 TIs Mobile Gaming Developers page] there are Linux v2.6 OMAP3430 SDKs for OMAP3 Zoom and SDP supporting OpenGL ES v2.0, OpenGL ES v1.1 and OpenVG 1.0 available.<br />
<br />
Tutorial:<br />
* [http://code.google.com/p/beagleboard/wiki/HowtoUseSGXunderAngstrom How to use SGX with Angstrom in OE]<br />
<br />
Some videos:<br />
<br />
* [http://www.youtube.com/watch?v=3ToYOgP9f9U SGX on Beagle working with Linux 2.6.27]<br />
* [http://www.youtube.com/watch?v=24TXpqa9jG0&feature=related OpenGL ES 2.0 shader effects on OMAP3]<br />
* [http://www.youtube.com/watch?v=-UFUbqoNgs8&feature=related 3D User Interface on OMAP3 Platform]<br />
* [http://www.youtube.com/watch?v=8KcNgeUriqA 3D Mapping using OpenGL ES 2.0 on OMAP3 Platform]<br />
* [http://www.youtube.com/watch?v=7D3V6BUpGLE Video blending in hardware]<br />
* [http://www.hitlabnz.org/wiki/EmbeddedAR An Augmented Reality application combining ARToolkit and OpenGL ES 2.0]<br />
<br />
=Beginners guide=<br />
<br />
You just got your new BeagleBoard, and now? See [[BeagleBoardBeginners|beginners guides]].<br />
<br />
=FAQ=<br />
<br />
For BeagleBoard frequently asked questions (FAQ) see [[BeagleBoardFAQ|community FAQ]] and "official" [http://beagleboard.org/support/faq BeagleBoard.org FAQ].<br />
<br />
=Links=<br />
==Home page==<br />
[http://beagleboard.org/ beagleboard.org] (beagle board home)<br />
* Using [http://www.google.de/ Google] you can search beagleboard.org (including [http://www.beagleboard.org/irclogs/ IRC logs]) using ''site:beagleboard.org <search term>''<br />
<br />
==Manuals and resources==<br />
* [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard HW Reference Manual (rev. C2)]<br />
* [http://beagle.s3.amazonaws.com/BBSRM_7_2_0.pdf BeagleBoard HW Reference Manual (rev. B7)]<br />
* [http://www.beagleboard.org/uploads/BBSRM_6.pdf BeagleBoard HW Reference Manual (rev. B6)]<br />
* [http://www.beagleboard.org/uploads/BBSRM_B5.pdf BeagleBoard HW Reference Manual (rev. B5)]<br />
* [http://www.beagleboard.org/uploads/Beagle_HRM_B4.pdf BeagleBoard HW Reference Manual (rev. B4)]<br />
* [http://www.beagleboard.org/uploads/Beagle_HW_Reference_Manual_A_5.pdf BeagleBoard HW Reference Manual (rev. A5)]<br />
* [http://focus.ti.com/docs/prod/folders/print/omap3530.html OMAP3530] processor description and manuals<br />
* [http://code.google.com/p/beagleboard/ Beagle at code.google.com]<br />
* [http://focus.ti.com/dsp/docs/dspsupporttechdocs.tsp?sectionId=3&tabId=409&familyId=1526&documentCategoryId=4&techDoc=4 OMAP3530/25 CBB BSDL Model]<br />
* [http://www.micron.com/products/mcps/beagleboard Micron's multi chip packages (MCPs) for Beagle Board]<br />
* [http://beagleboard.org/resources Beagleboard resources page with hw docs]<br />
* Some [http://www.rasterman.com/ performance comparison] of BeagleBoard Rev. B with some other ARM/PC systems.<br />
* OMAP3 pinmux [http://www.hy-research.com/omap3_pinmux.html setup]<br />
* [http://elinux.org/BeagleBoardPinMux OMAP3 eLinux pinmux page]<br />
<br />
==Contact and communication==<br />
* [http://groups.google.com/group/beagleboard Beagle board discussion list]<br />
* [http://code.google.com/p/beagleboard/issues/list Beagle board open point list & issue tracker]<br />
* [http://beagleboard.blogspot.com/ Beagle board blog]<br />
* [http://feeds.feedburner.com/BeagleBoard Beagle board RSS feed]<br />
* Chat:<br />
** [http://beagleboard.org/chat Beagle Board chat]<br />
** IRC: #beagle channel on irc.freenode.net<br />
** [http://www.beagleboard.org/irclogs/index.php IRC archive]<br />
* [http://www.beaglesride.org/ Beagles Ride], a site about building a community around the BeagleBoard focused on in vehicle applications<br />
* [http://www.beagleboard.de/ German Beagle Board Forum and Wiki]<br />
<br />
==TI resources==<br />
* [http://opensource.ti.com/ TI open source page]<br />
* [https://community.ti.com/ TI E2E (Engineer-to-Engineer) Community]<br />
* [http://marc.info/?l=linux-omap&m=120761100810527&w=2 DSP Bridge driver for OMAP3 platform]<br />
* [http://lists.arm.linux.org.uk/lurker/message/20080701.142512.5eeff26b.en.html ARMv7 Oprofile support]<br />
* [http://focus.ti.com/pdfs/wtbu/swpu114g.pdf OMAP34xx Wireless Technical Reference Manual] (swpu114g.pdf, 47 MB)<br />
* [http://amethyst.openembedded.net/~koen/index.php?sort=date&order=desc&path=beagleboard/ Koen's (OpenEmbeded) BeagleBoard source and binaries]<br />
* [http://del.icio.us/tag/beagleboard+peripheral+verified Verified peripherals for BeagleBoard]<br />
* [http://www.celinux.org/elc08_presentations/TI_OMAP3430_Linux_PM_reference.ppt OMAP3430 Linux Power Management presentation]<br />
==Articles==<br />
* [http://linuxdevices.com/news/NS5852740920.html LinuxDevices article about Beagle]<br />
* [http://www.linuxdevices.com/news/NS8479495970.html LinuxDevices article about Digi-Key launch]<br />
* [http://www.linuxdevices.com/news/NS5682470737.html LinuxDevices article about Beagle Rev C, Beagle MID from HY Research, Touch Book and Sponsored Projects Contest]<br />
<br />
==Books==<br />
* [[OMAP_and_DaVinci_Software_for_Dummies|OMAP and DaVinci Software for Dummies]]<br />
==Past Beagle events==<br />
* TIDC, February 26-28, 2008: [http://www.beagleboard.org/uploads/tidc_opensource.pdf Slides from TI developer conference (TIDC) open source session], covering also beagle board<br />
* [http://www.lugradio.org/live/USA2008/ LUG RADIO Live USA 2008, April 12-13, 2008]: [http://www.beagleboard.org/uploads/lugradio_20080411.PPT TI/Beagle Presentation] and [http://forums.lugradio.org/viewtopic.php?f=4&t=4094&st=0&sk=t&sd=a&sid=d69cc807569ab41e33f93af698c536b8&start=15#p41549 video]<br />
* LinuxTag, May 28-31, 2008: [http://www.flickr.com/photos/jadon/2551439955/in/pool-beagleboard picture 1] and [http://www.flickr.com/photos/jadon/2535692865/in/pool-beagleboard picture 2]<br />
* [http://lugradio.org/live/UK2008/travel LugRadio Live UK 2008], July 19 - July 20, 2008: [http://www.flickr.com/photos/koenkooi/tags/lugradiolive/ Koen's pictures] showing e.g. [http://www.bigbuckbunny.org/index.php/download/ Big Buck BUNNY] playing at Beagle. [http://linuxoutlaws.com/podcast/48 Interview with Linux Outlaws (52:06)] and the [http://www.youtube.com/watch?v=m9xVbntl-DY video]<br />
* [http://osscamp.in/index.php/OSScamp_Bengaluru_Mobile_2008 OSScamp Bengaluru Mobile 2008], July 19, 2008<br />
* [http://www.linuxworldexpo.com LinuxWorld Conference & Expo], August 4 - August 7, 2008: [http://www.flickr.com/photos/jadon/sets/72157606586084668/ pictures with living beagle] and from [http://www.flickr.com/photos/linuxjournal/2738316951/in/set-72157606634486338/ Linux Journal's photostream]<br />
* BeagleBoard.org event at Jillian's during LinuxWorldExpo, August 5, 2008, 5:30-7:30 pm<br />
* [http://barcamp.pbwiki.com/BarCampHouston3 BarCamp Houston 3], August 9, 2008, 9:00 A.M.: [http://www.flickr.com/photos/jadon/sets/72157606656532041/ pictures]<br />
* NIT Suratkal, India [http://www.nitkieee.com/site/sp-connect2/schedule IEEE SP Connect 2], August 30, 20008<br />
* [http://barcampbangalore.org/wiki/BCB7_Demos BarCamp Bangalore], India, September 13, 2008<br />
* [http://www.ibc.org/ IBC 2008], September 11 - September 16, 2008: [http://www.flickr.com/photos/koenkooi/tags/ibc2008/ pictures]<br />
* Free Open "Embedded Linux" Training for Students in India, [http://code.google.com/p/beagleboard/wiki/Trainings?updated=Trainings&ts=1220250913 beagleboard.org Trainings in India], September 20, 2008: [http://www.youtube.com/watch?v=A6FLdmgQlb4&feature=PlayList&p=1BAB6EE9CC7285AD&index=0 video], [http://www.flickr.com/photos/25691331@N04/sets/72157607419766102/ photos] and [http://lakshmansrikanth.blogspot.com/2008/09/linux-embedded.html blog]<br />
* [http://www.embedded.co.uk/ Embedded Systems Show 2008], Birmingham, UK, October 1-2, 2008<br />
* [http://www.mvista.com/vision/ MontaVista Vision 2008 Embedded Linux Developers Conference], San Francisco, California, October 1-3, 2008 : [http://www.mvista.com/download/topic.php?t=18 Video and presentation overview], [http://www.mvista.com/download/fetchdoc.php?docid=323 William Mills' presentation], [http://www.mvista.com/download/fetchdoc.php?docid=333 Jason Kridner's presentation]<br />
* [http://www.rtcgroup.com/arm/2008/ ARM Developers' Conference], Santa Clara Convention Center, Santa Clara, Calif., USA, October 7-9, 2008<br />
* [http://www.cmp-egevents.com/web/escb Embedded Systems Conference Boston 2008], Hynes Convention Center, Boston, USA, October 26 - October 30, 2008: [http://beagleboard.org/demo/esc Resources]<br />
* [[BeagleBoard/contest|BeagleBoard contest]] #1: Create a cool BeagleBoard application and win a Rev C1! Closed, ran until January 9, 2009<br />
* [http://www.silica.com/events/seminars/seminar-overview/ti-omp-workshop.html OMAP35x training by Silica], January 21, 2009, Cambridge, UK, ARM Holdings Lecture Theatre. [[RichardB's notes from the seminar]]<br />
* [[BeagleBoard/contest|BeagleBoard contest #2]], unitl February 27, 2009: : Create a cool BeagleBoard application and win a Rev C2!<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/b15cf8a5797c73a2 Silica - Free TI - ARM OMAP Workshop], Brussels, Europe, March 31st 2009<br />
* SILICA's [http://www.silica.com/events/seminars/seminar-overview/ti-omap-piccolo-poing.html Texas Instruments 2-in-1 Seminar: OMAP & Piccolo], May 13th 2009: Poing (Munich) - Germany<br />
* 24th until 27th June 2009: [http://www.linuxtag.org/2009/en.html Linux Tag Germany] with [http://groups.google.com/group/beagleboard/msg/27fefef5f1d2ef73 TI booth] and [http://www.linuxtag.org/2009/en/program/freies-vortragsprogramm/all-events/details.html?talkid=183 Beagle presentation]<br />
* until 31st July 2009: [http://www.cranessoftware.com/services/training/beagledesigncontest.html BeagleBoard Design Contest INDIA Edition] ([http://beagleboard.blogspot.com/2009/04/beagleboard-design-contest-india.html blog entry])<br />
* TI Technology Day Dallas, Tex. on June 16 will held a [http://www.linuxdevices.com/news/NS5682470737.html BeagleBoard users group meeting] (see section ''Availability'').<br />
<br />
==Beagle wiki pages==<br />
* [[BeagleBoardBeginners|BeagleBoard beginners guides]]<br />
* [[BeagleBoardAndOpenEmbeddedGit|BeagleBoard and OpenEmbedded Git]] installation guide and [[BeagleBoardOpenEmbeddedDevelopment|OpenEmbedded development]]<br />
* [[BeagleBoardDebian|Debian on BeagleBoard]] usage guide<br />
* [[BeagleBoardHandheldsMojo|Handhelds Mojo (ARM) on BeagleBoard]] usage guide (formerly known as Ubuntu (ARM))<br />
* [[BeagleBoardUbuntu|Ubuntu (ARM EABI) distribution at BeagleBoard]]<br />
* [[BeagleBoardRecovery|BeagleBoard recovery]] about fixing boards not booting any more because of broken NAND content<br />
* [[BeagleBoardJTAG|BeagleBoard JTAG]] and [[OMAP3530_ICEPICK|OMAP3530_ICEPICK]] about JTAG on BeagleBoard<br />
* [[BeagleBoardOpenOCD|BeagleBoard OpenOCD]] has infos about status and usage of open source JTAG software OpenOCD with Beagle<br />
* [[BeagleBoardNAND|BeagleBoard NAND boot]] about how to boot BeagleBoard from NAND flash<br />
* [[BeagleBoardPeripherals|BeagleBoard peripherals and adapters page]] about useful BeagleBoard add ons.<br />
* [[Mount_BeagleBoard_Root_Filesystem_over_NFS_via_USB|Mount BeagleBoard root file system over NFS via USB]]<br />
* [[BeagleBoardFAQ|BeagleBoard FAQ]]<br />
* [[BeagleBoardSugar|Sugar on BeagleBoard]]<br />
* [[BeagleBoard/DSP_Howto|BeagleBoard DSP howto]]<br />
* [[BeagleBoardRawLCD|Interfacing BeagleBoard to Raw LCD]]<br />
* [[BeagleBoard/gst-openmax|BeagleBoard OpenMAX usage]]<br />
* [[BeagleBoard/video|BeagleBoard video]]<br />
* [[BeagleBoardOpenCV|Using OpenCV computer vision library with BeagleBoard]]<br />
* [[BeagleBoard/James|James]]: Just A Miniature Entertainment System<br />
* [[U-boot_musb_gadget_support|U-boot musb gadget support]]<br />
* [[BeagleBoard-JP|Japanese translation of this Beagle page]]<br />
* [[BeagleEPD|BeagleBoard E-Ink Platform Driver]]<br />
* [[BeagleBoardFedora|Random hacking notes for getting Fedora 10 to kinda work with the BeagleBoard]]<br />
* BeagleBoard specific [[BeagleBoard/GSoC|Google Summer of Code 2009]] page, [[BeagleBoard/Ideas-2009|GSoC project ideas]] and [[BeagleBoard/GSoC/Application|GSoc application]]<br />
* [[BeagleBoard/Poky|Poky]] for BeagleBoard<br />
* [[Xenarc_USB_touchscreen_for_Beagleboard/OMAP3_EVM|Xenarc USB touchscreen for Beagleboard/OMAP3 EVM]]<br />
* [[BeagleBoard/BugAdapter|BeagleBoard Bug Adapter board]]<br />
* [[BeagleBoardDebianWifiInstallInfo|BeagleBoard Debian WiFi install info]]<br />
* [[BeagleBoard/DSP_Clarification|Info about the various Linux DSP systems for OMAP chips]]<br />
* [[BeagleBoardPinMux|BeagleBoard PinMux]]<br />
* [[BeagleBoardLinuxKernel|BeagleBoard Linux kernel manual compile]]<br />
* [http://www.hervanta.com/stuff/Beaglebot Beaglebot]: build an experimental robotics project with Beagle<br />
* [http://code.google.com/p/beagleboard/w/list code.google.com BeagleBoard wiki]<br />
* '''[[BeagleBoard/contest|BeagleBoard contest]]'''<br />
* [http://en.wikipedia.org/wiki/Beagle_Board Wikipedia BeagleBoard page]<br />
* [http://labs.embinux.org/index.php/Android_Porting_Guide_to_Beagle_Board Android port for BeagleBoard]: Instructions for porting Android on BeagleBoard<br />
* [[BeagleBoard/bangalore_user_meet |BeagleBoard Bangalore User Meet]]<br />
* [[BeagleBoardEclipse|Using Eclipse with Beagle]] (for JTAG debugging)<br />
* [[Zoom2Beginners|Zoom2 for Beginners]]<br />
* [http://wh1t3s.com/2009/05/11/beagleboard-as-usb-mass-storage-device-via-usb-otg/ BeagleBoard as USB Mass Storage Device via USB OTG]<br />
* [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/index.htm BeagleBoard as solar powered computer]<br />
* [http://blog.makezine.com/archive/2009/02/blinking_leds_with_the_beagle_board.html Blinking LEDs with the Beagle Board] from Make:Online<br />
* [http://www.crashcourse.ca/wiki/index.php/BeagleBoard Robert's private Beagle wiki] (please don't add anything there, do it here. It will help to avoid scattering. Thanks!)<br />
* [http://felipec.wordpress.com/2009/03/26/omap3-public-dsp-binaries-now-work/ Felipe's blog] about D1 MPEG-4 decoding using less than 15% of CPU with help of DSP<br />
* [http://www.syspire.de/node/3 Embedded Mediacenter] based on BeagleBoard (German)<br />
* [http://pandorawiki.org/Floating_Point_Optimization Floating Point Optimization] with VFP-lite and NEON intro<br />
* [http://particolarmente-urgentissimo.blogspot.com/2009/09/beagleboard-setting-date-via-gps.html Beagleboard setting date via GPS]<br />
<br />
==Beagle photos==<br />
* [http://www.flickr.com/groups/beagleboard/pool/ Beagle board pictures at flickr]<br />
* [http://www.flickr.com/photos/32615155@N00/2439256116/ Beagle board and USRP]<br />
* [http://www.flickr.com/photos/nishanthmenon/2438406603/ Modify SDP3430 QUART cable for beagle]<br />
* [http://www.flickr.com/photos/koenkooi/2695061759/ MythTV on Beagle]<br />
==Beagle videos==<br />
* [http://uk.youtube.com/watch?v=fL_XMieanSc Beagle Board Beginnings]<br />
* [http://www.youtube.com/watch?v=cXr-D1wROfQ Beagleboard in the Living Room]<br />
* [http://uk.youtube.com/watch?v=FuVwh_VrIxk Beagle Board 3D, Angstrom, and Ubuntu]<br />
* [http://uk.youtube.com/watch?v=TUYOjRGYeYU testsprite with beagleboard]<br />
* [http://uk.youtube.com/watch?v=9Z4ZTovtFKk Beagleboard LED demo]<br />
* [http://uk.youtube.com/watch?v=R33dzREZGEk LCD2USB attached to a beagleboard]<br />
* [http://www.youtube.com/watch?v=7D3V6BUpGLE Video blending in hardware]<br />
* [http://www.youtube.com/watch?v=-tUBXD-KRp4 Beagle Running Angstrom (VGA) on DLP Pico Projector]<br />
* [http://www.youtube.com/watch?v=3ToYOgP9f9U SGX on Beagle working with Linux 2.6.27]<br />
* Not on Beagle OMAP3530: [http://youtube.com/watch?v=5i9cWOK1spw Ubuntu 7.04 on on OMAP3430 SDP]<br />
* [http://in.youtube.com/watch?v=nADn_vNVEKw Beagle Board booting Android]<br />
<br />
==Beagle manufacturing==<br />
* [http://www.youtube.com/watch?v=C-CwkjT9z_0&feature=related Beagle Solder Paste Screening]<br />
* [http://www.youtube.com/watch?v=9LLjDovIG2M&feature=related Beagle Assembly Inspection]<br />
* [http://www.youtube.com/watch?v=sbOZfBnoVnM&feature=related Beagle Functional Test]<br />
* [http://www.youtube.com/watch?v=cvDtXmJJcEI&feature=related Beagle Reflow]<br />
* [http://www.youtube.com/watch?v=W2o4NTASxN0&feature=related Beagle Board Assembly at Circuitco]<br />
==Fun==<br />
* Enjoy [http://www.beaglegame.com/ BeagleGame]<br />
<br />
=Other OMAP boards=<br />
<br />
* OMAP1 OMAP5912 (ARM9 + C5x DSP) based [[OSK|OSK]] board.<br />
* OMAP3 OMAP3430 based [https://gforge.ti.com/gf/project/omapzoom/wiki/?pagename=HardwareInformation Zoom MDK], which has been superseded by the [http://www.logicpd.com/products/development-kits/texas-instruments-zoom%E2%84%A2-omap34x-ii-mdp Zoom II], and other [http://www.logicpd.com/products LogicPD kits].<br />
* OMAP3 OMAP3530 based [http://www.openpandora.org/ Pandora]<br />
* OMAP3 OMAP3503 based [http://www.gumstix.net/Overo/cat/Overo/115.html Gumstix Overo]<br />
* OMAP3 OMAP35x based EVM from [http://mistralsolutions.com/products/omap_3evm.php Mistral] and [http://focus.ti.com/docs/toolsw/folders/print/tmdxevm3503.html TI] (both are the same)<br />
* OMAP3 OMAP3430 based [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12013&contentId=28741 Software Development Platform (SDP)]<br />
* OMAP3 OMAP3530 based board from [http://www.magniel.com/omap3.html Magniel Inc.]<br />
* OMAP3 based [http://www.archos.com/products/imt/index.html?country=us&lang=en Archos 5, ARCHOS 5G and ARCHOS 7]<br />
* OMAP3 OMAP35x based [http://www.logicpd.com/products/som/ti/omap35x OMAP35x SOM-LV]<br />
* OMAP3 based [[Mini_Board|ICETEK-OMAP3530-Mini]], a Chinese BeagleBoard clone, with a [[MiniBoardFAQ|FAQ]]<br />
* OMAP3 based [http://www.ebv.com/en/products/categories/details/product/ebvbeagle-board EBVBeagle], a German BeagleBoard clone<br />
* OMAP3530 based [http://www.bsquare.com/products/hardware_solutions/3530.asp BSQUARE’s Dev Kit OMAP3530]<br />
* OMAP3530 based [http://beaversource.oregonstate.edu/projects/cspfl/wiki/CSPFL_Hardware OSWALD]<br />
* OMAP3 BeagleBoard-based [http://www.alwaysinnovating.com/touchbook/ Touch Book]<br />
* OMAP3530 based [http://www.analogue-micro.com/Cobra3530.html Cobra 3530 OMAP3530 module ]<br />
* OMAP3 based [http://www.kwikbyte.com/KBOC.html KwikByte 35XX System Module]<br />
* OMAP3530 based [[DevKit8000]], a Chinese BeagleBoard clone, slightly larger with additional peripherals (e.g. LCD/TSP, Ethernet and keyboard)<br />
* OMAP3530 based [http://www.igep-platform.com/ IGEPv2 Platform], a Spanish BeagleBoard clone, slightly larger, with additional peripherals like e.g. ethernet connector, wifi+bluetooth.<br />
* OMAP35x based [http://www.ultratronik.de/mmi-rechnerplattformen.html MMI4 from Ultratronik]<br />
* OMAP35x based [http://www.technexion.com/index.php/tao-3530 TAO-3530 from TechNexion]</div>Rpjdayhttps://elinux.org/index.php?title=BeagleBoard_Community&diff=14322BeagleBoard Community2009-10-20T22:20:35Z<p>Rpjday: Correct typo.</p>
<hr />
<div>[[Category: Linux]]<br />
[[Category: OMAP]]<br />
[[Category:Development Boards]]<br />
[[Category: BeagleBoard]]<br />
This page collects information about [http://www.ti.com/ TI's] [http://www.arm.com/ ARM] based [http://focus.ti.com/general/docs/gencontent.tsp?contentId=36915&amp;DCMP=OMAP_Feb27_2008&amp;HQS=Other+PR+omap3503pr OMAP3] [http://beagleboard.org Beagle Board].<br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:#ffffcc; align:right; "><br />
'''NEWS:''' [http://www.tincantools.com/product.php?productid=16147&cat=0&page=1&featured Zippy] Expansion boards for the [[BeagleBoard]] are now available!<br />
</div><br />
<br />
<br />
=Events=<br />
* Thursday, August 27th: [http://wiki.omap.com/index.php/ETechDays_Lightning_Talks ETechDays Lightning Talks]. 15 minute lightning talks via IRC, WebEx or Dial-In.<br />
* 22.- 23.08.2009, Sankt Augustin, Germany: [http://www.froscon.de/en/ FrOSCon 2009] ([http://groups.google.com/group/beagleboard/browse_thread/thread/6aee27a7d121f4f4# call for papers])<br />
* Each last Saturday of the month, next August 29, 2009: [[BeagleBoard/bangalore user meet|BeagleBoard Bangalore user meeting]] (Beagle Clinic India)<br />
* all over the world 2009: [http://www.ti.com/corp/docs/landing/techday09/index.shtml# TI Technology Days 2009]. <br />
* ongoing 2009: [[BeagleBoard/contest|Beagle Sponsored Project Program]] - add a cool project and get a free BeagleBoard to realize it!<br />
<br />
=Hardware=<br />
<br />
The Beagle Board is ''a low-cost, fan-less single-board computer based on TI's OMAP3 device family, with all of the expandability of today's desktop machines, but without the bulk, expense, or noise'' (from [http://beagleboard.org/ beagleboard.org]). It uses a TI [http://focus.ti.com/docs/prod/folders/print/omap3530.html OMAP3530] processor (ARM Cortex-A8 superscalar core ~600MHz paired with a TMS320C64x+ DSP ~430MHz and an Imagination SGX 2D/3D graphics processor). See [http://focus.ti.com/docs/prod/folders/print/omap3530.html#features OMAP3530 features] for more processor features. [[BeagleBoard#Availability|Price is USD 149]]. The design goal was to make it as simple and cheap as possible, e.g. not having a LCD added, but letting you connect all add-ons available as cheap external components. See [http://beagleboard.org/brief What is Beagle?] and [http://linuxdevices.com/news/NS5852740920.html LinuxDevices article] for more details.<br />
<br />
The videos [http://uk.youtube.com/watch?v=fL_XMieanSc Beagle Board Beginnings] and [http://uk.youtube.com/watch?v=FuVwh_VrIxk Beagle Board 3D, Angstrom, and Ubuntu] give you a good intro about what BeagleBoard is about and it's capabilities.<br />
<br />
==Components==<br />
<br />
{|border=0<br />
!Top view of rev B:<br />
!Top view of rev C:<br />
|-<br />
|[[Image:Bb revb top numbered.jpg]]<br />
|[[Image:Bb revc top numbered.jpg]]<br />
|-<br />
|}<br />
{|border=1<br />
!No.<br />
!Name<br />
!Comment<br />
|-<br />
|'''1'''<br />
|[http://www.ti.com/omap35x OMAP3530] processor + 256MB NAND<br />
<br />
+ 128MB DDR (rev B)<br />
<br />
+ 256MB DDR (rev C)<br />
|PoP: Package-On-Package implementation for Memory Stacking<br />
[http://www.micron.com/products/partdetail?part=MT29C2G24MAKLAJG-6%20IT 256MB NAND/128MB Mobile DDR SDRAM] available from [http://www.digikey.com/scripts/US/DKSUS.dll?Detail?name=557-1435-ND DigiKey]<br />
<br />
([http://www.micron.com/products/partdetail?part=MT29C4G48MAPLCJI-6%20IT 512MB NAND/256MB Mobile DDR SDRAM] available from [http://www.digikey.com/scripts/US/DKSUS.dll?Detail?name=557-1436-ND DigiKey])<br />
<br />
[http://www.micron.com/products/mcps/beagleboard Micron's multi chip packages (MCPs) for Beagle Board]<br />
|-<br />
|'''2'''<br />
|[http://focus.ti.com/docs/prod/folders/print/tfp410.html DVI chip (TFP410)]<br />
|<br />
|-<br />
|'''3'''<br />
|[[BeagleBoard#DVI|DVI-D]]<br />
|Connection via HDMI connector<br />
|-<br />
|'''4'''<br />
|[[BeagleBoard#JTAG|14-pin JTAG]]<br />
|1.8V only!<br />
|-<br />
|'''5'''<br />
|Expansion connector: I2C, I2S, SPI, MMC/SD<br />
|User must solder desired header into place<br />
|-<br />
|'''6'''<br />
|[[BeagleBoard#User_button|User button]] <br />
|Allows setting boot order.<br />
|-<br />
|'''7'''<br />
| Reset button<br />
|<br />
|-<br />
| '''8'''<br />
|[[BeagleBoard#EHCI|USB 2.0 EHCI HS]]<br />
|Rev A and B: not working, unpopulated<br />
<br />
Rev C: populated and working<br />
|-<br />
|'''9'''<br />
|SD/MMC+<br />
| SDHC cards are supported<br />
|-<br />
|'''10'''<br />
|[[BeagleBoard#RS232|RS-232 serial]]<br />
|<br />
|-<br />
|'''11'''<br />
|Alternate power <br />
|normally powered by USB (unmounted on REV Ax boards, see [[BeagleBoard#Errata|errata]])<br />
|-<br />
|'''12'''<br />
|[[BeagleBoard#OTG|USB 2.0 HS OTG]] <br />
|Mini-AB connector. Board can be powered from port. <br />
|-<br />
|'''13'''<br />
|Stereo In<br />
|<br />
|-<br />
|'''14'''<br />
|Stereo Out<br />
|<br />
|-<br />
|'''15'''<br />
|S-Video<br />
|<br />
|-<br />
|'''16'''<br />
|TWL4030 (Rev A thru C2 inc.)<br />
[http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] (Rev C3 onwards)<br />
|Audio CODEC, USB port, power-on reset and power management. The TWL4030 is pin-compatible with the [http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] chip and was used due to the very limited availability of the TPS65950 in early board revisions.<br />
|-<br />
|'''17'''<br />
|LCD<br />
|only rev C<br />
|-<br />
|'''18'''<br />
|USB power<br />
|<br />
|-<br />
|'''19'''<br />
|Host PHY<br />
|<br />
|-<br />
|'''20'''<br />
|32kHz<br />
|<br />
|-<br />
|'''21'''<br />
|12MHz<br />
|<br />
|-<br />
|'''22'''<br />
|RS232 XVCR<br />
|<br />
|-<br />
|'''23'''<br />
|PWR SW<br />
|<br />
|-<br />
|'''24'''<br />
|VBAT<br />
|<br />
|-<br />
|}<br />
<br />
* Board size: 3" x 3" (about 76.2 x 76.2 mm)<br />
* Weight: [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/beagleboard.png ~37g]<br />
* Currently 6 layer PCB; target: 4 layer<br />
<br />
'''Bottom of rev B:'''<br />
<br />
[[Image:Beagle_bottom.jpg]]<br />
<br />
See [http://www.flickr.com/photos/jadon/sets/72157606050144396/ jadonk's photostream] for some more detailed BeagleBoard pictures.<br />
<br />
==Manual==<br />
<br />
See [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard System Reference Manual (rev. C3.0)].<br />
<br />
==Schematic==<br />
<br />
Schematic of BeagleBoard Rev. C3 is available as part of [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard HW Reference Manual (rev. C3.2)]. Rev C3 and previous are also available from [http://beagleboard.org/hardware/design BeagleBoard.org design page] including in PDF format. Please make sure that you ''read, understand and agree'' [http://groups.google.com/group/beagleboard/msg/ee3e1bc927551ffc Jason's mail] before using this.<br />
<br />
==Layout== <br />
<br />
Layout of BeagleBoard Rev. C3 is available as part of [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard HW Reference Manual (rev. C3.2)]. Rev C3 and previous layouts are also available from the [http://beagleboard.org/hardware/design BeagleBoard.org design page]. Please make sure that you ''read, understand and agree'' [http://groups.google.com/group/beagleboard/msg/ee3e1bc927551ffc Jason's mail] before using this.<br />
<br />
==Errata==<br />
<br />
# ''Boards revision A only'': The DC power jack pinout is incorrect on the PCB layout. DC_5V and GND are switched on PCB layout. Normally, the power jack has DC_5V on the center pin and GND on the sleeve (see Figure 20 of [http://www.beagleboard.org/uploads/BBSRM_6.pdf Beagle HW manual]). But on revision Ax boards the PCB layout has GND on center and DC_5V on sleeve. For this reason it is currently removed. It will be back on the Rev B board. Workaround is to remove wire connecting the two power pins on revision Ax boards and use external [http://amethyst.openembedded.net/~koen/beagleboard/beagle-power-pads.jpg power supply with switched connector] (do not connect anything to the “?” terminal. USB power will be permanently disabled and the board can only be powered from the 5V.) See [http://www.flickr.com/photos/koenkooi/2512038988/ Koen's Beagleboard powermod picture] with short descriptions, too.<br />
# ''Boards revision < A5 only'': There is excess voltage drop across R6 which is used to measure the current consumption on the board. This needs to be a .1 ohm instead of a 1 ohm resistor (SMD 0805). All revision A5 boards have been updated to .1. You can also just solder in a jumper to J2 bypassing the current read point. This issue can cause issues with the USB host port as the voltage supplied to that port can be too low.<br />
# ''Boards revision A only'': User LEDs 0 and 1 are shorted on the layout preventing them from being controlled individually. You need to control both GPIO_149 and GPIO_150 to turn on or off both LEDs. This is fixed in the Rev B boards.<br />
# ''Boards revision < A5 only'': There is an issue where on some boards the 1.8V has excessive noise on it. This is the result of two incorrect parts L1 and L3 being installed on the board. The inductors that were initially installed in the switchers are 100uH and need to be 1uH. This change will require that the board be returned for update. To check for correct parts, have a look to bottom of BeagleBoard. L1 - L3 are the larger parts there. They all have to be labeled with "102" (== 1uH). If any of these three inductors are labeled with "104" (== 100uH) they are wrong and have to be exchanged.<br />
# ''Boards revision A and B'': USB HOST (EHCI) failures. See [http://code.google.com/p/beagleboard/issues/detail?id=15 issue 15] and [http://code.google.com/p/beagleboard/wiki/USBHostTestREPRODUCE USB host test reproduce]. This is a hardware defect. [http://www.beagleboard.org/irclogs/index.php?date=2008-05-29#T00:27:06 Most probably] Rev. B board does not have the EHCI USB connector mounted. Workaround: Use [[BeagleBoard#OTG|OTG port]] with something like [http://trisoft.de/pics/ZHost.JPG mini A to USB A adapter] instead.<br />
# ''Boards revision A and < B4'': Plugging in a USB OTG cable will prevent Beagle from booting (with git kernel), see [http://code.google.com/p/beagleboard/issues/detail?id=19 issue #19], too. This is due to missing filtering capacitor at USB OTG VBUS. When the kernel driver detects that a USB OTG cable is inserted it enables the charge pump to generate VBUS. With no filtering VBUS looks like any switching regulator output with no filtering -- a huge voltage spike when the switch is on, followed by a rapid decay to a low voltage until the next switch on period. The capacitor is there to store energy between the output switch ON and OFF time, the feedback loop in the regulator does sample the cap voltage. Fix is to piggy-back solder a 0603 2.2uF ceramic capacitor to D3, see [http://www.sakoman.net/omap3/beagle/vbus-mod-d3.jpg VBUS modification D3 picture]. Revision B4 boards and newer have this fix applied. Thanks to [http://groups.google.com/group/beagleboard/msg/eb789e15c99a673d Steve] for debugging this!<br />
# ''Boards revision A and < B5'': There is some issue with 32kHz clock depending on system configuration used to clock some OMAP3 peripherals. From this e.g. GPIOs, GPTIMERs, and USB on Beagle might be affected. See [http://code.google.com/p/beagleboard/issues/detail?id=22 Issue 22]. Symptom from this is that after booting Linux kernel serial console hangs after some time and no serial input/output is possible any more. There is one software workaround and one hardware fix for this: (A) Software workaround: Don't use 32kHz timer to clock Linux, instead use MPU timer. (B) Hardware workaround: Remove [http://www.flickr.com/photos/25691331@N04/2766671437/in/pool-beagleboard capacitor C70], which improves the 32kHz clock quality and avoids hang-up. Note: Revision A boards have capacitor C70 [http://www.flickr.com/photos/25691331@N04/2766671437/in/pool-beagleboard at the same location] as rev. B boards. Note: Board revision >= B5 removes capacitor C70.<br />
# ''Random boards, quite rare, revision < B6'': Some random boards and quite rare, show directly after purchasing broken serial communication from host PC to BeagleBoard. Symptom is that you get a new board, get serial output from BeagleBoard in terminal program, but can't type anything at U-Boot prompt (Note: Don't mix this with errata #7. With errata #7 you are able to use U-Boot normally, but Linux prompt input stops after some time). Most users don't have this issue, though. So, first double check your serial configuration ([[BeagleBoardFAQ#Serial_connection_.231|FAQ1]], [[BeagleBoardFAQ#Serial_connection_.232|FAQ2]] and [[BeagleBoardFAQ#Serial_connection_.233|FAQ3]]). Only if you are really, really sure that anything with your serial connection is fine, consider sending the board back doing a [http://beagleboard.org/support/rma RMA request]. This issue was resolved on revision B6 and later boards.<br />
<br />
For additional (software) issues and enhancement requests see [http://code.google.com/p/beagleboard/issues/list Beagle board open point list & issue tracker], too.<br />
<br />
Note: BeagleBoard revision B6 uses different package for U9/U11.<br />
<br />
==Clocking==<br />
<br />
Some [http://www.beagleboard.org/irclogs/index.php?date=2008-07-08#T21:12:23 notes] about (ARM processor) clock rates at BeagleBoard:<br />
<br />
* ARM Cortex-A8 processor is currently clocked at 500MHz<br />
* 500MHz is the default used because it is a balance of performance and longevity<br />
* For OMAP35x 600MHz is max recommended<br />
* At 600MHz OMAP35x is considered to be 'overdrive' and it does not have the same life expectancy<br />
* Higher than 600MHz is out of spec and no guarantee it will work at all (or not damage itself)<br />
* Also keep in mind that if you go higher you probably want to increase the core voltage. Some of this is mentioned in table 3-3 of the [http://focus.ti.com/lit/ds/symlink/omap3530.pdf OMAP3530 data sheet]. Some numbers:<br />
<br />
{| border="1"<br />
||'''ARM'''||'''DSP'''||'''core voltage'''<br />
|-<br />
|600 MHz||430 MHz||1.35V<br />
|-<br />
|550 MHz||400 MHz||1.27V<br />
|-<br />
|500 MHz||360 MHz||1.2V<br />
|}<br />
<br />
* For some OMAP3 clock, voltage and power management discussion see [http://focus.ti.com/lit/an/sprt495/sprt495.pdf OMAP3 power management white paper], too.<br />
* The OMAP3 chip on the Beagle lacks the efuses needed for using the SmartReflex technology, see [http://www.beagleboard.org/irclogs/index.php?date=2009-02-26#T10:44:24].<br />
* There is a thermal monitor in the core, you could use to scale frequency up and down<br />
<br />
To set CPU clock to 600 MHz, there are two options. Both '''do not''' adjust the voltage, so the system may become unstable:<br />
<br />
* The u-boot command "mw 48004940 0012580c" will temporarily set the CPU clock to 600 MHz (not permanent over reset).<br />
* To permanently set the CPU clock to 600 MHz, include the above command in the "bootcmd" variable or equivalent script.<br />
<br />
==Power management==<br />
<br />
* Latest Linux kernel power management development for TI OMAP SoCs is maintained in [http://git.kernel.org/?p=linux/kernel/git/khilman/linux-omap-pm.git;a=summary Kevin's linux-omap-pm git tree]<br />
* Russ' Beagle HW modifications resulted in [http://groups.google.com/group/beagleboard/browse_thread/thread/197a8ef6b46cc828 8mW sleep for Beagle Board]<br />
<br />
Without PM kernel, the Beagle [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/index.htm consumes ~1.5 watts idle, however it also uses the same amount under load] (see bottom of that page).<br />
<br />
==DLP Pico projector==<br />
<br />
Texas Instruments is developing a Pico Video Projector Kit (PVPK) as a peripheral for the Beagle Board. The stand alone pico projector will support VGA resolution (640 x 480), RGB 888 input through a DVI interface. The physical connector on the projector will be HDMI. See [http://groups.google.com/group/beagleboard/msg/10e218972380ee48 mailing list] and [http://www.youtube.com/watch?v=-tUBXD-KRp4 Beagle Running Angstrom (VGA) on DLP Pico Projector] for more details.<br />
<br />
It is available from [http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=296-23836-ND DigiKey] for $349.<br />
<br />
See [http://blog.makezine.com/archive/2009/01/tis_beagleboard_and_dlp_pico_projector.html?CMP=OTC-0D6B48984890 article from Make], too.<br />
<br />
DigiKey videos [http://www.youtube.com/watch?v=KBbCdnOj5vg part 1], [http://www.youtube.com/watch?v=zymOmduNWyI part 2] and [http://www.youtube.com/watch?v=Uj19Bi5NYeU part 3].<br />
<br />
==Interfacing to Raw LCD Panels==<br />
<br />
Currently on Rev A / B boards there is no direct access to the LCD lines before they enter the DVI framer. The REV C2 provides access to these lines. Several projects to interface an LCD to the beagleboard exist:<br />
<br />
* [[BeagleBoardRawLCD|interfacing to Raw LCD Panels]] article <br />
* [http://digitalsurveyinstruments.com/beagleperiphials/hdmi2parallel/doc/index.htm hdmi to parallel] workaround method<br />
* [http://www.harbaum.org/till/dvi2par/index.shtml dvi2par cheap diy HDMI to parallel converter]<br />
<br />
=Availability=<br />
<br />
BeagleBoards, currently Rev. C3 boards, are available from<br />
<br />
* [http://www.mouser.com/beagleboard Mouser]<br />
* [http://dkc1.digikey.com/us/mkt/beagleboard.html Digi-Key] with part number [http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=296-23428-ND 296-23428-ND].<br />
<br />
Note: For non-US Digi-Key free shipping orders:<br />
<br />
* Click the US flag on the top right corner of [http://dkc1.digikey.com/us/mkt/beagleboard.html Digi-Key] BeagleBoard page to come to the international page<br />
* Select ''Order Online'' for your country<br />
* Add quantity ''1'' and part number ''296-23428-ND''<br />
* Click ''Add to order''<br />
<br />
When ordering over 65 EUR / GBP 50 product (BeagleBoard is above), for Europe the price depends on the actual dollar to EUR/GBP rate. On nov 9, 2008 the price was EUR 124 with free shipping.<br />
<br />
Note: Some users report that they got some questions from DigiKey to be answered before board shipping is done.<br />
<br />
Note: While you get free shipping, most probably you have to pay tax e.g. ordering from Europe. Users report that they had to pay EUR ~34 - 44 VAT + importing taxes (depending on european country), resulting in EUR 137 - 147 ordering from Europe.<br />
<br />
Note: For European users, [http://www.ebv.com/fileadmin/products/Press_Print/Campaigns/2009/Product_Campaigns/Texas_Beagle_Board_englisch.pdf EBV Elektronik] sells its own blue version of the board for 179 EUR, which includes all useful accessories (DVI cable, serial cable, USB 2.0 Ethernet, USB hub, 2 GB MMC, power supply, Linux BSP).<br />
<br />
Note: German (Europe) users can order through German shops, too. For higher price, though. <br />
* [http://shop.embedded-projects.net/product_info.php/info/p159_BeagleBoard--OMAP-3-.html Embedded Projects Shop] sells BeagleBoard for EUR 199.00 + shipping.<br />
* [http://www.handheld-linux.com/wiki.php?page=Beagle%20Board Handheld-Linux]<br />
<br />
See below for ''hardware'' differences of the revisions. There are no ''software'' differences. <br />
<br />
==Revision A==<br />
<br />
There are some limited early revision Ax prototypes out there used by some hackers hanging around at #beagle channel on irc.freenode.net. See [[BeagleBoard#Errata|errata]] for limitations.<br />
<br />
==Revision B==<br />
<br />
Revision B is same as revision A, except<br />
* fix for shorted LEDs 0/1<br />
* fix for wrong power jack pinout<br />
* revision B6 uses different package for U9/U11<br />
Still has USB HOST (EHCI) failures. USB HOST (EHCI) connector isn't mounted.<br />
<br />
There are 4 revisions of the B board in the field: B4, B5, B6 and B7.<br />
<br />
The most notable difference is the use of the ES3.0 silicon in B6 and B7, other changes are not relevant to software developers.<br />
<br />
==Revision C2==<br />
Revision C2 is same as revision B7 except:<br />
* USB HOST (EHCI) is operational on revision C2, with standard USB A female connector.<br />
* Add interface for raw LCDs ([http://groups.google.com/group/beagleboard/msg/2e82c3ed6061d9d2 mockup])<br />
* It uses updated OMAP3 revision. BeagleBoard revisions B4+B5 uses OMAP3 ES 2.1 (engineering sample), while BeagleBoard revision C2 uses ES 3.0. OMAP3 ES 3.0 fixes minor issues:<br />
** updated ARM Cortex A8 silicon (r1p3) fixing a very rare [http://elinux.org/BeagleBoardFAQ#NEON_performance NEON issue] that has not been seen in real code<br />
* Power measurement feature<br />
* Uses [http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] OMAP power controller instead of TWL4030<br />
* Three additional PWM signals on the expansion connector added as pin mux options to existing pins ([http://groups.google.com/group/beagleboard/browse_thread/thread/d5872b7c6d74592c?hl=en# message])<br />
* Revision detection (to be able to identify C2 board from older boards by software, e.g. for different pin mux)<br />
* 256MB RAM ([http://groups.google.com/group/beagleboard/msg/3a38d0f21cefd6b1?hl=en message]) (and still 256MB NAND like rev B)<br />
<br />
Note: Revision C2 is the first production version, and all orders from from Digi-Key are shipped as Rev C2.<br />
<br />
==Revision C3==<br />
As revision C2 boards are [http://groups.google.com/group/beagleboard/msg/e41d3c97aa7d4951 sold out], revision C3 will ship now.<br />
<br />
Revision C3 is same as revision C2 [http://groups.google.com/group/beagleboard/msg/037318fbc44139d5 except]:<br />
* Optional RTC [http://parts.digikey.com/1/parts/1454-battery-lith-coin-3v-12-5mm-vert-vl-1220-vcn.html VL1220 series] backup battery<br />
* Mounting holes conected to ground<br />
* Slightly improved S-Video<br />
<br />
==Clones==<br />
===EBVBeagle===<br />
EBV build and sell their own BeagleBoard called [http://www.ebv.com/en/products/categories/details/product/ebvbeagle-board EBVBeagle], see e.g. [http://fl0rian.wordpress.com/2009/03/08/the-other-beagleboard/].<br />
It is actually a BeagleBoard revision C2 with green PCB boxed with some useful accessories. It comes as a quite complete starter kit with AC adapter, USB to Ethernet adapter, MMC card, USB hub and some cables.<br />
More information in [http://www.ebv.com/en/press-print/news-pr/details/news//press-releas-54.html official press release].<br />
<br />
===Mini Board===<br />
[[Mini_Board|ICETEK-OMAP3530-Mini]] is a chinese BeagleBoard clone.<br />
<br />
===DevKit 8000===<br />
[[DevKit8000]] is a Chinese BeagleBoard clone, slightly larger with additional peripherals (e.g. LCD/TSP, Ethernet and keyboard).<br />
<br />
===IGEPv2===<br />
[http://www.igep-platform.com/ IGEPv2 Platform] is a Spanish BeagleBoard clone, slightly larger, with additional peripherals like e.g. ethernet connector, wifi+bluetooth.<br />
<br />
==BeagleBoard-based products==<br />
* [http://www.alwaysinnovating.com/touchbook/ Always Innovating Touch Book], see [http://gigglehd.com/zbxe/hdforum/files/attach/images/899852/493/987/001/always_innovating_touch_book_0011.jpg]<br />
<br />
==Beagle case==<br />
<br />
*[http://specialcomp.com/beagleboard/ Special Computing]<br />
*[http://groups.google.com/group/beagleboard/browse_thread/thread/1c82316019633e51 SketchUp 3D model]<br />
<br />
=Adapters=<br />
<br />
For quite detailed information about all BeagleBoard peripherals see [http://www.beagleboard.org/uploads/BBSRM_6.pdf BeagleBoard HW Reference Manual (rev. B6)].<br />
<br />
See [[BeagleBoardPeripherals| BeagleBoard peripherals and adapters page]] for useful add ons for Beagle Board.<br />
<br />
==Expansion boards==<br />
* [[BeagleBoard Zippy]] expansion board is now available from [http://www.tincantools.com/product.php?productid=16147&cat=0&page=1&featured TinCanTools] for $79.00. basic specs are:<br />
** Battery Backed RTC<br />
** Second MMC slot<br />
** 10BaseT Ethernet<br />
** Second RS-232<br />
** +5V level I2C<br />
** AT24 EEPROM<br />
* [http://www.hy-research.com/beagle_expansion.html HY Research] has some expansion board basics and example.<br />
* [http://www.hervanta.com/stuff/Beaglebot#Expansion_Board Beaglebot] uses a custom extension board.<br />
* [http://beagleboard.org/leopard Leopard Board], a Beagle buddy web camera<br />
* There is also a VGA DB15 adapter board under development for the Rev C2 board. It should be available through a yet to be annnounced outlet.<br />
<br />
==JTAG==<br />
<br />
Depending on your JTAG tool, you'd need a 14-pin to 20-pin adapter to use an ARM debugger. The 14-pin TI JTAG connector is used on BeagleBoard and is supported by a large number of JTAG emulation products.<br />
See [[BeagleBoardJTAG]] for more information.<br />
<br />
==RS232==<br />
<br />
The pinout on the beagle board is "AT/Everex" or "IDC10". You can buy [http://www.pccables.com/07120.htm IDC10 to DB9M adapters] in many places as they are commonly used for old PCs. Depending on your local configuration, you may need a [http://en.wikipedia.org/wiki/Null_modem 9-Pin NullModem] cable to connect BeagleBoard to serial port of your PC. From [http://www.tincantools.com/ TinCanTools] there is a [http://www.tincantools.com/product.php?productid=16144&cat=0&page=1&featured RS-232 DB-9 adapter] and [[media:flyswatter-ti-uart.pdf|adapter schematic]] available.<br />
<br />
==USB==<br />
There are two USB ports on the BeagleBoard, one with an EHCI controller and another with an OTG controller. As of Rev B4, the usb EHCI has been removed because of a hardware defect. Rev C will include USB EHCI working properly.<br />
<br />
===EHCI===<br />
The HS ([http://en.wikipedia.org/wiki/USB#USB_signalling HighSpeed]) USB [http://en.wikipedia.org/wiki/EHCI ECHI] controller on OMAP3 on BeagleBoard supports high-speed only. This simplifies the logic on the device. FS/LS (FullSpeed/LowSpeed) devices, such as keyboards and mice, require going through a high-speed USB 2.0 hub.<br />
<br />
According to the BeagleBoard System Reference Manual Rev C2, the EHCI port can source 5V at 500mA which is enough to power a hub and several low-power devices. However, this is only true if the BeagleBoard is powered through its power jack from a well-regulated 5V external power supply. If the BeagleBoard is powered through the OTG port, the EHCI port sources an "extremely limited" ampount of power (probably 100mA or so) so you'll need a "self-powered" USB 2.0 hub with its own external power supply. [Reference: Sections 5.6 and 7.2 of the BBSRM Rev C2.2.]<br />
<br />
===OTG===<br />
The HS USB OTG ([http://en.wikipedia.org/wiki/USB_On-The-Go OnTheGo]) controller on OMAP3 on the BeagleBoard does have support for all the USB 2.0 speeds (LS/FS/HS) and can act as either a host or a gadget/device. The HS USB OTG port is used as the default power input for the BeagleBoard. It is possible to boot the BeagleBoard using this USB port.<br />
<br />
When using the OTG port in host mode, you must power the BeagleBoard using the +5V power jack. If you connect a USB hub, you'll probably also need external power for the USB hub as well, because according to the Hardware Reference manual the BeagleBoard OTG port only sources 100 mA. This is enough to drive a single low-power device, but probably won't work with multiple devices.<br />
<br />
The Linux kernel needs to know you want to use the OTG port in host mode. I believe OTG ports are supposed to figure this out for themselves using the OTG Host Negotiation Protocol, but for now the Linux kernel may need some help. Specifically, Pin 4 (ID) of the OTG connector needs to be shorted to Pin 5 (GND) by using a [http://trisoft.de/pics/ZHost.JPG 5-pin USB Mini-A plug] which shorts these pins together in the plug. A [http://en.wikipedia.org/wiki/USB#USB_cables 5-pin USB Mini-B plug] leaves Pin 4 floating. Unfortunately, most USB Mini plugs are unmarked as to whether they are "A" or "B".<br />
<br />
You can find "mini A" adapters that have Pin 4 shorted and offer out a full-sized USB A Female jack [http://www.electronicproductonline.com/catalog/product_info.php?products_id=2043 here.]<br />
<table><br />
<tr><td><br />
Since the right cables might be hard to get, you simply can<br />
* short circuit the two pins encircled in red in the image to the right. You can do this by running a wire between the two pins. That at least allows easier undoing the change. Actually you could even have a small switch or so between 4 and 5.<br />
or<br />
* use a "mini B" cable (easier to get) and try the soldering of the two pins at the cable's connector. Depending on the cable it should be possible to open the plastic covering of mini-B port with a sharp-edged knife, then solder the two pins together, close the covering again and use some tape. This leaves the BeagleBoard unmodified.<br />
</td><td>[[Image:usb_otg.png]]</td></tr></table><br />
The Rev C BeagleBoard has a pair of pads labeled J6 on the back of the board under the OTG connector. Shorting these pads together with a wire or solder blob connects pins 4 and 5.<br />
See Figure 20 in the BeagleBoard System Reference Manual Rev C2.2.<br />
<br />
==DVI==<br />
<br />
DVI-D connection on BeagleBoard uses a [http://en.wikipedia.org/wiki/HDMI HDMI connector]:<br />
<br />
''HDMI is backward-compatible with the single-link Digital Visual Interface carrying digital video (DVI-D or DVI-I, but not DVI-A) used on modern computer monitors and graphics cards. This means that a DVI-D source can drive a HDMI monitor, or vice versa, by means of a suitable adapter or cable, but the audio and remote control features of HDMI will not be available.''<br />
<br />
BeagleBoard can be connected to a DVI monitor using HDMI female to DVI male cable.<br />
<br />
=BootRom=<br />
<br />
OMAP3 on BeagleBoard contains a BootRom. With this, BeagleBoard can boot without any code in permanent storage (NAND) or from peripherals. This is useful for first board bring up or if your BeagleBoard is bricked. For more information about BootRom booting see [http://www.ti.com/litv/pdf/sprufd6a SPRUFD6]. <br />
<br />
==User button==<br />
<br />
With user button on BeagleBoard you can configure boot order. Depending on this button, the order used to scan boot devices is changed. The boot order is (the first is the default boot source):<br />
<br />
* User button ''not'' pressed: NAND -> USB -> UART -> MMC<br />
* User button ''is'' pressed: USB -> UART -> MMC -> NAND<br />
<br />
Technically speaking, the user button configures pin SYS.BOOT[5]. See [http://focus-webapps.ti.com/general/docs/sitesearch/searchsite.tsp?selectedTopic=1653260327&numRecords=25&searchTerm=sprufd6&statusCode=null SPRUFD6] for more details.<br />
<br />
==Serial and USB boot==<br />
<br />
Historically, using OMAP3's boot ROM for serial and USB boot, there are several tools around. The newest are Nishanth' ''OMAP U-Boot Utils'', while there are still some older tools for serial boot and USB boot. It is also possible the access the [[u-boot environment variables in linux|u-boot env from linux]].<br />
<br />
===OMAP U-Boot Utils===<br />
<br />
Nishanth' [http://code.google.com/p/omap-u-boot-utils/ OMAP U-Boot Utils] provide<br />
<br />
* ''pserial'' - OMAP specific utility which downloads a file in response to ASIC ID over serial port.<br />
* ''pusb'' - OMAP specific utility which downloads a file in response to ASIC ID over USB connection.<br />
* ''ucmd'' - Send a command to U-Boot and wait till a specific match appears.<br />
* ''ukermit - Download a file from host without using kermit to U-Boot.<br />
<br />
See [http://nishanthmenon.blogspot.com/ Nishanth' blog] and [http://groups.google.com/group/beagleboard/browse_thread/thread/c5bfb1b8ed528b52# announce mail], too.<br />
<br />
===Serial boot===<br />
<br />
Besides Nishanth' ''OMAP U-Boot Utils'', to boot from USB or UART, you need a PC tool which talks with OMAP BootRom and speaks the correct protocol to download ARM target code to BeagleBoard. Currently there are two older (experimental) tools for UART boot:<br />
<br />
* [http://omapzoom.org/gf/project/omaptools/wiki PC Serial Boot perl script]<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/80ad3da0eb2aa555 Linux C utility] (not working yet with below target code)<br />
<br />
See [http://groups.google.com/group/beagleboard/browse_thread/thread/ae2c601ebe104a4 USB and serial download target code] for some example target code to be downloaded to OMAP3 on BeagleBoard.<br />
<br />
===USB boot===<br />
<br />
Besides Nishanth' ''OMAP U-Boot Utils'', for USB boot, there is currently one (experimental) tool to boot BeagleBoard over USB:<br />
<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/2b9e99886bb7a747 Linux C utility]<br />
<br />
See [http://groups.google.com/group/beagleboard/browse_thread/thread/ae2c601ebe104a4 USB and serial download target code] for some example target code to be downloaded to OMAP3 on BeagleBoard.<br />
<br />
See [[BeagleBoardRecovery#USB_recovery|USB recovery section]] how to use USB boot for board recovery.<br />
<br />
==NAND boot==<br />
<br />
See [[BeagleBoardNAND|NAND boot]] article.<br />
<br />
==MMC/SD boot==<br />
<br />
Currently, [http://code.google.com/p/beagleboard/wiki/BootingBeagleBoard boot the BeagleBoard with MMC/SD] is the only working way for first board bring up.<br />
<br />
===MMC/SD formatting===<br />
<br />
As described in above MMC/SD boot description, you have to ''create a bootable partition on MMC/SD Card''. This can be done using e.g. Windows or Linux tools.<br />
<br />
'''Windows'''<br />
<br />
See ''HP USB Disk Storage Format Tool 2.0.6'' description on [http://code.google.com/p/beagleboard/wiki/BootingBeagleBoard boot the BeagleBoard with MMC/SD] page.<br />
<br />
'''Linux'''<br />
<br />
Please see [http://wiki.omap.com/index.php?title=MMC_Boot_Format OMAP3 MMC Boot Format].<br />
<br />
===Dual partition card===<br />
<br />
You can [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat create a dual-partition card], booting from a FAT partition that can be read by the OMAP3 ROM bootloader and Windows, then utilizing an ext2 partition for the Linux root file system.<br />
<br />
To mount second ext2 partition as root file system (e.g. containing contents of [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode rd-ext2.bin]) use kernel boot arguments (e.g. in uboot using ''setenv bootargs''):<br />
<br />
console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootwait<br />
<br />
===U-Boot booting===<br />
<br />
If your MMC/SD card formatting is correct and you put [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode MLO, u-boot.bin and uImage] on the card you should get a u-boot prompt after booting beagle board. E.g. (output from terminal program with 115200 8N1):<br />
<br />
...40T.........XH.H.U�..Instruments X-Loader 1.41<br />
Starting on with MMC<br />
Reading boot sector<br />
<br />
717948 Bytes Read from MMC<br />
Starting OS Bootloader from MMC...<br />
<br />
U-Boot 1.1.4 (Apr 2 2008 - 13:42:13)<br />
<br />
OMAP3430-GP rev 2, CPU-OPP2 L3-133MHz<br />
TI 3430Beagle 2.0 Version + mDDR (Boot ONND)<br />
DRAM: 128 MB<br />
Flash: 0 kB<br />
NAND:256 MiB<br />
In: serial<br />
Out: serial<br />
Err: serial<br />
Audio Tone on Speakers ... complete<br />
OMAP3 beagleboard.org #<br />
<br />
Using this u-boot prompt, you now can start kernel uImage stored on MMC card manually:<br />
<br />
OMAP3 beagleboard.org # mmc init<br />
OMAP3 beagleboard.org # fatload mmc 0:1 0x80000000 uimage<br />
OMAP3 beagleboard.org # bootm<br />
<br />
If you like to make that happen every boot:<br />
<br />
OMAP3 beagleboard.org # set bootcmd 'mmc init ; fatload mmc 0:1 0x80000000 uimage ; bootm' ; saveenv<br />
<br />
=Code=<br />
<br />
Code and binaries for BeagleBoard are available at various places.<br />
<br />
==Binaries==<br />
<br />
BeagleBoard pre-built binaries and source code can be found at [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode Beagle source code] and [http://code.google.com/p/beagleboard/downloads/list downloads] page. These are the locations where "official" TI code is available. Please note that this code is mainly for reference and testing. More up to date binaries and code is available by community. Community took (parts) of TI reference code, improves and updates it. <br />
<br />
Actually, [http://www.angstrom-distribution.org/node/47 Koen's prebuilt Beagleboard demo images] are up to date binaries including e17 as window manager, the abiword word processor, the gnumeric spreadsheet application, a NEON accelerated mplayer and the popular NEON accelerated omapfbplay which gives you fullscreen 720p decoding. The [http://www.angstrom-distribution.org/demo/beagleboard www.angstrom-distribution.org/demo/beagleboard] directory should contain all the files you need:<br />
<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/u-boot.bin u-boot.bin]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/MLO MLO]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/uImage uImage]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/Angstrom-Beagleboard-demo-image-glibc-ipk-2009.X-test-20090104-beagleboard.rootfs.tar.bz2 rootfs]<br />
<br />
See the [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat beagle wiki] on how to setup your SD card to use all this goodness.<br />
<br />
==Source==<br />
<br />
Besides above binary and source images (TI's and communities one), for various parts of Beagle software stack there are community supported [http://git.or.cz/ git] repositories available. <br />
<br />
===X-Loader===<br />
<br />
Steve did some work to consolidate and update X-Loader from various sources and put it in a [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=x-load-omap3.git;a=summary X-Loader git repository]. Get it by<br />
<br />
git clone git://gitorious.org/x-load-omap3/mainline.git xloader<br />
cd xloader/<br />
<br />
Build:<br />
<br />
make distclean<br />
make omap3530beagle_config<br />
make<br />
<br />
Result will be a ~20k sized ''x-load.bin'' in main directory.<br />
<br />
===U-Boot===<br />
<br />
[http://www.denx.de/wiki/U-Boot/WebHome Mainline U-Boot] has good support for BeagleBoard. Get it by:<br />
<br />
git clone git://git.denx.de/u-boot.git u-boot-main<br />
cd u-boot-main<br />
git checkout --track -b omap3 origin/master<br />
<br />
Build (assuming Code Sourcery GCC 2007q3):<br />
<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- mrproper<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- omap3_beagle_config<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- <br />
<br />
Result will be a ~160k sized ''u-boot.bin'' in main directory.<br />
<br />
Note: Due to (patch and binary) size, BeagleBoard splash screen was removed from upstream version. If you want it back, use [http://groups.google.com/group/beagleboard/browse_thread/thread/3ad9b803a3418624 U-Boot v1 BeagleBoard splash screen patch].<br />
<br />
Note: For experimental U-Boot patches not ready for mainline yet, Steve's [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=u-boot-omap3.git;a=summary Beagle U-Boot git repository] is used to test them. Get it by:<br />
<br />
git clone git://gitorious.org/u-boot-omap3/mainline.git u-boot-omap3<br />
cd u-boot-omap3<br />
git checkout --track -b omap3-dev origin/omap3-dev<br />
<br />
===Linux kernel===<br />
<br />
[http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git;a=summary Git repository] of [http://muru.com/linux/omap/ OMAP Linux kernel] contains Beagle support. Get it by:<br />
<br />
git clone git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git linux-omap-2.6<br />
cd linux-omap-2.6<br />
<br />
Build:<br />
<br />
make distclean<br />
make omap3_beagle_defconfig<br />
make menuconfig # only needed if you want to change the default configuration<br />
make uImage<br />
<br />
The result will be a ''uImage'' in ''arch/arm/boot/'' directory.<br />
<br />
If you use the OE toolchain and want to build outside of the OE tree you should do<br />
ARCH=arm<br />
PATH=~/oe/tmp/cross/armv7a/bin:~/oe/tmp/staging/i686-linux/usr/bin:$PATH # add cross tools to your path<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- distclean<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- omap3_beagle_defconfig<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- menuconfig # only needed if you want to change the default configuration<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- uImage<br />
Note: the staging dir in the path is for mkimage. If you've build a kernel before with oe, the program should be there<br />
<br />
Note: If you are interested in kernel development have a look to [[BeagleBoardLinuxKernel|manually compiling BeagleBoard kernel]], too.<br />
<br />
===Experimental kernel patches and hacks===<br />
<br />
Some beagle developers maintain their own kernel experimental patches and hacks not ready for upstream:<br />
<br />
* [http://cgit.openembedded.net/cgit.cgi?url=openembedded/tree/packages/linux/linux-omap Koen's collection of kernels patches for OE] and the [http://cgit.openembedded.net/cgit.cgi?url=openembedded/tree/packages/linux/linux-omap_git.bb list of relevant patches]<br />
* [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=linux-omap-2.6.git;a=shortlog;h=refs/heads/test Steve's kernel tree], a clone of main OMAP git with additional patches, mainly beagle audio (ASOC) related.<br />
* [http://git.mansr.com/?p=linux-omap;a=summary Mans' kernel tree], a clone of main OMAP git with additional patches, mainly display & framebuffer related.<br />
* [http://www.bat.org/~tomba/linux-omap.html Tomi's kernel tree], a clone of main OMAP git with display sub-system patches, replacing the entire display driver with one that is the likely direction moving forward.<br />
<br />
=Compiler=<br />
<br />
TI OMAP3530 processor on BeagleBoard contains an ARM Cortex-A8 general purpose processor and a TMS320C64x+ DSP.<br />
<br />
==ARM==<br />
<br />
There is broad compiler support including gcc - please see [http://www.elinux.org/ARMCompilers ARM Compilers]<br />
<br />
==C64x+ DSP==<br />
<br />
A free C64x DSP compiler is available as [https://www-a.ti.com/downloads/sds_support/targetcontent/LinuxDspTools/download.html Linux hosted C6x Code Generation Tools] (TMS320C6000 C/C++ CODE GENERATION TOOLS 6.1.3 July 2008).<br />
<br />
Note: my.TI account required. You may create an account [https://my.ti.com here]<br />
<br />
Note: Old c6000 Linux compiler available on [ftp://ftp.ti.com/pub/cs/linux_cgt500.tar.gz TI FTP site]. Does NOT support c64x+ core in OMAP3 devices. Not recommended.<br />
<br />
You can also utilize the [http://focus.ti.com/dsp/docs/dspsupportaut.tsp?familyId=44&sectionId=3&tabId=416&toolTypeId=30 full-CCS free evaluation tools for 120 days], but they currently require purchase to upgrade to service release 9 to support full JTAG debugging with supported JTAG hardware.<br />
<br />
See [[BeagleBoard/DSP_Howto| BeagleBoard DSP howto]] for information about how to use the DSP.<br />
<br />
=Cortex A8 ARM features =<br />
<br />
ARM Cortex-A8 in OMAP3 is a high performance dual-issue applications processor which reaches a performance of 2.0 DMIPS/MHz (compared to ARM11 at 1.2 DMIPS/MHz). It is ARM v7 architecture, which is fully backwards compatible with application code for previous ARM processors.<br />
<br />
It includes a floating point unit (ARM VFPv3 architecture) and the ARM NEON SIMD instruction set.<br />
<br />
See [http://pandorawiki.org/Floating_Point_Optimization Floating Point Optimization] article for an intro into VFP-lite and NEON.<br />
<br />
===ARM NEON===<br />
<br />
NEON is a 64/128-bit wide SIMD vector extension for ARM, which has been architected to be an efficient C compiler target as well as being used from assembly language. It has 32x 64-bit registers (with a dual view as 16x 128-bit registers) which can hold the following datatypes:<br />
* 64-bit signed/unsigned<br />
* 32-bit signed/unsigned<br />
* 32-bit single precision floating point<br />
* 16-bit signed/unsigned<br />
* 8-bit signed/unsigned<br />
<br />
The key advantage of NEON is very high performance vector math processing, whilst being easy to program. It is the same thread of control as the ARM (but different instructions), and is supported by the same tools, debuggers and operating systems.<br />
<br />
The NEON instruction set is documented in ARM's [http://infocenter.arm.com/help/topic/com.arm.doc.dui0204i/DUI0204I_rvct_assembler_guide.pdf RealView Compilation Tools Assembler Guide].<br />
<br />
For NEON optimized libraries see [http://www.us.design-reuse.com/news/18429/aac-mp3-mpeg-4-h-264-fft-openmax-cortex-a8-neon-arm11-processors.html ARM Releases AAC, MP3, MPEG-4, H.264 and FFT OpenMAX DL Libraries, Highly Optimized for Cortex-A8/NEON and ARM11 Processors]. Note: Read the [http://www.arm.com/products/esd/openmax_v7libraries.html EULA].<br />
<br />
NEON is currently used by<br />
* ffmpeg - libavcodec used by mplayer, omapfbplay, and many other linux applications<br />
* libpixman - used by X.org and Mozilla & Webkit browsers to render text and graphics<br />
* Bluez - official Linux Bluetooth stack<br />
<br />
=== ARM Cortex Floating Point ===<br />
<br />
There are two types of instructions in the ARM v7 ISA that handle floating point:<br />
<br />
1) '''VFPv3''' Floating point instruction set (used for single/double precision scalar operations).<br />
These is used by gcc for C floating point operations on 'float' and 'double'<br />
<br />
2) '''NEON''' [http://www.arm.com/products/multimedia/neon/ NEON] vectorized single precision operations (2 values in a D-register, or 4 values in a Q-register)<br />
These can be use by gcc when -ftree-vectorize is enabled and -mfpu=neon is specified, and the code can be vectorized. In other cases the VFPv3 scalar ops will be used.<br />
<br />
ARM Cortex-A processors have separate floating point pipelines that handle these different instructions.<br />
<br />
On Cortex-A8, the designers' focus was on the NEON unit performance which can sustain 1 cycle/instr throughput (processing 2 single-precision values at once). The scalar VFPv3 FPU cannot achieve this level of performance (cycle timings are in the Cortex-A8 TRM download), but it is still a lot better than doing floating point using integer instructions.<br />
<br />
If you need the highest performance floating point on Cortex-A8, you need to use single precision and ensure the code uses the NEON vectorized instructions:<br />
* use gcc with -ftree-vectorize (possibly modify source code to make it vector friendly)<br />
* use NEON instrinsics (#include <arm_neon.h>, float32x2_t datatype and vmul_f32() etc)<br />
* use NEON asm directly<br />
<br />
Keep in mind that mixing NEON and ARM load/stores can sometimes stall significantly. See [http://hardwarebug.org/2008/12/31/arm-neon-memory-hazards/ this link] for more info.<br />
<br />
On Cortex-A9, there is a much higher performance floating point unit which can sustain 1 cycle/instr throughput, with low result latencies.<br />
<br />
=Board recovery=<br />
<br />
If you played e.g. with the contents of the [http://www.sakoman.net/omap3/flash%20procedure.txt NAND], it might happen that the Board doesn't boot any more (without pressing user button) due to broken NAND content. See [[BeagleBoardRecovery|BeagleBoard recovery]] article how to fix this.<br />
<br />
=Development environments=<br />
<br />
Instead of just using compiler + editor, you can use complete image create "development tool chains" which integrate compiler, build system, packaging tools etc. in one tool chain.<br />
<br />
==OpenEmbedded==<br />
<br />
For [http://www.openembedded.org/ OpenEmbedded] (OE), there are some hints how to [http://www.beagleboard.org/irclogs/index.php?date=2008-04-29#T13:06:25 start with OE for BeagleBoard]. See [[BeagleBoardAndOpenEmbeddedGit|BeagleBoard and OpenEmbedded Git]] and [http://wiki.openembedded.org/index.php/Getting_Started OpenEmbedded getting started] as well.<br />
<br />
In the OE getting started document, for BeagleBoard replace ''MACHINE = "om-gta01"'' by ''MACHINE = "beagleboard"''. After confirming ''bitbake nano'' works, try ''bitbake console-image''. The first time you run bitbake OE will download all the needed source and build the tool chain. This will take several hours. After all went fine, the output is in ''${OE_ROOT}/tmp/deploy/glibc/images/beagleboard''.<br />
<br />
Note: Koen has some BeagleBoard [http://amethyst.openembedded.net/~koen/index.php?path=beagleboard/ source and binary images] built with OE. There, ''Angstrom-console*'' images don't include an X server, you can still use a e.g. DVI-D screen with console, but you won't have a GUI. ''Angstrom-x11*'' images contain an X server.<!-- DEAD LINK: resulting in something like [http://scap.linuxtogo.org/files/fc987d4acb2c745fb7e19cf4dca8de70.png this].--><br />
<br />
===One very important note:=== <br />
<br />
It's important to have an X-Loader on your Beagleboard that uses the uImage on the SD Card that goes with Angstrom. The B6 Beagleboards do not appear to come with such an X-Loader. So you likely will have to upgrade the X-Loader. Here's what to do:<br />
* Make an SD Card with the [http://www.angstrom-distribution.org/demo/beagleboard Angstrom Demo files]. See the [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat Beagleboard Wiki Page] for more info on making the SD Card.<br />
* Put the SD Card in the Beagle, and boot up to the U-Boot Prompt.<br />
* Do the first six instructions in the [http://code.google.com/p/beagleboard/wiki/BeagleNANDFlashing Flashing Commands with U-Boot] section. <br />
* Reboot the Beagle to see that the new X-Loader is properly loaded.<br />
<br />
This will update the X-Loader to a newer version that will automatically load uImage from the SD Card when present -- rather than always using the uImage in the Beagleboard NAND.<br />
<br />
==Eclipse==<br />
The Eclipse [http://www.eclipse.org/cdt/ C Development Tools Project] provides a "fully functional C and C++ Integrated Development Environment (IDE) for the Eclipse platform". The Eclipse [http://www.eclipse.org/dsdp/tm/ DSDP Target Managment Project] provides a "Remote System Explorer" (RSE) plugin that simplifies downloading files to the BeagleBoard and editing files on the BeagleBoard within the Eclipse IDE. A Linux Target Agent is available as part of the [http://wiki.eclipse.org/DSDP/TM/TCF_FAQ Target Communications Framework (TCF) component]. Info on how RSE is used for e.g. Gumstix development is described in [http://groups.google.com/group/beagleboard/browse_thread/thread/509831f7c24cb79f# this post].<br />
<br />
==Android==<br />
[http://source.android.com Android] platform is a software stack for mobile devices including an operating system, middleware and key applications. Developers can create applications for the platform using the [http://code.google.com/android/ Android SDK]. Applications are written using the Java programming language and run on Dalvik, a custom virtual machine designed for embedded use which runs on top of a Linux kernel.<br />
<br />
There are several resources for Android on OMAP (Beagle) available:<br />
<br />
'''OMAPZOOM'''<br />
<br />
You can find Android port for OMAP ZOOM architecture on [https://omapzoom.org/gf/project/omapandroid/wiki/ OMAPZoom.org's wiki page on Android]. <br />
<br />
'''EMBINUX'''<br />
<br />
[http://beagleboard.org/project/android Beagleboard.org's Android project page] [http://groups.google.com/group/beagleboard/browse_thread/thread/7b422f113ce489b5 announced], the successful porting of Android on Beagle board by [http://embinux.com EMBINUX&trade;] Team. The [http://labs.embinux.org/git/ source code] and [http://www.embinux.com/download_beagle.php binaries] are available for download and review. <br />
<br />
Detailed instructions, for porting Android on Beagle Board, are available [http://labs.embinux.org/index.php/Main_Page here]. Current release supports input devices (keyboard/mouse), network and sound.<br />
<br />
You can [http://in.youtube.com/watch?v=nADn_vNVEKw watch Android booting] on Beagle Board.<br />
<br />
'''Android on OMAP wiki'''<br />
<br />
Wiki page for Andorid on OMAP can be found [[Android on OMAP|here]]<br />
<br />
'''0xdroid'''<br />
<br />
[http://gitorious.org/0xdroid 0xdroid], the enhanced version of Android on Beagleboard by [http://0xlab.org 0xlab]. The [http://gitorious.org/0xdroid source code], [http://downloads.0xlab.org/ pre-built binaries], and [http://code.google.com/p/0xdroid/issues/list issue tracker] are available for review and reference.<br />
<br />
The latest development supports OMAP audio, OMAP video overlays, ARM Cortex A8 NEON/Thumb2 performance optimizations, mouse cursor, hot-pluggable USB keyboard & mouse, user-friendly installer for system image, and various Android tweaks. Detailed instructions for 0xdroid are available through [http://gitorious.org/0xdroid/pages/Home gitorious wiki].<br />
<br />
You can [http://www.youtube.com/watch?v=v6wdTOHrwQw watch 0xdroid demo video] on Beagle Board.<br />
<br />
==Mamona==<br />
<br />
[http://dev.openbossa.org/trac/mamona/wiki Mamona] is an embedded Linux distribution for ARM EABI. The main goal of the Mamona Project is to offer a completely open source alternative/experimental platform for [http://maemo.org/ Maemo] using only free and open source components. Mamona [http://rsalveti.wordpress.com/2008/09/12/mamona-02-is-out 0.2] [http://franciscoalecrim.com/blog/2008/07/29/mamona-working-with-beagleboard/ supports] [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12013&contentId=28741 OMAP3430 Software Development Platform (SDP)], so you can also use it at Beagle (OMAP3530), too. Work is being done to officially support Beagle.<br />
<br />
==Ubuntu==<br />
<br />
See [[BeagleBoardUbuntu|Ubuntu (ARM)]] installation guide how to install Ubuntu (ARM) on BeagleBoard.<br />
<br />
==Debian ARM==<br />
<br />
See [[BeagleBoardDebian|Debian (ARM)]] installation guide how to install Debian (ARM) on BeagleBoard.<br />
<br />
==Handhelds Mojo ARM==<br />
<br />
See [[BeagleBoardHandheldsMojo|Handhelds Mojo (ARM)]] installation guide how to install Handhelds Mojo (ARM) port of Ubuntu on BeagleBoard. (The Mojo project is no longer active, see the Official Ubuntu ARM-port above instead)<br />
<br />
==Scratchbox==<br />
<br />
[http://www.scratchbox.org/ Scratchbox] is a cross-compilation toolkit designed to make embedded Linux application development easier. It also provides a full set of tools to integrate and cross-compile an entire Linux distribution. See [http://felipec.wordpress.com/2009/06/07/installing-scratchbox-1-and-2-for-arm-cross-compilation/ Felipe's Scratbox 1 and 2 intro], too.<br />
<br />
=Software hints=<br />
<br />
This section collects hints, tips & tricks for various software components running on beagle.<br />
<br />
==QEMU==<br />
<br />
[[Qemu|QEMU]] [http://vm-kernel.org/blog/2008/12/15/linux-is-running-on-qemu-omap3/ supports OMAP3] being able to boot a BeagleBoard Linux kernel.<br />
<br />
==Linux hints==<br />
<br />
See BeagleBoard [http://code.google.com/p/beagleboard/wiki/LinuxHints Google wiki Linux hints] page (for Linux WTBU (Wireless TI Business Unit) kernel [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode 2.6.22]). Currently featuring:<br />
<br />
* Switching video output between DVI-D and S-Video<br />
* Disabling framebuffer blanking<br />
* Listing USB devices<br />
<br />
==lmbench==<br />
<br />
Avik posted a detailed [http://groups.google.com/group/beagleboard/browse_thread/thread/c8b8f07ce61161a1 step-by-step procedure] to run [http://sourceforge.net/project/showfiles.php?group_id=14418 lmbench] on Beagle.<br />
<br />
==Mediaplayer (FFmpeg)==<br />
<br />
There is a thread how to get a [http://groups.google.com/group/beagleboard/browse_thread/thread/9b8025fc15120fd9# mediaplayer] with NEON optimization (FFmpeg) to run on Beagle. Includes compiler hints and patches.<br />
<br />
==Java==<br />
<br />
When using the [[BeagleBoard#OpenEmbedded|OpenEmbedded]]-based Angstrom image you have the following options of Java support:<br />
* JamVM + GNU Classpath (small vm, fast interpreter, J2SE-like)<br />
* Cacao + GNU Classpath (JIT compiler, J2SE-like)<br />
* PhoneME Advanced Foundation (JIT compiler, CDC)<br />
<br />
Java support in OpenEmbedded/Angstrom ([http://wiki.openembedded.net/index.php/Java details]) is provided voluntarily through [http://jalimo.org Jalimo].<br />
<br />
See a [http://groups.google.com/group/beagleboard/browse_thread/thread/102f627253919783# post at mailing list], too.<br />
<br />
OpenEmbedded users can add the [http://evolvis.org/scm/?group_id=11 Jalimo Subversion repository] as an overlay (instructions are in the repository). This will allow them to build OpenJDK packages. Inclusion of these recipes in mainline OpenEmbedded is planned but still ongoing.<br />
<br />
The recipes offer the following functionality:<br />
<br />
* OpenJDK + Hotspot (Zero port) (all J2SE functionality, including JVMTI, interpreted only)<br />
* OpenJDK + Cacaco (all J2SE library features, missing JVMTI, decent JIT compiler)<br />
* OpenJDK + Hotspot (Shark port) (not working yet)<br />
<br />
Some guy from ARM Ltd. is working on interpreter optimization in Zero for ARM.<br />
<br />
People interested in getting this stuff working better should contact people on:<br />
* [http://evolvis.org/mail/?group_id=11 Jalimo Mailinglist]<br />
* [http://mail.openjdk.java.net/mailman/listinfo/distro-pkg-dev Icedtea Mailinglist]<br />
<br />
You should also check out IcedTea's [http://iced-tea.org/wiki/FrequentlyAskedQuestions FAQ].<br />
<br />
=Graphics accelerator=<br />
<br />
OMAP3530 used on BeagleBoard contains a graphics accelerator (SGX) based on the SGX core from [http://www.imgtec.com/ Imagination Technologies]. [http://www.imgtec.com/powervr/powervr-graphics.asp PowerVR] SGX530 is a new generation of programmable PowerVR graphics and video IP cores. Only the kernel portions of Linux drivers will be open source. The PowerVR folks will provide binary user-space libraries. Using the EMail contact at [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12700&contentId=27458 TIs Mobile Gaming Developers page] there are Linux v2.6 OMAP3430 SDKs for OMAP3 Zoom and SDP supporting OpenGL ES v2.0, OpenGL ES v1.1 and OpenVG 1.0 available.<br />
<br />
Tutorial:<br />
* [http://code.google.com/p/beagleboard/wiki/HowtoUseSGXunderAngstrom How to use SGX with Angstrom in OE]<br />
<br />
Some videos:<br />
<br />
* [http://www.youtube.com/watch?v=3ToYOgP9f9U SGX on Beagle working with Linux 2.6.27]<br />
* [http://www.youtube.com/watch?v=24TXpqa9jG0&feature=related OpenGL ES 2.0 shader effects on OMAP3]<br />
* [http://www.youtube.com/watch?v=-UFUbqoNgs8&feature=related 3D User Interface on OMAP3 Platform]<br />
* [http://www.youtube.com/watch?v=8KcNgeUriqA 3D Mapping using OpenGL ES 2.0 on OMAP3 Platform]<br />
* [http://www.youtube.com/watch?v=7D3V6BUpGLE Video blending in hardware]<br />
* [http://www.hitlabnz.org/wiki/EmbeddedAR An Augmented Reality application combining ARToolkit and OpenGL ES 2.0]<br />
<br />
=Beginners guide=<br />
<br />
You just got your new BeagleBoard, and now? See [[BeagleBoardBeginners|beginners guides]].<br />
<br />
=FAQ=<br />
<br />
For BeagleBoard frequently asked questions (FAQ) see [[BeagleBoardFAQ|community FAQ]] and "official" [http://beagleboard.org/support/faq BeagleBoard.org FAQ].<br />
<br />
=Links=<br />
==Home page==<br />
[http://beagleboard.org/ beagleboard.org] (beagle board home)<br />
* Using [http://www.google.de/ Google] you can search beagleboard.org (including [http://www.beagleboard.org/irclogs/ IRC logs]) using ''site:beagleboard.org <search term>''<br />
<br />
==Manuals and resources==<br />
* [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard HW Reference Manual (rev. C2)]<br />
* [http://beagle.s3.amazonaws.com/BBSRM_7_2_0.pdf BeagleBoard HW Reference Manual (rev. B7)]<br />
* [http://www.beagleboard.org/uploads/BBSRM_6.pdf BeagleBoard HW Reference Manual (rev. B6)]<br />
* [http://www.beagleboard.org/uploads/BBSRM_B5.pdf BeagleBoard HW Reference Manual (rev. B5)]<br />
* [http://www.beagleboard.org/uploads/Beagle_HRM_B4.pdf BeagleBoard HW Reference Manual (rev. B4)]<br />
* [http://www.beagleboard.org/uploads/Beagle_HW_Reference_Manual_A_5.pdf BeagleBoard HW Reference Manual (rev. A5)]<br />
* [http://focus.ti.com/docs/prod/folders/print/omap3530.html OMAP3530] processor description and manuals<br />
* [http://code.google.com/p/beagleboard/ Beagle at code.google.com]<br />
* [http://focus.ti.com/dsp/docs/dspsupporttechdocs.tsp?sectionId=3&tabId=409&familyId=1526&documentCategoryId=4&techDoc=4 OMAP3530/25 CBB BSDL Model]<br />
* [http://www.micron.com/products/mcps/beagleboard Micron's multi chip packages (MCPs) for Beagle Board]<br />
* [http://beagleboard.org/resources Beagleboard resources page with hw docs]<br />
* Some [http://www.rasterman.com/ performance comparison] of BeagleBoard Rev. B with some other ARM/PC systems.<br />
* OMAP3 pinmux [http://www.hy-research.com/omap3_pinmux.html setup]<br />
* [http://elinux.org/BeagleBoardPinMux OMAP3 eLinux pinmux page]<br />
<br />
==Contact and communication==<br />
* [http://groups.google.com/group/beagleboard Beagle board discussion list]<br />
* [http://code.google.com/p/beagleboard/issues/list Beagle board open point list & issue tracker]<br />
* [http://beagleboard.blogspot.com/ Beagle board blog]<br />
* [http://feeds.feedburner.com/BeagleBoard Beagle board RSS feed]<br />
* Chat:<br />
** [http://beagleboard.org/chat Beagle Board chat]<br />
** IRC: #beagle channel on irc.freenode.net<br />
** [http://www.beagleboard.org/irclogs/index.php IRC archive]<br />
* [http://www.beaglesride.org/ Beagles Ride], a site about building a community around the BeagleBoard focused on in vehicle applications<br />
* [http://www.beagleboard.de/ German Beagle Board Forum and Wiki]<br />
<br />
==TI resources==<br />
* [http://opensource.ti.com/ TI open source page]<br />
* [https://community.ti.com/ TI E2E (Engineer-to-Engineer) Community]<br />
* [http://marc.info/?l=linux-omap&m=120761100810527&w=2 DSP Bridge driver for OMAP3 platform]<br />
* [http://lists.arm.linux.org.uk/lurker/message/20080701.142512.5eeff26b.en.html ARMv7 Oprofile support]<br />
* [http://focus.ti.com/pdfs/wtbu/swpu114g.pdf OMAP34xx Wireless Technical Reference Manual] (swpu114g.pdf, 47 MB)<br />
* [http://amethyst.openembedded.net/~koen/index.php?sort=date&order=desc&path=beagleboard/ Koen's (OpenEmbeded) BeagleBoard source and binaries]<br />
* [http://del.icio.us/tag/beagleboard+peripheral+verified Verified peripherals for BeagleBoard]<br />
* [http://www.celinux.org/elc08_presentations/TI_OMAP3430_Linux_PM_reference.ppt OMAP3430 Linux Power Management presentation]<br />
==Articles==<br />
* [http://linuxdevices.com/news/NS5852740920.html LinuxDevices article about Beagle]<br />
* [http://www.linuxdevices.com/news/NS8479495970.html LinuxDevices article about Digi-Key launch]<br />
* [http://www.linuxdevices.com/news/NS5682470737.html LinuxDevices article about Beagle Rev C, Beagle MID from HY Research, Touch Book and Sponsored Projects Contest]<br />
<br />
==Books==<br />
* [[OMAP_and_DaVinci_Software_for_Dummies|OMAP and DaVinci Software for Dummies]]<br />
==Past Beagle events==<br />
* TIDC, February 26-28, 2008: [http://www.beagleboard.org/uploads/tidc_opensource.pdf Slides from TI developer conference (TIDC) open source session], covering also beagle board<br />
* [http://www.lugradio.org/live/USA2008/ LUG RADIO Live USA 2008, April 12-13, 2008]: [http://www.beagleboard.org/uploads/lugradio_20080411.PPT TI/Beagle Presentation] and [http://forums.lugradio.org/viewtopic.php?f=4&t=4094&st=0&sk=t&sd=a&sid=d69cc807569ab41e33f93af698c536b8&start=15#p41549 video]<br />
* LinuxTag, May 28-31, 2008: [http://www.flickr.com/photos/jadon/2551439955/in/pool-beagleboard picture 1] and [http://www.flickr.com/photos/jadon/2535692865/in/pool-beagleboard picture 2]<br />
* [http://lugradio.org/live/UK2008/travel LugRadio Live UK 2008], July 19 - July 20, 2008: [http://www.flickr.com/photos/koenkooi/tags/lugradiolive/ Koen's pictures] showing e.g. [http://www.bigbuckbunny.org/index.php/download/ Big Buck BUNNY] playing at Beagle. [http://linuxoutlaws.com/podcast/48 Interview with Linux Outlaws (52:06)] and the [http://www.youtube.com/watch?v=m9xVbntl-DY video]<br />
* [http://osscamp.in/index.php/OSScamp_Bengaluru_Mobile_2008 OSScamp Bengaluru Mobile 2008], July 19, 2008<br />
* [http://www.linuxworldexpo.com LinuxWorld Conference & Expo], August 4 - August 7, 2008: [http://www.flickr.com/photos/jadon/sets/72157606586084668/ pictures with living beagle] and from [http://www.flickr.com/photos/linuxjournal/2738316951/in/set-72157606634486338/ Linux Journal's photostream]<br />
* BeagleBoard.org event at Jillian's during LinuxWorldExpo, August 5, 2008, 5:30-7:30 pm<br />
* [http://barcamp.pbwiki.com/BarCampHouston3 BarCamp Houston 3], August 9, 2008, 9:00 A.M.: [http://www.flickr.com/photos/jadon/sets/72157606656532041/ pictures]<br />
* NIT Suratkal, India [http://www.nitkieee.com/site/sp-connect2/schedule IEEE SP Connect 2], August 30, 20008<br />
* [http://barcampbangalore.org/wiki/BCB7_Demos BarCamp Bangalore], India, September 13, 2008<br />
* [http://www.ibc.org/ IBC 2008], September 11 - September 16, 2008: [http://www.flickr.com/photos/koenkooi/tags/ibc2008/ pictures]<br />
* Free Open "Embedded Linux" Training for Students in India, [http://code.google.com/p/beagleboard/wiki/Trainings?updated=Trainings&ts=1220250913 beagleboard.org Trainings in India], September 20, 2008: [http://www.youtube.com/watch?v=A6FLdmgQlb4&feature=PlayList&p=1BAB6EE9CC7285AD&index=0 video], [http://www.flickr.com/photos/25691331@N04/sets/72157607419766102/ photos] and [http://lakshmansrikanth.blogspot.com/2008/09/linux-embedded.html blog]<br />
* [http://www.embedded.co.uk/ Embedded Systems Show 2008], Birmingham, UK, October 1-2, 2008<br />
* [http://www.mvista.com/vision/ MontaVista Vision 2008 Embedded Linux Developers Conference], San Francisco, California, October 1-3, 2008 : [http://www.mvista.com/download/topic.php?t=18 Video and presentation overview], [http://www.mvista.com/download/fetchdoc.php?docid=323 William Mills' presentation], [http://www.mvista.com/download/fetchdoc.php?docid=333 Jason Kridner's presentation]<br />
* [http://www.rtcgroup.com/arm/2008/ ARM Developers' Conference], Santa Clara Convention Center, Santa Clara, Calif., USA, October 7-9, 2008<br />
* [http://www.cmp-egevents.com/web/escb Embedded Systems Conference Boston 2008], Hynes Convention Center, Boston, USA, October 26 - October 30, 2008: [http://beagleboard.org/demo/esc Resources]<br />
* [[BeagleBoard/contest|BeagleBoard contest]] #1: Create a cool BeagleBoard application and win a Rev C1! Closed, ran until January 9, 2009<br />
* [http://www.silica.com/events/seminars/seminar-overview/ti-omp-workshop.html OMAP35x training by Silica], January 21, 2009, Cambridge, UK, ARM Holdings Lecture Theatre. [[RichardB's notes from the seminar]]<br />
* [[BeagleBoard/contest|BeagleBoard contest #2]], unitl February 27, 2009: : Create a cool BeagleBoard application and win a Rev C2!<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/b15cf8a5797c73a2 Silica - Free TI - ARM OMAP Workshop], Brussels, Europe, March 31st 2009<br />
* SILICA's [http://www.silica.com/events/seminars/seminar-overview/ti-omap-piccolo-poing.html Texas Instruments 2-in-1 Seminar: OMAP & Piccolo], May 13th 2009: Poing (Munich) - Germany<br />
* 24th until 27th June 2009: [http://www.linuxtag.org/2009/en.html Linux Tag Germany] with [http://groups.google.com/group/beagleboard/msg/27fefef5f1d2ef73 TI booth] and [http://www.linuxtag.org/2009/en/program/freies-vortragsprogramm/all-events/details.html?talkid=183 Beagle presentation]<br />
* until 31st July 2009: [http://www.cranessoftware.com/services/training/beagledesigncontest.html BeagleBoard Design Contest INDIA Edition] ([http://beagleboard.blogspot.com/2009/04/beagleboard-design-contest-india.html blog entry])<br />
* TI Technology Day Dallas, Tex. on June 16 will held a [http://www.linuxdevices.com/news/NS5682470737.html BeagleBoard users group meeting] (see section ''Availability'').<br />
<br />
==Beagle wiki pages==<br />
* [[BeagleBoardBeginners|BeagleBoard beginners guides]]<br />
* [[BeagleBoardAndOpenEmbeddedGit|BeagleBoard and OpenEmbedded Git]] installation guide and [[BeagleBoardOpenEmbeddedDevelopment|OpenEmbedded development]]<br />
* [[BeagleBoardDebian|Debian on BeagleBoard]] usage guide<br />
* [[BeagleBoardHandheldsMojo|Handhelds Mojo (ARM) on BeagleBoard]] usage guide (formerly known as Ubuntu (ARM))<br />
* [[BeagleBoardUbuntu|Ubuntu (ARM EABI) distribution at BeagleBoard]]<br />
* [[BeagleBoardRecovery|BeagleBoard recovery]] about fixing boards not booting any more because of broken NAND content<br />
* [[BeagleBoardJTAG|BeagleBoard JTAG]] and [[OMAP3530_ICEPICK|OMAP3530_ICEPICK]] about JTAG on BeagleBoard<br />
* [[BeagleBoardOpenOCD|BeagleBoard OpenOCD]] has infos about status and usage of open source JTAG software OpenOCD with Beagle<br />
* [[BeagleBoardNAND|BeagleBoard NAND boot]] about how to boot BeagleBoard from NAND flash<br />
* [[BeagleBoardPeripherals|BeagleBoard peripherals and adapters page]] about useful BeagleBoard add ons.<br />
* [[Mount_BeagleBoard_Root_Filesystem_over_NFS_via_USB|Mount BeagleBoard root file system over NFS via USB]]<br />
* [[BeagleBoardFAQ|BeagleBoard FAQ]]<br />
* [[BeagleBoardSugar|Sugar on BeagleBoard]]<br />
* [[BeagleBoard/DSP_Howto|BeagleBoard DSP howto]]<br />
* [[BeagleBoardRawLCD|Interfacing BeagleBoard to Raw LCD]]<br />
* [[BeagleBoard/gst-openmax|BeagleBoard OpenMAX usage]]<br />
* [[BeagleBoard/video|BeagleBoard video]]<br />
* [[BeagleBoardOpenCV|Using OpenCV computer vision library with BeagleBoard]]<br />
* [[BeagleBoard/James|James]]: Just A Miniature Entertainment System<br />
* [[U-boot_musb_gadget_support|U-boot musb gadget support]]<br />
* [[BeagleBoard-JP|Japanese translation of this Beagle page]]<br />
* [[BeagleEPD|BeagleBoard E-Ink Platform Driver]]<br />
* [[BeagleBoardFedora|Random hacking notes for getting Fedora 10 to kinda work with the BeagleBoard]]<br />
* BeagleBoard specific [[BeagleBoard/GSoC|Google Summer of Code 2009]] page, [[BeagleBoard/Ideas-2009|GSoC project ideas]] and [[BeagleBoard/GSoC/Application|GSoc application]]<br />
* [[BeagleBoard/Poky|Poky]] for BeagleBoard<br />
* [[Xenarc_USB_touchscreen_for_Beagleboard/OMAP3_EVM|Xenarc USB touchscreen for Beagleboard/OMAP3 EVM]]<br />
* [[BeagleBoard/BugAdapter|BeagleBoard Bug Adapter board]]<br />
* [[BeagleBoardDebianWifiInstallInfo|BeagleBoard Debian WiFi install info]]<br />
* [[BeagleBoard/DSP_Clarification|Info about the various Linux DSP systems for OMAP chips]]<br />
* [[BeagleBoardPinMux|BeagleBoard PinMux]]<br />
* [[BeagleBoardLinuxKernel|BeagleBoard Linux kernel manual compile]]<br />
* [http://www.hervanta.com/stuff/Beaglebot Beaglebot]: build an experimental robotics project with Beagle<br />
* [http://code.google.com/p/beagleboard/w/list code.google.com BeagleBoard wiki]<br />
* '''[[BeagleBoard/contest|BeagleBoard contest]]'''<br />
* [http://en.wikipedia.org/wiki/Beagle_Board Wikipedia BeagleBoard page]<br />
* [http://labs.embinux.org/index.php/Android_Porting_Guide_to_Beagle_Board Android port for BeagleBoard]: Instructions for porting Android on BeagleBoard<br />
* [[BeagleBoard/bangalore_user_meet |BeagleBoard Bangalore User Meet]]<br />
* [[BeagleBoardEclipse|Using Eclipse with Beagle]] (for JTAG debugging)<br />
* [[Zoom2Beginners|Zoom2 for Beginners]]<br />
* [http://wh1t3s.com/2009/05/11/beagleboard-as-usb-mass-storage-device-via-usb-otg/ BeagleBoard as USB Mass Storage Device via USB OTG]<br />
* [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/index.htm BeagleBoard as solar powered computer]<br />
* [http://blog.makezine.com/archive/2009/02/blinking_leds_with_the_beagle_board.html Blinking LEDs with the Beagle Board] from Make:Online<br />
* [http://www.crashcourse.ca/wiki/index.php/BeagleBoard Robert's private Beagle wiki] (please don't add anything there, do it here. It will help to avoid scattering. Thanks!)<br />
* [http://felipec.wordpress.com/2009/03/26/omap3-public-dsp-binaries-now-work/ Felipe's blog] about D1 MPEG-4 decoding using less than 15% of CPU with help of DSP<br />
* [http://www.syspire.de/node/3 Embedded Mediacenter] based on BeagleBoard (German)<br />
* [http://pandorawiki.org/Floating_Point_Optimization Floating Point Optimization] with VFP-lite and NEON intro<br />
* [http://particolarmente-urgentissimo.blogspot.com/2009/09/beagleboard-setting-date-via-gps.html Beagleboard setting date via GPS]<br />
<br />
==Beagle photos==<br />
* [http://www.flickr.com/groups/beagleboard/pool/ Beagle board pictures at flickr]<br />
* [http://www.flickr.com/photos/32615155@N00/2439256116/ Beagle board and USRP]<br />
* [http://www.flickr.com/photos/nishanthmenon/2438406603/ Modify SDP3430 QUART cable for beagle]<br />
* [http://www.flickr.com/photos/koenkooi/2695061759/ MythTV on Beagle]<br />
==Beagle videos==<br />
* [http://uk.youtube.com/watch?v=fL_XMieanSc Beagle Board Beginnings]<br />
* [http://www.youtube.com/watch?v=cXr-D1wROfQ Beagleboard in the Living Room]<br />
* [http://uk.youtube.com/watch?v=FuVwh_VrIxk Beagle Board 3D, Angstrom, and Ubuntu]<br />
* [http://uk.youtube.com/watch?v=TUYOjRGYeYU testsprite with beagleboard]<br />
* [http://uk.youtube.com/watch?v=9Z4ZTovtFKk Beagleboard LED demo]<br />
* [http://uk.youtube.com/watch?v=R33dzREZGEk LCD2USB attached to a beagleboard]<br />
* [http://www.youtube.com/watch?v=7D3V6BUpGLE Video blending in hardware]<br />
* [http://www.youtube.com/watch?v=-tUBXD-KRp4 Beagle Running Angstrom (VGA) on DLP Pico Projector]<br />
* [http://www.youtube.com/watch?v=3ToYOgP9f9U SGX on Beagle working with Linux 2.6.27]<br />
* Not on Beagle OMAP3530: [http://youtube.com/watch?v=5i9cWOK1spw Ubuntu 7.04 on on OMAP3430 SDP]<br />
* [http://in.youtube.com/watch?v=nADn_vNVEKw Beagle Board booting Android]<br />
<br />
==Beagle manufacturing==<br />
* [http://www.youtube.com/watch?v=C-CwkjT9z_0&feature=related Beagle Solder Paste Screening]<br />
* [http://www.youtube.com/watch?v=9LLjDovIG2M&feature=related Beagle Assembly Inspection]<br />
* [http://www.youtube.com/watch?v=sbOZfBnoVnM&feature=related Beagle Functional Test]<br />
* [http://www.youtube.com/watch?v=cvDtXmJJcEI&feature=related Beagle Reflow]<br />
* [http://www.youtube.com/watch?v=W2o4NTASxN0&feature=related Beagle Board Assembly at Circuitco]<br />
==Fun==<br />
* Enjoy [http://www.beaglegame.com/ BeagleGame]<br />
<br />
=Other OMAP boards=<br />
<br />
* OMAP1 OMAP5912 (ARM9 + C5x DSP) based [[OSK|OSK]] board.<br />
* OMAP3 OMAP3430 based [https://gforge.ti.com/gf/project/omapzoom/wiki/?pagename=HardwareInformation Zoom MDK], which has been superseded by the [http://www.logicpd.com/products/development-kits/texas-instruments-zoom%E2%84%A2-omap34x-ii-mdp Zoom II], and other [http://www.logicpd.com/products LogicPD kits].<br />
* OMAP3 OMAP3530 based [http://www.openpandora.org/ Pandora]<br />
* OMAP3 OMAP3503 based [http://www.gumstix.net/Overo/cat/Overo/115.html Gumstix Overo]<br />
* OMAP3 OMAP35x based EVM from [http://mistralsolutions.com/products/omap_3evm.php Mistral] and [http://focus.ti.com/docs/toolsw/folders/print/tmdxevm3503.html TI] (both are the same)<br />
* OMAP3 OMAP3430 based [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12013&contentId=28741 Software Development Platform (SDP)]<br />
* OMAP3 OMAP3530 based board from [http://www.magniel.com/omap3.html Magniel Inc.]<br />
* OMAP3 based [http://www.archos.com/products/imt/index.html?country=us&lang=en Archos 5, ARCHOS 5G and ARCHOS 7]<br />
* OMAP3 OMAP35x based [http://www.logicpd.com/products/som/ti/omap35x OMAP35x SOM-LV]<br />
* OMAP3 based [[Mini_Board|ICETEK-OMAP3530-Mini]], a Chinese BeagleBoard clone, with a [[MiniBoardFAQ|FAQ]]<br />
* OMAP3 based [http://www.ebv.com/en/products/categories/details/product/ebvbeagle-board EBVBeagle], a German BeagleBoard clone<br />
* OMAP3530 based [http://www.bsquare.com/products/hardware_solutions/3530.asp BSQUARE’s Dev Kit OMAP3530]<br />
* OMAP3530 based [http://beaversource.oregonstate.edu/projects/cspfl/wiki/CSPFL_Hardware OSWALD]<br />
* OMAP3 BeagleBoard-based [http://www.alwaysinnovating.com/touchbook/ Touch Book]<br />
* OMAP3530 based [http://www.analogue-micro.com/Cobra3530.html Cobra 3530 OMAP3530 module ]<br />
* OMAP3 based [http://www.kwikbyte.com/KBOC.html KwikByte 35XX System Module]<br />
* OMAP3530 based [[DevKit8000]], a Chinese BeagleBoard clone, slightly larger with additional peripherals (e.g. LCD/TSP, Ethernet and keyboard)<br />
* OMAP3530 based [http://www.igep-platform.com/ IGEPv2 Platform], a Spanish BeagleBoard clone, slightly larger, with additional peripherals like e.g. ethernet connector, wifi+bluetooth.<br />
* OMAP35x based [http://www.ultratronik.de/mmi-rechnerplattformen.html MMI4 from Ultratronik]<br />
* OMAP35x based [http://www.technexion.com/index.php/tao-3530 TAO-3530 from TechNexion]</div>Rpjdayhttps://elinux.org/index.php?title=BeagleBoard_Community&diff=14321BeagleBoard Community2009-10-20T22:00:07Z<p>Rpjday: Correct the actual name and version of the SRM.</p>
<hr />
<div>[[Category: Linux]]<br />
[[Category: OMAP]]<br />
[[Category:Development Boards]]<br />
[[Category: BeagleBoard]]<br />
This page collects information about [http://www.ti.com/ TI's] [http://www.arm.com/ ARM] based [http://focus.ti.com/general/docs/gencontent.tsp?contentId=36915&amp;DCMP=OMAP_Feb27_2008&amp;HQS=Other+PR+omap3503pr OMAP3] [http://beagleboard.org Beagle Board].<br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:#ffffcc; align:right; "><br />
'''NEWS:''' [http://www.tincantools.com/product.php?productid=16147&cat=0&page=1&featured Zippy] Expansion boards for the [[BeagleBoard]] are now available!<br />
</div><br />
<br />
<br />
=Events=<br />
* Thursday, August 27th: [http://wiki.omap.com/index.php/ETechDays_Lightning_Talks ETechDays Lightning Talks]. 15 minute lightning talks via IRC, WebEx or Dial-In.<br />
* 22.- 23.08.2009, Sankt Augustin, Germany: [http://www.froscon.de/en/ FrOSCon 2009] ([http://groups.google.com/group/beagleboard/browse_thread/thread/6aee27a7d121f4f4# call for papers])<br />
* Each last Saturday of the month, next August 29, 2009: [[BeagleBoard/bangalore user meet|BeagleBoard Bangalore user meeting]] (Beagle Clinic India)<br />
* all over the world 2009: [http://www.ti.com/corp/docs/landing/techday09/index.shtml# TI Technology Days 2009]. <br />
* ongoing 2009: [[BeagleBoard/contest|Beagle Sponsored Project Program]] - add a cool project and get a free BeagleBoard to realize it!<br />
<br />
=Hardware=<br />
<br />
The Beagle Board is ''a low-cost, fan-less single-board computer based on TI's OMAP3 device family, with all of the expandability of today's desktop machines, but without the bulk, expense, or noise'' (from [http://beagleboard.org/ beagleboard.org]). It uses a TI [http://focus.ti.com/docs/prod/folders/print/omap3530.html OMAP3530] processor (ARM Cortex-A8 superscalar core ~600MHz paired with a TMS320C64x+ DSP ~430MHz and an Imagination SGX 2D/3D graphics processor). See [http://focus.ti.com/docs/prod/folders/print/omap3530.html#features OMAP3530 features] for more processor features. [[BeagleBoard#Availability|Price is USD 149]]. The design goal was to make it as simple and cheap as possible, e.g. not having a LCD added, but letting you connect all add-ons available as cheap external components. See [http://beagleboard.org/brief What is Beagle?] and [http://linuxdevices.com/news/NS5852740920.html LinuxDevices article] for more details.<br />
<br />
The videos [http://uk.youtube.com/watch?v=fL_XMieanSc Beagle Board Beginnings] and [http://uk.youtube.com/watch?v=FuVwh_VrIxk Beagle Board 3D, Angstrom, and Ubuntu] give you a good intro about what BeagleBoard is about and it's capabilities.<br />
<br />
==Components==<br />
<br />
{|border=0<br />
!Top view of rev B:<br />
!Top view of rev C:<br />
|-<br />
|[[Image:Bb revb top numbered.jpg]]<br />
|[[Image:Bb revc top numbered.jpg]]<br />
|-<br />
|}<br />
{|border=1<br />
!No.<br />
!Name<br />
!Comment<br />
|-<br />
|'''1'''<br />
|[http://www.ti.com/omap35x OMAP3530] processor + 256MB NAND<br />
<br />
+ 128MB DDR (rev B)<br />
<br />
+ 256MB DDR (rev C)<br />
|PoP: Package-On-Package implementation for Memory Stacking<br />
[http://www.micron.com/products/partdetail?part=MT29C2G24MAKLAJG-6%20IT 256MB NAND/128MB Mobile DDR SDRAM] available from [http://www.digikey.com/scripts/US/DKSUS.dll?Detail?name=557-1435-ND DigiKey]<br />
<br />
([http://www.micron.com/products/partdetail?part=MT29C4G48MAPLCJI-6%20IT 512MB NAND/256MB Mobile DDR SDRAM] available from [http://www.digikey.com/scripts/US/DKSUS.dll?Detail?name=557-1436-ND DigiKey])<br />
<br />
[http://www.micron.com/products/mcps/beagleboard Micron's multi chip packages (MCPs) for Beagle Board]<br />
|-<br />
|'''2'''<br />
|[http://focus.ti.com/docs/prod/folders/print/tfp410.html DVI chip (TFP410)]<br />
|<br />
|-<br />
|'''3'''<br />
|[[BeagleBoard#DVI|DVI-D]]<br />
|Connection via HDMI connector<br />
|-<br />
|'''4'''<br />
|[[BeagleBoard#JTAG|14-pin JTAG]]<br />
|1.8V only!<br />
|-<br />
|'''5'''<br />
|Expansion connector: I2C, I2S, SPI, MMC/SD<br />
|User must solder desired header into place<br />
|-<br />
|'''6'''<br />
|[[BeagleBoard#User_button|User button]] <br />
|Allows setting boot order.<br />
|-<br />
|'''7'''<br />
| Reset button<br />
|<br />
|-<br />
| '''8'''<br />
|[[BeagleBoard#EHCI|USB 2.0 EHCI HS]]<br />
|Rev A and B: not working, unpopulated<br />
<br />
Rev C: populated and working<br />
|-<br />
|'''9'''<br />
|SD/MMC+<br />
| SDHC cards are supported<br />
|-<br />
|'''10'''<br />
|[[BeagleBoard#RS232|RS-232 serial]]<br />
|<br />
|-<br />
|'''11'''<br />
|Alternate power <br />
|normally powered by USB (unmounted on REV Ax boards, see [[BeagleBoard#Errata|errata]])<br />
|-<br />
|'''12'''<br />
|[[BeagleBoard#OTG|USB 2.0 HS OTG]] <br />
|Mini-AB connector. Board can be powered from port. <br />
|-<br />
|'''13'''<br />
|Stereo In<br />
|<br />
|-<br />
|'''14'''<br />
|Stereo Out<br />
|<br />
|-<br />
|'''15'''<br />
|S-Video<br />
|<br />
|-<br />
|'''16'''<br />
|TWL4030 (Rev A thru C2 inc.)<br />
[http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] (Rev C3 onwards)<br />
|Audio CODEC, USB port, power-on reset and power management. The TWL4030 is pin-compatible with the [http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] chip and was used due to the very limited availability of the TPS65950 in early board revisions.<br />
|-<br />
|'''17'''<br />
|LCD<br />
|only rev C<br />
|-<br />
|'''18'''<br />
|USB power<br />
|<br />
|-<br />
|'''19'''<br />
|Host PHY<br />
|<br />
|-<br />
|'''20'''<br />
|32kHz<br />
|<br />
|-<br />
|'''21'''<br />
|12MHz<br />
|<br />
|-<br />
|'''22'''<br />
|RS232 XVCR<br />
|<br />
|-<br />
|'''23'''<br />
|PWR SW<br />
|<br />
|-<br />
|'''24'''<br />
|VBAT<br />
|<br />
|-<br />
|}<br />
<br />
* Board size: 3" x 3" (about 76.2 x 76.2 mm)<br />
* Weight: [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/beagleboard.png ~37g]<br />
* Currently 6 layer PCB; target: 4 layer<br />
<br />
'''Bottom of rev B:'''<br />
<br />
[[Image:Beagle_bottom.jpg]]<br />
<br />
See [http://www.flickr.com/photos/jadon/sets/72157606050144396/ jadonk's photostream] for some more detailed BeagleBoard pictures.<br />
<br />
==Manual==<br />
<br />
See [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard System Reference Manual (rev. C3.0)].<br />
<br />
==Schematic==<br />
<br />
Schematic of BeagleBoard Rev. C3 is available as part of [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard HW Reference Manual (rev. C3.2)]. Rev C3 and previous are also available from [http://beagleboard.org/hardware/design BeagleBoard.org design page] including in PDF format. Please make sure that you ''read, understand and agree'' [http://groups.google.com/group/beagleboard/msg/ee3e1bc927551ffc Jason's mail] before using this.<br />
<br />
==Layout== <br />
<br />
Layout of BeagleBoard Rev. C3 is available as part of [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard HW Reference Manual (rev. C3.2)]. Rev C3 and previous layouts are also available from the [http://beagleboard.org/hardware/design BeagleBoard.org design page]. Please make sure that you ''read, understand and agree'' [http://groups.google.com/group/beagleboard/msg/ee3e1bc927551ffc Jason's mail] before using this.<br />
<br />
==Errata==<br />
<br />
# ''Boards revision A only'': The DC power jack pinout is incorrect on the PCB layout. DC_5V and GND are switched on PCB layout. Normally, the power jack has DC_5V on the center pin and GND on the sleeve (see Figure 20 of [http://www.beagleboard.org/uploads/BBSRM_6.pdf Beagle HW manual]). But on revision Ax boards the PCB layout has GND on center and DC_5V on sleeve. For this reason it is currently removed. It will be back on the Rev B board. Workaround is to remove wire connecting the two power pins on revision Ax boards and use external [http://amethyst.openembedded.net/~koen/beagleboard/beagle-power-pads.jpg power supply with switched connector] (do not connect anything to the “?” terminal. USB power will be permanently disabled and the board can only be powered from the 5V.) See [http://www.flickr.com/photos/koenkooi/2512038988/ Koen's Beagleboard powermod picture] with short descriptions, too.<br />
# ''Boards revision < A5 only'': There is excess voltage drop across R6 which is used to measure the current consumption on the board. This needs to be a .1 ohm instead of a 1 ohm resistor (SMD 0805). All revision A5 boards have been updated to .1. You can also just solder in a jumper to J2 bypassing the current read point. This issue can cause issues with the USB host port as the voltage supplied to that port can be too low.<br />
# ''Boards revision A only'': User LEDs 0 and 1 are shorted on the layout preventing them from being controlled individually. You need to control both GPIO_149 and GPIO_150 to turn on or off both LEDs. This is fixed in the Rev B boards.<br />
# ''Boards revision < A5 only'': There is an issue where on some boards the 1.8V has excessive noise on it. This is the result of two incorrect parts L1 and L3 being installed on the board. The inductors that were initially installed in the switchers are 100uH and need to be 1uH. This change will require that the board be returned for update. To check for correct parts, have a look to bottom of BeagleBoard. L1 - L3 are the larger parts there. They all have to be labeled with "102" (== 1uH). If any of these three inductors are labeled with "104" (== 100uH) they are wrong and have to be exchanged.<br />
# ''Boards revision A and B'': USB HOST (EHCI) failures. See [http://code.google.com/p/beagleboard/issues/detail?id=15 issue 15] and [http://code.google.com/p/beagleboard/wiki/USBHostTestREPRODUCE USB host test reproduce]. This is a hardware defect. [http://www.beagleboard.org/irclogs/index.php?date=2008-05-29#T00:27:06 Most probably] Rev. B board does not have the EHCI USB connector mounted. Workaround: Use [[BeagleBoard#OTG|OTG port]] with something like [http://trisoft.de/pics/ZHost.JPG mini A to USB A adapter] instead.<br />
# ''Boards revision A and < B4'': Plugging in a USB OTG cable will prevent Beagle from booting (with git kernel), see [http://code.google.com/p/beagleboard/issues/detail?id=19 issue #19], too. This is due to missing filtering capacitor at USB OTG VBUS. When the kernel driver detects that a USB OTG cable is inserted it enables the charge pump to generate VBUS. With no filtering VBUS looks like any switching regulator output with no filtering -- a huge voltage spike when the switch is on, followed by a rapid decay to a low voltage until the next switch on period. The capacitor is there to store energy between the output switch ON and OFF time, the feedback loop in the regulator does sample the cap voltage. Fix is to piggy-back solder a 0603 2.2uF ceramic capacitor to D3, see [http://www.sakoman.net/omap3/beagle/vbus-mod-d3.jpg VBUS modification D3 picture]. Revision B4 boards and newer have this fix applied. Thanks to [http://groups.google.com/group/beagleboard/msg/eb789e15c99a673d Steve] for debugging this!<br />
# ''Boards revision A and < B5'': There is some issue with 32kHz clock depending on system configuration used to clock some OMAP3 peripherals. From this e.g. GPIOs, GPTIMERs, and USB on Beagle might be affected. See [http://code.google.com/p/beagleboard/issues/detail?id=22 Issue 22]. Symptom from this is that after booting Linux kernel serial console hangs after some time and no serial input/output is possible any more. There is one software workaround and one hardware fix for this: (A) Software workaround: Don't use 32kHz timer to clock Linux, instead use MPU timer. (B) Hardware workaround: Remove [http://www.flickr.com/photos/25691331@N04/2766671437/in/pool-beagleboard capacitor C70], which improves the 32kHz clock quality and avoids hang-up. Note: Revision A boards have capacitor C70 [http://www.flickr.com/photos/25691331@N04/2766671437/in/pool-beagleboard at the same location] as rev. B boards. Note: Board revision >= B5 removes capacitor C70.<br />
# ''Random boards, quite rare, revision < B6'': Some random boards and quite rare, show directly after purchasing broken serial communication from host PC to BeagleBoard. Symptom is that you get a new board, get serial output from BeagleBoard in terminal program, but can't type anything at U-Boot prompt (Note: Don't mix this with errata #7. With errata #7 you are able to use U-Boot normally, but Linux prompt input stops after some time). Most users don't have this issue, though. So, first double check your serial configuration ([[BeagleBoardFAQ#Serial_connection_.231|FAQ1]], [[BeagleBoardFAQ#Serial_connection_.232|FAQ2]] and [[BeagleBoardFAQ#Serial_connection_.233|FAQ3]]). Only if you are really, really sure that anything with your serial connection is fine, consider sending the board back doing a [http://beagleboard.org/support/rma RMA request]. This issue was resolved on revision B6 and later boards.<br />
<br />
For additional (software) issues and enhancement requests see [http://code.google.com/p/beagleboard/issues/list Beagle board open point list & issue tracker], too.<br />
<br />
Note: BeagleBoard revision B6 uses different package for U9/U11.<br />
<br />
==Clocking==<br />
<br />
Some [http://www.beagleboard.org/irclogs/index.php?date=2008-07-08#T21:12:23 notes] about (ARM processor) clock rates at BeagleBoard:<br />
<br />
* ARM Cortex-A8 processor is currently clocked at 500MHz<br />
* 500MHz is the default used because it is a balance of performance and longevity<br />
* For OMAP35x 600MHz is max recommended<br />
* At 600MHz OMAP35x is considered to be 'overdrive' and it does not have the same life expectancy<br />
* Higher than 600MHz is out of spec and no guarantee it will work at all (or not damage itself)<br />
* Also keep in mind that if you go higher you probably want to increase the core voltage. Some of this is mentioned in table 3-3 of the [http://focus.ti.com/lit/ds/symlink/omap3530.pdf OMAP3530 data sheet]. Some numbers:<br />
<br />
{| border="1"<br />
||'''ARM'''||'''DSP'''||'''core voltage'''<br />
|-<br />
|600 MHz||430 MHz||1.35V<br />
|-<br />
|550 MHz||400 MHz||1.27V<br />
|-<br />
|500 MHz||360 MHz||1.2V<br />
|}<br />
<br />
* For some OMAP3 clock, voltage and power management discussion see [http://focus.ti.com/lit/an/sprt495/sprt495.pdf OMAP3 power management white paper], too.<br />
* The OMAP3 chip on the Beagle lacks the efuses needed for using the SmartReflex technology, see [http://www.beagleboard.org/irclogs/index.php?date=2009-02-26#T10:44:24].<br />
* There is a thermal monitor in the core, you could use to scale frequency up and down<br />
<br />
To set CPU clock to 600 MHz, there are two options. Both '''do not''' adjust the voltage, so the system may become unstable:<br />
<br />
* The u-boot command "mw 48004940 0012580c" will temporarily set the CPU clock to 600 MHz (not permanent over reset).<br />
* To permanently set the CPU clock to 600 MHz, include the above command in the "bootcmd" variable or equivalent script.<br />
<br />
==Power management==<br />
<br />
* Latest Linux kernel power management development for TI OMAP SoCs is maintained in [http://git.kernel.org/?p=linux/kernel/git/khilman/linux-omap-pm.git;a=summary Kevin's linux-omap-pm git tree]<br />
* Russ' Beagle HW modifications resulted in [http://groups.google.com/group/beagleboard/browse_thread/thread/197a8ef6b46cc828 8mW sleep for Beagle Board]<br />
<br />
Without PM kernel, the Beagle [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/index.htm consumes ~1.5 watts idle, however it also uses the same amount under load] (see bottom of that page).<br />
<br />
==DLP Pico projector==<br />
<br />
Texas Instruments is developing a Pico Video Projector Kit (PVPK) as a peripheral for the Beagle Board. The stand alone pico projector will support VGA resolution (640 x 480), RGB 888 input through a DVI interface. The physical connector on the projector will be HDMI. See [http://groups.google.com/group/beagleboard/msg/10e218972380ee48 mailing list] and [http://www.youtube.com/watch?v=-tUBXD-KRp4 Beagle Running Angstrom (VGA) on DLP Pico Projector] for more details.<br />
<br />
It is available from [http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=296-23836-ND DigiKey] for $349.<br />
<br />
See [http://blog.makezine.com/archive/2009/01/tis_beagleboard_and_dlp_pico_projector.html?CMP=OTC-0D6B48984890 article from Make], too.<br />
<br />
DigiKey videos [http://www.youtube.com/watch?v=KBbCdnOj5vg part 1], [http://www.youtube.com/watch?v=zymOmduNWyI part 2] and [http://www.youtube.com/watch?v=Uj19Bi5NYeU part 3].<br />
<br />
==Interfacing to Raw LCD Panels==<br />
<br />
Currently on Rev A / B boards there is no direct access to the LCD lines before they enter the DVI framer. The REV C2 provides access to these lines. Several projects to interface an LCD to the beagleboard exist:<br />
<br />
* [[BeagleBoardRawLCD|interfacing to Raw LCD Panels]] article <br />
* [http://digitalsurveyinstruments.com/beagleperiphials/hdmi2parallel/doc/index.htm hdmi to parallel] workaround method<br />
* [http://www.harbaum.org/till/dvi2par/index.shtml dvi2par cheap diy HDMI to parallel converter]<br />
<br />
=Availability=<br />
<br />
BeagleBoards, currently Rev. C3 boards, are available from<br />
<br />
* [http://www.mouser.com/beagleboard Mouser]<br />
* [http://dkc1.digikey.com/us/mkt/beagleboard.html Digi-Key] with part number [http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=296-23428-ND 296-23428-ND].<br />
<br />
Note: For non-US Digi-Key free shipping orders:<br />
<br />
* Click the US flag on the top right corner of [http://dkc1.digikey.com/us/mkt/beagleboard.html Digi-Key] BeagleBoard page to come to the international page<br />
* Select ''Order Online'' for your country<br />
* Add quantity ''1'' and part number ''296-23428-ND''<br />
* Click ''Add to order''<br />
<br />
When ordering over 65 EUR / GBP 50 product (BeagleBoard is above), for Europe the price depends on the actual dollar to EUR/GBP rate. On nov 9, 2008 the price was EUR 124 with free shipping.<br />
<br />
Note: Some users report that they got some questions from DigiKey to be answered before board shipping is done.<br />
<br />
Note: While you get free shipping, most probably you have to pay tax e.g. ordering from Europe. Users report that they had to pay EUR ~34 - 44 VAT + importing taxes (depending on european country), resulting in EUR 137 - 147 ordering from Europe.<br />
<br />
Note: For European users, [http://www.ebv.com/fileadmin/products/Press_Print/Campaigns/2009/Product_Campaigns/Texas_Beagle_Board_englisch.pdf EBV Elektronik] sells its own blue version of the board for 179 EUR, which includes all useful accessories (DVI cable, serial cable, USB 2.0 Ethernet, USB hub, 2 GB MMC, power supply, Linux BSP).<br />
<br />
Note: German (Europe) users can order through German shops, too. For higher price, though. <br />
* [http://shop.embedded-projects.net/product_info.php/info/p159_BeagleBoard--OMAP-3-.html Embedded Projects Shop] sells BeagleBoard for EUR 199.00 + shipping.<br />
* [http://www.handheld-linux.com/wiki.php?page=Beagle%20Board Handheld-Linux]<br />
<br />
See below for ''hardware'' differences of the revisions. There are no ''software'' differences. <br />
<br />
==Revision A==<br />
<br />
There are some limited early revision Ax prototypes out there used by some hackers hanging around at #beagle channel on irc.freenode.net. See [[BeagleBoard#Errata|errata]] for limitations.<br />
<br />
==Revision B==<br />
<br />
Revision B is same as revision A, except<br />
* fix for shorted LEDs 0/1<br />
* fix for wrong power jack pinout<br />
* revision B6 uses different package for U9/U11<br />
Still has USB HOST (EHCI) failures. USB HOST (EHCI) connector isn't mounted.<br />
<br />
There are 4 revisions of the B board in the field: B4, B5, B6 and B7.<br />
<br />
The most notable difference is the use of the ES3.0 silicon in B6 and B7, other changes are not relevant to software developers.<br />
<br />
==Revision C2==<br />
Revision C2 is same as revision B7 except:<br />
* USB HOST (EHCI) is operational on revision C2, with standard USB A female connector.<br />
* Add interface for raw LCDs ([http://groups.google.com/group/beagleboard/msg/2e82c3ed6061d9d2 mockup])<br />
* It uses updated OMAP3 revision. BeagleBoard revisions B4+B5 uses OMAP3 ES 2.1 (engineering sample), while BeagleBoard revision C2 uses ES 3.0. OMAP3 ES 3.0 fixes minor issues:<br />
** updated ARM Cortex A8 silicon (r1p3) fixing a very rare [http://elinux.org/BeagleBoardFAQ#NEON_performance NEON issue] that has not been seen in real code<br />
* Power measurement feature<br />
* Uses [http://focus.ti.com/docs/prod/folders/print/tps65950.html TPS65950] OMAP power controller instead of TWL4030<br />
* Three additional PWM signals on the expansion connector added as pin mux options to existing pins ([http://groups.google.com/group/beagleboard/browse_thread/thread/d5872b7c6d74592c?hl=en# message])<br />
* Revision detection (to be able to identify C2 board from older boards by software, e.g. for different pin mux)<br />
* 256MB RAM ([http://groups.google.com/group/beagleboard/msg/3a38d0f21cefd6b1?hl=en message]) (and still 256MB NAND like rev B)<br />
<br />
Note: Revision C2 is the first production version, and all orders from from Digi-Key are shipped as Rev C2.<br />
<br />
==Revision C3==<br />
As revision C2 boards are [http://groups.google.com/group/beagleboard/msg/e41d3c97aa7d4951 sold out], revision C3 will ship now.<br />
<br />
Revision C3 is same as revision C2 [http://groups.google.com/group/beagleboard/msg/037318fbc44139d5 except]:<br />
* Optional RTC [http://parts.digikey.com/1/parts/1454-battery-lith-coin-3v-12-5mm-vert-vl-1220-vcn.html VL1220 series] backup battery<br />
* Mounting holes conected to ground<br />
* Slightly improved S-Video<br />
<br />
==Clones==<br />
===EBVBeagle===<br />
EBV build and sell their own BeagleBoard called [http://www.ebv.com/en/products/categories/details/product/ebvbeagle-board EBVBeagle], see e.g. [http://fl0rian.wordpress.com/2009/03/08/the-other-beagleboard/].<br />
It is actually a BeagleBoard revision C2 with green PCB boxed with some useful accessories. It comes as a quite complete starter kit with AC adapter, USB to Ethernet adapter, MMC card, USB hub and some cables.<br />
More information in [http://www.ebv.com/en/press-print/news-pr/details/news//press-releas-54.html official press release].<br />
<br />
===Mini Board===<br />
[[Mini_Board|ICETEK-OMAP3530-Mini]] is a chinese BeagleBoard clone.<br />
<br />
===DevKit 8000===<br />
[[DevKit8000]] is a Chinese BeagleBoard clone, slightly larger with additional peripherals (e.g. LCD/TSP, Ethernet and keyboard).<br />
<br />
===IGEPv2===<br />
[http://www.igep-platform.com/ IGEPv2 Platform] is a Spanish BeagleBoard clone, slightly larger, with additional peripherals like e.g. ethernet connector, wifi+bluetooth.<br />
<br />
==BeagleBoard-based products==<br />
* [http://www.alwaysinnovating.com/touchbook/ Always Innovating Touch Book], see [http://gigglehd.com/zbxe/hdforum/files/attach/images/899852/493/987/001/always_innovating_touch_book_0011.jpg]<br />
<br />
==Beagle case==<br />
<br />
*[http://specialcomp.com/beagleboard/ Special Computing]<br />
*[http://groups.google.com/group/beagleboard/browse_thread/thread/1c82316019633e51 SketchUp 3D model]<br />
<br />
=Adapters=<br />
<br />
For quite detailed information about all BeagleBoard peripherals see [http://www.beagleboard.org/uploads/BBSRM_6.pdf BeagleBoard HW Reference Manual (rev. B6)].<br />
<br />
See [[BeagleBoardPeripherals| BeagleBoard peripherals and adapters page]] for useful add ons for Beagle Board.<br />
<br />
==Expansion boards==<br />
* [[BeagleBoard Zippy]] expansion board is now available from [http://www.tincantools.com/product.php?productid=16147&cat=0&page=1&featured TinCanTools] for $79.00. basic specs are:<br />
** Battery Backed RTC<br />
** Second MMC slot<br />
** 10BaseT Ethernet<br />
** Second RS-232<br />
** +5V level I2C<br />
** AT24 EEPROM<br />
* [http://www.hy-research.com/beagle_expansion.html HY Research] has some expansion board basics and example.<br />
* [http://www.hervanta.com/stuff/Beaglebot#Expansion_Board Beaglebot] uses a custom extension board.<br />
* [http://beagleboard.org/leopard Leopard Board], a Beagle buddy web camera<br />
* There is also a VGA DB15 adapter board under development for the Rev C2 board. It should be availble through a yet to be annnounced outlet.<br />
<br />
==JTAG==<br />
<br />
Depending on your JTAG tool, you'd need a 14-pin to 20-pin adapter to use an ARM debugger. The 14-pin TI JTAG connector is used on BeagleBoard and is supported by a large number of JTAG emulation products.<br />
See [[BeagleBoardJTAG]] for more information.<br />
<br />
==RS232==<br />
<br />
The pinout on the beagle board is "AT/Everex" or "IDC10". You can buy [http://www.pccables.com/07120.htm IDC10 to DB9M adapters] in many places as they are commonly used for old PCs. Depending on your local configuration, you may need a [http://en.wikipedia.org/wiki/Null_modem 9-Pin NullModem] cable to connect BeagleBoard to serial port of your PC. From [http://www.tincantools.com/ TinCanTools] there is a [http://www.tincantools.com/product.php?productid=16144&cat=0&page=1&featured RS-232 DB-9 adapter] and [[media:flyswatter-ti-uart.pdf|adapter schematic]] available.<br />
<br />
==USB==<br />
There are two USB ports on the BeagleBoard, one with an EHCI controller and another with an OTG controller. As of Rev B4, the usb EHCI has been removed because of a hardware defect. Rev C will include USB EHCI working properly.<br />
<br />
===EHCI===<br />
The HS ([http://en.wikipedia.org/wiki/USB#USB_signalling HighSpeed]) USB [http://en.wikipedia.org/wiki/EHCI ECHI] controller on OMAP3 on BeagleBoard supports high-speed only. This simplifies the logic on the device. FS/LS (FullSpeed/LowSpeed) devices, such as keyboards and mice, require going through a high-speed USB 2.0 hub.<br />
<br />
According to the BeagleBoard System Reference Manual Rev C2, the EHCI port can source 5V at 500mA which is enough to power a hub and several low-power devices. However, this is only true if the BeagleBoard is powered through its power jack from a well-regulated 5V external power supply. If the BeagleBoard is powered through the OTG port, the EHCI port sources an "extremely limited" ampount of power (probably 100mA or so) so you'll need a "self-powered" USB 2.0 hub with its own external power supply. [Reference: Sections 5.6 and 7.2 of the BBSRM Rev C2.2.]<br />
<br />
===OTG===<br />
The HS USB OTG ([http://en.wikipedia.org/wiki/USB_On-The-Go OnTheGo]) controller on OMAP3 on the BeagleBoard does have support for all the USB 2.0 speeds (LS/FS/HS) and can act as either a host or a gadget/device. The HS USB OTG port is used as the default power input for the BeagleBoard. It is possible to boot the BeagleBoard using this USB port.<br />
<br />
When using the OTG port in host mode, you must power the BeagleBoard using the +5V power jack. If you connect a USB hub, you'll probably also need external power for the USB hub as well, because according to the Hardware Reference manual the BeagleBoard OTG port only sources 100 mA. This is enough to drive a single low-power device, but probably won't work with multiple devices.<br />
<br />
The Linux kernel needs to know you want to use the OTG port in host mode. I believe OTG ports are supposed to figure this out for themselves using the OTG Host Negotiation Protocol, but for now the Linux kernel may need some help. Specifically, Pin 4 (ID) of the OTG connector needs to be shorted to Pin 5 (GND) by using a [http://trisoft.de/pics/ZHost.JPG 5-pin USB Mini-A plug] which shorts these pins together in the plug. A [http://en.wikipedia.org/wiki/USB#USB_cables 5-pin USB Mini-B plug] leaves Pin 4 floating. Unfortunately, most USB Mini plugs are unmarked as to whether they are "A" or "B".<br />
<br />
You can find "mini A" adapters that have Pin 4 shorted and offer out a full-sized USB A Female jack [http://www.electronicproductonline.com/catalog/product_info.php?products_id=2043 here.]<br />
<table><br />
<tr><td><br />
Since the right cables might be hard to get, you simply can<br />
* short circuit the two pins encircled in red in the image to the right. You can do this by running a wire between the two pins. That at least allows easier undoing the change. Actually you could even have a small switch or so between 4 and 5.<br />
or<br />
* use a "mini B" cable (easier to get) and try the soldering of the two pins at the cable's connector. Depending on the cable it should be possible to open the plastic covering of mini-B port with a sharp-edged knife, then solder the two pins together, close the covering again and use some tape. This leaves the BeagleBoard unmodified.<br />
</td><td>[[Image:usb_otg.png]]</td></tr></table><br />
The Rev C BeagleBoard has a pair of pads labeled J6 on the back of the board under the OTG connector. Shorting these pads together with a wire or solder blob connects pins 4 and 5.<br />
See Figure 20 in the BeagleBoard System Reference Manual Rev C2.2.<br />
<br />
==DVI==<br />
<br />
DVI-D connection on BeagleBoard uses a [http://en.wikipedia.org/wiki/HDMI HDMI connector]:<br />
<br />
''HDMI is backward-compatible with the single-link Digital Visual Interface carrying digital video (DVI-D or DVI-I, but not DVI-A) used on modern computer monitors and graphics cards. This means that a DVI-D source can drive a HDMI monitor, or vice versa, by means of a suitable adapter or cable, but the audio and remote control features of HDMI will not be available.''<br />
<br />
BeagleBoard can be connected to a DVI monitor using HDMI female to DVI male cable.<br />
<br />
=BootRom=<br />
<br />
OMAP3 on BeagleBoard contains a BootRom. With this, BeagleBoard can boot without any code in permanent storage (NAND) or from peripherals. This is useful for first board bring up or if your BeagleBoard is bricked. For more information about BootRom booting see [http://www.ti.com/litv/pdf/sprufd6a SPRUFD6]. <br />
<br />
==User button==<br />
<br />
With user button on BeagleBoard you can configure boot order. Depending on this button, the order used to scan boot devices is changed. The boot order is (the first is the default boot source):<br />
<br />
* User button ''not'' pressed: NAND -> USB -> UART -> MMC<br />
* User button ''is'' pressed: USB -> UART -> MMC -> NAND<br />
<br />
Technically speaking, the user button configures pin SYS.BOOT[5]. See [http://focus-webapps.ti.com/general/docs/sitesearch/searchsite.tsp?selectedTopic=1653260327&numRecords=25&searchTerm=sprufd6&statusCode=null SPRUFD6] for more details.<br />
<br />
==Serial and USB boot==<br />
<br />
Historically, using OMAP3's boot ROM for serial and USB boot, there are several tools around. The newest are Nishanth' ''OMAP U-Boot Utils'', while there are still some older tools for serial boot and USB boot. It is also possible the access the [[u-boot environment variables in linux|u-boot env from linux]].<br />
<br />
===OMAP U-Boot Utils===<br />
<br />
Nishanth' [http://code.google.com/p/omap-u-boot-utils/ OMAP U-Boot Utils] provide<br />
<br />
* ''pserial'' - OMAP specific utility which downloads a file in response to ASIC ID over serial port.<br />
* ''pusb'' - OMAP specific utility which downloads a file in response to ASIC ID over USB connection.<br />
* ''ucmd'' - Send a command to U-Boot and wait till a specific match appears.<br />
* ''ukermit - Download a file from host without using kermit to U-Boot.<br />
<br />
See [http://nishanthmenon.blogspot.com/ Nishanth' blog] and [http://groups.google.com/group/beagleboard/browse_thread/thread/c5bfb1b8ed528b52# announce mail], too.<br />
<br />
===Serial boot===<br />
<br />
Besides Nishanth' ''OMAP U-Boot Utils'', to boot from USB or UART, you need a PC tool which talks with OMAP BootRom and speaks the correct protocol to download ARM target code to BeagleBoard. Currently there are two older (experimental) tools for UART boot:<br />
<br />
* [http://omapzoom.org/gf/project/omaptools/wiki PC Serial Boot perl script]<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/80ad3da0eb2aa555 Linux C utility] (not working yet with below target code)<br />
<br />
See [http://groups.google.com/group/beagleboard/browse_thread/thread/ae2c601ebe104a4 USB and serial download target code] for some example target code to be downloaded to OMAP3 on BeagleBoard.<br />
<br />
===USB boot===<br />
<br />
Besides Nishanth' ''OMAP U-Boot Utils'', for USB boot, there is currently one (experimental) tool to boot BeagleBoard over USB:<br />
<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/2b9e99886bb7a747 Linux C utility]<br />
<br />
See [http://groups.google.com/group/beagleboard/browse_thread/thread/ae2c601ebe104a4 USB and serial download target code] for some example target code to be downloaded to OMAP3 on BeagleBoard.<br />
<br />
See [[BeagleBoardRecovery#USB_recovery|USB recovery section]] how to use USB boot for board recovery.<br />
<br />
==NAND boot==<br />
<br />
See [[BeagleBoardNAND|NAND boot]] article.<br />
<br />
==MMC/SD boot==<br />
<br />
Currently, [http://code.google.com/p/beagleboard/wiki/BootingBeagleBoard boot the BeagleBoard with MMC/SD] is the only working way for first board bring up.<br />
<br />
===MMC/SD formatting===<br />
<br />
As described in above MMC/SD boot description, you have to ''create a bootable partition on MMC/SD Card''. This can be done using e.g. Windows or Linux tools.<br />
<br />
'''Windows'''<br />
<br />
See ''HP USB Disk Storage Format Tool 2.0.6'' description on [http://code.google.com/p/beagleboard/wiki/BootingBeagleBoard boot the BeagleBoard with MMC/SD] page.<br />
<br />
'''Linux'''<br />
<br />
Please see [http://wiki.omap.com/index.php?title=MMC_Boot_Format OMAP3 MMC Boot Format].<br />
<br />
===Dual partition card===<br />
<br />
You can [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat create a dual-partition card], booting from a FAT partition that can be read by the OMAP3 ROM bootloader and Windows, then utilizing an ext2 partition for the Linux root file system.<br />
<br />
To mount second ext2 partition as root file system (e.g. containing contents of [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode rd-ext2.bin]) use kernel boot arguments (e.g. in uboot using ''setenv bootargs''):<br />
<br />
console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootwait<br />
<br />
===U-Boot booting===<br />
<br />
If your MMC/SD card formatting is correct and you put [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode MLO, u-boot.bin and uImage] on the card you should get a u-boot prompt after booting beagle board. E.g. (output from terminal program with 115200 8N1):<br />
<br />
...40T.........XH.H.U�..Instruments X-Loader 1.41<br />
Starting on with MMC<br />
Reading boot sector<br />
<br />
717948 Bytes Read from MMC<br />
Starting OS Bootloader from MMC...<br />
<br />
U-Boot 1.1.4 (Apr 2 2008 - 13:42:13)<br />
<br />
OMAP3430-GP rev 2, CPU-OPP2 L3-133MHz<br />
TI 3430Beagle 2.0 Version + mDDR (Boot ONND)<br />
DRAM: 128 MB<br />
Flash: 0 kB<br />
NAND:256 MiB<br />
In: serial<br />
Out: serial<br />
Err: serial<br />
Audio Tone on Speakers ... complete<br />
OMAP3 beagleboard.org #<br />
<br />
Using this u-boot prompt, you now can start kernel uImage stored on MMC card manually:<br />
<br />
OMAP3 beagleboard.org # mmc init<br />
OMAP3 beagleboard.org # fatload mmc 0:1 0x80000000 uimage<br />
OMAP3 beagleboard.org # bootm<br />
<br />
If you like to make that happen every boot:<br />
<br />
OMAP3 beagleboard.org # set bootcmd 'mmc init ; fatload mmc 0:1 0x80000000 uimage ; bootm' ; saveenv<br />
<br />
=Code=<br />
<br />
Code and binaries for BeagleBoard are available at various places.<br />
<br />
==Binaries==<br />
<br />
BeagleBoard pre-built binaries and source code can be found at [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode Beagle source code] and [http://code.google.com/p/beagleboard/downloads/list downloads] page. These are the locations where "official" TI code is available. Please note that this code is mainly for reference and testing. More up to date binaries and code is available by community. Community took (parts) of TI reference code, improves and updates it. <br />
<br />
Actually, [http://www.angstrom-distribution.org/node/47 Koen's prebuilt Beagleboard demo images] are up to date binaries including e17 as window manager, the abiword word processor, the gnumeric spreadsheet application, a NEON accelerated mplayer and the popular NEON accelerated omapfbplay which gives you fullscreen 720p decoding. The [http://www.angstrom-distribution.org/demo/beagleboard www.angstrom-distribution.org/demo/beagleboard] directory should contain all the files you need:<br />
<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/u-boot.bin u-boot.bin]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/MLO MLO]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/uImage uImage]<br />
* [http://www.angstrom-distribution.org/demo/beagleboard/Angstrom-Beagleboard-demo-image-glibc-ipk-2009.X-test-20090104-beagleboard.rootfs.tar.bz2 rootfs]<br />
<br />
See the [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat beagle wiki] on how to setup your SD card to use all this goodness.<br />
<br />
==Source==<br />
<br />
Besides above binary and source images (TI's and communities one), for various parts of Beagle software stack there are community supported [http://git.or.cz/ git] repositories available. <br />
<br />
===X-Loader===<br />
<br />
Steve did some work to consolidate and update X-Loader from various sources and put it in a [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=x-load-omap3.git;a=summary X-Loader git repository]. Get it by<br />
<br />
git clone git://gitorious.org/x-load-omap3/mainline.git xloader<br />
cd xloader/<br />
<br />
Build:<br />
<br />
make distclean<br />
make omap3530beagle_config<br />
make<br />
<br />
Result will be a ~20k sized ''x-load.bin'' in main directory.<br />
<br />
===U-Boot===<br />
<br />
[http://www.denx.de/wiki/U-Boot/WebHome Mainline U-Boot] has good support for BeagleBoard. Get it by:<br />
<br />
git clone git://git.denx.de/u-boot.git u-boot-main<br />
cd u-boot-main<br />
git checkout --track -b omap3 origin/master<br />
<br />
Build (assuming Code Sourcery GCC 2007q3):<br />
<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- mrproper<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- omap3_beagle_config<br />
make CROSS_COMPILE=arm-none-linux-gnueabi- <br />
<br />
Result will be a ~160k sized ''u-boot.bin'' in main directory.<br />
<br />
Note: Due to (patch and binary) size, BeagleBoard splash screen was removed from upstream version. If you want it back, use [http://groups.google.com/group/beagleboard/browse_thread/thread/3ad9b803a3418624 U-Boot v1 BeagleBoard splash screen patch].<br />
<br />
Note: For experimental U-Boot patches not ready for mainline yet, Steve's [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=u-boot-omap3.git;a=summary Beagle U-Boot git repository] is used to test them. Get it by:<br />
<br />
git clone git://gitorious.org/u-boot-omap3/mainline.git u-boot-omap3<br />
cd u-boot-omap3<br />
git checkout --track -b omap3-dev origin/omap3-dev<br />
<br />
===Linux kernel===<br />
<br />
[http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git;a=summary Git repository] of [http://muru.com/linux/omap/ OMAP Linux kernel] contains Beagle support. Get it by:<br />
<br />
git clone git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git linux-omap-2.6<br />
cd linux-omap-2.6<br />
<br />
Build:<br />
<br />
make distclean<br />
make omap3_beagle_defconfig<br />
make menuconfig # only needed if you want to change the default configuration<br />
make uImage<br />
<br />
The result will be a ''uImage'' in ''arch/arm/boot/'' directory.<br />
<br />
If you use the OE toolchain and want to build outside of the OE tree you should do<br />
ARCH=arm<br />
PATH=~/oe/tmp/cross/armv7a/bin:~/oe/tmp/staging/i686-linux/usr/bin:$PATH # add cross tools to your path<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- distclean<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- omap3_beagle_defconfig<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- menuconfig # only needed if you want to change the default configuration<br />
make CROSS_COMPILE=arm-angstrom-linux-gnueabi- uImage<br />
Note: the staging dir in the path is for mkimage. If you've build a kernel before with oe, the program should be there<br />
<br />
Note: If you are interested in kernel development have a look to [[BeagleBoardLinuxKernel|manually compiling BeagleBoard kernel]], too.<br />
<br />
===Experimental kernel patches and hacks===<br />
<br />
Some beagle developers maintain their own kernel experimental patches and hacks not ready for upstream:<br />
<br />
* [http://cgit.openembedded.net/cgit.cgi?url=openembedded/tree/packages/linux/linux-omap Koen's collection of kernels patches for OE] and the [http://cgit.openembedded.net/cgit.cgi?url=openembedded/tree/packages/linux/linux-omap_git.bb list of relevant patches]<br />
* [http://www.sakoman.net/cgi-bin/gitweb.cgi?p=linux-omap-2.6.git;a=shortlog;h=refs/heads/test Steve's kernel tree], a clone of main OMAP git with additional patches, mainly beagle audio (ASOC) related.<br />
* [http://git.mansr.com/?p=linux-omap;a=summary Mans' kernel tree], a clone of main OMAP git with additional patches, mainly display & framebuffer related.<br />
* [http://www.bat.org/~tomba/linux-omap.html Tomi's kernel tree], a clone of main OMAP git with display sub-system patches, replacing the entire display driver with one that is the likely direction moving forward.<br />
<br />
=Compiler=<br />
<br />
TI OMAP3530 processor on BeagleBoard contains an ARM Cortex-A8 general purpose processor and a TMS320C64x+ DSP.<br />
<br />
==ARM==<br />
<br />
There is broad compiler support including gcc - please see [http://www.elinux.org/ARMCompilers ARM Compilers]<br />
<br />
==C64x+ DSP==<br />
<br />
A free C64x DSP compiler is available as [https://www-a.ti.com/downloads/sds_support/targetcontent/LinuxDspTools/download.html Linux hosted C6x Code Generation Tools] (TMS320C6000 C/C++ CODE GENERATION TOOLS 6.1.3 July 2008).<br />
<br />
Note: my.TI account required. You may create an account [https://my.ti.com here]<br />
<br />
Note: Old c6000 Linux compiler available on [ftp://ftp.ti.com/pub/cs/linux_cgt500.tar.gz TI FTP site]. Does NOT support c64x+ core in OMAP3 devices. Not recommended.<br />
<br />
You can also utilize the [http://focus.ti.com/dsp/docs/dspsupportaut.tsp?familyId=44&sectionId=3&tabId=416&toolTypeId=30 full-CCS free evaluation tools for 120 days], but they currently require purchase to upgrade to service release 9 to support full JTAG debugging with supported JTAG hardware.<br />
<br />
See [[BeagleBoard/DSP_Howto| BeagleBoard DSP howto]] for information about how to use the DSP.<br />
<br />
=Cortex A8 ARM features =<br />
<br />
ARM Cortex-A8 in OMAP3 is a high performance dual-issue applications processor which reaches a performance of 2.0 DMIPS/MHz (compared to ARM11 at 1.2 DMIPS/MHz). It is ARM v7 architecture, which is fully backwards compatible with application code for previous ARM processors.<br />
<br />
It includes a floating point unit (ARM VFPv3 architecture) and the ARM NEON SIMD instruction set.<br />
<br />
See [http://pandorawiki.org/Floating_Point_Optimization Floating Point Optimization] article for an intro into VFP-lite and NEON.<br />
<br />
===ARM NEON===<br />
<br />
NEON is a 64/128-bit wide SIMD vector extension for ARM, which has been architected to be an efficient C compiler target as well as being used from assembly language. It has 32x 64-bit registers (with a dual view as 16x 128-bit registers) which can hold the following datatypes:<br />
* 64-bit signed/unsigned<br />
* 32-bit signed/unsigned<br />
* 32-bit single precision floating point<br />
* 16-bit signed/unsigned<br />
* 8-bit signed/unsigned<br />
<br />
The key advantage of NEON is very high performance vector math processing, whilst being easy to program. It is the same thread of control as the ARM (but different instructions), and is supported by the same tools, debuggers and operating systems.<br />
<br />
The NEON instruction set is documented in ARM's [http://infocenter.arm.com/help/topic/com.arm.doc.dui0204i/DUI0204I_rvct_assembler_guide.pdf RealView Compilation Tools Assembler Guide].<br />
<br />
For NEON optimized libraries see [http://www.us.design-reuse.com/news/18429/aac-mp3-mpeg-4-h-264-fft-openmax-cortex-a8-neon-arm11-processors.html ARM Releases AAC, MP3, MPEG-4, H.264 and FFT OpenMAX DL Libraries, Highly Optimized for Cortex-A8/NEON and ARM11 Processors]. Note: Read the [http://www.arm.com/products/esd/openmax_v7libraries.html EULA].<br />
<br />
NEON is currently used by<br />
* ffmpeg - libavcodec used by mplayer, omapfbplay, and many other linux applications<br />
* libpixman - used by X.org and Mozilla & Webkit browsers to render text and graphics<br />
* Bluez - official Linux Bluetooth stack<br />
<br />
=== ARM Cortex Floating Point ===<br />
<br />
There are two types of instructions in the ARM v7 ISA that handle floating point:<br />
<br />
1) '''VFPv3''' Floating point instruction set (used for single/double precision scalar operations).<br />
These is used by gcc for C floating point operations on 'float' and 'double'<br />
<br />
2) '''NEON''' [http://www.arm.com/products/multimedia/neon/ NEON] vectorized single precision operations (2 values in a D-register, or 4 values in a Q-register)<br />
These can be use by gcc when -ftree-vectorize is enabled and -mfpu=neon is specified, and the code can be vectorized. In other cases the VFPv3 scalar ops will be used.<br />
<br />
ARM Cortex-A processors have separate floating point pipelines that handle these different instructions.<br />
<br />
On Cortex-A8, the designers' focus was on the NEON unit performance which can sustain 1 cycle/instr throughput (processing 2 single-precision values at once). The scalar VFPv3 FPU cannot achieve this level of performance (cycle timings are in the Cortex-A8 TRM download), but it is still a lot better than doing floating point using integer instructions.<br />
<br />
If you need the highest performance floating point on Cortex-A8, you need to use single precision and ensure the code uses the NEON vectorized instructions:<br />
* use gcc with -ftree-vectorize (possibly modify source code to make it vector friendly)<br />
* use NEON instrinsics (#include <arm_neon.h>, float32x2_t datatype and vmul_f32() etc)<br />
* use NEON asm directly<br />
<br />
Keep in mind that mixing NEON and ARM load/stores can sometimes stall significantly. See [http://hardwarebug.org/2008/12/31/arm-neon-memory-hazards/ this link] for more info.<br />
<br />
On Cortex-A9, there is a much higher performance floating point unit which can sustain 1 cycle/instr throughput, with low result latencies.<br />
<br />
=Board recovery=<br />
<br />
If you played e.g. with the contents of the [http://www.sakoman.net/omap3/flash%20procedure.txt NAND], it might happen that the Board doesn't boot any more (without pressing user button) due to broken NAND content. See [[BeagleBoardRecovery|BeagleBoard recovery]] article how to fix this.<br />
<br />
=Development environments=<br />
<br />
Instead of just using compiler + editor, you can use complete image create "development tool chains" which integrate compiler, build system, packaging tools etc. in one tool chain.<br />
<br />
==OpenEmbedded==<br />
<br />
For [http://www.openembedded.org/ OpenEmbedded] (OE), there are some hints how to [http://www.beagleboard.org/irclogs/index.php?date=2008-04-29#T13:06:25 start with OE for BeagleBoard]. See [[BeagleBoardAndOpenEmbeddedGit|BeagleBoard and OpenEmbedded Git]] and [http://wiki.openembedded.org/index.php/Getting_Started OpenEmbedded getting started] as well.<br />
<br />
In the OE getting started document, for BeagleBoard replace ''MACHINE = "om-gta01"'' by ''MACHINE = "beagleboard"''. After confirming ''bitbake nano'' works, try ''bitbake console-image''. The first time you run bitbake OE will download all the needed source and build the tool chain. This will take several hours. After all went fine, the output is in ''${OE_ROOT}/tmp/deploy/glibc/images/beagleboard''.<br />
<br />
Note: Koen has some BeagleBoard [http://amethyst.openembedded.net/~koen/index.php?path=beagleboard/ source and binary images] built with OE. There, ''Angstrom-console*'' images don't include an X server, you can still use a e.g. DVI-D screen with console, but you won't have a GUI. ''Angstrom-x11*'' images contain an X server.<!-- DEAD LINK: resulting in something like [http://scap.linuxtogo.org/files/fc987d4acb2c745fb7e19cf4dca8de70.png this].--><br />
<br />
===One very important note:=== <br />
<br />
It's important to have an X-Loader on your Beagleboard that uses the uImage on the SD Card that goes with Angstrom. The B6 Beagleboards do not appear to come with such an X-Loader. So you likely will have to upgrade the X-Loader. Here's what to do:<br />
* Make an SD Card with the [http://www.angstrom-distribution.org/demo/beagleboard Angstrom Demo files]. See the [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat Beagleboard Wiki Page] for more info on making the SD Card.<br />
* Put the SD Card in the Beagle, and boot up to the U-Boot Prompt.<br />
* Do the first six instructions in the [http://code.google.com/p/beagleboard/wiki/BeagleNANDFlashing Flashing Commands with U-Boot] section. <br />
* Reboot the Beagle to see that the new X-Loader is properly loaded.<br />
<br />
This will update the X-Loader to a newer version that will automatically load uImage from the SD Card when present -- rather than always using the uImage in the Beagleboard NAND.<br />
<br />
==Eclipse==<br />
The Eclipse [http://www.eclipse.org/cdt/ C Development Tools Project] provides a "fully functional C and C++ Integrated Development Environment (IDE) for the Eclipse platform". The Eclipse [http://www.eclipse.org/dsdp/tm/ DSDP Target Managment Project] provides a "Remote System Explorer" (RSE) plugin that simplifies downloading files to the BeagleBoard and editing files on the BeagleBoard within the Eclipse IDE. A Linux Target Agent is available as part of the [http://wiki.eclipse.org/DSDP/TM/TCF_FAQ Target Communications Framework (TCF) component]. Info on how RSE is used for e.g. Gumstix development is described in [http://groups.google.com/group/beagleboard/browse_thread/thread/509831f7c24cb79f# this post].<br />
<br />
==Android==<br />
[http://source.android.com Android] platform is a software stack for mobile devices including an operating system, middleware and key applications. Developers can create applications for the platform using the [http://code.google.com/android/ Android SDK]. Applications are written using the Java programming language and run on Dalvik, a custom virtual machine designed for embedded use which runs on top of a Linux kernel.<br />
<br />
There are several resources for Android on OMAP (Beagle) available:<br />
<br />
'''OMAPZOOM'''<br />
<br />
You can find Android port for OMAP ZOOM architecture on [https://omapzoom.org/gf/project/omapandroid/wiki/ OMAPZoom.org's wiki page on Android]. <br />
<br />
'''EMBINUX'''<br />
<br />
[http://beagleboard.org/project/android Beagleboard.org's Android project page] [http://groups.google.com/group/beagleboard/browse_thread/thread/7b422f113ce489b5 announced], the successful porting of Android on Beagle board by [http://embinux.com EMBINUX&trade;] Team. The [http://labs.embinux.org/git/ source code] and [http://www.embinux.com/download_beagle.php binaries] are available for download and review. <br />
<br />
Detailed instructions, for porting Android on Beagle Board, are available [http://labs.embinux.org/index.php/Main_Page here]. Current release supports input devices (keyboard/mouse), network and sound.<br />
<br />
You can [http://in.youtube.com/watch?v=nADn_vNVEKw watch Android booting] on Beagle Board.<br />
<br />
'''Android on OMAP wiki'''<br />
<br />
Wiki page for Andorid on OMAP can be found [[Android on OMAP|here]]<br />
<br />
'''0xdroid'''<br />
<br />
[http://gitorious.org/0xdroid 0xdroid], the enhanced version of Android on Beagleboard by [http://0xlab.org 0xlab]. The [http://gitorious.org/0xdroid source code], [http://downloads.0xlab.org/ pre-built binaries], and [http://code.google.com/p/0xdroid/issues/list issue tracker] are available for review and reference.<br />
<br />
The latest development supports OMAP audio, OMAP video overlays, ARM Cortex A8 NEON/Thumb2 performance optimizations, mouse cursor, hot-pluggable USB keyboard & mouse, user-friendly installer for system image, and various Android tweaks. Detailed instructions for 0xdroid are available through [http://gitorious.org/0xdroid/pages/Home gitorious wiki].<br />
<br />
You can [http://www.youtube.com/watch?v=v6wdTOHrwQw watch 0xdroid demo video] on Beagle Board.<br />
<br />
==Mamona==<br />
<br />
[http://dev.openbossa.org/trac/mamona/wiki Mamona] is an embedded Linux distribution for ARM EABI. The main goal of the Mamona Project is to offer a completely open source alternative/experimental platform for [http://maemo.org/ Maemo] using only free and open source components. Mamona [http://rsalveti.wordpress.com/2008/09/12/mamona-02-is-out 0.2] [http://franciscoalecrim.com/blog/2008/07/29/mamona-working-with-beagleboard/ supports] [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12013&contentId=28741 OMAP3430 Software Development Platform (SDP)], so you can also use it at Beagle (OMAP3530), too. Work is being done to officially support Beagle.<br />
<br />
==Ubuntu==<br />
<br />
See [[BeagleBoardUbuntu|Ubuntu (ARM)]] installation guide how to install Ubuntu (ARM) on BeagleBoard.<br />
<br />
==Debian ARM==<br />
<br />
See [[BeagleBoardDebian|Debian (ARM)]] installation guide how to install Debian (ARM) on BeagleBoard.<br />
<br />
==Handhelds Mojo ARM==<br />
<br />
See [[BeagleBoardHandheldsMojo|Handhelds Mojo (ARM)]] installation guide how to install Handhelds Mojo (ARM) port of Ubuntu on BeagleBoard. (The Mojo project is no longer active, see the Official Ubuntu ARM-port above instead)<br />
<br />
==Scratchbox==<br />
<br />
[http://www.scratchbox.org/ Scratchbox] is a cross-compilation toolkit designed to make embedded Linux application development easier. It also provides a full set of tools to integrate and cross-compile an entire Linux distribution. See [http://felipec.wordpress.com/2009/06/07/installing-scratchbox-1-and-2-for-arm-cross-compilation/ Felipe's Scratbox 1 and 2 intro], too.<br />
<br />
=Software hints=<br />
<br />
This section collects hints, tips & tricks for various software components running on beagle.<br />
<br />
==QEMU==<br />
<br />
[[Qemu|QEMU]] [http://vm-kernel.org/blog/2008/12/15/linux-is-running-on-qemu-omap3/ supports OMAP3] being able to boot a BeagleBoard Linux kernel.<br />
<br />
==Linux hints==<br />
<br />
See BeagleBoard [http://code.google.com/p/beagleboard/wiki/LinuxHints Google wiki Linux hints] page (for Linux WTBU (Wireless TI Business Unit) kernel [http://code.google.com/p/beagleboard/wiki/BeagleSourceCode 2.6.22]). Currently featuring:<br />
<br />
* Switching video output between DVI-D and S-Video<br />
* Disabling framebuffer blanking<br />
* Listing USB devices<br />
<br />
==lmbench==<br />
<br />
Avik posted a detailed [http://groups.google.com/group/beagleboard/browse_thread/thread/c8b8f07ce61161a1 step-by-step procedure] to run [http://sourceforge.net/project/showfiles.php?group_id=14418 lmbench] on Beagle.<br />
<br />
==Mediaplayer (FFmpeg)==<br />
<br />
There is a thread how to get a [http://groups.google.com/group/beagleboard/browse_thread/thread/9b8025fc15120fd9# mediaplayer] with NEON optimization (FFmpeg) to run on Beagle. Includes compiler hints and patches.<br />
<br />
==Java==<br />
<br />
When using the [[BeagleBoard#OpenEmbedded|OpenEmbedded]]-based Angstrom image you have the following options of Java support:<br />
* JamVM + GNU Classpath (small vm, fast interpreter, J2SE-like)<br />
* Cacao + GNU Classpath (JIT compiler, J2SE-like)<br />
* PhoneME Advanced Foundation (JIT compiler, CDC)<br />
<br />
Java support in OpenEmbedded/Angstrom ([http://wiki.openembedded.net/index.php/Java details]) is provided voluntarily through [http://jalimo.org Jalimo].<br />
<br />
See a [http://groups.google.com/group/beagleboard/browse_thread/thread/102f627253919783# post at mailing list], too.<br />
<br />
OpenEmbedded users can add the [http://evolvis.org/scm/?group_id=11 Jalimo Subversion repository] as an overlay (instructions are in the repository). This will allow them to build OpenJDK packages. Inclusion of these recipes in mainline OpenEmbedded is planned but still ongoing.<br />
<br />
The recipes offer the following functionality:<br />
<br />
* OpenJDK + Hotspot (Zero port) (all J2SE functionality, including JVMTI, interpreted only)<br />
* OpenJDK + Cacaco (all J2SE library features, missing JVMTI, decent JIT compiler)<br />
* OpenJDK + Hotspot (Shark port) (not working yet)<br />
<br />
Some guy from ARM Ltd. is working on interpreter optimization in Zero for ARM.<br />
<br />
People interested in getting this stuff working better should contact people on:<br />
* [http://evolvis.org/mail/?group_id=11 Jalimo Mailinglist]<br />
* [http://mail.openjdk.java.net/mailman/listinfo/distro-pkg-dev Icedtea Mailinglist]<br />
<br />
You should also check out IcedTea's [http://iced-tea.org/wiki/FrequentlyAskedQuestions FAQ].<br />
<br />
=Graphics accelerator=<br />
<br />
OMAP3530 used on BeagleBoard contains a graphics accelerator (SGX) based on the SGX core from [http://www.imgtec.com/ Imagination Technologies]. [http://www.imgtec.com/powervr/powervr-graphics.asp PowerVR] SGX530 is a new generation of programmable PowerVR graphics and video IP cores. Only the kernel portions of Linux drivers will be open source. The PowerVR folks will provide binary user-space libraries. Using the EMail contact at [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12700&contentId=27458 TIs Mobile Gaming Developers page] there are Linux v2.6 OMAP3430 SDKs for OMAP3 Zoom and SDP supporting OpenGL ES v2.0, OpenGL ES v1.1 and OpenVG 1.0 available.<br />
<br />
Tutorial:<br />
* [http://code.google.com/p/beagleboard/wiki/HowtoUseSGXunderAngstrom How to use SGX with Angstrom in OE]<br />
<br />
Some videos:<br />
<br />
* [http://www.youtube.com/watch?v=3ToYOgP9f9U SGX on Beagle working with Linux 2.6.27]<br />
* [http://www.youtube.com/watch?v=24TXpqa9jG0&feature=related OpenGL ES 2.0 shader effects on OMAP3]<br />
* [http://www.youtube.com/watch?v=-UFUbqoNgs8&feature=related 3D User Interface on OMAP3 Platform]<br />
* [http://www.youtube.com/watch?v=8KcNgeUriqA 3D Mapping using OpenGL ES 2.0 on OMAP3 Platform]<br />
* [http://www.youtube.com/watch?v=7D3V6BUpGLE Video blending in hardware]<br />
* [http://www.hitlabnz.org/wiki/EmbeddedAR An Augmented Reality application combining ARToolkit and OpenGL ES 2.0]<br />
<br />
=Beginners guide=<br />
<br />
You just got your new BeagleBoard, and now? See [[BeagleBoardBeginners|beginners guides]].<br />
<br />
=FAQ=<br />
<br />
For BeagleBoard frequently asked questions (FAQ) see [[BeagleBoardFAQ|community FAQ]] and "official" [http://beagleboard.org/support/faq BeagleBoard.org FAQ].<br />
<br />
=Links=<br />
==Home page==<br />
[http://beagleboard.org/ beagleboard.org] (beagle board home)<br />
* Using [http://www.google.de/ Google] you can search beagleboard.org (including [http://www.beagleboard.org/irclogs/ IRC logs]) using ''site:beagleboard.org <search term>''<br />
<br />
==Manuals and resources==<br />
* [http://beagleboard.org/static/BBSRM_latest.pdf BeagleBoard HW Reference Manual (rev. C2)]<br />
* [http://beagle.s3.amazonaws.com/BBSRM_7_2_0.pdf BeagleBoard HW Reference Manual (rev. B7)]<br />
* [http://www.beagleboard.org/uploads/BBSRM_6.pdf BeagleBoard HW Reference Manual (rev. B6)]<br />
* [http://www.beagleboard.org/uploads/BBSRM_B5.pdf BeagleBoard HW Reference Manual (rev. B5)]<br />
* [http://www.beagleboard.org/uploads/Beagle_HRM_B4.pdf BeagleBoard HW Reference Manual (rev. B4)]<br />
* [http://www.beagleboard.org/uploads/Beagle_HW_Reference_Manual_A_5.pdf BeagleBoard HW Reference Manual (rev. A5)]<br />
* [http://focus.ti.com/docs/prod/folders/print/omap3530.html OMAP3530] processor description and manuals<br />
* [http://code.google.com/p/beagleboard/ Beagle at code.google.com]<br />
* [http://focus.ti.com/dsp/docs/dspsupporttechdocs.tsp?sectionId=3&tabId=409&familyId=1526&documentCategoryId=4&techDoc=4 OMAP3530/25 CBB BSDL Model]<br />
* [http://www.micron.com/products/mcps/beagleboard Micron's multi chip packages (MCPs) for Beagle Board]<br />
* [http://beagleboard.org/resources Beagleboard resources page with hw docs]<br />
* Some [http://www.rasterman.com/ performance comparison] of BeagleBoard Rev. B with some other ARM/PC systems.<br />
* OMAP3 pinmux [http://www.hy-research.com/omap3_pinmux.html setup]<br />
* [http://elinux.org/BeagleBoardPinMux OMAP3 eLinux pinmux page]<br />
<br />
==Contact and communication==<br />
* [http://groups.google.com/group/beagleboard Beagle board discussion list]<br />
* [http://code.google.com/p/beagleboard/issues/list Beagle board open point list & issue tracker]<br />
* [http://beagleboard.blogspot.com/ Beagle board blog]<br />
* [http://feeds.feedburner.com/BeagleBoard Beagle board RSS feed]<br />
* Chat:<br />
** [http://beagleboard.org/chat Beagle Board chat]<br />
** IRC: #beagle channel on irc.freenode.net<br />
** [http://www.beagleboard.org/irclogs/index.php IRC archive]<br />
* [http://www.beaglesride.org/ Beagles Ride], a site about building a community around the BeagleBoard focused on in vehicle applications<br />
* [http://www.beagleboard.de/ German Beagle Board Forum and Wiki]<br />
<br />
==TI resources==<br />
* [http://opensource.ti.com/ TI open source page]<br />
* [https://community.ti.com/ TI E2E (Engineer-to-Engineer) Community]<br />
* [http://marc.info/?l=linux-omap&m=120761100810527&w=2 DSP Bridge driver for OMAP3 platform]<br />
* [http://lists.arm.linux.org.uk/lurker/message/20080701.142512.5eeff26b.en.html ARMv7 Oprofile support]<br />
* [http://focus.ti.com/pdfs/wtbu/swpu114g.pdf OMAP34xx Wireless Technical Reference Manual] (swpu114g.pdf, 47 MB)<br />
* [http://amethyst.openembedded.net/~koen/index.php?sort=date&order=desc&path=beagleboard/ Koen's (OpenEmbeded) BeagleBoard source and binaries]<br />
* [http://del.icio.us/tag/beagleboard+peripheral+verified Verified peripherals for BeagleBoard]<br />
* [http://www.celinux.org/elc08_presentations/TI_OMAP3430_Linux_PM_reference.ppt OMAP3430 Linux Power Management presentation]<br />
==Articles==<br />
* [http://linuxdevices.com/news/NS5852740920.html LinuxDevices article about Beagle]<br />
* [http://www.linuxdevices.com/news/NS8479495970.html LinuxDevices article about Digi-Key launch]<br />
* [http://www.linuxdevices.com/news/NS5682470737.html LinuxDevices article about Beagle Rev C, Beagle MID from HY Research, Touch Book and Sponsored Projects Contest]<br />
<br />
==Books==<br />
* [[OMAP_and_DaVinci_Software_for_Dummies|OMAP and DaVinci Software for Dummies]]<br />
==Past Beagle events==<br />
* TIDC, February 26-28, 2008: [http://www.beagleboard.org/uploads/tidc_opensource.pdf Slides from TI developer conference (TIDC) open source session], covering also beagle board<br />
* [http://www.lugradio.org/live/USA2008/ LUG RADIO Live USA 2008, April 12-13, 2008]: [http://www.beagleboard.org/uploads/lugradio_20080411.PPT TI/Beagle Presentation] and [http://forums.lugradio.org/viewtopic.php?f=4&t=4094&st=0&sk=t&sd=a&sid=d69cc807569ab41e33f93af698c536b8&start=15#p41549 video]<br />
* LinuxTag, May 28-31, 2008: [http://www.flickr.com/photos/jadon/2551439955/in/pool-beagleboard picture 1] and [http://www.flickr.com/photos/jadon/2535692865/in/pool-beagleboard picture 2]<br />
* [http://lugradio.org/live/UK2008/travel LugRadio Live UK 2008], July 19 - July 20, 2008: [http://www.flickr.com/photos/koenkooi/tags/lugradiolive/ Koen's pictures] showing e.g. [http://www.bigbuckbunny.org/index.php/download/ Big Buck BUNNY] playing at Beagle. [http://linuxoutlaws.com/podcast/48 Interview with Linux Outlaws (52:06)] and the [http://www.youtube.com/watch?v=m9xVbntl-DY video]<br />
* [http://osscamp.in/index.php/OSScamp_Bengaluru_Mobile_2008 OSScamp Bengaluru Mobile 2008], July 19, 2008<br />
* [http://www.linuxworldexpo.com LinuxWorld Conference & Expo], August 4 - August 7, 2008: [http://www.flickr.com/photos/jadon/sets/72157606586084668/ pictures with living beagle] and from [http://www.flickr.com/photos/linuxjournal/2738316951/in/set-72157606634486338/ Linux Journal's photostream]<br />
* BeagleBoard.org event at Jillian's during LinuxWorldExpo, August 5, 2008, 5:30-7:30 pm<br />
* [http://barcamp.pbwiki.com/BarCampHouston3 BarCamp Houston 3], August 9, 2008, 9:00 A.M.: [http://www.flickr.com/photos/jadon/sets/72157606656532041/ pictures]<br />
* NIT Suratkal, India [http://www.nitkieee.com/site/sp-connect2/schedule IEEE SP Connect 2], August 30, 20008<br />
* [http://barcampbangalore.org/wiki/BCB7_Demos BarCamp Bangalore], India, September 13, 2008<br />
* [http://www.ibc.org/ IBC 2008], September 11 - September 16, 2008: [http://www.flickr.com/photos/koenkooi/tags/ibc2008/ pictures]<br />
* Free Open "Embedded Linux" Training for Students in India, [http://code.google.com/p/beagleboard/wiki/Trainings?updated=Trainings&ts=1220250913 beagleboard.org Trainings in India], September 20, 2008: [http://www.youtube.com/watch?v=A6FLdmgQlb4&feature=PlayList&p=1BAB6EE9CC7285AD&index=0 video], [http://www.flickr.com/photos/25691331@N04/sets/72157607419766102/ photos] and [http://lakshmansrikanth.blogspot.com/2008/09/linux-embedded.html blog]<br />
* [http://www.embedded.co.uk/ Embedded Systems Show 2008], Birmingham, UK, October 1-2, 2008<br />
* [http://www.mvista.com/vision/ MontaVista Vision 2008 Embedded Linux Developers Conference], San Francisco, California, October 1-3, 2008 : [http://www.mvista.com/download/topic.php?t=18 Video and presentation overview], [http://www.mvista.com/download/fetchdoc.php?docid=323 William Mills' presentation], [http://www.mvista.com/download/fetchdoc.php?docid=333 Jason Kridner's presentation]<br />
* [http://www.rtcgroup.com/arm/2008/ ARM Developers' Conference], Santa Clara Convention Center, Santa Clara, Calif., USA, October 7-9, 2008<br />
* [http://www.cmp-egevents.com/web/escb Embedded Systems Conference Boston 2008], Hynes Convention Center, Boston, USA, October 26 - October 30, 2008: [http://beagleboard.org/demo/esc Resources]<br />
* [[BeagleBoard/contest|BeagleBoard contest]] #1: Create a cool BeagleBoard application and win a Rev C1! Closed, ran until January 9, 2009<br />
* [http://www.silica.com/events/seminars/seminar-overview/ti-omp-workshop.html OMAP35x training by Silica], January 21, 2009, Cambridge, UK, ARM Holdings Lecture Theatre. [[RichardB's notes from the seminar]]<br />
* [[BeagleBoard/contest|BeagleBoard contest #2]], unitl February 27, 2009: : Create a cool BeagleBoard application and win a Rev C2!<br />
* [http://groups.google.com/group/beagleboard/browse_thread/thread/b15cf8a5797c73a2 Silica - Free TI - ARM OMAP Workshop], Brussels, Europe, March 31st 2009<br />
* SILICA's [http://www.silica.com/events/seminars/seminar-overview/ti-omap-piccolo-poing.html Texas Instruments 2-in-1 Seminar: OMAP & Piccolo], May 13th 2009: Poing (Munich) - Germany<br />
* 24th until 27th June 2009: [http://www.linuxtag.org/2009/en.html Linux Tag Germany] with [http://groups.google.com/group/beagleboard/msg/27fefef5f1d2ef73 TI booth] and [http://www.linuxtag.org/2009/en/program/freies-vortragsprogramm/all-events/details.html?talkid=183 Beagle presentation]<br />
* until 31st July 2009: [http://www.cranessoftware.com/services/training/beagledesigncontest.html BeagleBoard Design Contest INDIA Edition] ([http://beagleboard.blogspot.com/2009/04/beagleboard-design-contest-india.html blog entry])<br />
* TI Technology Day Dallas, Tex. on June 16 will held a [http://www.linuxdevices.com/news/NS5682470737.html BeagleBoard users group meeting] (see section ''Availability'').<br />
<br />
==Beagle wiki pages==<br />
* [[BeagleBoardBeginners|BeagleBoard beginners guides]]<br />
* [[BeagleBoardAndOpenEmbeddedGit|BeagleBoard and OpenEmbedded Git]] installation guide and [[BeagleBoardOpenEmbeddedDevelopment|OpenEmbedded development]]<br />
* [[BeagleBoardDebian|Debian on BeagleBoard]] usage guide<br />
* [[BeagleBoardHandheldsMojo|Handhelds Mojo (ARM) on BeagleBoard]] usage guide (formerly known as Ubuntu (ARM))<br />
* [[BeagleBoardUbuntu|Ubuntu (ARM EABI) distribution at BeagleBoard]]<br />
* [[BeagleBoardRecovery|BeagleBoard recovery]] about fixing boards not booting any more because of broken NAND content<br />
* [[BeagleBoardJTAG|BeagleBoard JTAG]] and [[OMAP3530_ICEPICK|OMAP3530_ICEPICK]] about JTAG on BeagleBoard<br />
* [[BeagleBoardOpenOCD|BeagleBoard OpenOCD]] has infos about status and usage of open source JTAG software OpenOCD with Beagle<br />
* [[BeagleBoardNAND|BeagleBoard NAND boot]] about how to boot BeagleBoard from NAND flash<br />
* [[BeagleBoardPeripherals|BeagleBoard peripherals and adapters page]] about useful BeagleBoard add ons.<br />
* [[Mount_BeagleBoard_Root_Filesystem_over_NFS_via_USB|Mount BeagleBoard root file system over NFS via USB]]<br />
* [[BeagleBoardFAQ|BeagleBoard FAQ]]<br />
* [[BeagleBoardSugar|Sugar on BeagleBoard]]<br />
* [[BeagleBoard/DSP_Howto|BeagleBoard DSP howto]]<br />
* [[BeagleBoardRawLCD|Interfacing BeagleBoard to Raw LCD]]<br />
* [[BeagleBoard/gst-openmax|BeagleBoard OpenMAX usage]]<br />
* [[BeagleBoard/video|BeagleBoard video]]<br />
* [[BeagleBoardOpenCV|Using OpenCV computer vision library with BeagleBoard]]<br />
* [[BeagleBoard/James|James]]: Just A Miniature Entertainment System<br />
* [[U-boot_musb_gadget_support|U-boot musb gadget support]]<br />
* [[BeagleBoard-JP|Japanese translation of this Beagle page]]<br />
* [[BeagleEPD|BeagleBoard E-Ink Platform Driver]]<br />
* [[BeagleBoardFedora|Random hacking notes for getting Fedora 10 to kinda work with the BeagleBoard]]<br />
* BeagleBoard specific [[BeagleBoard/GSoC|Google Summer of Code 2009]] page, [[BeagleBoard/Ideas-2009|GSoC project ideas]] and [[BeagleBoard/GSoC/Application|GSoc application]]<br />
* [[BeagleBoard/Poky|Poky]] for BeagleBoard<br />
* [[Xenarc_USB_touchscreen_for_Beagleboard/OMAP3_EVM|Xenarc USB touchscreen for Beagleboard/OMAP3 EVM]]<br />
* [[BeagleBoard/BugAdapter|BeagleBoard Bug Adapter board]]<br />
* [[BeagleBoardDebianWifiInstallInfo|BeagleBoard Debian WiFi install info]]<br />
* [[BeagleBoard/DSP_Clarification|Info about the various Linux DSP systems for OMAP chips]]<br />
* [[BeagleBoardPinMux|BeagleBoard PinMux]]<br />
* [[BeagleBoardLinuxKernel|BeagleBoard Linux kernel manual compile]]<br />
* [http://www.hervanta.com/stuff/Beaglebot Beaglebot]: build an experimental robotics project with Beagle<br />
* [http://code.google.com/p/beagleboard/w/list code.google.com BeagleBoard wiki]<br />
* '''[[BeagleBoard/contest|BeagleBoard contest]]'''<br />
* [http://en.wikipedia.org/wiki/Beagle_Board Wikipedia BeagleBoard page]<br />
* [http://labs.embinux.org/index.php/Android_Porting_Guide_to_Beagle_Board Android port for BeagleBoard]: Instructions for porting Android on BeagleBoard<br />
* [[BeagleBoard/bangalore_user_meet |BeagleBoard Bangalore User Meet]]<br />
* [[BeagleBoardEclipse|Using Eclipse with Beagle]] (for JTAG debugging)<br />
* [[Zoom2Beginners|Zoom2 for Beginners]]<br />
* [http://wh1t3s.com/2009/05/11/beagleboard-as-usb-mass-storage-device-via-usb-otg/ BeagleBoard as USB Mass Storage Device via USB OTG]<br />
* [http://digitalsurveyinstruments.com/beagleperiphials/solarcomputer/index.htm BeagleBoard as solar powered computer]<br />
* [http://blog.makezine.com/archive/2009/02/blinking_leds_with_the_beagle_board.html Blinking LEDs with the Beagle Board] from Make:Online<br />
* [http://www.crashcourse.ca/wiki/index.php/BeagleBoard Robert's private Beagle wiki] (please don't add anything there, do it here. It will help to avoid scattering. Thanks!)<br />
* [http://felipec.wordpress.com/2009/03/26/omap3-public-dsp-binaries-now-work/ Felipe's blog] about D1 MPEG-4 decoding using less than 15% of CPU with help of DSP<br />
* [http://www.syspire.de/node/3 Embedded Mediacenter] based on BeagleBoard (German)<br />
* [http://pandorawiki.org/Floating_Point_Optimization Floating Point Optimization] with VFP-lite and NEON intro<br />
* [http://particolarmente-urgentissimo.blogspot.com/2009/09/beagleboard-setting-date-via-gps.html Beagleboard setting date via GPS]<br />
<br />
==Beagle photos==<br />
* [http://www.flickr.com/groups/beagleboard/pool/ Beagle board pictures at flickr]<br />
* [http://www.flickr.com/photos/32615155@N00/2439256116/ Beagle board and USRP]<br />
* [http://www.flickr.com/photos/nishanthmenon/2438406603/ Modify SDP3430 QUART cable for beagle]<br />
* [http://www.flickr.com/photos/koenkooi/2695061759/ MythTV on Beagle]<br />
==Beagle videos==<br />
* [http://uk.youtube.com/watch?v=fL_XMieanSc Beagle Board Beginnings]<br />
* [http://www.youtube.com/watch?v=cXr-D1wROfQ Beagleboard in the Living Room]<br />
* [http://uk.youtube.com/watch?v=FuVwh_VrIxk Beagle Board 3D, Angstrom, and Ubuntu]<br />
* [http://uk.youtube.com/watch?v=TUYOjRGYeYU testsprite with beagleboard]<br />
* [http://uk.youtube.com/watch?v=9Z4ZTovtFKk Beagleboard LED demo]<br />
* [http://uk.youtube.com/watch?v=R33dzREZGEk LCD2USB attached to a beagleboard]<br />
* [http://www.youtube.com/watch?v=7D3V6BUpGLE Video blending in hardware]<br />
* [http://www.youtube.com/watch?v=-tUBXD-KRp4 Beagle Running Angstrom (VGA) on DLP Pico Projector]<br />
* [http://www.youtube.com/watch?v=3ToYOgP9f9U SGX on Beagle working with Linux 2.6.27]<br />
* Not on Beagle OMAP3530: [http://youtube.com/watch?v=5i9cWOK1spw Ubuntu 7.04 on on OMAP3430 SDP]<br />
* [http://in.youtube.com/watch?v=nADn_vNVEKw Beagle Board booting Android]<br />
<br />
==Beagle manufacturing==<br />
* [http://www.youtube.com/watch?v=C-CwkjT9z_0&feature=related Beagle Solder Paste Screening]<br />
* [http://www.youtube.com/watch?v=9LLjDovIG2M&feature=related Beagle Assembly Inspection]<br />
* [http://www.youtube.com/watch?v=sbOZfBnoVnM&feature=related Beagle Functional Test]<br />
* [http://www.youtube.com/watch?v=cvDtXmJJcEI&feature=related Beagle Reflow]<br />
* [http://www.youtube.com/watch?v=W2o4NTASxN0&feature=related Beagle Board Assembly at Circuitco]<br />
==Fun==<br />
* Enjoy [http://www.beaglegame.com/ BeagleGame]<br />
<br />
=Other OMAP boards=<br />
<br />
* OMAP1 OMAP5912 (ARM9 + C5x DSP) based [[OSK|OSK]] board.<br />
* OMAP3 OMAP3430 based [https://gforge.ti.com/gf/project/omapzoom/wiki/?pagename=HardwareInformation Zoom MDK], which has been superseded by the [http://www.logicpd.com/products/development-kits/texas-instruments-zoom%E2%84%A2-omap34x-ii-mdp Zoom II], and other [http://www.logicpd.com/products LogicPD kits].<br />
* OMAP3 OMAP3530 based [http://www.openpandora.org/ Pandora]<br />
* OMAP3 OMAP3503 based [http://www.gumstix.net/Overo/cat/Overo/115.html Gumstix Overo]<br />
* OMAP3 OMAP35x based EVM from [http://mistralsolutions.com/products/omap_3evm.php Mistral] and [http://focus.ti.com/docs/toolsw/folders/print/tmdxevm3503.html TI] (both are the same)<br />
* OMAP3 OMAP3430 based [http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=12013&contentId=28741 Software Development Platform (SDP)]<br />
* OMAP3 OMAP3530 based board from [http://www.magniel.com/omap3.html Magniel Inc.]<br />
* OMAP3 based [http://www.archos.com/products/imt/index.html?country=us&lang=en Archos 5, ARCHOS 5G and ARCHOS 7]<br />
* OMAP3 OMAP35x based [http://www.logicpd.com/products/som/ti/omap35x OMAP35x SOM-LV]<br />
* OMAP3 based [[Mini_Board|ICETEK-OMAP3530-Mini]], a Chinese BeagleBoard clone, with a [[MiniBoardFAQ|FAQ]]<br />
* OMAP3 based [http://www.ebv.com/en/products/categories/details/product/ebvbeagle-board EBVBeagle], a German BeagleBoard clone<br />
* OMAP3530 based [http://www.bsquare.com/products/hardware_solutions/3530.asp BSQUARE’s Dev Kit OMAP3530]<br />
* OMAP3530 based [http://beaversource.oregonstate.edu/projects/cspfl/wiki/CSPFL_Hardware OSWALD]<br />
* OMAP3 BeagleBoard-based [http://www.alwaysinnovating.com/touchbook/ Touch Book]<br />
* OMAP3530 based [http://www.analogue-micro.com/Cobra3530.html Cobra 3530 OMAP3530 module ]<br />
* OMAP3 based [http://www.kwikbyte.com/KBOC.html KwikByte 35XX System Module]<br />
* OMAP3530 based [[DevKit8000]], a Chinese BeagleBoard clone, slightly larger with additional peripherals (e.g. LCD/TSP, Ethernet and keyboard)<br />
* OMAP3530 based [http://www.igep-platform.com/ IGEPv2 Platform], a Spanish BeagleBoard clone, slightly larger, with additional peripherals like e.g. ethernet connector, wifi+bluetooth.<br />
* OMAP35x based [http://www.ultratronik.de/mmi-rechnerplattformen.html MMI4 from Ultratronik]<br />
* OMAP35x based [http://www.technexion.com/index.php/tao-3530 TAO-3530 from TechNexion]</div>Rpjdayhttps://elinux.org/index.php?title=BeagleBoardBeginners&diff=11916BeagleBoardBeginners2009-05-27T13:43:05Z<p>Rpjday: </p>
<hr />
<div>[[Category: Linux]]<br />
[[Category: OMAP]]<br />
[[Category:Development Boards]]<br />
[[Category: BeagleBoard]]<br />
This is the "community" beginners guide for [http://www.ti.com/ TI's] [http://www.arm.com/ ARM] based [http://focus.ti.com/general/docs/gencontent.tsp?contentId=36915&amp;DCMP=OMAP_Feb27_2008&amp;HQS=Other+PR+omap3503pr OMAP3] [http://beagleboard.org Beagle Board]. For "official" beginners guide see [http://code.google.com/p/beagleboard/wiki/outofthebox My Beagle Board Out of the box experience]. If something doesn't work or isn't covered in these guides, please feel free to ask at [http://beagleboard.org/discuss IRC or mailing list]. But ''before'' you ask there, make sure you read the '''[[BeagleBoardFAQ|FAQs]]'''.<br />
<br />
So I got this little board, what do I do now?<br />
<br />
=Finding all the right hardware=<br />
<br />
Links to the recommended collection of peripherals can be found on the bottom of [http://beagleboard.org/hardware BeagleBoard.org/hardware], but a bit more detailed comprehensive shopping list can be found on the [http://code.google.com/p/beagleboard/wiki/BeagleBoardShoppingList Beagle Board Shopping List].<br />
<br />
=Checking everything is working=<br />
<br />
First of all you might want to check it for possible defects. To do so, connect a 5-pin Mini-USB cable to the board and to a computer at the other end. If everything's all right you should see one LED light up and, after a short while, <br />
two more LEDs coming up too. Also, if you connect some speakers or headphones to the audio output you should hear a burst noise when starting the board. (you won't hear a noise on Rev.C boards, [http://groups.google.com/group/beagleboard/browse_thread/thread/810c8a97f6babe7b/d34fb2870be05602])<br />
<br />
=Serial connection=<br />
<br />
Connect a serial (COM port) cable (known as the AT/Everex Cable) to the 10-pin header on the board: it's next to the power input. Actually, pin number 10 is not used on either end of the cable, so if you have an AT/Everex Cable with a plug in the hole for Pin 10, you can use needle-nose pliers to break off pin 10 on the Beagle Board. Or you could drill out the plug. I used a hot needle for this purpose and it worked. The advantage to breaking off the pin on the BeagleBoard is that now your cable is keyed, and can't be plugged in backwards. For additional information on IDC to DB9 pin connections see [[BeagleBoardFAQ#New_board.2C_and_now|FAQ Serial Connection]].<br />
<br />
Now you need a Null-Modem DB9 male-male serial cable (that you can also buy from Digikey).<br />
<br />
=First interaction with the board=<br />
<br />
Connect the serial cable to the COM port in the beagleboard, and connect the other end to the COM port in the computer. Run minicom setup as root:<br />
<br />
#minicom -s<br />
<br />
You'll get a screen as follows:<br />
<br />
+-----[configuration]------+ <br />
| Filenames and paths | <br />
| File transfer protocols | <br />
| Serial port setup | <br />
| Modem and dialing | <br />
| Screen and keyboard | <br />
| Save setup as dfl | <br />
| Save setup as.. | <br />
| Exit | <br />
| Exit from Minicom | <br />
+--------------------------+ <br />
<br />
Select Serial port setup:<br />
<br />
+-----------------------------------------------------------------------+ <br />
| A - Serial Device : /dev/ttyS1 | <br />
| B - Lockfile Location : /var/lock | <br />
| C - Callin Program : | <br />
| D - Callout Program : | <br />
| E - Bps/Par/Bits : 9600 8N1 | <br />
| F - Hardware Flow Control : Yes | <br />
| G - Software Flow Control : No | <br />
| | <br />
| Change which setting? | <br />
+-----------------------------------------------------------------------+ <br />
| Screen and keyboard | <br />
| Save setup as dfl | <br />
| Save setup as.. | <br />
| Exit | <br />
| Exit from Minicom | <br />
+--------------------------+ <br />
<br />
Now press E to change those settings:<br />
<br />
+-----------[Comm Parameters]------------+ <br />
+---------------| |--------------+ <br />
| A - Serial | Current: 115200 8N1 | | <br />
| B - Lockfile L| | | <br />
| C - Callin P| Speed Parity Data | | <br />
| D - Callout P| | | <br />
| E - Bps/Par| A: 300 L: None S: 5 | | <br />
| F - Hardware F| B: 1200 M: Even T: 6 | | <br />
| G - Software F| C: 2400 N: Odd U: 7 | | <br />
| | D: 4800 O: Mark V: 8 | | <br />
| Change whic| E: 9600 P: Space | | <br />
+---------------| F: 19200 Stopbits |--------------+ <br />
| Screen| G: 38400 W: 1 | <br />
| Save s| H: 57600 X: 2 | <br />
| Save s| I: 115200 Q: 8-N-1 | <br />
| Exit | J: 230400 R: 7-E-1 | <br />
| Exit f| | <br />
+-------| | <br />
| Choice, or <Enter> to exit? | <br />
+----------------------------------------+ <br />
<br />
You should get 115200 8N1, press keys I, L, V and W. When you're done, press Enter.<br />
<br />
Now in the previous screen, press F to set Hardware Flow Control to Off. You should have this now:<br />
<br />
+-----------------------------------------------------------------------+ <br />
| A - Serial Device : /dev/ttyS1 | <br />
| B - Lockfile Location : /var/lock | <br />
| C - Callin Program : | <br />
| D - Callout Program : | <br />
| E - Bps/Par/Bits : 115200 8N1 | <br />
| F - Hardware Flow Control : No | <br />
| G - Software Flow Control : No | <br />
| | <br />
| Change which setting? | <br />
+-----------------------------------------------------------------------+ <br />
| Screen and keyboard | <br />
| Save setup as dfl | <br />
| Save setup as.. | <br />
| Exit | <br />
| Exit from Minicom | <br />
+--------------------------+ <br />
<br />
Press Enter to leave this screen and select Exit from Minicom next.<br />
<br />
Now run minicom as root:<br />
<br />
#minicom<br />
<br />
You should get the following screen:<br />
<br />
Welcome to minicom 2.2<br />
<br />
OPTIONS: <br />
Compiled on Sep 8 2008, 17:03:34. <br />
Port /dev/ttyS0 <br />
<br />
Press CTRL-A Z for help on special keys <br />
<br />
<br />
<br />
Texas Instruments X-Loader 1.41 <br />
Starting OS Bootloader... <br />
<br />
U-Boot 1.3.3 (Jul 10 2008 - 16:33:09) <br />
<br />
OMAP3530-GP rev 2, CPU-OPP2 L3-165MHz <br />
OMAP3 Beagle Board + LPDDR/NAND <br />
DRAM: 128 MB <br />
NAND: 256 MiB<br />
In: serial<br />
Out: serial<br />
Err: serial<br />
Audio Tone on Speakers ... complete<br />
OMAP3 beagleboard.org # <br />
<br />
If you don't, check the serial port. You'll have to go back to the config (minicom -s) and get to this screen:<br />
<br />
+-----------------------------------------------------------------------+ <br />
| A - Serial Device : /dev/ttyS1 | <br />
| B - Lockfile Location : /var/lock | <br />
| C - Callin Program : | <br />
| D - Callout Program : | <br />
| E - Bps/Par/Bits : 115200 8N1 | <br />
| F - Hardware Flow Control : No | <br />
| G - Software Flow Control : No | <br />
| | <br />
| Change which setting? | <br />
+-----------------------------------------------------------------------+ <br />
| Screen and keyboard | <br />
| Save setup as dfl | <br />
| Save setup as.. | <br />
| Exit | <br />
| Exit from Minicom | <br />
+--------------------------+ <br />
<br />
Now press A and change /dev/ttyS1 for /dev/ttyS0, or 2 or 3, depending on which port you have it connected. In my case it was 0. If you use a usb to serial adapter it is probably /dev/ttyUSB0 or perhaps /dev/ttyUSB1.<br />
<br />
Now we got the beagleboard shell! Congratulations!<br />
<br />
First command we wanna try is "help":<br />
<br />
OMAP3 beagleboard.org # help<br />
<br />
If you get some output, you're happy!<br />
<br />
If at some point you cannot enter text any more, verify that you have turned off flow control (F and G should be set to No). Also if after a reboot you do not see anything exit (ctrl-A q) and restart minicom<br />
<br />
=SD card setup=<br />
<br />
Now we want to use an SD card to install some GNU/Linux distro in it and get more space for our stuff. You can use either an SD or SDHC card. In the latter case of course take care that your PC card reader also supports SDHC.<br />
You should know that you are not dealing with an x86 processor, this is a completely different architecture called ARM, so don't even try to install a normal distro here.<br />
<br />
Since the steps for getting this to work are already written down in the wikis, I'll copy the information, pointing out some extra things you should take care of.<br />
<br />
First of all, we want to set up the SD card to be used as a boot disk, let's plug it into our PC card reader and see what the wiki page says:<br />
<br />
[http://wiki.davincidsp.com/index.php?title=MMC_Boot_Format MMC boot format]<br />
<br />
In order to create a bootable SD/MMC card under Linux compatible with OMAP3 boot ROM, you have to set a special geometry in the partition table, which is done through the fdisk "Expert mode".<br />
<br />
First, lets clear the partition table:<br />
<br />
================================================================================<br />
# fdisk /dev/sdb<br />
<br />
Command (m for help): o<br />
Building a new DOS disklabel. Changes will remain in memory only,<br />
until you decide to write them. After that, of course, the previous<br />
content won't be recoverable.<br />
<br />
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) <br />
================================================================================<br />
<br />
Print card info:<br />
<br />
================================================================================<br />
Command (m for help): p<br />
<br />
Disk /dev/sdb: 128 MB, 128450560 bytes<br />
....<br />
================================================================================<br />
<br />
Note card size in bytes. Needed later below.<br />
<br />
Then go into "Expert mode":<br />
<br />
================================================================================<br />
Command (m for help): x<br />
================================================================================<br />
<br />
Now we want to set the geometry to 255 heads, 63 sectors and calculate the number of cylinders required for the particular SD/MMC card:<br />
<br />
================================================================================<br />
Expert command (m for help): h<br />
Number of heads (1-256, default 4): 255<br />
<br />
Expert command (m for help): s<br />
Number of sectors (1-63, default 62): 63<br />
Warning: setting sector offset for DOS compatiblity<br />
================================================================================<br />
<br />
NOTE: Be especially careful in the next step. First calculate the number of cylinders as follows:<br />
<br />
* B = Card size in bytes (you got it before, in the second step when you printed the info out)<br />
* C = Number of cylinders<br />
<br />
C=B/255/63/512<br />
<br />
When you get the number, you round it DOWN. Thus, if you got 108.8 you'll be using 108 cylinders.<br />
<br />
================================================================================<br />
Expert command (m for help): c<br />
Number of cylinders (1-1048576, default 1011): 15<br />
================================================================================<br />
<br />
In this case 128MB card is used (reported as 128450560 bytes by fdisk above), thus 128450560 / 255 / 63 / 512 = 15.6 rounded down to 15 cylinders. Numbers there are 255 heads, 63 sectors, 512 bytes per sector.<br />
<br />
So far so good, now we wanna create two partitions. One for the boot image, one for our distro. Let's check what another wiki page has to say about it:<br />
<br />
[http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat Linux boot disk format]<br />
<br />
Create the FAT32 partition for booting and transferring files from Windows. Mark it as bootable.<br />
<br />
================================================================================<br />
Command (m for help): [n]<br />
Command action<br />
e extended<br />
p primary partition (1-4)<br />
[p]<br />
Partition number (1-4): [1]<br />
First cylinder (1-245, default 1): [(press Enter)]<br />
Using default value 1<br />
Last cylinder or +size or +sizeM or +sizeK (1-245, default 245): [+50]<br />
<br />
Command (m for help): [t]<br />
Selected partition 1<br />
Hex code (type L to list codes): [c]<br />
Changed system type of partition 1 to c (W95 FAT32 (LBA))<br />
<br />
Command (m for help): [a]<br />
Partition number (1-4): [1]<br />
================================================================================<br />
<br />
Create the Linux partition for the root file system.<br />
<br />
================================================================================<br />
Command (m for help): [n]<br />
Command action<br />
e extended<br />
p primary partition (1-4)<br />
[p]<br />
Partition number (1-4): [2]<br />
First cylinder (52-245, default 52): [(press Enter)]<br />
Using default value 52<br />
Last cylinder or +size or +sizeM or +sizeK (52-245, default 245):[(press Enter)]<br />
Using default value 245<br />
================================================================================<br />
<br />
Print and save the new partition records.<br />
<br />
================================================================================<br />
Command (m for help): [p]<br />
<br />
Disk /dev/sdc: 2021 MB, 2021654528 bytes<br />
255 heads, 63 sectors/track, 245 cylinders<br />
Units = cylinders of 16065 * 512 = 8225280 bytes<br />
<br />
Device Boot Start End Blocks Id System<br />
/dev/sdc1 * 1 51 409626 c W95 FAT32 (LBA)<br />
/dev/sdc2 52 245 1558305 83 Linux<br />
<br />
Command (m for help): [w]<br />
The partition table has been altered!<br />
<br />
Calling ioctl() to re-read partition table.<br />
<br />
WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot.<br />
<br />
WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk manual page for additional information.<br />
Syncing disks.<br />
================================================================================<br />
<br />
Now we got both partitions, next step is formatting them.<br />
<br />
================================================================================<br />
# mkfs.msdos -F 32 /dev/sdc1 -n LABEL<br />
mkfs.msdos 2.11 (12 Mar 2005)<br />
<br />
# mkfs.ext3 /dev/sdc2<br />
mke2fs 1.40-WIP (14-Nov-2006)<br />
Filesystem label=<br />
OS type: Linux<br />
Block size=4096 (log=2)<br />
Fragment size=4096 (log=2)<br />
195072 inodes, 389576 blocks<br />
19478 blocks (5.00%) reserved for the super user<br />
First data block=0<br />
Maximum filesystem blocks=402653184<br />
12 block groups<br />
32768 blocks per group, 32768 fragments per group<br />
16256 inodes per group<br />
Superblock backups stored on blocks: <br />
32768, 98304, 163840, 229376, 294912<br />
<br />
Writing inode tables: done <br />
Creating journal (8192 blocks): done<br />
Writing superblocks and filesystem accounting information: <br />
================================================================================<br />
<br />
All done!<br />
<br />
''NOTE'': For convenience, you can add the <tt>-L</tt> option to the <tt>mkfs.ext3</tt> command to assign a volume label to the new ext3 filesystem. If you do that, the new (automatic) mount point under <tt>/media</tt> when you insert that SD card into some Linux hosts will be based on that label. If there's no label, the new mount point will most likely be a long hex string, so assigning a label makes manual mounting on the host more convenient.<br />
<br />
=Writing the Ångström image into the SDcard and finally booting GNU/Linux=<br />
<br />
Now we have these two partitions. In the first one we're going to write the Linux boot image and other stuff, while in the other one we're going to write our Ångström root filesystem.<br />
<br />
First of all, let's download the files we're going to need from:<br />
<br />
[http://www.angstrom-distribution.org/demo/beagleboard/ Ångström demo images]<br />
<br />
Get the latest Ångström demo image (Angstrom-Beagleboard-demo-image......), MLO, u-boot.bin and uImage.<br />
<br />
Now you must copy MLO, u-boot.bin and uImage into the first partition (the FAT32 one) of your SD card. Do it in this strict order, since MLO must be in the first sectors of the card.<br />
<br />
Mount both partitions somewhere -- I'll assume they're mounted in /mnt/sda1 and /mnt/sda2, respectively.<br />
<br />
#cp MLO /mnt/sda1<br />
#cp u-boot.bin /mnt/sda1<br />
#cp uImage /mnt/sda1<br />
<br />
Now let's copy the root filesystem into the other partition (the ext3 one):<br />
<br />
#cp Angstrom-Beagleboard-demo-image..... /mnt/sda2<br />
<br />
and untar it. (IMPORTANT: You must untar directly onto the SD card. Do not untar somewhere else and then copy to the SD):<br />
<br />
#cd /mnt/sda2<br />
#tar -jxvf Angstrom-Beagleboard-demo-image....<br />
<br />
Once that's done, delete the tarball:<br />
<br />
#rm Angstrom-Beagleboard-demo-image....<br />
<br />
and unmount both partitions.<br />
<br />
#umount /mnt/sda1<br />
#umount /mnt/sda2<br />
<br />
Ok, we're almost done. Now we need to tell our BeagleBoard that we want it to boot from the SD card. Let's go back to our almost-forgotten minicom shell:<br />
<br />
OMAP3 beagleboard.org #<br />
<br />
The commands to set it up for booting from SD are:<br />
<br />
# setenv bootargs 'console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootwait'<br />
# setenv bootcmd 'mmcinit;fatload mmc 0 80300000 uImage;bootm 80300000'<br />
<br />
You might also want to configure your [http://elinux.org/BeagleBoardFAQ#Display_resolutions_.231 screen resolution] at this time.<br />
<br />
Now we want to save these variables into the NAND Flash so we don't have to type them in every time we reboot:<br />
<br />
# saveenv<br />
<br />
And, YES, we're done.<br />
<br />
Connect the BeagleBoard to a screen using a DVI cable and press the RESET button while holding down the USER button. Now you've got to be PATIENT, first boot takes a looooong time.<br />
<br />
gcohler has also provided a write-up on [http://code.google.com/p/beagleboard/wiki/HowToGetAngstromRunning getting Angstrom running].<br />
<br />
=Development with Ångström=<br />
<br />
If you want to get started building Ångström yourself, take a look at [http://elinux.org/BeagleBoard#OpenEmbedded OpenEmbedded on Beagle].<br />
<br />
=Important USB Cable Information=<br />
<br />
The BeagleBoard has a 5-pin USB OTG Mini-AB Female connector on the board. This allows the Beagle to operate as either a peripheral attached to a host computer (e.g. a PC) or as a host computer itself with peripherals attached.<br />
<br />
To operate the Beagle as a '''peripheral''', just use any USB A-male to Mini-B-male cable and you're good to go. Plus, you will not need a power brick for the Beagle as the Host PC will be able to power the board through the A to Mini-B cable.<br />
<br />
To operate the Beagle as an '''OTG Host''', you need a special cable -- plus you will need a power brick to power the Beagle, because it is now the host and must supply power to the peripherals. The key is that the cable needs to have a USB Mini-A-male ('''NOT''' a Mini-B) to connect to the Beagle. If you have cables with USB male mini connectors, the overwhelming chance is that they are Mini-B. While both Mini-A and Mini-B fit in the Mini-AB connector on the BeagleBoard, there is an internal wiring difference in the Mini-A and Mini-B connectors that allows the BeagleBoard to sense the type; Mini-A have pin 4 connected to GND, whereas Mini-B leave the pin unconnected.<br />
<br />
One source for a USB Standard A-female to Mini-A-male Adapter is [https://serialio.com/store/product_info.php?products_id=456 Serial I/O]. This can be used for connecting e.g. a USB hub to the Beagle.<br />
<br />
If you're using a USB hub, be sure it's a self-powered one. That means it should have a power input which you can connect to a power socket. The BeagleBoard by itself cannot power multiple USB devices and if you hook up too many it goes into a continuous disconnect/reconnect cycle.<br />
<br />
=Further reading=<br />
<br />
Main BeagleBoard resources are:<br />
<br />
* TI maintained [http://beagleboard.org/ BeagleBoard home] and [http://code.google.com/p/beagleboard/ Google wiki for BeagleBoard]<br />
* Community maintained [[BeagleBoard|eLinux wiki]] (see [[BeagleBoard#Beagle_wiki_pages|wiki article overview]] for a list of existing articles)<br />
<br />
=Thanks to=<br />
<br />
* _vlad<br />
* jkridner<br />
* ds2<br />
<br />
And the rest of the people in the #beagle IRC channel, if you cannot go through some of the steps, don't hesitate to ask there, there's always somebody willing to help you!<br />
<br />
Written by Nabax</div>Rpjday