1. EP93xx fight continued…

    During my recent OpenEmbedded related work I merged gcc patchset from Martin Guy to add support for Maverick Crunch FP unit present in Cirrus Logic EP93xx ARM cpus. This makes floating point operations faster then it was before.

    But does using it has a sense for whole system? Is it possible at all? The answers are No and Yes. I have root filesystem for EDB9301 created with Maverick optimisations but I also have plain armv4t one for same board. They both work but I do not recommend using Crunch optimized one — there are strange errors. For example “HZ=5.33381e-315” is given instead of “HZ=100” in openssl speed test (problem is somewhere in glibc).

    Let me quote Martin’s mail:

    My current recommendation is to enable crunch only in the floating point intensive libraries and applications that your application system uses, because having more than one crunch-enabled process running in the system makes the context switches slower because the kernel has to save and restore 19 64-bit registers at every context switch. It doesn’t bother doing this if only one process is using the FPU thanks to some clever Buytenhek laziness). I don’t have figures for how much of a difference this makes, but I guess one could calculate it from the context switching rate shown in the output of “vmstat 5” and the instruction times.

    I switched “ep93xx” machine in OE back to armv4t optimisations. Also I am working on adding some more EP93xx related patches from Hasjim Williams (he made first set of patches for OpenEmbedded and Martin Guy improved them and moved to newer GCC).

    One note for end of story — I am not interested in doing more ep93xx toolchain work. If your device/company need such help then contact Martin Guy for consulting offer.

    Written by Marcin Juszkiewicz on
  2. My opinion on next Nokia tablet

    There is a new set of rumours on websites about next Nokia tablet. Name it N900 (speculation name) or Rover (which is internal name) or famous N00 which probably is on prototypes (Nokia uses N00 on proto phones and tablets).

    As Jamie Bennett wrote on his blog it will be hard to sell this tablet. He compares it to netbooks but I see other device to buy instead — Touchbook which has similar internals but higher resolution (1024x600 instead of 800x480) on bigger screen (8.9” instead of 3.5”). OK, it will not have GSM like N900 but I do not care about it — my current phone is good enough.

    And then goes other problem — Maemo. I used Maemo 2005/6/7/8 on Nokia 770 and N810 and ok, it is fine and working system but… It is niche system — small amount of applications available and no other environments then Hildon one (chroot with KDE which runs in window under Hildon does not count).

    And question is how open will it be for other operating systems/distributions — I hope that Nokia will not follow 770/n8x0 way.

    Written by Marcin Juszkiewicz on
  3. Moblin 2.0 User Interface

    Yesterday Moblin team released new UI for their system. And most of “Moblin team” are my colleagues from OpenedHand times. It is nice to see what they were working on during time when we no longer worked in same team.

    I have to admit that I did not tried Moblin 2.0 beta. None of my machines use Atom cpu and I do not plan to check how it works on my desktop machine (1920x1080 is bigger then 1024x600 used by netbooks so results could be strange). I read Ars Technica review and watched introduction video on YouTube. But they show how many projects were used to produce one product. Maybe not finished yet but impressive enough to track it’s future.

    Will I use it one day? Hard to tell — it looks like lacking some components like mail or IRC client (I do not like being forced to use IM client for IRC).

    Written by Marcin Juszkiewicz on
  4. Sheevaplug arrived

    Recently I joined group of Sheevaplug owners. It is amazing how small it is…

    Simple tests shows that CPU is faster then OMAP3 used in BeagleBoard but this is not a surprise — 1200MHz compared to 600MHz makes a difference. And they are two different types of devices.

    What use I have for it? Some native builds and it will be my local TFTP/NFS server — I just have to connect 4GB pendrive to it. Ah… I also have to install Ångström on it first as using Ubuntu is not in my style. Especially not with 512MB flash used as JFFS2 partition…

    Some useful links for those who wonder how to get Sheevaplug working:

    Written by Marcin Juszkiewicz on
  5. Cursing Intel

    I am using Dell D400 laptop as my 32bit test machine and during conferences. It has Pentium-M cpu and Intel 855GM/ICH4 chipset. And this is where problem starts…

    As I like to use text console on it I wanted to get XGA (1024x768) framebuffer on it. So first try was “use intelfb”. But “video=intelfb:mode=1024x768-32@60” or “modprobe intelfb mode=1024x768-32@60” results in same message:

    [ 1760.280291] intelfb: Framebuffer driver for Intel(R) 830M/845G/852GM/855GM/865G/915G/915GM/945G/945GM/945GME/965G/965GM chipsets
    [ 1760.280368] intelfb: Version 0.9.6
    [ 1760.280471] intelfb: 00:02.0: Intel(R) 855GM, aperture size 128MB, stolen memory 892kB
    [ 1760.289927] intelfb: Non-CRT device is enabled ( LVDS port ).  Disabling mode switching.
    [ 1760.290251] intelfb: Video mode must be programmed at boot time.
    

    The solution is to give kernel “vga=792” argument but it is not possible here as kernel thinks that 800x600-8 is highest available one.

    OK, I can use X11 and terminal there — this works fine. But why kernel got so broken? Probably Intel developers do not test their changes on something older then i945 chipsets (and thats only because it is used in Atom based devices).

    Looks like I need to do “git bisect” to check when it broke and then create some hack to get proper behaviour…

    Written by Marcin Juszkiewicz on
  6. New multi I/O card installed

    Some days ago I exchanged my MOS9835 based I/O card with newer version based on MOS9845. Old one had one parallel port (which I never used) and two serial ports. New one do not have parallel port but has 6 serial ports instead. Why so much?

    The answer is simple — more devices on desk require more ports. I could go into USB-serial adapters and buy bunch of them and create set of udev rules to make them stick with device node names. But I read too many stories when such adapters works when 2 of them are used but adding 3rd breaks config. So I bought PCI card.

    Is it useful? Yes, it is. Does it add new problems? Few, but simple ones.

    First problem is to get proper numbering of ports. As mainboard used in desktop has one serial port already I wanted it to be /dev/ttyS0 and additional ones to be /dev/ttyS[1-6]. But fun starts in kernel config…

    There are few options which controls amount of serial ports in total (named CONFIG_SERIAL_8250_NR_UARTS) and amount of runtime registered ports (named CONFIG_SERIAL_8250_RUNTIME_UARTS). To get sane numbering I had to play with those values a bit. I set NR_UARTS to “10” (just in case) and then RUNTIME_UARTS to “7” so ports works like I wanted.

    Next thing is guessing which port is which ttySx node. I did that by connecting devices and checking with “picocom” which one is which. Now connectors are signed with number on one side :D

    Serial cables needs to be described
    Serial cables needs to be described

    Last thing was adding names to device nodes as it is easier to use /dev/ttyALIX then remember that Alix is connected to /dev/ttyS2 port. So currently I have this config:

    Port device
    ttyS1 BeagleBoard
    ttyS2 Alix.1c
    ttyS3 not used yet
    ttyS4 at91sam9263ek
    ttyS5 atngw100
    ttyS6 edb9301

    I use also serial cable with BUG but as it has female connector I use USB adapter with it. Have to buy female->male cable for it so it will use ttyS3…

    This is how it looks on desktop side:

    Connectors jungle in my desktop
    Connectors jungle in my desktop

    And one more thing — few readers suggested to use cards which adds 8 serial ports. I have to admit that I was thinking about it but decided against it. I already have lot of cables under desk and adding such hydra (card connector -> 8 cables with DB9 connector) would make it even harder to organize.

    Next cables to organize would be network — each device on desk wants at least one Ethernet cable…

    Written by Marcin Juszkiewicz on
  7. Powering all devices

    On my desk I have lot of things which require power. USB hubs, developer boards, customer devices etc. So far I counted 3x12V (ngw100, at91sam9263ek, edb9301) and 4x5V (usb hubs, beagleboard, bug). I do not count under desk devices because there is more space so extra cables from power supplies are not a problem (voltage is more problem as they use 6V, 9V or other less popular ones).

    How to power all of them? So far I use few 5V power adapters (originally made for Sharp Zaurus, HP iPaq or usb hubs) and one 12V one (so only one 12V devboard at time). This has to end as it occupy too much space and power sockets.

    So I bought old 200W ATX power supply in local computer shop specialised in old devices and parts from them. It is small but works. Now I need to buy few meters of cables (two colours — one for 12V and other for 5V) and do soldering job. The good thing is that ATX PSU require shorting just two cables to power up (PS ON with GND).

    Written by Marcin Juszkiewicz on
  8. EDB9301 hacking

    Today I visited friend at his office and during talk I found dusted EDB9301 board at shelve. As he do not use it any more I was allowed to take it for experimenting.

    First problem was bootloader — I am not so familiar with RedBoot so it took me a while to get it to load kernel from TFTP server. For reference: proper command is "load -v -r -b 0x01000000 /zImage-ep9301" where “/zImage-ep9301” is name of file to fetch. If you will get “Unrecognized image type: 0xe1a00000” message instead then you forgot “-r” switch (RedBoot do not know format of zImage kernel). I got some hints from HitchHacker Guide to ENP-2611 page.

    Second was Linux kernel as support for EDB9301 was not present in 2.6.29 version. Quick search on LAKML gave me patch which adds EDB9301 support. But even with this patch kernel does not wanted to boot due to different machine ID (454 instead of 462) — small patch to “arch/arm/tools/mach-types” solved problem :D

    Now I have board booted with root over NFS and wait for “base-image” build to end to have rootfs which will fit that device better then Openmoko one ;D

    EDB9301 board
    EDB9301 board
    Written by Marcin Juszkiewicz on
Page 58 / 105