1. PandaBoard: my story

    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).

    Written by Marcin Juszkiewicz on
  2. How to detect PandaBoard version

    Some time ago I got PandaBoard for my personal use. It is EA1 version but then there was a question which I heard countless times:

    Which version of OMAP4430 did you got?

    There are two possible answers: ES2.0 or ES2.1. During my return trip from UDS-N Nicolas Dechesne from TI asked me and instead of answering I just gave him board with “this one” answer. He looked and told “ES2.1” and I did not asked more.

    At home when I got it working I found PandaBoard Revisions wiki page which tells which GPIO lines should be checked. So I wrote simple test:

    for gpio in 171 101 182;
    do
        cat /sys/class/gpio/gpio$gpio/value;
    done
    

    And got “0 1 1” as an answer which according to table from wiki means “750-2152-010 (ES2.1, 8-layer board)-Production board/PandaBoard Rev. A1”. But sticker on mine says “750-2152-001 (D)” which (again according to table) means that I have “(ES2.0, 8-layer board)-Early Adopter Board/PandaBoard Rev. EA1” one.

    So who to believe? After some discussions on #pandaboard irc channel I prefer to trust Måns Rullgård and his skills in OMAP related area. He pointed me to OMAP4430 TRM section 1.5 which describes where version of silicon is written. What left was just one run of devmem2 tool:

    root@localhost:~# devmem2 0x4A002204
    /dev/mem opened.
    Memory mapped at address 0x2aba9000.
    Value at address 0x4A002204 (0x2aba9204): 0x1B85202F
    

    And I got confirmation that I have real ES2.0 board. For those curious: ES2.1 has 0x3B95C02F value.

    Written by Marcin Juszkiewicz on
  3. Efika MX SmartBook hacking day 3

    Today I spent some time on hacking Efika MX Smartbook to be more useful.

    First thing which got fixed was display panel placement — one kernel compilation later I had it working. Kernel is provided in my Efika MX download zone. No warranty etc of course. Sources available on request (or you can fetch them from gitorious repository).

    Then I got rid of initrd — kernel has everything built-in to boot from internal drive so why bother with reading few megabytes on each boot? Here I looked at /boot/ and after few reboots I got into system which does not need initrd to start.

    But editing “/boot/boot.scr” by hand was not what I would call handy. So I checked flash-kernel modifications done by Genesi, cleaned it up and proposed for merge. Resulting package is also provided in download zone.

    What next? Time will show. Maybe will look at USB suspend/resume problem or again at making KDE fly (this needs some rebuilds done first).

    Written by Marcin Juszkiewicz on
  4. UDS-N is ending

    Last day of UDS-N is today. I am tired and decided to skip last sessions slot and summary. It was good event and for me it was far better then previous one. Even with jetlag…

    I attended lot of sessions. Mostly toolchain related ones but some just for fun (like “git for bzr users”) or to add something from me. My session was on Wednesday — a bit too late for people in Europe but even without Wookey it was success. We defined what is do be done for next months and I have all I need to write specification + work items.

    But there are few things which I want to note before I forgot (mostly related to organization):

    • IRC screens on sessions should have local timezone instead of random one
    • all sessions (except private meetings) should have blueprints attached so there will be a possibility to subscribe for them
    • would be nice if blueprint page would have information when and where it will be discussed
    • when session is moved then subscribers should get notification
    • sessions with essential participation should be marked as such on schedule view (and in iCal) — saves time when you have all slots occupied (sometimes even with few sessions at same time)

    Some people will say that I am complaining but week before UDS I had huge amount of sessions subscribed (some as essential) and did few cleaning attempts before and during event to be present at as many as possible.

    But summit is not only sessions — it is also people. I met some Polish people from ARM, Canonical, Ubuntu, had occasion to speak with new people from Linaro’s toolchain working group or from Linaro or Ubuntu. It was good time. And next time I will take small photo camera because at the end of day my cellphone was discharged so not so many photos taken :(

    And I learnt few new things :D How to switch devices connected to hotel wifi by cloning MAC address in laptop or phone, that my x86-64 laptop works quite good as access point (but next time I will rather use WPA instead of open network) and that Skype from time to time decides that microphone which worked does not work anymore. SkypeOut is great thing btw — was the only connection between me and my family.

    So this evening we have a party, tomorrow I have to do something with time and then “24h” trip home (about 18h in real but 6 timezones add some + DST change night). I hope that next week will be jetlag free ;D

    Written by Marcin Juszkiewicz on
  5. I got Efika MX Smartbook from Genesi

    Yesterday Konstantinos Margaritis from Genesi USA was giving out about 40 Efika MX Smartbooks and few Efika MX Smarttops. I had that luck to became owner of one of those Smartbooks.

    That’s nice device. Powered by 800MHz Freescale i.MX515 cpu with 512MB ram has enough juice to be used as web/email netbook. After charging I got nice message from kernel’s power supply subsystem: 427 minutes of battery life — nice value for just 3-cell battery (6-cell is an option according to box informations and website). What else inside:

    • 10.1” TFT-LCD, 16:9 with LED backlight, 1024 x 600 resolution
    • 3D Graphics Processing Unit
    • Multi-format HD video decoder and D1 video encoder
    • 16GB Nand Flash
    • External MMC / SD card slot (up to SD v2.0 and MMC v4.2)
    • Internal MicroSD slot
    • 802.11 b/g/n WiFi (with on/off switch) - Ralink chipset
    • Bluetooth 2.1 + EDR
    • 2 x USB 2.0 ports
    • Phone jack for headset (audio in / out)
    • Built-in 1.3MP video camera
    • Built-in microphone
    • Built-in stereo speaker

    That “16GB Nand Flash” in reality is 15GB Flash-on-module connected to PATA controller. According to “hdparm” tests it makes 22-24MB/s which is quite for this type of devices. My class 10 SD card managed to get 14MB/s (compare it with 5.3MB/s in BeagleBoard) so storage options are nice. Ah… there is also MicroSD slot behind the battery but I did not tested how fast it is.

    Note one thing: by default Smartbook boots from internal PATA drive but if there is SD card in slot then it is used for booting. This allows to test development kernels without need of getting to U-Boot. I got hit once by that because card which I used to transfer some data had OMAP3 kernels on it… As you can imagine it did not booted properly…

    After I think hour or two I got it upgraded from Ubuntu 10.10 “maverick” to “natty” and got hit by some modifications done by Genesi. After copying “/boot/” from other Efika MX I got it working again. Next days will bring me working KDE 4.5.2 desktop (will have to rebuild some packages for it).

    My plans for it? Mobile ARM test platform + laptop replacement for events where I do not need more then email + web + IM.

    Written by Marcin Juszkiewicz on
  6. UDS-N: Monday

    Again early wake up… This time 4:44 but I think that today will be better then yesterday because 6h of sleep is often my default amount. Few minutes ago room mate woke up and said: you will never convert to this timezone if you will not sleep longer. But why do I have to? In few days I will be back home.

    After “let’s do nothing” Sunday it is time to start doing UDS things. I have quite long list of sessions to attend and for few I will need to select which one to go:

    Monday:

    • 11:00 Linaro@UDS roundtable
    • 12:00 Xdeb cross-compilation environment
    • 15:00 Current state of Linaro toolchain
    • 16:15 Package development tools
    • 17:10 Future Linaro toolchain areas

    Tuesday:

    • 09:00 Toolchain consumption models
    • 11:00 Design a safe and stable build cluster for public ARM PPAs based on the OMAP4 Pandaboard
    • 11:00 Using QEMU for demonstrations
    • 12:00 Integrate gdbserver support in Linaro
    • 15:00 Kexec
    • 16:15 Improve detection of device class at install time
    • 16:15 Current and future GDB for ARM plans

    Wednesday:

    • 09:00 Create minimal preinstalled developer images
    • 11:00 The Multi-Monitor User Experience multimedia
    • 12:00 State of ARM developer tools
    • 12:00 Kubuntu Natty and X.org
    • 15:00 Provide ARM cross-compiler packages for Ubuntu Natty
    • 16:15 Linaro toolchain integration in Ubuntu Natty
    • 17:00 Cross-Compilation Environment

    Thursday:

    • 10:00 Git for Bzr users
    • 11:00 Kernel version and flavours
    • 11:00 Performance inside of GCC
    • 12:00 ARM specific library tuning
    • 15:00 Produce an image suitable for set-top boxes for armel

    Friday:

    • 09:00 Provide a Linaro image with a set of developer-oriented tools installed by default
    • 10:00 More stable VM solution for running armel VMs
    • 11:00 Multiarch Support for gcc, binutils, dpkg, and apt
    • 12:00 Discuss the way forward with the 2D ARM netbook UI
    • 15:00 Provide solutions for netbooting and minimally installed Thin Clients on ARM boards

    For now this is a list of sessions which I will attend or consider to. Some of them are required for me, some I will lead, some are for curiosity and few I will attend to check what is going on and maybe provide some hints. Compared to UDS-M this one will be rather busy for me. And I have to catch Jamie to grab my PandaBoard from him :)

    BTW — if you are interested in checking something on PandaBoard then catch me. Maybe it will be possible to organize some kind of hacking session (but note that I do not have any of required things for board — no psu, no cables/keyboard/mouse/etc).

    Written by Marcin Juszkiewicz on
  7. UDS-N day one

    At 4:30 had to get up and ~hour later I was in a bus to Berlin Tegel (TXL) airport. Arrived, met few people from Canonical, got first coffee. Lufthansa did not has so much luck with 10s as Ubuntu did so our flight moved from 10:10 by about hour. Reason was bad weather and traffic jam over Frankfurt airport.

    But finally plane landed there and trip though terminal began. After few minutes I heard that passengers to Orlando should hurry so I did. Just to wait insane amount of time in shuttle bus and then in a plane… Good part of flight was that there were many free seats so we (zyga and me) were able to seat next to each other.

    But long flights are boring… Lufthansa on board entertainment system uses wrong calibrated touch screens with very long reaction time. There were few good movies to choose but seating after the jet engine does not make it comfortable due to amount of background noise. On return trip I will test headphones from Nokia N900 as they should isolate more then Lufthansa ones (or ones which I use with laptop).

    Arrived in Orlando with about 40 minutes delay. Acceptable I think. Customs queue was huge and I did not track how much time we wasted there but everything went fine. We met few other people and took a taxi to hotel. American seat belts are strange - I prefer European way of mounting them instead of “let it hang from ceiling” which is used here.

    Met more people in hotel, got “all american burger” for dinner (was quite good) and went to sleep. Timezones difference kills — I woke up at 3:30 and could not get to sleep again ;(

    Written by Marcin Juszkiewicz on
  8. How to cross compile ARM kernel under Ubuntu 10.10

    So you got ARM device and want to build kernel for it? There are few ways how you can do it under Ubuntu 10.10 (or higher).

    First you need proper cross compiler. After “apt-get install gcc-arm-linux-gnueabi” you will get proper one.

    Next step is compilation of kernel. I will cover 2 things: Ubuntu kernel packages and own kernel.

    So… to cross compile Ubuntu kernel we need to have some libraries installed in ARM versions. Simplest way is to use “xdeb” for it:

    # apt-get install xdeb
    # xdeb -aarmel --only-explicit --apt-source linux-linaro
    

    This will fetch some libraries and install it in host system. But it will not build kernel for us :( Filled bug to not lose track of it.

    NOTE: check “dpkg -l *elf*-armel-cross” after xdeb run. If it does not return anything then you need to edit “/etc/apt/source.list” and add line with “deb-src” so APT will know where to go for sources. Do not forget to run “apt-get update” after edit.

    Next step is quite simple — all is needed is:

    $ cd linux-linaro-2.6.35
    $ CROSS_COMPILE=arm-linux-gnueabi- dpkg-buildpackage -b -aarmel
    

    After some time kernel will be cross compiled and packaged.

    If you want official Ubuntu kernel instead of Linaro one then use:

    $ apt-get source linux-source-2.6.35
    $ cd linux-2.6.35
    $ CROSS_COMPILE=arm-linux-gnueabi- dpkg-buildpackage -b -aarmel
    

    Other way (not supported by Ubuntu developers) is to build kernel from source outside of Ubuntu. Once you got sources unpacked and configured you need just one command: “ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make uImage modules” to build kernel (replace uImage with zImage if your device does not use U-Boot).

    Written by Marcin Juszkiewicz on
Page 47 / 106