Canonical Voices

Posts tagged with 'development'

Marcin Juszkiewicz

When last time I was in Cambridge we had a discussion about ARM processors. Pawe? used term “ARMology” then. And with recent announcement of Cortex-A12 cpu core I thought that it may be a good idea to write a blog post about it.

Please note that my knowledge of ARM processors started in 2003 so I can make mistakes in everything older. Tried to understand articles about old times but sometimes they do not keep one version of story.

Ancient times

ARM1 got released in 1985 as CPU add-on to BBC Micro manufactured by Acorn Computers Ltd. as result of few years of research work. They wanted to have new processor to replace ageing 6502 used in BBC Micro and Acorn Electron and none of existing ones did not fit their requirements. Note that it was not market product but rather development tool made available for selected users.

But it was ARM2 which landed in new computers — Acorn Archimedes (1987 year). Had multiply instructions added so new version of instruction set was created: ARMv2. Just 8MHz clock but remember that it was first computer with new CPU…

Then ARM3 came — with cache controller integrated and 25MHz clock. ISA was bumped to ARMv2a due to SWP instruction added. And it was released in another Acorn computer: A5000. This was also used in Acorn A4 which was first ARM powered laptop (but term “ARM Powered” was created few years later). I hope that one day I will be able to play with all those old machines…

There was also ARM250 processor with ARMv2a instruction set like in ARM3 but no cache controller. But it is worth mentioning as it can be seen as first SoC due to ARM, MEMC, VIDC, IOC chips integrated in one piece of silicon. This allowed to create budget versions of computers.

ARM Ltd.

In 1990 Acorn, Apple and VLSI co-founded Advanced RISC Machines Ltd. company which took over research and development of ARM processors. Their business model was simple: “we work on cpu cores and other companies pay us license costs to make chips”.

Their first cpu was ARM60 with new instruction set: ARMv3. It had 32bit address space (compared to 26bit in older versions), was endian agnostic (so both big and little endian was possible) and there were other improvements.

Please note lack of ARM4 and ARM5 processors. I heard some rumours about that but will not repeat them here as some of them just do not fit when compared against facts.

ARM610 was powering Apple Newton PDA and first Acorn RiscPC machines where it was replaced by ARM710 (still ARMv3 instruction set but ~30% faster).

First licensees

You can create new processor cores but someone has to buy them and manufacture… In 1992 GEC Plessey and Sharp licensed ARM technology, next year added Cirrus Logic and Texas Instruments, then AKM (Asahi Kasei Microsystems) and Samsung joined in 1994 and then others…

From that list I recognize only Cirrus Logic (used their crazy EP93xx family), TI and Samsung as vendors of processors ;D

Thumb

One of next cpu cores was ARM7TDMI (Thumb+Debug+Multiplier+ICE) which added new instruction set: Thumb.

The Thumb instructions were not only to improve code density, but also to bring the power of the ARM into cheaper devices which may primarily only have a 16 bit datapath on the circuit board (for 32 bit paths are costlier). When in Thumb mode, the processor executes Thumb instructions. While most of these instructions directly map onto normal ARM instructions, the space saving is by reducing the number of options and possibilities available — for example, conditional execution is lost, only branches can be conditional. Fewer registers can be directly accessed in many instructions, etc. However, given all of this, good Thumb code can perform extremely well in a 16 bit world (as each instruction is a 16 bit entity and can be loaded directly).

ARM7TDMI landed nearly everywhere – MP3 players, cell phones, microwaves and any place where microcontroller could be used. I heard that few years ago half of ARM Ltd. income was from license costs of this cpu core…

ARM7

But ARM7 did not ended at ARM7TDMI… There was ARM7EJ-S core which used ARMv5TE instruction set and also ARM720T and ARM740T with ARMv4T. You can run Linux on Cirrus Logic CLPS711x/EP721x/EP731x ones ;)

According to ARM Ltd. page about ARM7 the ARM7 family is the world’s most widely used 32-bit embedded processor family, with more than 170 silicon licensees and over 10 Billion units shipped since its introduction in 1994.

ARM8

I heard that ARM8 is one of those things you should not ask ARM Ltd. people about. Nothing strange when you look at history…

ARM810 processor made use of ARMv4 instruction set and had 72MHz clock. At same time DEC released StrongARM with 200MHz clock… 1996 was definitively year of StrongARM.

In 2004 I bought my first Linux/ARM powered device: Sharp Zaurus SL-5500.

ARM9

Ah ARM9… this was huge family of processor cores…

ARM moved from a von Neumann architecture (Princeton architecture) to a Harvard architecture with separate instruction and data buses (and caches), significantly increasing its potential speed.

