Yoctoproject meta-fsl-arm and imx53 quick start board

Yoctoproject is a solid framework for creating Linux distributions for embedded devices, and its layering mechanism makes it easy to add Linux OS to new target devices; With highly customization for a particular device it can include custom start-up scripts, software packages built with a high degree of optimization for a particular architecture and different user graphical interfaces from full Gnome desktop to a simple a serial console.

YP has 2 basic layers, board support packages layer and core layer; In the BSP layer is where we include all the custom software and configuration tweaks for a particular platform; The core layer provides the common software stack to provide from a simple command line interface to Sato desktop interface (Matchbox based and Gnome mobile stack). A third layer could be added to provide additional user interfaces such as LXDE, XFCE, Active plasma and more; YP is quite flexible.

One of the problems with Freescale i.MX based platforms is the lack of openness, getting the BSP provided by FSL requires to download a large tarball which bundles the kernel, boot loader, user space applications and Ltib an ancient build system which generates a file system so 2004, literary the software stack is around those years probably older. And that’s why I started working on YP BSP support for i.MX5 targets, and now the project has it’s on life with active members helping on getting the best support possible.

Freescale iMX53 quick start board is an Arm cortex-a8 low cost development board, with interesting peripheral interfaces like Sata II, hdmi and GPU based on AMD Z160. And YP BSP layer has a decent support for it, at github Freescale site there are instructions on how to get started.

But with newest i.MX6 processor a Wandboard should be more appealing.

Advertisements

Reusing portable media player with Rockbox

I’m a music lover all types indy rock, reggae, hiphop even k-pop; So hanging around with an broken ipod isn’t fun; I was tempted on getting a new media player but just looking that I have a few more media players around I decide to bring them back to live with Rockbox starting with Go-gear mp3 player that had a broken micro drive which I replace it with compact flash card increasing the storage space from 6Gb to 32Gb :).

I had a lot of trouble restoring the firmware even using Phillips recovering tools until I found good references at Rockbox wiki [1]; The next step is to actually replace vendor firmware with Rockbox, there are some driver issues that I can look as a side pet project but firstly I need a battery replacement and can find it in Mexico so I need to order one from a global battery vendor.

[1] http://www.rockbox.org/wiki/GoGearHDD6330

Gsoc midterm, where to go next?

Gsoc midterm evaluations pass last week, and there’s some good news about the status of my project, since the close relation between Openembedded and Poky I extend the support for Xilinx platforms to Poky which is faster than OE to build the rootfs for the reason that are far less recipes to parse and some others features. While Poky support for virtex5 platforms resolves my thesis problem to provide a graphical desktop, it also makes easier the software development for new users by using the Poky Anjuta plug-in although in can be used with OE.

Ponky on xilinx virtex5

Microblaze support still needs some work, but I’m close to complete it there’s no major changes
that I need to add to OE just resolve some issues with gcc and binutils related on shared libraries
linkage, there was reported a similar problem in OE mailing list, and going to start looking on that
direction.

And since Gsoc program is approaching to the end, I’m considering to start looking on labor
market, but first I need to complete my thesis and unfortunately this means a two month slip
:(, at the moment I’m having some hard to track issues on a hardware bridge from the system
bus to a simple peripheral and requires to learn how to use chip-scope (virtual logic analyzer)
to track the signals in order to validate its behavior. Thank fully there are some channels on
YouTube where I can learn in a simple and pain less way thanks to several Indian Technology
Institutes for having lectures online.

GSoC first week

I start working on OE microblaze support and is kind of tricky,
there are several efforts on updating gcc, binutils, glibc, and
I’m integrating from Xilinx repos since they are the most updated
versions available for microblaze; Still glibc build is failing
due to a mis configuration in binutils; So I have to options,
add a prebuild toolchain in OE or fix glibc; the exact error occurs at
linking the final objects ld complains about “unsupported emulation” to
workaround this there’s an run-time variable that can be used to set the
emulation mode `LDEMULATION` but fails in a later stage, so the error
roots are in binutils configuration.
OE changes are stored at http://gitorious.org/oe-microblaze/oe-microblaze

Xilinx provide me some target platform (ML405, ML507), for testing/validation
one of my concerns was import taxes from Mexican customs, but I provide the
paperwork to claim professional development usage to be extent of pay taxes,
well that’s one good thing of Mexican custom regulations, and I didn’t pay a
single dollar :). Thanks John and Grant for making possible to have some
hardware at home, that would free the only single ML507 board from my
school.

