All of that during last 8 years. Most of my ARM live so far was around ARM926 based devices (some of them still can not be listed here) and I do not want to go there again. Kirkwood core was fastest one with 1.2GHz clock and 512MB of RAM it was really fast machine. I only missed Serial ATA in my Sheevaplug (rev 1.0) but even with hard drive on USB it was nice improvement.
Then I played a bit with ARM11 processors. Ok, they were faster than most of ARM9 cpus but I already had experience with Sheevaplug. And after few months first Cortex-a8 board landed on my desk — I got Beagleboard B7 from Bug labs as test platform for their new device. This was improvement!
I still remember my reaction when connected it to normal LCD monitor and saw it used at 720p resolution (1680x1050 was a bit hard for omap3). Moved to Nokia N900 few months later and found that fast cpu means nothing when paired with slow storage and not enough memory for system.
So today I prefer to not look below Cortex-A9 (or comparable cores like ones from Qualcomm or Marvell). Hope to play one day with Cortex-A5 (which should replace ARM926 one day) just to see how low-end armv7a cpu behave.
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).
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 ;(
Long, long time passed since last time I changed theme on my blog. What you see this time is Twenty Twelve from Wordpress team. Maybe it is not yet finished but it works better than Carrington which I had before. Not to mention that previous theme was not updated for long time (I did few updates by hand with code from their Subversion repository but it was not comfortable).
This theme looks good on desktop, phone, tablet and I will use it for probably quite long time. Will update it to released version once there will be such one ;D
In 2002—2003 I was thinking about becoming Debian Developer as I had some experience with packaging, solving problems with it etc. But then 2004 came, I bought Sharp Zaurus SL-5500 PDA and started using OpenEmbedded…
Time passed, I got even more experience about packaging, different build systems used in FOSS projects and made good use of that in OE, Poky work. And as a result I went to Linaro (though Canonical) and started working on Ubuntu packages…
So now, when I have my own packages: android-tools and powerdebug the time came to finally start work on becoming Debian Developer to give back to community which gave me so much during last 13 years of my use of Debian.
Few months ago one of my friends borrowed SheevaPlug from me. About two weeks later he gave it back — bricked… I did not had time to play with it so it landed on shelf.
Yesterday I took it and decided to get it back to live. Requirements:
bricked SheevaPlug (v1.0 without SATA)
power cable
mini usb cable
usb thumb drive
OpenOCD (“apt-get install openocd”)
cross compiler (“apt-get install gcc-arm-linux-gnueabi” under Ubuntu)
U-Boot sources (HEAD of mainline)
Linux sources (also HEAD of mainline)
serial terminal (picocom, minicom, screen etc)
few terminals or terminal multiplexer (I used tmux)
Then:
Connected power and mini usb cables to SheevaPlug. Desktop recognized usb-serial device as /dev/ttyUSB1.
Connected to it with serial terminal. Nothing appeared there of course ;)
Run OpenOCD: “cd /tmp/;sudo openocd -f /usr/share/openocd/scripts/board/sheevaplug.cfg -s /usr/share/openocd/scripts”. SheevaPlug was detected.
Connected to OpenOCD: “telnet localhost 4444”.
Built U-boot:
export CROSS_COMPILE=arm-linux-gnueabi-
make mrproper
make sheevaplug_config
make u-boot.kwb
Copied “u-boot” to “/tmp/uboot.elf” and used “reset;sheevaplug_init;load_image u-boot.elf;resume 0x00600000” — landed in U-Boot ;)
There is “sheevaplug_reflash_uboot” macro but it was not working for me. So I used U-Boot to flash itself:
Unpacked tarball into /tmp/initfs, added /dev/ttyS0 node.
Built Linux kernel:
export CROSS_COMPILE=arm-linux-gnueabi-
make mrproper
make kirkwood_config
make menuconfig (set INITRAMFS_SOURCE to /dev/initfs)
make uImage
Copied “arch/arm/boot/uImage” to USB thumb drive and inserted it into SheevaPlug.
Booted image:
Marvell>> set ethaddr 'c0:ff:ee:c0:ff:ee'
Marvell>> set bootargs 'console /dev/ttyS0,115200 rw'
Marvell>> usb start;fatload usb 0:1 0x800000 /uImage;bootm 0x800000
Landed in nice and small Ångström distribution image ;)
Marvell>> bootargs 'console=ttyS0,115200 rw ubi.mtd=2 rootfstype=ubifs root=ubi:rootfs'
Marvell>> bootcmd 'ubi part nand0,2; ubifsmount rootfs; ubifsload 0x800000 /boot/uImage;bootm 0x800000'
Marvell>> mtdids 'nand0=orion_nand'
Marvell>> set mtdparts 'mtdparts=orion_nand:512k(uboot),4m@1m(kernel),507m@5m(rootfs)'
Marvell>> save
Marvell>> reset
And now my SheevaPlug is operational again. Boots from NAND with latest U-Boot and Linux. There is around 440MB free still on NAND (not counting 4MB partition where kernel was expected to be). I can put it back on shelf now.
The only parts which I needed to compile were U-Boot and Linux kernel. I could skip bootloader and use binary image from Internet but prefer to know what my machines run (and building U-Boot is really easy). Initramfs support in Linux is real live saver as I did not had to play with initrd etc — just build image and boot it. The only problem was that devtmpfs was not auto mounted (even if option in kernel was selected).
I could also use one of those “easy installers” made by PlugComputer community but I found such solutions more complicated (fetching binaries, finding requirements etc) than the one I used.
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.
When I moved to Canonical and Linaro I stopped using OpenEmbedded. But recently I got some tasks which involved it. In short: there is a plan to use OE to bootstrap ARMv8 support in some Linux distributions.
2 years ago OE guys started creation of OpenEmbedded Core set of metadata. I have to admit that I never used it at that time but supported idea (first mentions of splitting recipes was at OEDEM 2006).
This time using layers is the only way. So I fetched OE Core, OpenEmbedded and Linaro layers and did some builds to find out how it looks today. Some time later Ken Werner left Linaro team so I took over maintenance of meta-linaro layer. Improved documentation a bit and started creating small LAMP like image.
There were issues with toolchain. I use Linaro branded GCC and found out issue with binutils and then with C++ headers — sent some patches and problems were solved by Khem Raj in a bit other way.
After some tests and patches I got LAMP image working out of box. So moved to some more advanced things…
First was update of qemuarmv7a machine to use Versatile Express emulation instead of hacked Versatile PB one. Ken did work for 3.2 kernel but in meantime Yocto moved to 3.4 one. I looked at issues and tried to get it working.
OMG… Now I know why people say that OpenEmbedded have exponentially steep learning curve… Getting kernel into usable state is nightmare. Years ago defconfig was nearly sacred — there were few small changes done to it in kernel.bbclass/linux.inc but it was easy to understand. Now there are KERNEL_FEATURES which may be ignored, big set of scripts, config parts which may be applied (or removed or something else)… I really tried to understand it but my brain decided to go away.
Maybe other day I will manage to understand this magic stuff or will just go for linux-yocto-custom.bb or will write old style linux_3.4.bb recipe without all that magic.
Another week of conference passed. This time I was at Linaro Connect q2.12 which took place in Hong Kong Gold Coast hotel.
As usual everything started with packing. I have a list for it so it is usually quick job but you know — I was going to Hong Kong, world capital of cheap electronics so better have some space available just in case. So I borrowed bigger bag from friend, put some Linaro stickers on it (to be able to find it at baggage claim) and put all my stuff inside. Of course travel things went to backpack (have to buy more comfortable one).
And then trip began… In short: car, bus, wait at airport, plane, wait at airport, plane, catch Rob Clark, taxi, hotel. Total time: 22 hours.
Hotel was nice. View from room at “15th” floor (which was 12th due to 4, 13, 14 missing):
View from hotel window
Monday went with meeting people, sessions (scheduled and random ones) and some hacking. At end of day we had usual “meet & greet” dinner which was rather “seat & eat” style as we had it in room where we has lunch and there was not enough space to walk and discuss with people. For this I prefer UDS style where you have few points with food/drinks, lot of walking space and some tables here and there so you can grab something to eat and chat with many people during one evening.
Speaking of food… It was great! Breakfasts offered wide choice of Chinese, Japanese, Singapore food with Western options available too (some sausages, boiled eggs, British beans). Add fruits, sweets and all what was there to make sandwiches… Lunches were even more mixed. Something local, something European, salads, sweets — all that made me a bit heavier on return trip :D
Many people were surprised by lack of soda options as only coffee, tea and bottled water were available daily. For me it was not a problem as coffee + water were more than enough.
But back to sessions. There were many ARMv8 (aarch64-gnu-linux) sessions. I attended one of them where we discussed about building cross compilers, bootstrapping distributions etc. As rest of ARMv8 ones this was not broadcasted or recorded. Rest of sessions used Google Hangouts for remote participation. It worked well even with last-minute changes from Google which terribly broke setup we used for earlier Connects. I was on session where leader (Wookey) was remotely so we had “big brother is watching you” effect:
Big Wookey is watching you
Have to admit that this method of remote participation helps as users can just ask questions instead of relying on someone following IRC channel. But it is also limited to who can join so no use for conferences like UDS.
For me interesting sessions were ones around CI process. We have few such systems and each has different use. There is LAVA which gives us ARM boards to run tests on, Jenkins to run builds on x86 instances (Amazon EC2 like). Toolchain Working Group has “cbuild” which they use to build and test toolchain on x86 and ARM machines. And then there is also Launchpad which has daily builds from selected Bazaar branches. We had discussions about merging them and/or sharing resources (like a way to borrow ARM boards from LAVA to run cbuild). Hope that we will get something interesting from it.
But sessions are not the only thing to do. There are also after work activities. We got coaches available on Tue/Wed/Thu to Tsim Sha Tsui (TST in short) district, The Peak (Tue only due to cloudy weather) and somewhere else. I went to TST on Tuesday and we just walked around it, got some food (chopsticks only so we decided to not ask for cutlery and handle it — we managed) and for fun visited one of those shops with “TAXFREE” signs (which in tourist language means “YOUDONOTWANTTOBUYHERE”).
On next day I went with Zygmunt Krynicki to Golden Computer Shopping Center near the Sham Shui Po station. Lot of computer shops compressed in small area. Everything from SSDs, mainboards etc to normal and weird cables. In one shop I asked for 0.5m long HDMI cables and got them so expect soon post about adding HDMI switcher to my devboards setup. Decided to not spend money on anything more expensive as there is no warranty that it will work and I do not want to ship hardware back to Hong Kong when it fail.
Thursday we want for team dinner. But before we decided to take a ferry from Avenue of Stars to Hong Kong Island and go for ice cream there:
Ice cream selection at “I Scream” place
I went for ginger and green tea flavours as both sounded crazy enough and I am sure that will not find them here in Poland. Ginger one was great (even if I do not like ginger) but green tea one was awful — tasted like concentrate of concentrated tea.
Hong Kong Island skylineMe and Alexandros at Avenue of Stars
Then we went to “Spring Deer” restaurant. Crowdy, long queue (even with earlier registration). As usual in Hong Kong I had to watch my head in few places. When we got table it looked like disaster but got cleaned quickly and were served with food.
For start they give us some oiled peanuts so we had interesting challenge as a way of practising eating with chopsticks. We ordered some pork, fish, vegetables and duck.
Vegetables - no idea whichPork or fishPekin duckLotus seedsBananas
After dinner we were able only to grab taxis and go back hotel ;)
Friday was my last day there. During packing bag I realized that this is my first conference when do not have any extra hardware (cables do not count). But I hope that sooner or later I will put hands on some kind of ARM server hardware (maybe one node Calxeda board which I heard rumours about). As there were nearly no sessions I went to one of hacking rooms for coding and got my patches reviewed by Matthias Klose — have to work on few of them, some were described as “have to merge as look ok”.
After lunch we had usual “Demo Friday” where people presented work of miscellaneous Linaro (but not only) teams. One of interesting ones was comparison of ASOP build of Android 4.0.4 contra Linaro build which was present on two same Pandaboards. Both were running 0xbench and results were cleanly visible. Changes are in review and on a way to ASOP tree (due to usual “Upstream, upstream, upstream” philosophy of Linaro).
Day ended with dinner in Chinese style. Food was good and interesting — especially when we were trying to find out what menu entries mean ;) There was a show of Chinese “Bian lian” art with a guy changing his masks. I was wondering for a moment how we did that but did not bother with it too much.
20:15 was bus to airport. Then usual stuff: wait on airport, plane, wait on airport, plane, wait on airport, bus, car, home. This time 26 hours. Saturday evening was a bit hard but with a help of melatonin I managed to get rid of it with 8h sleep. So this is first trip without jet lag problems.