There were two different instruction sets used in this family: ARMv4T and ARMv5TE. Also some kind of Java support was added in the latter one but who knows how to use it — ARM keeps details of Jazelle behind doors which can be open only with huge amount of money.

ARMv4T

Here we have ARM9TDMI, ARM920T, ARM922T, ARM925T and ARM940T cores. I mostly saw 920T one in far too many chips.

My collection includes:

  • ep93xx from Cirrus Logic (with their sick VFP unit)
  • omap1510 from Texas Instruments
  • s3c2410 from Samsung (note that some s3c2xxx processors are ARMv5T)

ARMv5T

Note: by ARMv5T I mean every cpu never mind which extensions it has built-in (Enhanced DSP, Jazelle etc).

I consider this one to be most popular one (probably after ARM7TDMI). Countless companies had own processors based on those cores (mostly on ARM926EJ-S one). You can get them even in QFP form so hand soldering is possible. CPU frequency goes over 1GHz with Kirkwood cores from Marvell.

In my collection I have:

  • at91sam9263 from Atmel
  • pxa255 from Intel
  • st88n15 from ST Microelectronics

Had also at91sam9m10, Kirkwood based Sheevaplug and ixp425 based NSLU2 but they found new home.

ARM10

Another quiet moment in ARM history. ARM1020E, ARM1022E, ARM1026EJ-S cores existed but did not looked popular.

UPDATE: Conexant uses ARM10 core in their next generation DSL CPE systems such as bridge/routers, wireless DSL routers and DSL VoIP IADs.

ARM11

Released in 2002 as four new cores: ARM1136J, ARM1156T2, ARM1176JZ and ARM11 MPCore. Several improvements over ARM9 family including optional VFP unit. New instruction set: ARMv6 (and ARMv6K extensions). There was also Thumb2 support in arm1156 core (but I do not know did someone made chips with it). arm1176 core got TrustZone support.

I have:

  • omap2430 from Texas Instruments
  • i.mx35 from Freescale

Currently most popular chip with this family is BCM2835 GPU which got arm1136 cpu core on die because there was some space left and none of Cortex-A processor core fit there.

Cortex

New family of processor cores was announced in 2004 with Cortex-M3 as first cpu. There are three branches:

  • Aplication
  • Realtime
  • Microcontroller

All of them (with exception of Cortex-M0 which is ARMv6) use new instruction sets: ARMv7 and Thumb-2 (some from R/M lines are Thumb-2 only). Several cpu modules were announced (some with newer cores):

  • NEON for SIMD operations
  • VFP3 and VFP4
  • Jazelle RCT (aka ThumbEE).
  • LPAE for more then 4GB ram support (Cortex A7/12/15)
  • virtualization support (A7/12/15)
  • big.LITTLE
  • TrustZone

I will not cover R/M lines as did not played with them.

Cortex-A8

Announced in 2006 single core ARMv7a processor core. Released in chips by Texas Instruments, Samsung, Allwinner, Apple, Freescale, Rockchip and probably few others.

Has higher clocks than ARM11 cores and achieves roughly twice the instructions executed per clock cycle due to dual-issue superscalar design.

So far collected:

  • am3358 from Texas Instruments
  • i.mx515 from Freescale
  • omap3530 from Texas Instruments

Cortex-A9

First multiple core design in Cortex family. Allows up to 4 cores in one processor. Announced in 2007. Looks like most of companies which had previous cores licensed also this one but there were also new vendors.

There are also single core Cortex-A9 processors on a market.

I have products based on omap4430 from Texas Instruments and Tegra3 from NVidia.

Cortex-A5

Announced around the end of 2009 (I remember discussion about something new from ARM with someone at ELC/E). Up to 4 cores, mostly for use in all designs where ARM9 and ARM11 cores were used. In other words new low-end cpu with modern instruction set.

Cortex-A15

The fastest (so far) core in ARMv7a part of Cortex family. Up to 4 cores. Announced in 2010 and expanded ARM line with several new things:

  • 40-bit LPAE which extends address range to 1TB (but 32-bit per process)
  • VFPv4
  • Hardware virtualization support
  • TrustZone security extensions

I have Chromebook with Exynos5250 cpu and have to admit that it is best device for ARM software development. Fast, portable and hackable.

Cortex-A7

Announced in 2011. Younger brother of Cortex-A15 design. Slower but eats much less power.

Cortex-A12

Announced in 2013 as modern replacement for Cortex-A9 designs. Has everything from Cortex-A15/A7 and is ~40% faster than Cortex-A9 at same clock frequency. No chips on a market yet.

big.LITTLE