From Google every student is still waiting on welcome package and payment
cards, they are estimated to be delivered in two weeks, well lets wait and
see if Google is generous and send us a cool nexus one ;).

Xilinx 11.4 on Fedora 12; Playing with Spartan 3e starter kit

A few months ago I was at the Mexico city airport waiting for my flight departure and to kill time I went to look at magazines shop and found a Linux Journal with an article that cough my eye “Bere-Metal hacks with fpga programming” Marco Fioretti
article describes some FPGA basics covering Xilinx design tools, so I give a try to use Xilinx suite using an target platform a Spartan3e starter kit.
Xilinx suite does a better job than Altera Quartus software, installation is simpler not to mention that far less workarounds to get the environment setup and running; I found Gorge’s wiki a well document procedure to install Xilinx tools plus installing an alternative Jtag driver. The next steps are a simplification to get everything working under Fedora 12.
1. Get Xilinx suite.
Go to http://www.xilinx.com/support/download/index.htm and get the full DVD suite or the Web installer client as you prefer; I downloaded the full suite `Xilinx_11.1_ISE_DS_SFD.tar`
2. Untar
tar xf Xilinx_11.1_ISE_DS_SFD.tar
3. Run the installer script
./xsetup
4. Install Jtag driver
Install dependencies
sudo yum -y install fxload libusb-devel
Get source code for alternative usb-driver
git clone git://git.zerfleddert.de/usb-driver
Build the driver
cd usb-driver
make
Copy the driver to a place that Xilinx tools can find it.
cp libusb-driver.so /opt/Xilinx/11.1/common/lib/lin64/
Copy udev rules and Jtag firmaware
cd /opt/Xilinx/11.1/common/bin/lin64/install_script/install_drivers/linux_drivers/pcusb/
sudo cp xusbdfwu.rules /etc/udev/rules.d/
sudo cp *.hex /usr/share/
Reload udev rules *Only needed the first time
sudo udevadm control –reload-rules
5. Create a setup-xlnx script and add the next lines
#!/bin/sh
# Xilinx Webpack 11.1
XILINX_BASE=”/opt/Xilinx”
XILINX_VERSION=”11.1″
DISPLAY=:0
source ${XILINX_BASE}/${XILINX_VERSION}/settings64.sh
source ${XILINX_BASE}/${XILINX_VERSION}/ISE/settings64.sh
source ${XILINX_BASE}/${XILINX_VERSION}/EDK/settings64.sh
# No need to preload usb library if you installed in a location
# where xlnx tools can find it
#export XIL_IMPACT_USE_LIBUSB=0
#export LD_PRELOAD=/usr/local/lib/libusb-driver.so
# Optional Xilinx license definitions, if you have access to them
#export XILINXD_LICENSE_FILE=”2100@pcdesign;X:\licenses\Xilinx.lic”
#export LM_LICENSE_FILE=”2100@pcdesign;X:\licenses\Xilinx.lic”
6. Open a terminal and source the setup-xlnx script
source setup-xlnx
7. Optionally run the xilinxupdate utility to get latest updates
xilinxupdate
8. Start playing with Xilinx tools
ise – hdl design
xps – system integration
xps_sdk – software development environment
impact – programming tool
9. Programming the FPGA
Once a you complete an hdl design you need to generate a bitstream file to program the FPGA the tools also crates a script that can be used to automate the programing process just run
impact -batch <project-path>/etc/download.cmd
10. Continue learning
I have found in youtube several tutorial for hdl design using Xilinx tools even complete courses thanks to several Indian institutes of Technology

