Showing posts with label neo. Show all posts
Showing posts with label neo. Show all posts

20081218

Triple Booting the Neo FreeRunner




Hi everyone,

It's been a while since my last post, so I must apologize for that. Things have been very busy since November.

However, as some of you may already know, I was also experimenting with the Android operating system on my FreeRunner directly after the source code was released. In fact, I was arguably the first person to compile Android for the ARMv4T architecture. Thanks to the work of the community, it is now possible to run Android on the FreeRunner using KoolU's sources.

The private Android repository is to be merged with the official public repository sometime in Q4 2008, while the first release featuring an on-screen-keyboard will be Q1 2009. The areas I would like to concentrate on are WiFi, and Glamo improvements.

In any event, I'm currently triple-booting the FreeRunner with the latest OM image (or FDOM image), Android, and Gentoo. I'm planning using the Gentoo install for debugging things that will eventually go into the OM and Android images.

I'm using an 8GB uSD card with 4 primary partitions:

/dev/mmcblk0p1: MokoData (vfat) 5 GB
/dev/mmcblk0p2: AndroidData (ext2) 512 MB
/dev/mmcblk0p3: MokoRoot (ext2) 512 MB
/dev/mmcblk0p4: GentooRoot (ext2) 2 GB

Android is of course installed to the 'rootfs' partition in nand flash. MokoData contains uImage-android (from Sean McNeil), uImage-2008.9.bin, and uImage-2008.12.bin - the latter two are official OpenMoko kernels. I've updated the nand boot menu so that menu_2 boots OM 2008.9, menu_3 boots Android, and menu_4 boots Gentoo.

At some point in the near future, I'm hoping to create a torrent so that the configuration can be downloaded and shared by everyone in the community, but you may have guessed that Free Time(TM) is limited these days.

20081022

Android FreeRunner Updates

Well, I feel as though I've made significant progress in less than one day. I have Android trivially compiling for the ARMv4T / FreeRunner! By saying it compiles 'trivially', i mean that all I've done is remove the ARMv5E instruction extensions and gotten the build process to atually finish without errors. See my post on the android-porting mailing list for further info.

There obviously needs to be a different kernel configuration, but Benno has already done that.

20081021

Hello, Open-Source World!

It's official... Google's brainchild, Android, has finally said
Hello, Open-Source World!

I wonder how many hours it will take for the first Neo 1973 or Neo FreeRunner port to surface. The biggest challenge, it will seem, will be to provide a bridge between the (minimal) ARMv5TE instruction set that Android was designed for, and the OpenMoko handsets' ARMv4T instruction set (as present in the Samsung 2442 SoC).

Perhaps the next handset that OpenMoko releases will feature native ARMv5TE compatibility.

