Picking a development path

Hello everyone, just got my BB a couple of days ago and have loaded up the basics. I wanted to start doing some basic development and see what everything is about. I come from a server side programming background in Java and many other languages. I have done some light embedded programming with devices that are significantly less complex then the BeagleBone. I have CCS5 installed and it looks powerful. But I was wondering what are my language choices, IDE choices (I’d prefer to not buy CSS5 at 595 for what is currently only a side project) and the like.

What I know right now:

  • BoneScript looks cool, but seamed under developed for doing a major project (lacking documentation and still changing alot)
  • C seams like it’d work well, but C is also a big undertaking to jump into
  • Python could be an option (but I haven’t found a good development env for it that works here)

Thanks ahead of time for your thoughts.

Cheers,

Gregg

Hello everyone, just got my BB

I hate that abbreviation. Are you talking about the BeagleBone or
BeagleBoard? Both are 'BB'. Bone, xM or BeagleBoard (nothing short
for that one) are better nicknames.

a couple of days ago and have loaded up the
basics. I wanted to start doing some basic development and see what
everything is about. I come from a server side programming background in
Java and many other languages. I have done some light embedded programming
with devices that are significantly less complex then the BeagleBone. I have
CCS5 installed and it looks powerful. But I was wondering what are my
language choices, IDE choices (I'd prefer to not buy CSS5 at 595 for what is

CCS5 is free for use on the BeagleBoard/xM/Bone. Perhaps you mean
DS5? They are 2 different products. One is from TI (CCSv5) and the
other from ARM (DS5). Mentor Graphics has CodeSourcery. There are
other options as well, but all 3 of those are quite reasonable choices
for developing on BeagleX projects.

currently only a side project) and the like.

What I know right now:

- BoneScript looks cool, but seamed under developed for doing a major
project (lacking documentation and still changing alot)

Correct. If you are already a node.js pro and are familiar with
embedded Linux, you shouldn't have too much trouble getting what you
want out of bonescript (just some pointers on how to do some
bone-specific things). BeagleBoard/xM version hasn't been created
yet, but will show up about the same time I wrap up initial
development. (contributors welcome!)

- C seams like it'd work well, but C is also a big undertaking to jump into

Lots of C developers in the world. Qt is a great library/environment
for C/C++ development.

- Python could be an option (but I haven't found a good development env for
it that works here)

??? Python works great on the BeagleBoard/xM/Bone!

So just a quick little note, while doing some research I found this link: http://www.gigamegablog.com/2012/01/05/beaglebone-coding-101-blinking-an-led/ it’s a great source for getting started with the python side of things. I am not 100% sure I get it all, but I will figure it out. I haven’t worked in python for years so I don’t exactly get what’s going on with this line of code:

open(’/sys/kernel/debug/omap_mux/gpmc_ad6’, ‘wb’).write("%X" % 7)

The %7 thing gets me. O well, something to research tomorrow.

Jason,

Re: BB: Thanks for your response. I have the BeagleBone.

Re: CSS5: I was a little confused by the CSS5 intro screen when it asks for a license. It mentioned it was free for somethings but I didn’t know if that applied to the architecture on the BeagleBone. I picked the 90 day free trial, so I will probably have to fix that at some point. Quick question, which option should I have chosen?

Re: Python: I have already found an article I mentioned in another post that helped me get some basic blinking user LED’s going.

This project is going to be a lot of fun.

Follow up questions:

Does cloud 9 support writing python code? Should I use an external IDE for development and just upload to the BeagleBone when I am ready for a test run?

Hi Jason,
One problem I encountered with python on all platforms including the XM is the high CPU usage due to it being an interpreted language.
It was so bad with a SDR (Software Defined Radio) program called quisk (mostly python with some C) that the sound output came in short 1 second pulses using the XM.

Typical CPU usage for SDR programs written in C/C++ run at 2% CPU or less on a x86_64 box while the python quisk app runs ~30% CPU but the x86 or x86_64 boxes have enough CPU resource for it to run smoothly.
Regards
Sid.