GSoC Project

GstEditor

Project goal: Enhance GstEditor.

My purpose is to rewrite GstEditor using Python, PyGooCanvas and Gstreamer bindigns for python in order to deliver an rich eye candy GstEditor; Preserving all the previous good ideas such as the ability to load/save pipelines in gst-xml format.

Brendan Howell GstEditor Python port http://gsteditor.wordpress.com/ is based on PyGooCanvas version 0.40  and there’s a significantly API changes for latest stable API version, the first task will be to fix the user interface.

The benefits for the Gstreamer community:

  • Provide a flexible tool for learning purposes on how the Gstreamer framework works
  • Use the exported pipeline in gst-xml format  in new applications can help new developers to integrate Gstreamer.

I like to take part of the GstEditor team in order to gain experience on Gstreamer framework that in a near feature will let me participate in a complex tasks enhancing the Gstreamer framework.

This project will be part of my semester project for “Object Oriented Programing” course that I’m currently taking.

Work plan:

  1. User interface, create the user interface with Glade.
  2. Connect the appropriate signals for functions callbacks.
  3. Integrate PyGoocanvas for GstElements figure drawing.
  4. Reuse/enhance the Gstreamer playback engine.

About me:

I’m a student in computer engineering, my study fields covers embedded systems and software engineering, my everyday duties are around programming desktop application in C, Python or programming in hardware description languages such us verilog.

I feel comfortable in both fields software/hardware and actually I have some work experience as a software engineer, a year ago I was working with TI OMAP processor dealing with audio/speech codecs, basically I used to work on an API that communicates the DSP side with the GPP side, in top of this Gstreamer is used for QA,  this is where I had my first exposure dealing with pipelines!

I’m a contributor to the Fedora project https://fedoraproject.org/wiki/User:Aalonso, from time to time I give tech talks promoting the use of open source technologies, one way to reduce the technological dependency of my country is to generate open alternatives that can benefit every one.

My home country is Mexico, and my school blocks all the useful ports for software developing svn, git, irc, all blocked, since this can be an issue I will use my home computer as a http_proxy.

Some of the projects that I work on last semester are:

Csmile:

Is an small application that takes pictures from a webcam, is written in C and uses Gstreamer to render the frame video captured from the webcam, the final picture is encoded using pixbuf utilities. The application turn out to be a great example on how not to use Goobject since I never implement an interface for get/set properties that can be used for changing the video frame size, final picture size, and as you ca see the picture orientation.

screenshot-csmile

Sigbox:

Is a simple PyGtk application for digital filter design, the application can load an wav audio file, choose a segment and apply a FIR or IIR filter. I wrote this app to demonstrate that Python, Matplotlib, Scipy and Numpy can be used as a replacement for Matlab, although there’s a minor bug on the installation script that I haven’t fix.
Both projects can be downloaded from github

Sigbox

As part of my Signal Processing class I was asked to develop an

application that make use of signal processing theory, our professor

suggest us to use Matlab, since I’m an linuxista I start writing my

application in Octave and realize that for an graphical front end it

was going to be more difficult to integrate an GUI, so I decide to go

for Python, Scipy, Matplotlib and PyGtk.

As result I develop Sigbox “An PyGtk app for digital filter design”,

some of the features are:

  • FIR filter design
  • IIR filter design
  • Load audio wav files and display
  • Frequency representation
  • Inverse frequency representation
  • Power sprectrum
  • Cepstrum
  • Apply filter

screenshot-sigbox-11

Python is one of the programming languages that I like the most,

since is extremely powerful and simple to use.

I still need to make some bug-fixing, specially in the setup script,

but I’m happy with the status of the project and that I receive a good

note on my project, but more important is that I present to my

classmates alternatives for software developing using open source tools.

Source code is available at github:

http://github.com/aalonso/sigbox/tree/master