Update: I've been building android for the last few hours, having made a few build-oriented changes that I think will help bridge the ARMv5TE - ARMv4T gap. I'm going to list a few of the errors I've been running into below. Please note - although I only list each undefined instruction once, the errors occur in multiplicity and in different subdirectories. I will post ARMv4T compliant work-arounds soon. Please be patient.

  • bionic/libc/arch-arm/bionic/memcmp.S:44: Error: selected processor does not support `pld [r0,#0]
  • system/core/libpixelflinger/t32cb16blend.S:121: Error: selected processor does not support `smulbb lr,r7,lr'
  • system/core/libpixelflinger/t32cb16blend.S ... Error: selected processor does not support `smulbt ...'
  • external/jpeg/jidctfst.S:148: Error: selected processor does not support `smlabb r0,r2,r3,r5'
  • dalvik/vm/arch/arm/CallEABI.S:239: Error: selected processor does not support `blx ip'
  • dalvik/vm/mterp/out/InterpAsm-armv5.S:2653: Error: selected processor does not support `ldrd r2,[r0,#offStaticField_value]'
  • dalvik/vm/mterp/out/InterpAsm-armv5.S ... Error: selected processor does not support `strd ...'
  • external/sonivox/arm-wt-22k/lib_src/ARM-E_mastergain_gnu.s:77: Error: selected processor does not support `smulwb r4,r4,nGain'
  • external/sonivox/arm-wt-22k/lib_src/ARM-E_voice_gain_gnu.s:114: Error: selected processor does not support `smlawb tmp1,gainLeft,tmp0,tmp1'
  • external/opencore//codecs_v2/audio/aac/dec/src/calc_auto_corr.cpp
    /tmp/ccBi9nUH.s: Assembler messages:
    /tmp/ccBi9nUH.s:652: Error: selected processor does not support `clz r0,ip'
  • smultt, smlatt, smlawt, smulwt, qadd, qsub, qdadd, qdsub, smlabt
  • etc, etc, etc ...
Build problems that were not architecturally related:
  • out/target/product/generic/obj/SHARED_LIBRARIES/libdvm_intermediates/Misc.o: In function `dvmAllocBit': dalvik/vm/Misc.c:247: undefined reference to `ffs'
Theoretically, there are three possibilities to in order to have Android on the FreeRunner.
  • The first is to ] replace [ the red-highlighted mnemonics using an equivalent ARMv4 or ARMv4T instruction sequence. In some cases, this is impossible without a lot of context information.
  • The second is to completely re-implement each section from scratch, wherever one of the ARMv5TE instructions are issued, but using an algorithm optimized for the ARMv4 or ARMv4T architecture
  • The third option is to just remove it, e.g. for the pld instruction which only optimizes memory fetches by hinting (or not?)

20080603

Why Don't Manufacturers Build Mobile Phones to Last?

I bought a Motorola L2 14 months ago from a Fido store in Toronto - I was quite happy with it, considering that all I really ever want in a cellular phone is the ability to talk. The L2, although nothing special by today's standards, was a major step up for me because it had a colour LCD (Wow!!). Aside from that, it was my first major introduction to Google Mobile applications, such as Gmail and Google Maps. I was quite satisfied with the Motorola L2 - until the keys became completely unresponsive! Yes, only 2 months after the warranty had expired, the keys became fully unresponsive! I brought the device back to the nearest Fido outlet and they said it was most likely a short circuit they would not replace the handset, understandably, but also would not repair it. My L2 had not done much more than sit on a desk for the year that I owned it. Usually I used it for little more than a watch! It never got wet or experienced a single fall! Maybe dust was an issue, but it really shouldn't be.




In my opinion, if portable electronics are not built to last, then the manufacturers should be providing either recycling or repair facilities directly to the consumer. There are an estimated 130 million mobile phones disposed of annually in the U.S. alone!
In many cases, a large portion of the mobile phones depicted left were probably fully functional when they were disposed of. In many other cases, a replacement part is all that's necessary to restore the phone to its original fully working state.

I fell back to my previous mobile and it works marvellously!! That was a much more modest device - a DRASTICALLY more modest device than what is common by todays standards. It was a Siemen's A56, with a monochrome display ;-) These sort of devices were built to last !!

Oddly enough, you never see mobiles like this being sold in North America anymore, because the retailers have told us that we need colour LCDs, with games and cameras, and iTunes built-in. But if the phone doesn't work as a phone, what good is the rest?

The Siemen's should be fine for me until the OpenMoko / eo1973 GTA2 is being sold to the general public.

20080523

Improperly Credited Article on Slashdot

Slashdot is a funny place - don't get me wrong, I love to read it. The only problem I've ever had with it is that they edited the OpenMoko article I wrote on their site, and now someone else is claiming to have written it (kdawson).

Originally when I wrote the article, it was credited to 'Anonymous Coward'. I did that on purpose so that I wouldn't make anyone in the OpenMoko community offended, seeing as how they may have wanted to make a post themselves. I just wanted to beat them to it!

In my opinion, the article should have remained credited to 'Anonymous Coward' as opposed to kdawson, whoever the hell that is. Apparently kdawson believes that it is completely fine to assign credit of a work to someone who had nothing to do with the work at all.

What I find even funnier, is that I made a comment to the post I wrote only a week after noticing it was no longer attributed to 'Anonymous Coward'. Then the editors changed it back. Now, approximately 6 months later, someone else has again inappropriately taken credit for another's work.

What's the lesson in all of this? Always post under your real name if you intend to have something show up in the slashdot headlines. I guess I shouldn't feel bad then for copying the Slashdot logo to use with this post :)