That’s interesting part which was announced in 2011. It is not new core but combination of them. Vendor can mix Cortex-A7/12/15 cores to have kind of dual-multicore processor which runs different cores for different needs. For example normal operation on A7 to save energy but go up for A15 when more processing power is needed. And amount of cores in each of them does not even have to match.

It is also possible to make use of all cores all together which may result in 8-core ARM processor scheduling tasks on different cpu cores.

There are few implementations already: ARM TC2 testing platform, HiSilicon K3V3, Samsung Exynos 5 Octa and Renesas Mobile MP6530 were announced. They differ in amount of cores but all (except TC2) use the same amount of A7/A15 cores.

ARMv8

In 2011 ARM announced new 64-bit architecture called AArch64. There will be two cores: Cortex-A53 and Cortex-A57 and big.LITTLE combination will be possible as well.

Lot of things got changed here. VFP and NEON are parts of standard. Lot of work went into making sure that all designs will not be so fragmented like 32-bit architecture is.

I worked on AArch64 bootstrapping in OpenEmbedded build system and did also porting of several applications.

Hope to see hardware in 2014 with possibility to play with it to check how it will play compared to current systems.

Other designs

ARM Ltd. is not the only company which releases new cpu cores. That’s due to fact that there are few types of license you can buy. Most vendors just buy licence for existing core and make use of it in their designs. But some companies (Intel, Marvell, Qualcomm, Microsoft, Apple, Faraday and others) paid for ‘architectural license’ which allows to design own cores.

XScale

Probably oldest one was StrongARM made by DEC, later sold to Intel where it was used as a base for XScale family with ARMv5TEJ instruction set. Later IWMMXT got added in PXA27x line.

In 2006 Intel sold whole ARM line to Marvell which released newer processor lines and later moved to own designs.

There were few lines in this family:

  • Application Processors (with the prefix PXA).
  • I/O Processors (with the prefix IOP)
  • Network Processors (with the prefix IXP)
  • Control Plane Processors (with the prefix IXC).
  • Consumer Electronics Processors (with the prefix CE).

One day I will undust my Sharp Zaurus c760 just to check how recent kernels work on PXA255 ;D

Marvell

Their Feroceon/PJ1/PJ4 cores were independent ARMv5TE implementations. Feroceon was Marvell’s own ARM9 compatible CPU in Kirkwood and others, while PJ1 was based on that and replaced XScale in later PXA chips. PJ4 is the ARMv7 compatible version used in all modern Marvell designs, both the embedded and the PXA side.

Qualcomm

Company known mostly from wireless networks (GSM/CDMA/3G) released first ARM based processors in 2007. First ones were based on ARM11 core (ARMv6 instruction set) and in next year also ARMv7a were available. Their high-end designs (Scorpion and Krait) are similar to Cortex family but have different performance. Company also has Cortex-A5 and A7 in low-end products.

Nexus 4 uses Snapdragon S4 Pro and I also have S4 Plus based Snapdragon development board.

Faraday

Faraday Technology Corporation released own processors which used ARMv4 instruction set (ARMv5TE in newer cores). They were FA510, FA526, FA626 for v4 and FA606TE, FA626TE, FMP626TE and FA726TE for v5te. Note that FMP626TE is dual core!

They also have license for Cortex-A5 and A9 cores.

Project Denver

Quoting Wikipedia article about Project Denver:

Project Denver is an ARM architecture CPU being designed by Nvidia, targeted at personal computers, servers, and supercomputers. The CPU package will include an Nvidia GPU on-chip.

The existence of Project Denver was revealed at the 2011 Consumer Electronics Show. In a March 4, 2011 Q&A article CEO Jen-Hsun Huang revealed that Project Denver is a five year 64-bit ARM architecture CPU development on which hundreds of engineers had already worked for three and half years and which also has 32-bit ARM architecture backward compatibility.

The Project Denver CPU may internally translate the ARM instructions to an internal instruction set, using firmware in the CPU.

X-Gene

AppliedMicro announced that they will release AArch64 processors based on own cores.

Final note

If you spotted any mistakes please write in comments and I will do my best to fix them. If you have something interesting to add also please do a comment.

I used several sources to collect data for this post. Wikipedia articles helped me with details about Acorn products and ARM listings. ARM infocenter provided other information. Dates were taken from Wikipedia or ARM Company Milestones page. Ancient times part based on The ARM Family and The history of the ARM CPU articles. The history of the ARM architecture was interesting and helpful as well.

Please do not copy this article without providing author information. Took me quite long time to finish it.

Changelog

8 June evening

