It’s been a while since last update on the project status so it might seem as there was no progress in this area. The reality is: there is a bunch of activities happening with various levels of success. So I decided to give kind of end-of-the-year round-up of ongoing projects, plans and obstacles ARM hackers face.
First of all we tried switching default cache type from write-through to write-back type. It should have increased performance but instead opened a can of worms. Memory corruption debugging led to L2 cache driver on Pandaboard, EHCI driver code and subsequently to busdma code. Whole process took quite a few days full of hair-pulling and nagging various people and ended up in committing USB fixes and Ian Lepore’s busdma patches. PL310 (L2 cache controller) driver is being tested at this very moment. Original issue (WB caches) still stands and postponed till next year.
Then there are two projects by Andrew Turner aimed at modernizing FreeBSD/armv6 subsystem: switching to EABI and clang support for ARM. Daisuke Aoyama took both of them and produced working image for Raspberry Pi. He also fixed two issues with event timers on Raspberry Pi so now the platform is much more stable. I ran buildkernel in a loop overnight and by the morning Pi had survived 7 cycles and still was alive and kicking. I also managed to get python built and working on it. Didn’t have 100% success with perl 5.14/5.16, ports were built but failed at install stage segfaulting in do_clean_objs function.
My Pandaboard survived overnight buildkernel loop with L2 cache disabled, but acting up if I enable it. Investigating.
Then there are also several platform bring-ups in progress. Alexander Rybalko works on getting FreeBSD running on Efika MX Smartbook. Ganbold Tsagaankhuu hacks on Allwinner 10. Alexander Dutkowski’s hardware of choice is BeagleBoard-xM.
Ruslan Bukin experiments with Exynos4412 and Thomas Skibo reported about FreeBSD running on Zedboard (Xilinx Zynq-7000).
But what about devices/platform we have in tree? I have limited knowledge about some platforms so here is summary of the ones I’m aware of. If you have more information on any of these targets (or any other ARM-related projects) – let me know, I’ll update post.
- BCM2835 Raspberry Pi the most accessible and therefore the one that gets the most exposure and testing. Pretty stable, considering. Supported devices: USB, network, MMC, GPIO, framebuffer, GPU. The rest is on ToDo list. VCHIQ driver is BSD-licensed now and I’m planning on getting it to sys/contrib. Userland bits of OpenGL ES should be added as a port though.
- (update) LPC32x0 No first hand experience but judging by the code it supports MMC, FB, GPIO and USB
- Marvel Armada XP I don’t have information about this one, sorry
- Nvidia Tegra2 Just barebone boot stuff.
- TI AM335x Examples: BeagleBone, TI Sitara EVM. Network was reported working but unstable on BeagleBone. USB is not supported. Haven’t tested GPIO yet.
- TI OMAP3 Example: BeagleBoard-xM. See Alexander Dutkowski’s project
- TI OMAP4 The hw I have – Pandaboard ES. Supported devices: USB, network, MMC, GPIO. Some issues with L2 cache
- Versatile Platform Board Exists only as emulation target for QEMU. Supported hardware: PCI, network, framebuffer. Seems to be fairly stable, no extensive testing performed.
BeagleBone, PandaBoard ad Raspberry Pi images can be built using Tim Kientzle’s scripts.
Not really stellar list of supported peripherals I’d say. I tend to blame several things.
First – experimental and unstable state of FreeBSD/armv6 in general. It’s no fun adding new hardware support when you’re not confident in underlying subsystems stability. “I flush cache for this TX descriptor but is it really gets flushed?”. Been there, no fun at all. That’s why I believe task #1 for nearest future is maximum performance and rock-solid stability of what we have.
Then there is the case of syscons. It’s old, it’s inflexible and it’s mostly i386-centric. Just until recently most of our so-called embedded targets were headless so there were no pressure from this side to reorganize things. My experience with coding two framebuffer drivers or trying to add PS/2 keyboard support on non-i386 platform was not very pleasant. It’s messy and there is a lot of code duplication. newsyscons project may be the way to go, I haven’t looked at it yet. We just need someone(tm) to finish it and get into the tree.
Fix these two issues should make bring-up process easier. It leaves us with question of GPU support. But it’s different story for different post…
Happy New Year, everybody!
I’ve managed to get perl installed and packaged, but I’m running from a bench power supply since I couldn’t get the TP1/TP2 voltage up above around 4.6V using normal USB chargers.
If there’s interest, I could upload my packages somewhere… I currently have the following:
apr-1.4.6.1.4.1_3.txz libdrm-2.4.17_1.txz
autoconf-2.69.txz libfontenc-1.1.0.txz
autoconf-wrapper-20101119.txz libgcrypt-1.5.0_1.txz
automake-1.12.6.txz libgpg-error-1.10.txz
automake-wrapper-20101119.txz libiconv-1.14.txz
bigreqsproto-1.1.1.txz libpciaccess-0.12.1.txz
bison-2.5.1,1.txz libpthread-stubs-0.3_3.txz
compositeproto-0.4.2.txz libtool-2.4.2.txz
damageproto-1.2.1.txz libxcb-1.7.txz
db42-4.2.52_5.txz libxkbfile-1.0.7.txz
dri-7.6.1_2,2.txz libxkbui-1.0.2_1.txz
dri2proto-2.6.txz libxml2-2.7.8_5.txz
evieext-1.1.1.txz libxslt-1.1.26_3.txz
expat-2.0.1_2.txz m4-1.4.16_1,1.txz
fixesproto-5.0.txz makedepend-1.0.3,1.txz
fontsproto-2.1.1.txz neon29-0.29.6_4.txz
freetype2-2.4.9_1.txz pciids-20121208.txz
gdbm-1.9.1.txz perl-5.14.2_2.txz
gettext-0.18.1.1.txz pixman-0.24.2.txz
glproto-1.4.15.txz pkg-1.0.4_1.txz
gmake-3.82_1.txz pkgconf-0.8.9.txz
help2man-1.40.13.txz printproto-1.0.5.txz
hexedit-1.2.12.txz py27-libxml2-2.7.8_2.txz
inputproto-2.0.2.txz python27-2.7.3_4.txz
kbproto-1.0.5.txz randrproto-1.3.2.txz
libGL-7.6.1_2.txz recordproto-1.14.1.txz
libICE-1.0.7,1.txz renderproto-0.11.1.txz
libSM-1.2.0,1.txz scrnsaverproto-1.2.1.txz
libX11-1.4.4,1.txz sqlite3-3.7.14.1.txz
libXau-1.0.6.txz subversion-1.7.7_1.txz
libXaw-1.0.9,2.txz trapproto-3.4.3.txz
libXdamage-1.1.3.txz videoproto-2.3.1.txz
libXdmcp-1.1.0.txz xcb-proto-1.7.1.txz
libXext-1.3.0_1,1.txz xcmiscproto-1.2.1.txz
libXfixes-5.0.txz xextproto-7.2.0.txz
libXfont-1.4.4_1,1.txz xf86bigfontproto-1.2.0.txz
libXinerama-1.1.1,1.txz xf86dgaproto-2.1.txz
libXmu-1.1.0,1.txz xf86driproto-2.1.1.txz
libXp-1.0.1,1.txz xf86miscproto-0.9.3.txz
libXpm-3.5.9.txz xf86vidmodeproto-2.3.1.txz
libXt-1.1.1,1.txz xineramaproto-1.2.1.txz
libXxf86misc-1.0.3.txz xorg-macros-1.16.1.txz
libXxf86vm-1.1.1.txz xproto-7.0.22.txz
libcheck-0.9.8.txz xtrans-1.2.6.txz
Great! And I just realized that userland I used was several weeks old. So it might be reason for crashes.
Please upload you packages somewhere. I’ll try to setup a pkg repo for Raspberry Pi: http://blog.etoilebsd.net/post/Home_made_pkgng_repo
warms or worms?
Gah! Fixed, thanks
Please do give us a shout when you have an SD card image for Pi that you consider stable enough for general release. Would be great to add this to our downloads page.
+1
Will do, thanks for the offer. It just takes more time than I’ve anticipated
Je plussoie! I mean, I am rising my both hands for this initiative to come true! This is the reason why I check the downloads page on raspberrypi.org so often 🙂