Tag Archives: phone

Internet over GSM abroad? Forget it…

Several times per year I am abroad for some conferences or holidays. And lack of Internet access from a cellphone there sucks.

In October I was in Munich, Germany for some internal Red Hat training. Had most of day for sightseeing but doing it without constant access to the Internet was a bit of disaster as I did not have time in previous week to mark interesting spots in Google Maps or to make any notes. And it was Sunday so all stores were closed == no way to buy local prepaid card.

In February I will visit Brussels, Belgium for FOSDEM and then Brno, Czech Republic for devconf.cz. Local SIM cards for both countries would be nice.

Did not yet checked Belgium ones yet but did that for Czech Republic. And man… situation there is awful. 200MB for 150CZK from mobil.cz looks like best offer for prepaid. Disaster… I wonder how slow it will be as well.

But there are exceptions. In United Kingdom and Hong Kong I went to first Three shop and got unlimited data at affordable price. Spain was a bit strange as I had to register SIM card. But for 20€ I got something like 2GB of data.

In Poland I am topping up my SIM with 100 PLN every 2-3 months and this gives me 6GB of transfer as a bonus. I now have 45GB of data available without any extra costs. And prepaid cards from all operators are available to buy at every corner…

ARMology

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.

I want to update my mobile phone

During last few days I played with CyanogenMod 10.1 nightly builds on my Nexus S phone. Then went back to CM 10 as it is more stable. But this also reminded me that I have 2 years old device…

So I did another round of checking what are options. As it will be for next 2 years I want 2GB of RAM, 720p screen and LTE support. And there is very small amount of those :(

  1. HTC Butterfly. MicrosD slot, 1080p screen, Japan only so far.

  2. LG Nexus 4. Latest Android for few releases granted. But also lack of microSD slot and only 16GB of storage.

  3. LG Optimus G. Base of Nexus 4. Not available outside of few operators (mostly US).

  4. Samsung Galaxy S3 LTE (GT-9305). MicroSD slot, MHL video output.

  5. Samsung Galaxy Note II. MicroSD slot, MHL video output.

Now it is time to complain :)

LG Nexus 4 is available only in some stores (or phone operators) for 450+ € — no Google Play Store like it was with earlier models (I do not call current state as selling). Also no LTE on European frequencies. No 32GB storage model.

Samsung GT-9305 sounds interesting. But… It is Exynos 4412 based. And I read The Saga of a CyanogenMod Exynos4 device maintainer by Andrew Dodd which gives clear message “avoid Exynos4 if you can”. If even Samsung update can break your device then something is going wrong. And so far SGS3 LTE lacks CyanogenMod support which is one of main blockers for me as it shows that there are no custom “ROMs” for it (I do not count images remixed from stock images).

Galaxy Note II is huge and would take some time to get used to it. Has CM support already. But again — Exynos4 ;(

So it looks like I need to wait another few months and check will there be something worth buying. In meantime I will stay with last CM10 release running on my Nexus S.

Want to buy Android tablet (again)

During my trip to Linaro Connect 2012q1 I want to buy Android tablet for myself. But this time I decided to spend more time on choosing one to not end with crap like Hannspree Hannspad which I bought half year ago.

Also situation on market changed. There are cheap tablets worth checking but there are also cheap crappy ones. So let me list what I checked so far.

Kindle Fire Nook Tablet Archos 80 G9 Classic Archos 80 G9 Turbo
price (USD) 199 249 259 299
RAM size 512MB 1GB 512MB 512MB 1
resolution 1024×600 1024×600 1024×768 1024×768
screen size 7″ 7″ 8″ 8″
internal storage 8GB 16GB 2 8GB 16GB
external storage none microSD microSD microSD
CPU OMAP4430 1GHz OMAP4430 1GHz OMAP4430 1GHz OMAP4460 1.5GHz 3
stock Android version 2.3 customized 2.3 customized 3.2 (4.0 in February) 3.2 (4.0 in February)
community Android version 4.0 4.0 not checked not checked
locked bootloader no yes (hacked) no no
USB Host no no yes yes
HDMI output no no yes yes

As you see my requirements are more or less simple:

  • dual core cpu (arm7)
  • 512MB ram (1GB preferred)
  • 1024×600 (or higher) resolution
  • 7-8″ screen size (I had 10″ and it was too big)
  • price below 300USD

During CES many vendors presented new tablets but I think that most of them will be released in Q2 or later. ASUS MeMo 370T looks nice for 250USD but it is not on market.

And I do not want 3G module in tablet — my phone has over 10GB of data limit to use for next months and so far I was not able to consume 1GB per month :)

Have I missed some devices? If yes then please share information in comments. Just remember that I do not want any of those NotionAdam/Viewsonic/Hannspad ones.


  1. rumours says 1GB in newer Turbo model 

  2. 13GB /data/ so it is hard to put own data over USB 

  3. if you are lucky and find them in store — OMAP4430 1.2GHz otherwise 

Reorganization of desk: day 1

Before UDS-O I decided that it is a time to change organization of my desk. Current setup is effect of two years of using several boards/computers etc.