Thanks to notes from Arnd Bergmann I did some changes:

  • added ARM7, Marvell, Faraday, Project Denver, X-Gene sections
  • fixed Cortex-A5 to be up to 4 cores instead of single.
  • mentioned Conexant in ARM10 section.
  • improved Qualcomm section to mention which cores are original ARM ones, which are modified.

David Alan Gilbert mentioned that ARM1 was not freely available on a market. Added note about it.


All rights reserved © Marcin Juszkiewicz
ARMology was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

Yesterday I spent a bit of time reading a thread on Arch Linux ARM forum about their issues with Samsung ARM Chromebook. And found interesting information there.

Why Arch Linux ARM? Because they posted guide for replacing original U-Boot with normal one. I plan to make some modifications to my Chromebook (once it return from service as I want my speakers back) and this will be one of them (other will be serial ports).

If someone want to try this distribution then Craig Errington describes on his blog how to install XFCE. I did not used it and do not plan to but will check for tweaks and hints to get my Ubuntu experience better.

So if you play with running other distributions than ChromeOS on you Chromebook then check their forum — maybe you will find something useful as well.


All rights reserved © Marcin Juszkiewicz
Arch Linux ARM on Chromebook was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

During ELCE in Barcelona I spoke with guys from Qualcomm about their new board, what it is etc. Some time later guys from Intrinsyc (manufacturer of board) contacted me with free coupon for it. I ordered board and received few days later. Played a bit then but my Linaro work occupied me so it went back to the box.

During Linaro Connect in Hong Kong I bought small mini-ITX case to have a way of storing Dragonboard in safe way under desk as I thought that it may be interesting machine for doing some ARM development. There is SATA, Ethernet, USB 2.0 on board so why not…

It came with Android 4.0.4 installed on on-board eMMC. I hope to replace it with Ubuntu or Debian one day. But first have to get kernel newer than 3.0 working on it.

Which may lead into usual problem — there is only vendor kernel for it as mainline lacks support for it. Probably kernel/msm repository from CodeAurora will be fine. Will see.

06.06.2013 - 1

A bit to big to be useful as FM radio but had to check it ;D


All rights reserved © Marcin Juszkiewicz
Booted my Dragonboard was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

As guys from/around Texas Instruments promised there is new Beaglebone Black on a market. Faster, cheaper, with video output and other extras. For me it looks like Raspberry/Pi killer done right.

What is on board?

There is a lot of goods:

  • 1GHz TI AM355x cpu with ARM Cortex-A8 core supporting ARMv7-a instruction set
  • PowerVR GPU with OpenGL ES support (closed source driver)
  • HDMI output (with audio)
  • 512MB ram
  • 2GB eMMC
  • 92 expansion pins
  • USB Host
  • USB device
  • Ethernet
  • microSD slot
  • user controlled LEDs
  • serial port header

And it still supports (most of) expansion boards from the original Beaglebone which can add extra functionality so possibilities are uncountable. All that for only 45$.

But why it is better?

  1. ARMv7-a cpu core. It means that you can run any Linux distribution on it. Think Ubuntu/armhf, Debian/armhf, Fedora/armhf. No need to reinvent a wheel (aka armhfv6 done for Raspbian distribution).

  2. No dependencies on closed source components. You can boot board and use it with what ever you want and still have control on all sources used. Sure, there are some binary blobs for OpenGL ES but if you do not need this then you are fine. Try to boot R/Pi without binary blobs…

  3. Texas Instruments level of support. Sure, we heard that they abandoned mobile market but Sitara line of processors is still in development, there are new CPUs and they provide documentation and source code for product. Also amount of work done in mainline kernel is not something to be ignored.

  4. Expansion headers. Compare 26 pins of R/Pi with 92 of Beaglebone… Then add capes to this.

So which one to choose?

Beaglebone Black of course ;D

As people on IRC told there are other cheap devices made in China with faster cpus and more memory. But for me Beaglebone is not ‘yet another ARM computer’ but rather ‘yet another microcontroller on ultra steroids’ and this is where the true power of this board resides.


All rights reserved © Marcin Juszkiewicz
Death to Raspberry/Pi — Beaglebone Black is on a market was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

Some time passed since last Chromebook post so I want to give small update on Ubuntu status.

Dylan Reid from Chromium team fixed ALSA driver so frying speakers is now past. This change will go into next stable Chromium update probably. I got it merged into Ubuntu kernel and released as “3.4.0-4″ version in PPA.

In meantime Vladimir Smirnov took a look at “release-R25″ branch of kernel and got it booted. He shared configuration so I went with it, synced with Ubuntu one and got it running on my Chromebook. So expect new kernel release after FOSDEM.

