FreeBSD/armv6: what’s new and exciting?

December 30, 2012 — 15 Comments

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!

gonzo

Posts

15 responses to FreeBSD/armv6: what’s new and exciting?

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

  2. warms or worms?

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

Trackbacks and Pingbacks:

  1. Testing Go on the Raspberry Pi running FreeBSD | Dave Cheney - December 30, 2012

    [...] afternoon Oleksandr Tymoshenko posted an update on the state of FreeBSD on ARMv6 devices. The takeaway for Raspberry Pi fans is things are working [...]

  2. FreeBSD on Arm - Android Forums - January 1, 2013

    [...] [...]

  3. Linux Mint Czech - Blíži sa čas behu FreeBSD na ARM zariadeniach typu armv6 at Linux-Mint-Czech - January 2, 2013

    [...] sa čas behu FreeBSD na ARM zariadeniach s procesormi armv6. Čo to znamená? Je pripravované zostavenie FreeBSD, všetko s zmodernizovanými subsystémami (EABI, clang-podpora), pre testovanie jeho behu na [...]

  4. Links 3/1/2013: Ubuntu Phone OS Unveiled, Linux 3.8-rc2, KDE 4.9.5 Released | Techrights - January 3, 2013

    [...] FreeBSD/armv6: what’s new and exciting? 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. [...]

  5. FreeBSD 离 ARM 越来越近了 | 爱板网 - January 4, 2013

    [...] ARM 处理器的设备上运行 FreeBSD ? 来自 FreeBSD 开发者记事簿上的文章 report huge gains made in running FreeBSD on ARM v6 processors 表明,这个愿望将在不久后实现。他们已经在为包括 Raspberry Pi、Beagleboard [...]

  6. Daveish - January 5, 2013

    [...] tips: http://kernelnomicon.org/?p=246 http://dave.cheney.net/2012/12/31/testing-go-on-the-raspberry-pi-running-freebsd [...]

  7. Resizing FreeBSD GPT partitions on an SD card for Raspberry Pi | Daveish - January 5, 2013

    [...] tips: http://kernelnomicon.org/?p=246 http://dave.cheney.net/2012/12/31/testing-go-on-the-raspberry-pi-running-freebsd [...]

Leave a Reply

*

Text formatting is available via select HTML. <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>