Olimex Support Forum

OLinuXino Android / Linux boards and System On Modules => iMX233 => Topic started by: perf on September 15, 2012, 09:49:19 AM

Title: Getting started with imx233-olinuxino-maxi
Post by: perf on September 15, 2012, 09:49:19 AM
I have chosen Freescale's Community Yocto BSP as my preferred development system (industry standard), and followed the steps as described in the Olimex manual pages 13-14 carefully.
But the SD-card produced would not boot because the manual did not tell me to change MACHINE ??= 'imx233-olinuxino-maxi' in conf/local.conf file. Thanks to Otavio Salvador for this tip.

Now the SD-card boots, however there are not much you can do with the SD-card's software, there are no means to load packages.

I have tried to run "bitbake core-image-minimal-dev" but this failed due to (probably) some python error.

Any help?

-Per
Title: Re: Getting started with imx233-olinuxino-maxi
Post by: olimex on September 15, 2012, 11:26:27 AM
Yocto is not complete distribution and our experience says that it's not very useful for development as is now, my advice is to use ARCH this is the most complete support for iMX233-OLinuXino for the moment, you have package manager GCC etc.
Note that the Kernel in ARCH distribution is made with Yocto too, just it have added user friendly ARCH rootfs, all examples we prepare for iMX233 are based on the ARCH distribution
Title: Re: Getting started with imx233-olinuxino-maxi
Post by: perf on September 15, 2012, 02:26:52 PM
Thanks for your advice!

I have purchased an SD-flash along with my card and booted "alarm" - but I could not find a solution to the ramdom MAC address that worked from boot to boot so I decided to go for OE.

Now as you have your own forum, why not create a "sticky Getting-started" topic for each board and "distro" where the most important getting started advices are kept. Always include an example...

Like me, users have to google a lot and filter to find the good hints.

Now I have two problems:

1) How do I assign a fixed MAC address that remains the same after boot?

2) How to add python to the "alarm" SD-flash?


Regards
-Per


Title: Re: Getting started with imx233-olinuxino-maxi
Post by: izmile on September 15, 2012, 03:19:11 PM
I agree with perf. I am a beginner with iMZ233. I find it too hard to get information on how to build the kernel.  Distros are easy to get hold of but some builds are broken and doesn't get me anywhere. A sticky would be of great help.

-Ismail
Title: Re: Getting started with imx233-olinuxino-maxi
Post by: olimex on September 15, 2012, 03:29:36 PM
I agree the Get started is spread through log of places, this is why the Wiki will take place
for the moment though you can read this blog post: http://olimex.wordpress.com/2012/09/06/imx233-olinuxino-get-started-making-the-arch-linux-sd-card/ where you can see the MAC address problem addressed
Title: Re: Getting started with imx233-olinuxino-maxi
Post by: perf on September 15, 2012, 03:40:54 PM
I have tried that. After the next boot, my settings are gone.
There must be a config file somwhere, similar to /etc/network/interfaces in the Debian distros.

-Per
Title: Re: Getting started with imx233-olinuxino-maxi
Post by: davidjf2001 on September 15, 2012, 09:01:24 PM
I installed the image from archlinuxarm, it is patched with a constant MAC address.
Title: Re: Getting started with imx233-olinuxino-maxi
Post by: perf on September 16, 2012, 11:21:06 PM
In my first post, I ran into a python problem while running "bitbake core-image-minimal-dev".
I found the problem in ~/poky/meta/recipes-support/gnutls/gnutls.inc where the SRC_URI was outdated.
Line 18 should read:
SRC_URI = "ftp://ftp.gnu.org/gnu/gnutls/gnutls-${PV}.tar.bz2"

Now I have successfully baked core-image-minimal-dev.
Yes it has GCC and Python, but I do not know how to get the usb0 network up.
The driver is marked as a module in kernel config.
I guess that is by design since the kernel may be used by the imx233-olinuxino-micro version.

Any hints?

-Per
Title: Re: Getting started with imx233-olinuxino-maxi
Post by: perf on September 17, 2012, 01:07:38 PM
As I could not find a way to load the missing modules in order to establish the usb0 network, I decided to reconfigure the kernel and changed the M to * at two places.
After new bitbakes and dd'ing, I have network!

Now, I face the next challenge, how to use "zypper"?

Are there any repositories I could use?
Where should I look?

-Per
Title: Re: Getting started with imx233-olinuxino-maxi
Post by: Anoarith on September 19, 2012, 12:01:28 PM
Quote from: olimex on September 15, 2012, 11:26:27 AM
Yocto is not complete distribution and our experience says that it's not very useful for development as is now, my advice is to use ARCH this is the most complete support for iMX233-OLinuXino for the moment, you have package manager GCC etc.
Note that the Kernel in ARCH distribution is made with Yocto too, just it have added user friendly ARCH rootfs, all examples we prepare for iMX233 are based on the ARCH distribution