There are Mali OpenGLES drivers available for download. I was unable to use them with R23 kernel (current Ubuntu one) but they do work with R25 branch so another thing to take care. This time I have to make new packaging as I need to add click thought license support. After that we can drop Chromium OS from our devices ;)

VBoot utilities are also in PPA. So signing of kernels and manipulating partition tables do not need files from Chromium anymore.

But there is one thing. Or rather lack of it… I do not have time to check do my packages work under older versions of Ubuntu (12.04, 12.10). Due to that I will not release any new updates for them — will support only ‘raring’ (13.04). Everything will be available in PPA so anyone can test.


All rights reserved © Marcin Juszkiewicz
Chromebook update was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

I do a lot of cross compilations. With different software elements. But sometimes I want to kick their authors into ass…

There is a good sign when you see $(CC) in Makefiles as it shows that author of code learnt that “gcc” is not the only compiler. But this is not the only compiler you should know about.

Recently I was adding one component (will save a name) into OpenEmbedded as this is one of dependencies for some bigger project (which I do not want to blog about). Argh… I managed to cross built it but patches are UGLY (will get better).

Using $(CC) to build everything is just broken. Especially when you need to compile a tool which will generate some code to get everything built. There is $(BUILD_CC) for it but you have to use it wisely. If there are common parts then compile them with $(BUILD_CC) if you need to run it and with $(CC) if you not. This way we, cross compilation guys, can just do “./configure;make;make install;package” is it native or cross build. Autotools (die, die, die) are able to handle that — so is your code if you write Makefiles properly.

But do not reuse same object files for target and native binaries — let it be “common.o” and “native/common.o” for example. OK, if you do only native builds then it will take a bit more disk space but we have 2012 not 1995… Storage is cheap.

There is also $(HOST_CC) but that’s for other post…


All rights reserved © Marcin Juszkiewicz
There are other compilers than $(CC) was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

I created a project at Launchpad to have one place to gather hackers playing with ARM based Chromebook support in their distros.

Project is named “Cross distro support for Samsung Chromebook (ARM based)” and is maintained by team named “Samsung Chromebook (ARM) hackers“. If you want to join then you need to have Launchpad account and then join the team.

Why Launchpad instead of (insert any similar place)? Because I know it and it has very good bugtracker which allows to track other bug trackers. And it does not have to have anything related with Ubuntu…

OK, most of bugs now are about Ubuntu but that’s because I added them. But take a look at bug about ALSA UCM support. It affects our project but also affected “alsa-lib” and “alsa-utils” packages in Ubuntu. There is nothing which could stop us from adding links to Debian, Fedora, OpenSUSE or other distros bug reports there.

I added PPA there which will get binary packages for “raring” (unless they got merged) and backports for “quantal” and who knows, maybe one day even for “precise”. Due to policy that repository will not be able to build for “armhf” architecture but one of my personal ones can so I will copy packages.

So, who wants to join us? We already have non-Ubuntu people in the team!


All rights reserved © Marcin Juszkiewicz
Chromebook hackers: unite! was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

During last days I spent some time in binutils, gcc, gdb, glibc, libffi repositories. All of them have GIT mirrors but most (if not all) are kept in CVS by default.

I used CVS in previous millenium just because I did not know good alternative. But I also know that move from it to other SCM can be painful.

But digging though commits because shortlog view is useless hurts… Exported patches need to be edited to drop all changes to many Changelog files. For libffi it is even better to grab patches from mailing list than from repository…

Life sucks, then you die^Whave to deal with CVS git repos.


All rights reserved © Marcin Juszkiewicz
I hate CVS based repositories was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

Half year ago I got Tizen development platform device. Played a bit with it and then put in a drawer due to other things to do.

Today I looked again at Tizen. Nothing changed. Git repositories still scream “****@#$!$ *** *** you developers!” due to lack of any commits other than code drop bombs.

So if someone (from Europe) wants this device — be first to comment. Sending with DHL and you pay for posting.


All rights reserved © Marcin Juszkiewicz
Does someone wants Tizen development platform device? was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

Complaining

People told me many times that I complain a lot (maybe even too much sometimes). But this is who I am and you have to live with it.

When I get new device I usually blog about it — like I told during recent conferences: “give me a device and I will find something to complain about, but also will usually tell something positive as well”. Sometimes those posts even got presented by other people at management meetings as an example of what is good/wrong in described products.

But so far I never got an email with ask to remove any blog post — there were comments outside of blog sometimes but never request to take my opinion down. I edited two posts — first one was before publication because I sent it for review (it was not requested by company), second time when I got some information about product in public space but device had to be announced week later at big event during one of trade shows.

What do you think? Should I write more about devices or rather not?


