New to BB

Hello all,

I am planning to buy a BB and work on it. I have a basic question. How
do you program BB? What softwares do you use? What softwares to make
your own UI?

Thanks in advance

I am planning to buy a BB and work on it. I have a basic question. How
do you program BB?

Depending on what platform software you use you either cross compile
applications/drivers or build them natively while logged into the
board.

What softwares do you use?

This depends on how you want to approach it. The vast majority of the
users of this list appear to use either the Angstrom distribution or
Ubuntu. The former is actually a build system that will generate a
distribution but binary releases are available from various locations.
I'm not sure where or how people are getting Ubuntu. Start with the
BeagleBoard.org web site and then look at the eLinux.org web site to get
started down this path.

Given one of these existing distributions, you install the software on
an SD card, boot the board and then use the board like a typical Linux
system. While I've not used these personally, you can probably just log
into the system and write and compile code that way. You'll probably
want an NFS mount for your HOME directory for this as compiling code on
an SD card tends to be very rough on the card and will shorten its
lifespan.

Alternatively, you can use a cross compiler toolchain to compile code on
a host system and then transfer that code to the SD card for use under
one of these distributions.

If you're looking for a real do-it-yourself environment, you can build
your own toolchain, bootloader, kernel and root file system to do
whatever you want. This is the approach I'm using with BeagleBox,
mostly so I get a better understanding of how things work in the
BeagleBoard world.

What softwares to make
your own UI?

If you use the existing distributions like Angstrom or Ubuntu you can
build applications using their UIs. This seems to be focused mostly on
Qt based on what I've seen on this list. However, it probably wouldn't
be that difficult to install and use the GTK+ libraries too. OpenGL is
also available under Anstrom, I believe. Don't know if Ubuntu is
supporting it yet.

If you're going the DIY route you can build you're own UI on top of the
frame buffer driver using X.org, OpenGL, GTK+ or Qt or a combination of
any of them. Building your own UI environment is more work than
building a UI for an application, of course. But you have more freedom
in the look of the final product.

Hope that helps.

Thanks for the reply Michael,

I am working on making a real-time system with UI (it can be on Ubuntu
or any other system that does not limit the real time processing).
Would I need a linux machine for that? I am new to Linux too so would
need some reading and learning.
Are there any resources that talk about the options you described in
detail (may be step by step) for a new learner? I will continue to
spend time on the net looking for these resources.

Thanks in advance.

I am working on making a real-time system with UI (it can be on Ubuntu
or any other system that does not limit the real time processing).

Real-time processing is a function of the Linux kernel. Ubuntu is a
"Linux distribution." A distribution is a collection of a Linux kernel,
GNU utilities, possibly graphical interface components (like a desktop
and supporting tools) and applications. So for real-time, you need to
understand the Linux kernel. For the UI you need to understand the
graphical interface components. Unfortunately, there is not a single
item to learn there - you need to learn about X.org, Qt/GTK+, OpenGL,
and a host of other issues.

FYI - most people who say "real-time" don't really grasp what that
means. So you might want to define what it means to you before you dive
into "real-time Linux". Your definition of it will determine what kinds
of software you're really trying to create.

Would I need a linux machine for that? I am new to Linux too so would
need some reading and learning.

I'd start with understanding the differences between the following:

1. a bootloader
2. the Linux kernel
3. a root file system
4. The X.org environment and graphical environments for Linux

You need a basic understanding of this in order to do both real-time and
a UI.

Are there any resources that talk about the options you described in
detail (may be step by step) for a new learner?

Each of these has many online references. You simply need to start
googling for them. For the bootloader, start with U-Boot. X.org may be
conceptually more difficult because not many beginner documents are
available for learning this environment, though many documents exist for
learning to use X.org via libraries such as Qt and GTK+ exist. In this
case I'd start by reading about Qt and GTK+. If you need 3D or
animation/video in your UI then you may need to consider OpenGL.

If you can find a book on embedded Linux that would be a good place too.
There are a few in print right now though the ones I've seen are a
little dated on some details. But the high level overviews should help
you get started.

I will continue to
spend time on the net looking for these resources.

Good luck!

Regarding books, I frequently recommend Chris Hallinan’s “Embedded Linux Primer”, for which the 2nd edition was just released.

Thanks for the references and book recommendation. I will be looking
at them now.

My goal is to acquire data (audio in) and display it 'without delay'.
The UI should be able to allow zooming in/out of data. If future do
FFT of the data and add to the display in 'real time'

Any suggestions based on this information?

Thanks in Advance

Hi NewToBeagle,

You are not afraid of challenges!
I think you should now also learn about the OMAP3530 DSP co-processor.
It would be ideal to do FFT and similar things for you in the future but
you should keep it and its interface in mind while doing the SW architecture.

What audio resolution and sampling rate are you planning to use?
And do you use BB’s integrated audio in and out?

If you are targeting to top quality audio, we have an expansion board
and drivers for BeagleBoard supporting 24-bit 192 kS/s audio outpot stream.
The analog part is based on the lowest noise and distortion opamps that
we could find on the market (TI OPA211). We are in the range of
130 dB S/N.

Good luck and keep us informed on your progress,
siñ

Hello Seppo,

Right now, the plan is to use integrated audio. But I would like to
know more about the expansion cards. What would be the price of thes
cards? Lets say 200ksps or more, 14-16 bits and 2-4 channels.

Thanks in advance

Hi Seppo,

May I have more details about expansion cards? the price and how to
purchase.
BTW,what kind of music data storage will be recommended?
Thank you.

Jacky

got a web page?

Acquiring audio data probably doesn't need a real time kernel. Most
especially is you don't have a hard drive (something other than the SD
card) since with the SD card you're likely to be using tmpfs (ramdisks)
for storing data until you're ready to push to flash. If you do add
real time then you should look at CONFIG_PREEMPT_RT, which is a set of
patches against the kernel to add real-time support. It changes the
scheduling algorithms in the kernel. Applications have few changes
though there are some best-practices they should adhere to during
initialization.

(Note: I just checked and the RT Wiki - the home of CONFIG_PREEMPT_RT -
is not working. You may need to try later.
https://rt.wiki.kernel.org/)

Zooming on audio data doesn't require 3D (though that can help) so you
are probably fine using X.org/Gtk+/Qt for your UI. There are many
suitable widgets for this.

FFT's may need the DSP support. I haven't played with that much yet.
You'll want a kernel that has support for the DSP in the OMAP processor.
Then you'll probably have to write you're own processing library to make
use of it within your FFTs. At least that's my current understanding.
There is the gst-dsp project, as well, but I'm not sure what state it's
in or how it might be of use to you. It enables use of the GStreamer
framework when using the OMAP DSP.

Good luck!