Is there some reason you don't want to do Java? While we aren't very far into our project, my friend has a Java servlet/applet that's starting to work. It seems to work OK.

wjr

Is there some reason you don't want to do Java? While we aren't very far
into our project, my friend has a Java servlet/applet that's starting to
work. It seems to work OK.

I've tested the Oracle JVM and it seems to work fine. Which one are
you using? I've been waiting for oe-core/meta-java to have support
for Java included in Angstrom, but it isn't fully there yet as far as
I know.

Of course, Android is also a solution for writing code in the Java language.

  Is there some reason you don't want to do Java? While we aren't very far
into our project, my friend has a Java servlet/applet that's starting to
work. It seems to work OK.

I've tested the Oracle JVM and it seems to work fine. Which one are
you using? I've been waiting for oe-core/meta-java to have support
for Java included in Angstrom, but it isn't fully there yet as far as
I know.

Where/how do you get Oracle JVM for this board?

We're running openjdk under Ubuntu (it was easy to get with apt-get). We're netbeans people so we're compiling on our big machines and then copying to the bone. Haven't needed to set up the debugger yet but will in the future if needed. We are kind of fumbling between jetty and winstone to make a standalone app accessible. The app is twiddling gpio pins to control our outside hardware. Actually making pcb's and then controlling them is all new to us but it is really cool to see the leds flash and hear relays click when clicking on buttons in a web browser. And Java seems to work just fine.

wjr

We're running openjdk under Ubuntu (it was easy to get with apt-get). We're
netbeans people so we're compiling on our big machines and then copying to
the bone. Haven't needed to set up the debugger yet but will in the future
if needed. We are kind of fumbling between jetty and winstone to make a
standalone app accessible. The app is twiddling gpio pins to control our
outside hardware. Actually making pcb's and then controlling them is all new
to us but it is really cool to see the leds flash and hear relays click when
clicking on buttons in a web browser. And Java seems to work just fine.

Great! I really would like to hear more about your experiences.
Getting webapp people into hardware is a big goal of mine. The Bug
Labs folks provide a really nice Java platform as well, if you haven't
heard of it before.

Is there some reason you don't want to do Java? While we aren't very far
into our project, my friend has a Java servlet/applet that's starting to
work. It seems to work OK.

I've tested the Oracle JVM and it seems to work fine. Which one are
you using? I've been waiting for oe-core/meta-java to have support
for Java included in Angstrom, but it isn't fully there yet as far as
I know.

Where/how do you get Oracle JVM for this board?

http://www.oracle.com/technetwork/java/embedded/downloads/javase/index.html

You are likely to run into issues with the hardfp binaries as it is
now, but I was able to run things like CaffieneMark.

It would be nice to get everyone on the same page regarding hardfp. I
consider Khem Raj one of the best experts on that matter.

No reason I don’t want to use Java. I just didn’t see it available under angstrom using opkg. I hadn’t really considered using another OS on the board yet. Just starting this project. Ideally Java would be the best for this project as I have the most experience with it. However, I am concerned about availability of code for things like UART input and SPI handling. I guess some more research would be in order. Does anyone have any experience or know of a library for java that handles hardware IO?

This is a good point, I have noticed such things in the past with non-embedded development. I was leaning toward python, but this could be a problem. While my application is not going todo alot it does need to function in very near real time. CPU blocks would be a HUGE problem.

There is a library called RxTx, which handles communications with
serial and parallel ports. It is available on most distributions, and
is packaged for armel and armhf in Debian sid.

I guess it could be adapted to talk to SPI as well as UARTS.

David

Openjdk plus a bunch of VMs are available in angstrom. No need to use a closed source blob that might or might not match the system.

regards,

Koen

Since opkg doesn't seam to have an install package for it, should I just use a binary release and install it that way? Sorry if this seams like a silly question, I have worked on linux before but only on servers and the x86 and amd64 platforms. This arm stuff is new too me and I don't know if it's just psyching me out or if it is really that different.

Thanks,

Gregg