Isn't Freescale's Community Yocto BSP lighter and so speeder than ARCH ? Or there isn't any advantage to use Yocto BSP?
Title: Re: Getting started with imx233-olinuxino-maxi
Post by: perf on September 19, 2012, 07:47:14 PM
Yocto and OE is closer to an industry standard then ArcLinuxARM (aka "alarm") for embedded use.
I like the general idea of Arc in the strive for simplification. But this also implies differences that users must learn - but who dares to ask? The official introduction to Distcc Cross-Compiling opens with this:

Disclaimer: This guide will appear vague and incomplete if you aren't sure what you're doing. This is intentional. This is specifically not designed for users new to software compilation and toolchain components.

This is enough to put me off, even though I started working with embedded processors in 1974. Now, I am retired and 70 years old. I have seen so many development systems over the years that I know there are no such thing as silly questions!
I have used OE targeting Gumstix for the last couple of years. I find it well documented and there are few but some differences to learn if you change the target processor.

As an example of excellent articles, check http://www.jumpnowtek.com/
Olimex should have something similar for its ARM processors.

I would like to participate, but not alone  :(

Title: Re: Getting started with imx233-olinuxino-maxi
Post by: davidjf2001 on September 21, 2012, 10:56:10 PM
Yocto has too many layers and is too corporate.  Arch is much easier to modify and manageable by individuals.  Sure the filesystem may not match your desktop but any programs you write/run will run as well if not better.
Title: Re: Getting started with imx233-olinuxino-maxi
Post by: perf on September 22, 2012, 06:46:23 PM
I agree that Poky/OE is heavy. And I will try to use Arc for my imx233-olinuxino-maxi. So far I have compiled and run a test application - using the sshfs advice of this forum.

But how do I solve my next problem?
I need to write a linux driver for my 2x16 character LCD. The CPU chip has hardware support that I wish to use. And I do not find an existing driver?
Are there an Arch-way of doing that or do I have to resort to Poky/OE for drivers?


Title: Re: Getting started with imx233-olinuxino-maxi
Post by: davidjf2001 on September 22, 2012, 08:43:49 PM
(perf) You are not very clear about what you are trying to interface. Poky/OE is just the build system, anything you can build under it you can build under arch.  The are many examples of LCD drivers in user and system space (google), you should be able to adapt these to the GPIO interface if that is what you intend, or you may have a serial interface or usb.
Title: Re: Getting started with imx233-olinuxino-maxi
Post by: perf on September 23, 2012, 12:10:09 AM
The display is a Hitachi HD44780 compatible 2x16 character LCD display which I want to interface to the iMX233. And I plan to utilize its LCDIF controller. The LCDIF block on i.MX23 supports a number of different LCD display interfaces, including the simple HD44780 ones.

As far as I know today, there are no LCDIF drivers for this simple display, so I was preparing myself for the job of writing a Linux driver module. That is why I was heading into Open Embedded - as I have used it before for my Gumstix. Using my Ubuntu laptop and Pokey/OE, I know it can be done using that tool.

I do not know how to develop a driver with ArcLinuxARM. I would very much like to know as it should be simpler than OE to use. However, I do not have an ARM based host, just the Olinuxino-Maxi.

Can it be done? Where can I find that information?
Title: Re: Getting started with imx233-olinuxino-maxi
Post by: davidjf2001 on September 23, 2012, 05:16:13 PM
I briefly scanned the LCDIF block, I'm not sure the LCDIF buys you a lot for small character displays. I would look to Freescale forums if you want to pursue LCDIF use.
You should be able to do what you want in user space, bit-banging GPIO. Once you get things working in user space, you could then port it to a kernel module should you need to.  If you have not used these displays before keep in mind they are slow.  The electrical interface needs delays, and worse many commands sent to the display take a long time to execute.  Personally, I would use pthreads and create a thread to manage the LCD in userspace.  If you still want to build a kernel module google "Alessandro Rubini and Jonathan Corbet" and look at their "Simple" example.  It is not for LCD's but a great example of modules.  You can easily build this from a makefile and kernel headers alone. This example builds in minutes on native platforms. 
Title: Re: Getting started with imx233-olinuxino-maxi
Post by: Kean on September 23, 2012, 06:20:38 PM
I agree with davidjf2001, the LCDIF doesn't buy you much when dealing with an alphanumeric LCD with its own controller like the HD44780.

Unless you need *really fast* updating of the LCD data, I'd suggest getting an I2C to LCD adapter and just connecting it that way.  Olimex don't seem to have anything like that, but see http://jeelabs.com/products/lcd-plug for a simple solution.

Kean
Title: Re: Getting started with imx233-olinuxino-maxi
Post by: Fadil Berisha on September 23, 2012, 09:22:16 PM
QuoteUsing my Ubuntu laptop and Pokey/OE, I know it can be done using that tool.

I do not know how to develop a driver with ArcLinuxARM. I would very much like to know as it should be simpler than OE to use. However, I do not have an ARM based host, just the Olinuxino-Maxi.

Can it be done? Where can I find that information?

Hi perf,

You don't need ARM based host to develop software for olinuxino. Everything you can do in your Ubuntu laptop with proper cross compiler. To produce code for olinuxino needed  toolchain with ARMv5 support. Because Ubuntu has default toolchain arm-linux-gnueabi for ARMv7arm, solution is to get proper toolchain from Debian repositories. Here is how I did in my Ubuntu laptop:

Make backup of file: /etc/apt/sources.list
Create new /etc/apt/sources.list as follow:

#
# -- Emdebian cross toolchains
#
deb http://www.emdebian.org/debian squeeze main

Install Emdebian package:

sudo apt-get install emdebian-archive-keyring
sudo apt-get update
sudo apt-get install gcc-4.4-arm-linux-gnueabi

Restore your original /etc/apt/sources.list

Now you have in your Ubuntu system arm-linux-gnueabi- toolchain producing code for olinuxino. Before compiling kernel sources, export env variables:
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-

You can transfer produced code to your olinuxino-maxi with SD card or via network.

Regards,

Fadil Berisha
Title: Re: Getting started with imx233-olinuxino-maxi
Post by: perf on September 24, 2012, 11:53:46 AM
Thanks for replies!

You are right, using the LCDIF block does not give much as this display is slow and require very little data. Still, I would like to implement a LCDIF driver anyway because I may need the experience later on. This will be my first Linux driver.

When I return home, I will try out the advices.
Thanks again!


Title: Re: Getting started with imx233-olinuxino-maxi
Post by: andrewm37 on November 06, 2013, 12:51:57 PM
Quote from: Fadil Berisha on September 23, 2012, 09:22:16 PM
QuoteUsing my Ubuntu laptop and Pokey/OE, I know it can be done using that tool.

I do not know how to develop a driver with ArcLinuxARM. I would very much like to know as it should be simpler than OE to use. However, I do not have an ARM based host, just the Olinuxino-Maxi.

Can it be done? Where can I find that information?

Hi perf,

You don't need ARM based host to develop software for olinuxino. Everything you can do in your Ubuntu laptop with proper cross compiler. To produce code for olinuxino needed  toolchain with ARMv5 support. Because Ubuntu has default toolchain arm-linux-gnueabi for ARMv7arm, solution is to get proper toolchain from Debian repositories. Here is how I did in my Ubuntu laptop:

Make backup of file: /etc/apt/sources.list
Create new /etc/apt/sources.list as follow:

#
# -- Emdebian cross toolchains
#
deb http://www.emdebian.org/debian squeeze main

Install Emdebian package:

sudo apt-get install emdebian-archive-keyring
sudo apt-get update
sudo apt-get install gcc-4.4-arm-linux-gnueabi

Restore your original /etc/apt/sources.list

Now you have in your Ubuntu system arm-linux-gnueabi- toolchain producing code for olinuxino. Before compiling kernel sources, export env variables:
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-

You can transfer produced code to your olinuxino-maxi with SD card or via network.

Regards,

Fadil Berisha


Hello!

I cannot install the sudo apt-get install gcc-4.4-arm-linux-gnueabi that depends on cpp-4.4-arm-linux-gnueabi that depends on libgmp3c2 that cannot be installed by the packet manager. What do you recommend?
Title: Re: Getting started with imx233-olinuxino-maxi
Post by: tcmichals on November 06, 2013, 04:30:14 PM
I think this can be done using simple DIO,
http://www.st.com/st-web-ui/static/active/cn/resource/technical/document/application_note/DM00046039.pdf

I think this would be the easiest...
http://arduino.cc/en/Tutorial/LiquidCrystalDisplay
Simple 4 bit mode...
http://arduino.cc/en/Reference/LiquidCrystal
Another example using a microcontroller
http://learn.adafruit.com/adafruit-arduino-lesson-11-lcd-displays-1/parts


IMHO, just map the registers to memory mod the code from the arduino.

Also, there is buildroot, it is very small and is fast to build.  There is a default configuration for the olimex board.