All rights reserved © Marcin Juszkiewicz
Complaining was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

Over year ago I wrote post in which I complained about cheap developer boards but concentrated on ones supported by Linaro. This time I want to write about boards which I did not even had occasion to play with.

Most popular one was Rasperry/Pi. But as I already wrote why I’m tired of it I prefer to not discuss it too much. In short: old cpu core (ARM11), not enough memory (256MB), requires closed binaries even to boot (the GPU binary also contains the first stage bootloader).

Then we have a lot of boards based on AllWinner A10/A13 cpus. Single core Cortex-A8, no Linux kernel support in mainline. Fun is that there is Serial ATA controller in SoC but most of the boards does not offer that so users have to use SD or USB storage which is slower. Example devices: Hackberry, Cubieboard, Mele A1000.

Fun stuff starts to appear from Freescale area. i.MX6 cpu has potential and many options available. There are Wandboard, Sabrelite with second one providing interesting addons like mini PCI-Express slot (with PCIe signals) or small board with buttons (Android oriented).

Quad A9 boards are also available with Samsung s3c4412 cpu — like ODroid-X which I described when it was released. But no Serial-ATA in this processor.

So which one to choose? All depends what you want to do with it. Few days ago on debian-arm mailing list someone asked “Workstation based on ARM motherboard, good idea ?” which got me to conclusion that it possible to setup low specification desktop today with ARM cpu.

I wonder how much would I have to pay for mini-ITX compatible board (can be smaller but has to be mountable to normal PC case) with 2-4GB of memory (SO-DIMM preferred) with quad core cpu and Serial ATA. So I could connect usb mouse/keyboard, monitor though HDMI, speakers with 3.5mm jack, Ethernet (1GbE preferred) and boot Debian/Ubuntu straight from SATA hard drive or ssd. 2D/3D acceleration working and recent (max 2 versions old) Linux kernel working with not insane amount of patches. But such day probably will not happen.