Today I went on desk and under it and started disconnecting all cables which are no longer in use:

  • 3 null modem serial cables
  • 3 USB extenders
  • ATX 200W psu modded to provide 5V/12V for developer boards
  • E-SATA cable used with USB/ESATA hdd enclosure which is now connected over USB to PandaBoard
  • 3 Ethernet cables
  • mini-USB cable used as serial console with SheevaPlug
  • VGA cable which was used with second LCD — will be reconnected when there will be time for desktop

But that’s just beginning. Next days will bring disconnecting all developer boards, moving cable modem and phone base near to router, mounting two PandaBoards on piece of MDF (so they will not float), mounting some extra shelves to get rid of stuff from desk.

At the end I plan to have 2-4 LCD panels (or 2 monitors + 4-port KVM switch), two keyboards, two mouses, two laptops on one desk. Hope to finish it before end of next week.

Cyanogenmod7 released

When I bought Nexus S in January I was using stock Android for few weeks. But somewhere around FOSDEM I moved to nightly builds of Cyanogenmod which is alternative “distribution” of Android done in more open way.

Why moved? New features, out of box support for Polish language, no problems with getting root access for applications, big community behind project were main reasons. And more… I have now custom kernel (Netarchy 1.3.0.2), DPI changed to 210 (from original 240) with use of Font Changer and normal font replaced by Ubuntu one (also done in Font Changer).

I was updating my phone from one nightly build to another. From one RC to other and today moved to final version. Upgrading usually went fine, but each time I had to reinstall custom kernel or change back to 210 DPI but that’s how it works. I will probably check other alternative builds one day but today I am satisfied with Cyanogenmod7.

But as this is final version then maybe I will find some time and (after discussions with our Android magicians) will do build of it with Linaro cross compiler — who knows, maybe will give few more percent of speed extra?

Month with Nexus S

During Linaro/Ubuntu platform rally in Dallas I went to Best Buy and bought Nexus S as a phone which has to replace Nokia N900 which I used for over year. It was first time when I paid full price for such device — previously I took phones from operators or had some kind of discount (like DDP one for N900 year ago).

Switching from Nokia N900 to Nexus S was not easy task. First I lost calendar entries when tried to sync contacts to Google account using Mail for Exchange functionality of Maemo. Good that I had a backup… Copying of data from internal storage from one device to another was easy — microUSB cables are good to have thing. And then I took SIM card from N900, put it into Nexus and so far did not took it out yet.

Then came Market — after installing AppBrain application I had all applications, which I selected before or had on N900/Nitroid, installed properly. Then installed some more and removed some, added others etc. Common routine when you change operating system — finding which application suits best.

For Twitter I checked few and now I have official one and Plume installed. First one only to have contacts synced and do all tweeting in second one. For Facebook I use their default app — so far did not found replacement. Best situation was with e-mail client — installed K-9 Mail and added all my IMAP accounts into it. Now my phone tells me when do I have to check for new messages before my desktop one will notice ;D

Basically when it comes to applications Android shines (especially compared to Maemo). So far I found many programs for things which I did not had on N900: TV programme, public transportation guide, ATM finder and so on. And games! Dungeon Defenders, Gun bros and several others… Angry Birds has more levelpacks then Maemo version (but I never was a fan of that game anyway). Lot of things to choose from. Not to mention that installing of software is not so painful as it was on N900. You can use online Market, AppBrain and probably there are some other ways. Ok, I will probably miss APT but so far I am fine with what Android does. The most impressing thing is that during package installation device is not slowing down — it just adds one more entry to notification bar.

Notifications… I like how it is done. One place for icons on status bar which expands to whole screen list of what is going on. Nice stuff. Especially after installing some extra apps which will add there switches, weather informations etc.

Desktop looks different and has lot more customizations possible then hildon-desktop gave. And user can use other launcher then default one (I use ADW Launcher). Then just put widgets, icons, contacts, live wallpapers etc and you will be done. Business calendar which I use now can not be compared to Maemo parody of calendar (this is with most of apps anyway).

Do I miss some applications from Maemo? Yes, I do. Nokia did good job on Contacts and integration of IM/VoIP/Skype accounts. Under Android I did not yet found out how to get it in best possible way. So I have to run separate IM client (IM+ for now), Skype is also external (but contacts are synced into addressbook) and did not yet setup SIP accounts (but this is integrated). Good thing is that after first week of use I was able to use SkypeOut for calling my family in Poland.

But let’s get to hardware. Nexus S is light and small compared to N900. I like it’s look and feel. Screen works nicely for me everywhere. Before buying I was not sure how will I adapt to capacitive touchscreen after 8 years of using resistive ones but there was nothing to adapt to — it just works. Bigger problem is other direction — I need to press my TomTom harder now ;D Other issues? Lack of any kind of LED is a bit annoying. But NoLED helps a bit with it. Also WiFi reception looks worse then N900 had. But this one I need to check one day.

Overall I am satisfied about this change. I have phone which has latest version of popular operating system, have access to application market where there is a problem which app to install instead of “there is no application for this”. For some time I will have system updates provided by Google, then will switch to alternative firmware and will have current software.