Update on ioquake/ARM for FreeBSD: controls support added

I’ve update ioquake binaries and pushed respective changes to github. New version has support for mouse and keyboard so you can actually play Quake3 on FreeBSD/Pi alas without sound. It should run out of the box on normal console. Make sure you have moused running or specify mouse device by setting Q_MOUSE_DEV environment variable, e.g.: env Q_MOUSE_DEV=/dev/ums0 ioquake3.arm +set s_initsound 0

January 13, 2015 · 1 min · 61 words · Oleksandr Tymoshenko

State of FreeBSD/MIPS emulation

A week ago Adrian Chadd asked me to take a loot at FreeBSD/MIPS emulation. So last week I’ve been busy tidying up stuff in that department and looking up bits of information on various emulators. This morning I finally committed last changeset so now is the time to write up summary. Emulators There are two widely used MIPS emulatoes that FreeBSD supports: QEMU and GXemul. Both of them support numerous MIPS devices but we’re interested in only two. ...

September 4, 2013 · 3 min · 638 words · Oleksandr Tymoshenko

USB driver for FreeBSD/Beaglebone

It took me two months but I finally got back to hacking on musb driver for FreeBSD (the one that is used in TI AM335x-based devices like Beaglebone or Beaglebone Black). Previous revision turned out not to be ready for production. Here is the new one: beaglebone-usb-20130626.diff. I adopted it to latest HEAD, fixed numerous bugs, added support for SPLIT transactions and USB suspend/resume signalling. There is some cleaning-up to do but unless something major comes up the plan is to commit it over next few days.

June 27, 2013 · 1 min · 87 words · Oleksandr Tymoshenko

Framebuffer/syscons support for AM335x

I finally got around to finishing the PWM and LCDC driver for AM335x. Everything was committed today. Here is demo on AM335x EVM (I apologize for quality):

May 26, 2013 · 1 min · 27 words · Oleksandr Tymoshenko

Netbooting ARM/MIPS devices: ubldr

As it was mentioned in previous post U-Boot can boot FreeBSD kernel directly but this approach doesn’t allow a great deal of control over boot process: there is no way to set tunables’ values or pre-load module. Controlling this stuff requires more knowledge of FreeBSD internal data structures and its boot process then U-Boot holds. On i386 and other Tier1 architectures this task is handled by the loader(8) program. It’s last stage boot loader (e.g. it’s supposed to pass control to FreeBSD kernel only), highly customizable and scriptable. loader(8) relies on one of the previous stages boot loader to access resources like disks, console, network. For i386 it’s BTX and BIOS. ...

April 19, 2013 · 3 min · 526 words · Oleksandr Tymoshenko

Netbooting ARM/MIPS devices: server setup

I was asked to share details about my root-over-NFS setup so here they are. I decided to split how-to in two posts: server/kernel part and u-boot part. Usual components in the setup are: DHCP server TFTP server NFS server NAT (optional) DHCP server I use net/isc-dhcp42-server as a server. Sample dhcpd.conf: option root-opts code 130 = string; # NFS / mount options log-facility local7; subnet 192.168.10.0 netmask 255.255.255.0 { server-name "cinderella.bluezbox.com"; server-identifier 192.168.10.1; option subnet-mask 255.255.255.0; option broadcast-address 192.168.10.255; option domain-name-servers 8.8.8.8; option domain-name "bluezbox.com"; next-server 192.168.10.1; option routers 192.168.10.1; } group { host pandaboard { hardware ethernet 0E:60:33:B1:46:01; fixed-address 192.168.10.90; filename "kernel.PANDA.bin"; option root-path "/src/FreeBSD/nfs/armv6"; option root-opts "nolockd"; } host rpi { hardware ethernet b8:27:eb:f6:08:83; fixed-address 192.168.10.91; filename "ubldr"; option root-path "/src/FreeBSD/nfs/rpi"; option root-opts "nolockd"; } } Config is pretty self-explanatory. I use google’s 8.8.8.8 nameserver but you can change it to your very own DNS server. Difference between various filename “…” will be explained later. ...

February 14, 2013 · 3 min · 565 words · Oleksandr Tymoshenko

Netbooting Hackberry A10 (Allwinner A10)

Last few weeks I’ve been acting as a reviewer for Ganbold Tsagaankhuu’s port of FreeBSD for Cubieboard so in order to provide more valuable input and less naysaying I decided to get A10-based device to test his changes. So I ordered Hackberry from miniand.com. I’m not great fan of pushing SD cards back and forth so first thing I do with my SoCs is get them netbooting. That’s where fun begins. ...

February 10, 2013 · 1 min · 164 words · Oleksandr Tymoshenko

Accessing GPIO from Perl, Python, and Ruby

I started this smallish project to overcome coder’s block and original idea was to implement it in only one scripting language. I chose Python as I believed it had most clear API but then I decided to throw in Perl and Ruby as well. It was more exercise in building C extensions then in actual system programming but it was fun nonetheless. All three sub-projects lack proper documentation but there are examples that should be enough to get started. ...

February 7, 2013 · 1 min · 83 words · Oleksandr Tymoshenko

Building image for Raspberry Pi: up to date version

Update 1: Add -DDB_FROM_SRC to install targets Update 2: Add user “pi” with password “raspberry” Update 3: Added host system requirements suggested in comments Update 4: Rename bcm2835-rpi-b.dtb to rpi.dtb It’s been a while since I posted original build instruction and a lot has change. Here is new version of it with some explanations: First make sure your host system is configured properly: WITHOUT_FORTH= must NOT be set in src.conf msdos support must be available in the kernel geom_md support must be available in the kernel All code has been moved to HEAD. freebsd-pi repository on github serves only historical purpose and I guess will be removed at some point in future. So in order to build image you need sources for -head ...

February 1, 2013 · 4 min · 657 words · Oleksandr Tymoshenko

Packages(*) for Rasberry Pi(**)

I finally got around to setting up experimental pkgng repo for ARM in order to share packages with other ARM developers and users who feel adventurous. And man, was it simple. I have pandaboard that is super-fast comparing to Raspberri Pi so I use it for building ports. There were several installed so I just had to generate packages for them using pkg create -a command. Then I uploaded all newly generated files to the server, grabbed packages built and shared by Stephen Hurd, removed duplicates with older versions and generated repo.txz by issuing ...

January 11, 2013 · 1 min · 206 words · Oleksandr Tymoshenko