UPDATE: Looks like VIA had such idea with their APC board. Neo-ITX format but components few years old ;(


All rights reserved © Marcin Juszkiewicz
Let’s take a look at ARM boards again was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

Day has started as usual. Looked at my Google+, Facebook and Twitter streams and noticed new toy: ODROID-X developer board from HardKernel.

Is it interesting board? Yes, it is:

  • Quad core Exynos4412 CPU (ARM Cortex-A9)
  • 1GB ram
  • 6 x High speed USB2.0 Host port
  • 10/100Mbps Ethernet with RJ-45 LAN Jack
  • Audio codec with headphone jack and microphone jack
  • (micro)HDMI output with audio

Open Exynos4 Quad Mobile Development Platform

As usual some things to complain about:

  • 1.8V serial console with own connector (15USD for cable)
  • microHDMI connector when normal HDMI would fit
  • no Serial ATA (Exynos 4210 has controller, no docs for 4412)
  • 2GB ram would be lovely (Samsung Galaxy S3 has it in Korean version)

Anyway looks like during month I will check does someone from friends wants to buy it and get one for myself. May be good replacement for Pandaboard and/or MX53 Quickstart.


All rights reserved © Marcin Juszkiewicz
ODROID-X developer board was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

During my stay in Oakland, CA (due to Ubuntu Developer Summit) I decided to attend also Tizen Developers Conference. Not that I have any relations with this platform — just wanted to meet some friends from Maemo times. And I did not had plans for Tuesday evening while Tizen visitors had social event planned in The California Academy of Sciences.

For those which do not know what Tizen is a bit of history. Years ago Nokia made few internet tablet devices (770, n800, n810) and phone (n900) which were running Linux distribution named Maemo. It was loosely based on Debian. In meantime Intel created Moblin which was their distribution for mobile devices. Few years passed and they joined forces and MeeGo was born. Nokia released N9 phone with it, ASUS had netbook running MeeGo and maybe few other devices appeared on market. Then history repeated: MeeGo merged with LiMo and they created Tizen project.

It is hard to tell was conference success or not because I did not attended any sessions there — just opening keynote by Jim Zemlin. On first day I also came for technical showcase and partner demos. But they were squeezed in very small room so it was hard to discuss with people showing their work. Maybe next time organizers will give at least 4m² per demo — this should be a minimum.

But today I got Tizen Developer Platform device and thumbdrive with SDK on it. So decided to play a bit with it. It was not enjoyable experience.

First ugly part was Tizen SDK “so-called” installer. 823MB shell script… I thought that those times passed long time ago. Anyway tried to run it. All I got was message that 64bits systems are not supported. Good to know that, but my x86-64 systems are able to run x86 binaries without problems. Ok, I made workaround and then got message about missing qemu, rpm, libsdl packages. No, I will not install rpm on my Ubuntu systems.

So I decided to cut that crappy shell script and take a look at tarball. Fast “tail -n+122 tizen-sdk-0423.bin >tizen-sdk.tar.gz” and I was able to extract SDK. Got 26 zip archives.

One of them contains rootfs created from packages based on Debian/Ubuntu packages. Some are from times when dinosaurs ruled the Earth (debianutils 2.17 was released in 2006), some are more fresh (like gcc-4.5 based on version from May 2011). In other words tradition started by Maemo is continued in Tizen and developers are given mix of fresh tools with long time forgotten ones. And Scratchbox 2.

To connect with device there is “sdb” tool. It introduces itself as “Smart Development Bridge” but in past it was named “Samsung Development Bridge” (run ‘strings’ on binary). And it’s father has a name “Android Development Bridge” and has some more options.

Anyway if you want to connect to device then few steps are required:

  1. On device go to settings and set USB to ‘USB debugging’ mode. This will switch it into cdc_ether gadget.
  2. On host do “sudo ifconfig usb0 192.168.129.1″ to configure networking.
  3. Connect to device: “ssh root@192.168.129.3″

And then you can enjoy system which is a mixture of few Debian/Ubuntu versions. And forget about updates — unless you know how to get to 165.213.180.233 and know password of “kb0929.kim” user there (taken from /etc/apt/sources.list file).

Device uses Linux 2.6.36 kernel with unknown patches on top including CMA and Android ones. Quite old one but works. Hope to get newer one from someone.

What I do not like is availability of sources. There is review.tizen.org website with git repositories but I want to vomit when I see commits like “let’s add 2.6.36 kernel in one commit”. Lovely lack of ideas how to help developers.

What I will do with device? Not decided yet. Waiting for instructions how to get into bootloader to boot own kernels. Then who knows… replacing Tizen with Android or Ubuntu?


All rights reserved © Marcin Juszkiewicz
Tizen: first impressions was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

When I returned from Linaro Connect Q3.11 I noticed that none of my Pandaboards are on. I though that powered them off before leaving but two days later I needed at least one online. Power cycling PSU did not helped so I took 5V/3A one from box and got board running leaving old one for inspection later.

Today I disconnected all cables from PSU and opened it:

This does not look good… So time to buy another 100-200W old pc power supply and adapt for use with developer boards:

This big white connector had 12V, GND, 5V lines which allowed me to charge most of my developer boards and usb hubs.

It served well for 2.5 years — now have to recycle it…


All rights reserved © Marcin Juszkiewicz
My devboards lost power source was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

I own several developer boards and used many others. During last two years more and more so called cheap developer boards arrived on market but are they good or not?

This week I am at Linaro Connect Q3.11 now and there are many boxes here with Origen boards so I looked at one of them.

Board looks quite nice — there is CPU module and carrier board. 2 SD/MMC slots, serial, jtag, usb device, usb host (just one), power, audio in/out, lcd connector, few keys and microHDMI (cable to normal HDMI provided). Guess what is missing… Yes, they forgot to put Ethernet on board. Someone may say “but there is WiFi instead” but show me wireless operating at 100Mbps in all situations… I also got information that provided HDMI cable is quite fragile and can break. Normal size video output would fit without problems…

But board design problems are not limited to Samsung one. There is this nice i.mx53 Quick Start board from Freescale. You get VGA output and several other connectors. Nice change compared to other boards is SATA connector. But this also can be a problem cause you have to provide separate power for your Serial-ATA device. HDMI output (with audio) costs extra 49 USD but as this board is really small (3×3″) there was no space for it.

Next one? ST-Ericsson Snowball – board with lot of connectors with huge amount of different signals but without USB host ports. There is one USB OTG port and one USB device. Is USB host cable provided? No, it costs 8.04EUR more. What worries me is lack of USB signals in expansion slots (at least thats how I understood documentation). CPU for mobile phones^Wdevices only?

What we left? PandaBoard from Texas Instruments. I think that this is still best cheap developer board when it comes to ARMv7 cpus. It is not perfect (slow USB, lack of SATA) but things supported by OMAP4 processor are available. Ethernet is on USB but better such then none, 4 USB ports (2 on edge, 2 on expansion) and normal HDMI connectors for video.

Note that I do not compare speed of boards or how good/bad they are supported in mainline kernel — some of those things can not be compared, other are changing daily. For now I am staying with 2 Pandaboards and will wait for other boards to get up to it with kernel support.


All rights reserved © Marcin Juszkiewicz
What is wrong with all those cheap developer boards? was originally posted on Marcin Juszkiewicz website

Share/Bookmark

Read more
Marcin Juszkiewicz

It was 24th March 2010 when one friend asked me do I want to be added to beta testers list for new omap hardware. One of questions was “what would you like to have on board” so I replied:

  • hdmi out (does not care much about vga/svideo/composite out)
  • 2xSD slots (SD or microsd type)
  • ethernet (but rather not on usb)
  • serial on db9/icd10 + serial/jtag by miniusb (think sheevaplug)
  • OTG is not needed but can be present
  • BT would be nice but not required as I have 5 micro dongles here
  • few usb ports — if possible (not omap3530) on more then one hub
  • few leds (multicolor?) would be nice (bug 2.0 has 2xblue + 2xmulticolor)
  • few buttons including power/reset ones
  • and 5V 2.1/2.5mm power jack. I do not need power-on-otg because it require 500mA ports
  • onboard lcd+ts is not needed for me
  • ah… and mounting holes like in beagleboard so board can be mounted anywhere
  • connector with i2c/spi/gpio/etc/etc
  • I missed audio in/out
  • battery for rtc

And suggested to place most of connectors on 2 edges as it helps to organize desk. Atmel’s at91sam9m10 was given as example cause it has all connectors on top and left edge.

And time passed… At UDS-M TI people said that there will be cheap OMAP4 based board named PandaBoard. During dinner (later same day) I got added second time to early adopters list. I wonder how Rob Clark reacted when he saw me on a list already :D

And again time passed… Ubuntu/ARM people were playing with prototypes of PandaBoard (ES1.0, ES2.0 6-layer etc) and I had occasion to play with boards during Ubuntu/Linaro platform sprint in Prague. It looked nice (if you did not looked at ES1.0 one) and was more or less working fine.

And finally at 15th September I was told that at the end of month there will be production run from which several boards will be shipped to early adopters and few selected projects. Board travelled half of the world, then got back to US and at the end of UDS-N I got it.

Arrived home, powered BeagleBoard C3 off and started to assemble new board. Panda got several accessories connected:

  • +5V 3.5A power supply
  • powered USB hub
  • small USB keyboard
  • wireless USB mouse
  • 20″ LCD monitor with 1680x1050px resolution (this is also connected to my desktop)
  • 320GB Serial-ATA hard drive in SATA->USB enclosure

Also connected Ethernet, serial (by usb-serial dongle + 2 usb extenders) and used one of floating SD cards to have place for bootloaders and kernel. Config is much nicer then it was when I used BeagleBoard.

As operating system I am using Ubuntu 11.04 ‘natty’ as this is current development version and I have some things to check under it. Anyway I plan to move backwards and install 10.10 ‘maverick’ as primary system cause this will allow me to test omap4 hardware acceleration of graphics and audio/video decoding.

What I am using it for? Package building and testing. So far rebuilt whole KDE4 but it was segfaulting all the time on EfikaMX Smartbook so I am waiting for official ones (as there are some things to fix there first).


All rights reserved © Marcin Juszkiewicz
PandaBoard: my story was originally posted on Marcin Juszkiewicz website

Share/Bookmark

Related posts:

  1. BeagleBoard in a box
  2. How many serial ports are enough?
  3. My expansion board for BeagleBoard

Read more
Marcin Juszkiewicz

Few hints for chroot users

During last months I used chroot functionality many times — mostly to test my cross compilers in clean environment. In that time I collected list of hints for having less work.

  • Use APT proxy. I am using APT-Cacher NG for all my machines and chroots. This allows for APT lines like http://localhost:3142/pl.archive.ubuntu.com/ubuntu and gives 30MB/s download speed when I need to install something.
  • Disable installing of recommended packages. Most of time I do not need those and installing “texlive-extra-doc” takes precious megabytes. Just create /etc/apt/apt.conf.d/99-no-extra file with:

APT::Install-Recommends “0″;
APT::Install-Suggests “0″;

  • Mount /proc, /dev, /dev/pts filesystems — some packages depend on them during installation.
  • Set locale to “C” — simple export LC_ALL=C is enough. Otherwise applications will complain about missing l18n informations.
  • Create user with same UID/GID as your host one and use it for any work — will allow to use editors from host system to edit files.
  • Kill each daemon which started after installation — who needs several Samba daemons on one machine?


All rights reserved © Marcin Juszkiewicz
Few hints for chroot users was originally posted on Marcin Juszkiewicz website

Share/Bookmark

Related posts:

  1. How to cross compile ARM kernel under Ubuntu 10.10
  2. Ubuntu cross compilers – part 2
  3. UDS-N: Monday

Read more