<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>FreeBSD developer&#39;s notebook</title>
    <link>https://kernelnomicon.org/</link>
    <description>Recent content on FreeBSD developer&#39;s notebook</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 30 Jul 2020 00:13:20 +0000</lastBuildDate>
    <atom:link href="https://kernelnomicon.org/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Audio subsystem hardware internals</title>
      <link>https://kernelnomicon.org/posts/audio-subsystem-hardware-internals/</link>
      <pubDate>Thu, 30 Jul 2020 00:13:20 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/audio-subsystem-hardware-internals/</guid>
      <description>&lt;p&gt;I wrote an introductory article on how the audio subsystem on SBCs work: CODECs, I&lt;sup&gt;2&lt;/sup&gt;S, DTS, whole nine yards. WordPress editor didn&amp;rsquo;t seem to be a very convenient tool for this kind of write up so I gave asciidoc a try and so far liked it.&lt;/p&gt;
&lt;p&gt;Link to the article: &lt;a href=&#34;https://kernelnomicon.org/texts/sbc-audio.html&#34;&gt;https://kernelnomicon.org/texts/sbc-audio.html&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>yubikey-agent on FreeBSD</title>
      <link>https://kernelnomicon.org/posts/yubikey-agent-on-freebsd/</link>
      <pubDate>Thu, 04 Jun 2020 00:03:01 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/yubikey-agent-on-freebsd/</guid>
      <description>&lt;p&gt;Some time ago &lt;a href=&#34;https://filippo.io/&#34;&gt;Filippo Valsorda&lt;/a&gt; wrote &lt;a href=&#34;https://github.com/FiloSottile/yubikey-agent&#34;&gt;yubikey-agent&lt;/a&gt;, seamless SSH agent for YubiKeys. I really like YubiKeys and worked on the FreeBSD support for U2F in Chromium and pyu2f, getting yubikey-agent ported looked like an interesting project. It took some hacking to make it work but overall it wasn&amp;rsquo;t hard. Following is the roadmap on how to get it set up on FreeBSD. The actual details depend on your system (as you will see)&lt;/p&gt;</description>
    </item>
    <item>
      <title>wpa_supplicant.conf &#34;manager&#34; for coffee shops</title>
      <link>https://kernelnomicon.org/posts/wpa_supplicant-conf-manager-for-coffee-shops/</link>
      <pubDate>Tue, 12 May 2020 22:59:46 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/wpa_supplicant-conf-manager-for-coffee-shops/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;https://github.com/gonzoua/chaifi&#34; loading=&#34;lazy&#34; src=&#34;https://kernelnomicon.org/uploads/2020/05/screenshot-1024x576.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;Whenever I sit down to work at the coffee shop I&amp;rsquo;ve never been before my preparation routine looks more or less like this: &lt;code&gt;ifconfig wlan0 list scan&lt;/code&gt;, copy SSID, &lt;code&gt;vim /etc/wpa_supplicant.conf&lt;/code&gt;, &lt;code&gt;service netif restart&lt;/code&gt;. The WM I use, i3, does not have fancy network managers that nicely offer you to join available WiFi networks. It&amp;rsquo;s mildly annoying but not annoying enough to actually make me open a browser and go looking for ways to automate this procedure. Implementing such a utility, on the other hand, sounds like a nice weekend project.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating FreeBSD OVA files</title>
      <link>https://kernelnomicon.org/posts/creating-freebsd-ova-files/</link>
      <pubDate>Sun, 19 Jan 2020 16:13:17 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/creating-freebsd-ova-files/</guid>
      <description>&lt;p&gt;If you want to jump right into the action check out &lt;a href=&#34;https://github.com/gonzoua/freebsd-mkova&#34;&gt;freebsd-mkova&lt;/a&gt; repo. Below are some technical details on what OVA is and its internals.&lt;/p&gt;
&lt;p&gt;In addition to installation media like DVD or memstick, FreeBSD RE ships FreeBSD releases as a virtual disk image in a number of formats. This is a convenient way when you start your whole VM using bhyve or qemu, as a single CLI command and pass the image location as an argument. It&amp;rsquo;s less handy if you try to create VM using GUI-based tools like VMWare or VirtualBox. You need to create VM and then configure it to use the image as a drive. Not an awful lot of work but still.&lt;/p&gt;</description>
    </item>
    <item>
      <title>CentOS 7 VM boot issue</title>
      <link>https://kernelnomicon.org/posts/centos-7-vm-boot-issue/</link>
      <pubDate>Fri, 10 Jan 2020 22:21:01 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/centos-7-vm-boot-issue/</guid>
      <description>&lt;p&gt;If you&amp;rsquo;re building OVA based on CentOS 7 and your VM is stuck during boot at &amp;ldquo;tsc: Refined TSC clocksource calibration: NNNN.MMM MHz&amp;rdquo; message do not despair! It means the kernel can not find the root device and just waits for it to pop up. Which is not going to happen. In my case, it was a lack of required drivers loaded boot-time. Following line in an OVA build script resolved the issue:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Audio for RK3399</title>
      <link>https://kernelnomicon.org/posts/audio-for-rk3399/</link>
      <pubDate>Sat, 30 Nov 2019 19:46:08 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/audio-for-rk3399/</guid>
      <description>&lt;p&gt;Last two weeks I&amp;rsquo;ve been working on audio support for Firefly-RK3399. Full support requires a number of things that are not quite there or not available in the mainline FreeBSD kernel. The main low-level hardware functionality consists of two parts: I2S block in the SoC and RT5640 audiocodec that converts digital audio to an analog signal. They talk to each other using the I2S protocol. A little bit higher is FDT virtual &amp;ldquo;devices&amp;rdquo; called simple-audio-card. This part is responsible for coordinating the setup of both hardware components: make sure they agree on a number of channels, a number of bits per sample and clock specifics of the I2S protocol. There is no code for it in the FreeBSD kernel, so I had to just hardcode these things in both hardware drivers.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Recreating Sneakers scene</title>
      <link>https://kernelnomicon.org/posts/recreating-sneakers-scene/</link>
      <pubDate>Sat, 28 Sep 2019 16:57:12 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/recreating-sneakers-scene/</guid>
      <description>&lt;p&gt;(Not a FreeBSD topic)&lt;/p&gt;
&lt;p&gt;A long time ago, in my teens, I watched movie &lt;a href=&#34;https://www.imdb.com/title/tt0105435/&#34;&gt;Sneakers&lt;/a&gt; and was very impressed by it. It was exactly how I imagined hackers at work: bare PCBs, signal probes, de-scrambling encrypted information right on the screen. I was so impressed by the latter part that I went to re-create a bit of &lt;a href=&#34;https://www.youtube.com/watch?v=F5bAa6gFvLs&#34;&gt;&amp;ldquo;No more secrets&amp;rdquo; scene&lt;/a&gt; using the only technologies I knew back then: Turbo Pascal running on MS-DOS. It wasn&amp;rsquo;t an exact replica but it was close enough and I was quite happy with the result. The program itself hasn&amp;rsquo;t survived my numerous moves from one apartment to another and got lost along with all the floppy discs sometime in the early aughts.&lt;/p&gt;</description>
    </item>
    <item>
      <title>FreeBSD support for pyu2f</title>
      <link>https://kernelnomicon.org/posts/freebsd-support-for-pyu2f/</link>
      <pubDate>Sun, 22 Sep 2019 13:39:41 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/freebsd-support-for-pyu2f/</guid>
      <description>&lt;p&gt;After long hiatus (because $JOB) I&amp;rsquo;m trying to find some time to spend on FreeBSD-related projects, looking for small ones that can be done over weekend or a bit more. One of the ideas came from Ed Maste&amp;rsquo;s twitter: implement FreeBSD support for pyu2f. Since I already spent some time working on FreeBSD U2F support for Chromium it felt like a good small project.&lt;/p&gt;
&lt;p&gt;The challenging part of the project was not U2F/HID but interfacing ioctl with Python, something I have never done before. It wasn&amp;rsquo;t super complex and I learned about Python&amp;rsquo;s ctype module.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Inky pHat on FreeBSD/Pi</title>
      <link>https://kernelnomicon.org/posts/inky-phat-on-freebsdpi/</link>
      <pubDate>Wed, 14 Nov 2018 10:21:27 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/inky-phat-on-freebsdpi/</guid>
      <description>&lt;p&gt;About a month ago I purchased &lt;a href=&#34;https://shop.pimoroni.com/products/inky-phat&#34;&gt;Inky pHat&lt;/a&gt; from Pimoroni, Pi hat with 220x104 red and black eInk screen. The device has an SPI interface with three additional GPIO signals: reset pin, command/data pin, and busy pin. Reset and busy pins are self-explanatory: the former resets device MCU the latter signals to the Pi whether the MCU is busy handling previous command/data. Command/data signals the type of SPI transaction that is about to be sent to Inky: low means command, high - data. It more or less matches interface to SSD1306 OLED display I played with before.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Color themes support^Whack for vt(4)</title>
      <link>https://kernelnomicon.org/posts/color-themes-supportwhack-for-vt4/</link>
      <pubDate>Sat, 19 Aug 2017 21:16:08 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/color-themes-supportwhack-for-vt4/</guid>
      <description>&lt;p&gt;I was updating my laptop to the latest HEAD today and noticed that my bash prompt looks ugly in default console color scheme. So what with one thing and another I ended up writing color themes support for vt(4). Just because it was fun thing to do. The idea is that you can redefine any ANSI color in console using variable in /boot/loader.conf, i.e.:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kern.vt.color.0.rgb=&amp;#34;0,0,0&amp;#34; # color 0 is black
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;# or
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kern.vt.color.15.rgb=&amp;#34;#ffffff&amp;#34; # color 15 is white
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here is how my Tomorrow Night theme looks like:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Minnowboard Turbot: GPIO, I2C, and SPI</title>
      <link>https://kernelnomicon.org/posts/minnowboard-turbot-gpio-i2c-and-spi/</link>
      <pubDate>Fri, 06 Jan 2017 14:35:33 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/minnowboard-turbot-gpio-i2c-and-spi/</guid>
      <description>&lt;p&gt;Last year I got my hands on Minnowboard Turbot (courtesy of Frank H.) and spent some time working on communications protocols support for it. Below is short summary of what works and what doesn&amp;rsquo;t.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://wiki.minnowboard.org/MinnowBoard_Turbot&#34;&gt;Minnowboard Turbot&lt;/a&gt; is Atom-base SoC, and standard x86 part (HDMI, network, USB) FreeBSD just works on it. The board has expansion connector that exposes I2C, SPI, and GPIO pins and can be used to talk to peripheral devices. Short summary of header pins can be found on &lt;a href=&#34;https://developer.microsoft.com/en-us/windows/iot/docs/pinmappingsmbm&#34;&gt;developer.microsoft.com&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Accessing I2C and SPI from userland</title>
      <link>https://kernelnomicon.org/posts/accessing-i2c-and-spi-from-userland/</link>
      <pubDate>Sat, 17 Dec 2016 20:29:46 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/accessing-i2c-and-spi-from-userland/</guid>
      <description>&lt;p&gt;Over years I accumulated fair number of devices I have no real use for. I ordered them either on impulse, or to add couple of $$$ to the bill to get free delivery. So in order to get at least some value from those purchases I put together goofy demo using two of such devices: &lt;a href=&#34;https://www.sparkfun.com/products/11931&#34;&gt;I2C temperature sensor breakout&lt;/a&gt; from Sparkfun and &lt;a href=&#34;https://www.adafruit.com/products/661&#34;&gt;128x32 SPI OLED display&lt;/a&gt; from Adafruit.&lt;/p&gt;
&lt;p&gt;I wrote two libraries to talk to TMP102 (chip in which temp sensor is based) over I2C and to SSD1306(OLED display chip) over SPI and several demos simple enough to put together in one day but flashy enough to excite my inner child and bring fond memories of MSDOS days. The SPI chip requires &lt;a href=&#34;https://svnweb.freebsd.org/base?view=revision&amp;amp;revision=310170&#34;&gt;this fix&lt;/a&gt; in kernel. Userland SPI API provides only very basic functionality but luckily it was enough to talk to SSD1306.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Raspberry Pi UART0 default frequency</title>
      <link>https://kernelnomicon.org/posts/raspberry-pi-uart0-default-frequency/</link>
      <pubDate>Wed, 14 Dec 2016 14:46:02 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/raspberry-pi-uart0-default-frequency/</guid>
      <description>&lt;p&gt;If you&amp;rsquo;re trying to boot FreeBSD with latest RaspberryPi firmware - be aware that &lt;a href=&#34;https://github.com/raspberrypi/firmware/commit/d0bc6ce8e2ae7850959fed4edb0695f3cddfb96a&#34;&gt;this commit&lt;/a&gt; changed default frequency for UART0 on at least RaspberryPi 2, so to get serial console working in u-boot/ubldr again you need to add this line to config.txt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;init_uart_clock=3000000
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>rfkill on Jetson TK1</title>
      <link>https://kernelnomicon.org/posts/rfkill-on-jetson-tk1/</link>
      <pubDate>Sun, 11 Dec 2016 13:50:42 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/rfkill-on-jetson-tk1/</guid>
      <description>&lt;p&gt;If you&amp;rsquo;re trying to install half-sized mini-PCIe wifi card in Jetson TK1, be aware, that the board has rfkill feature that is enabled by default. rfkill is hardware or software controlled switch that enables/disables RF signal on the wifi card itself. In case of mini-PCIe it&amp;rsquo;s controlled by level on pin 20 of the card. On Jetson TK-1 that pin is connected to GPIO X.7 pin. So to enable wifi on the board you need to run something like:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Debugging tip: checking kernel DTB from userland</title>
      <link>https://kernelnomicon.org/posts/debugging-tip-checking-kernel-dtb-from-userland/</link>
      <pubDate>Thu, 01 Dec 2016 17:23:08 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/debugging-tip-checking-kernel-dtb-from-userland/</guid>
      <description>&lt;p&gt;You can get source for current kernel FDT blob by running following command&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sysctl -b hw.fdt.dtb | dtc -I dtb -O dts
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Edit 27/10/2017: added -O option, looks like it&amp;rsquo;s required in newer dtc&lt;/p&gt;</description>
    </item>
    <item>
      <title>Quest for SMP on Raspberry Pi 3, part II</title>
      <link>https://kernelnomicon.org/posts/quest-for-smp-on-raspberry-pi-3-part-ii/</link>
      <pubDate>Fri, 25 Nov 2016 15:47:14 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/quest-for-smp-on-raspberry-pi-3-part-ii/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Update (11/29/2016): DTB overlay no longer required. PSCI monitor will patch in-memory DTB to add psci node. &lt;a href=&#34;https://github.com/gonzoua/rpi3-psci-monitor/commit/0d65e734e5d03f91bc10451c4f510f60e5b90bc5&#34;&gt;Commit&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;short-version-of-how-to-get-rpi3-with-smp-support&#34;&gt;Short version of how to get RPi3 with SMP support&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Build GENERIC arm64 kernel for your image, not GENERIC-UP&lt;/li&gt;
&lt;li&gt;Copy &lt;a href=&#34;https://people.freebsd.org/~gonzo/arm/rpi3-smp/u-boot.bin&#34;&gt;https://people.freebsd.org/~gonzo/arm/rpi3-smp/u-boot.bin&lt;/a&gt; and &lt;a href=&#34;https://people.freebsd.org/~gonzo/arm/rpi3-smp/armstub8.bin&#34;&gt;https://people.freebsd.org/~gonzo/arm/rpi3-smp/armstub8.bin&lt;/a&gt; to FAT partition on SD card.&lt;/li&gt;
&lt;li&gt;Copy &lt;a href=&#34;https://people.freebsd.org/~gonzo/arm/rpi3-smp/psci.dtbo&#34;&gt;https://people.freebsd.org/~gonzo/arm/rpi3-smp/psci.dtbo&lt;/a&gt; to &lt;code&gt;overlays&lt;/code&gt; directory on FAT partition&lt;/li&gt;
&lt;li&gt;Edit config.txt: change value of device_tree_address and add psci overlay. These two lines should be there:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;device_tree_address=0x4000
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Reboot device. It should boot with all four cores enabled and reboot should work too.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;long-version-of-whats-in-those-bindtbo-files&#34;&gt;Long version of what&amp;rsquo;s in those .bin/.dtbo files&lt;/h3&gt;
&lt;p&gt;Boot sequence for PSCI monitor on RPi3 looks like this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Quest for SMP on Raspberry Pi 3</title>
      <link>https://kernelnomicon.org/posts/quest-for-smp-on-raspberry-pi-3/</link>
      <pubDate>Thu, 24 Nov 2016 10:58:06 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/quest-for-smp-on-raspberry-pi-3/</guid>
      <description>&lt;p&gt;Getting SMP support for RPI3 took some time and was interesting learning experience. So I share bits of what I learned here.&lt;/p&gt;
&lt;p&gt;FreeBSD/arm boot start on one CPU (called primary) the rest of CPUs are &amp;ldquo;on hold&amp;rdquo;. At some point in boot sequence non-primary CPUs are forced to call mpentry() function. The way CPU is forced to call mpentry is platform-dependent. RPi2 for instance passes mpentry and argument to VideoCore using mailbox interface and then VideoCore kicks ARM CPU in action. So most of SoC has their own implementation of platform_mp_start_ap platform API method.&lt;/p&gt;</description>
    </item>
    <item>
      <title>MFC tracking tool filters</title>
      <link>https://kernelnomicon.org/posts/mfc-tracking-tool-filters/</link>
      <pubDate>Sat, 29 Oct 2016 15:20:21 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/mfc-tracking-tool-filters/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve just added extended filters to &lt;a href=&#34;http://mfc.kernelnomicon.org&#34;&gt;http://mfc.kernelnomicon.org&lt;/a&gt;. Now filter can be either committer, or path, or both. Path is indicated by adding @ character to the beginning, so &lt;code&gt;gonzo&lt;/code&gt; means all commits by gonzo, &lt;code&gt;@sys/arm&lt;/code&gt; means all commits to sys/arm directory, and &lt;code&gt;gonzo@sys/arm&lt;/code&gt; means all commits by gonzo to sys/arm directory. If there are more then one expression separated by space the result will be all filters OR-ed together: &lt;code&gt;@sys/arm  @boot/efi&lt;/code&gt; means all commits to sys/arm plus all commits to boot/efi directory.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Raspberry Pi userland repo update</title>
      <link>https://kernelnomicon.org/posts/raspberry-pi-userland-update/</link>
      <pubDate>Tue, 25 Oct 2016 11:44:40 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/raspberry-pi-userland-update/</guid>
      <description>&lt;p&gt;raspberrypi-userland git repo was synced to the latest upstream code base: &lt;a href=&#34;https://github.com/gonzoua/userland/tree/freebsd&#34;&gt;https://github.com/gonzoua/userland/tree/freebsd&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>MFC tracking web-tool</title>
      <link>https://kernelnomicon.org/posts/mfc-tracking-web-tool/</link>
      <pubDate>Sun, 16 Oct 2016 19:50:03 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/mfc-tracking-web-tool/</guid>
      <description>&lt;p&gt;Next week I plan to do bunch of MFCs for ARM and evdev stuff and to make it less of an ordeal I made this tool to track what&amp;rsquo;s merged and what&amp;rsquo;s not: &lt;a href=&#34;http://mfc.kernelnomicon.org&#34;&gt;mfc.kernelnomicon.org&lt;/a&gt;. It provides basic functionality I thought I would need for this process:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Navigator for HEAD commits with visual representation of MFC state: &amp;ldquo;no mfc scheduled&amp;rdquo;, &amp;ldquo;ready for mfc&amp;rdquo;, &amp;ldquo;waiting for &amp;lsquo;mfc after&amp;rsquo; date&amp;rdquo;, &amp;ldquo;merged&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Basic filtering: by author name, by two states: &amp;ldquo;waiting&amp;rdquo;, and &amp;ldquo;ready&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;MFC basket&amp;rdquo; - manage set of commits I would like to merge back in one go&lt;/li&gt;
&lt;li&gt;Generate svn command and change log for selected &amp;ldquo;MFC basket&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Stack used: Django + Bootstrap3 + jQuery&lt;/p&gt;</description>
    </item>
    <item>
      <title>Raspberry Pi support in HEAD</title>
      <link>https://kernelnomicon.org/posts/raspberry-pi-support-in-head/</link>
      <pubDate>Fri, 14 Oct 2016 22:29:03 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/raspberry-pi-support-in-head/</guid>
      <description>&lt;p&gt;Raspberry Pi 3 limited support was committed to HEAD. Most of drivers should work with upstream dtb, RNG requires attention because callout mode seems to be broken and there is no IRQ in upstream device tree file. SMP is work in progress. There are some compatibility issue with VCHIQ driver due to some assumptions that are true only for ARM platform.&lt;/p&gt;
&lt;p&gt;SD card layout is the same as for RPi and RPi2 but boot chain is different. All ARM64 supported by FreeBSD up to now used EFI as boot environment. RPi 3 has only VC firmware and whatever it can spin off, e.g. u-boot. So it seemed easier to enable EFI API in U-Boot instead of porting ubldr to arm64. There were some hiccups with netbooting, (see &lt;a href=&#34;https://people.freebsd.org/~gonzo/arm/patches/u-boot-rpi3-uefi-netboot.diff&#34;&gt;patch&lt;/a&gt;) but otherwise it was OK. U-Boot port and crochet config for Pi 3 should be committed &amp;ldquo;real soon&amp;rdquo;(tm).&lt;/p&gt;</description>
    </item>
    <item>
      <title>64-bit U-Boot on Raspberry Pi 3</title>
      <link>https://kernelnomicon.org/posts/64-bit-u-boot-on-raspberry-pi-3/</link>
      <pubDate>Sun, 09 Oct 2016 16:57:35 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/64-bit-u-boot-on-raspberry-pi-3/</guid>
      <description>&lt;p&gt;Short summary of couple of frustrating hours I spent trying to get my RPi3 netbooting:&lt;/p&gt;
&lt;p&gt;U-Boot - 2016.09
&lt;a href=&#34;https://github.com/raspberrypi/firmware/boot&#34;&gt;raspberrypi/firmware/boot&lt;/a&gt; - ec63df146f454e8cab7080380f9138246d877013&lt;/p&gt;
&lt;p&gt;armstub.bin, armstub7.bin, armstub8.bin - NOT REQUIRED. There are tens of google results mentioning these files along with some dd magic - they all obsolete. Aforementioned version of firmware does not require them. 64-bit mode is controlled by arm_control variable in config.txt (see below). If  64-bit mode requested default kernel name becomes kernel8.img, and kernel load address becomes 0x80000. U-Boot uses correct default load address so no need for any additional parameters or hacks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Multitouch support on FT5406</title>
      <link>https://kernelnomicon.org/posts/multitouch-support-on-ft5406/</link>
      <pubDate>Sat, 08 Oct 2016 11:54:47 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/multitouch-support-on-ft5406/</guid>
      <description>&lt;p&gt;Few weeks ago evdev support was finally committed to HEAD. Project &lt;a href=&#34;https://wiki.freebsd.org/SummerOfCode2014/evdev_Touchscreens&#34;&gt;started&lt;/a&gt; a part of SoC 2014 by Jakub Klama and then picked up, finished and submitted by Vladimir Kondratiev. It&amp;rsquo;s drop-in compatible with Linux API which means all you need to do is add #ifdef _&lt;em&gt;FreeBSD&lt;/em&gt; around respective includes and existing code (if it&amp;rsquo;s otherwise cross-compatible with FreeBSD) should just work. Which is the case for &lt;a href=&#34;https://codereview.qt-project.org/#/c/172829/&#34;&gt;Qt&lt;/a&gt; and to lesser extent for &lt;a href=&#34;https://github.com/kergoth/tslib/pull/42&#34;&gt;tslib&lt;/a&gt;. Hardware support is still moving target, FreeBSD has evdev-compatible drivers for USB keyboards, USB mice, TI&amp;rsquo;s AM33xx touchscreen controller and Raspberry Pi&amp;rsquo;s official touchscreen. Only the latter device supports multitouch and Vladimir submitted patch required to get it working. To my knowledge it&amp;rsquo;s the first multitouch touchscreen ever working on FreeBSD so I decided to record demo to save this moment for generations to come. Well, not really. Mostly to brag and to let people know that it&amp;rsquo;s possible and encourage them to make stuff and experiment with FreeBSD, ARM, and Qt.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Netbooting FreeBSD with PXE/UEFI</title>
      <link>https://kernelnomicon.org/posts/netbooting-freebsd-with-pxeuefi/</link>
      <pubDate>Thu, 29 Sep 2016 16:11:10 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/netbooting-freebsd-with-pxeuefi/</guid>
      <description>&lt;p&gt;Dear Future Me,&lt;/p&gt;
&lt;p&gt;I guess you came here googling for &amp;ldquo;FreeBSD PXE UEFI&amp;rdquo; trying to find out how to netboot your x86 dev box. Or arm64 box. Who knows what you&amp;rsquo;re hacking on in the future. To do that you need follow these simple steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Put loader.efi to tftpboot dir&lt;/li&gt;
&lt;li&gt;Configure dhcpd along these lines:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;host amd64 {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        hardware ethernet  b8:ae:ed:&lt;span style=&#34;color:#ae81ff&#34;&gt;77&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;88&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;99&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        filename &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;loader.efi&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        option root&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;path &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/src/FreeBSD/tftproot/amd64&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        fixed&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;address &lt;span style=&#34;color:#ae81ff&#34;&gt;192.168&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;10.102&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        option routers &lt;span style=&#34;color:#ae81ff&#34;&gt;192.168&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;10.1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Make sure root-path is in /etc/exports.&lt;/li&gt;
&lt;li&gt;If you use MINIMAL-derived config add your NIC driver to /boot/loader.conf:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;if_re_load&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;YES&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That&amp;rsquo;s pretty much it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Untethering Jetson-TK1</title>
      <link>https://kernelnomicon.org/posts/untethering-jetson-tk1/</link>
      <pubDate>Sun, 25 Sep 2016 18:11:43 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/untethering-jetson-tk1/</guid>
      <description>&lt;p&gt;Normally I netboot all my ARM devices but in case of Jetson TK1 I thought it would be nice to go and try to make it &amp;ldquo;real computer&amp;rdquo; - running by itself, may be use it for some port builds. I added Samsung EVO to it but the plan was to use SSD for builds/source code, and to use either external SD card or eMMC as a root device. TK1 survived buildworld/buildkernel (I had to add swap though, clang is a memory monster) so it was time to populate root device and eMMC was picked as a target. There were some ms-basic-data partitions on eMMC but I didn&amp;rsquo;t think much of it and happily typed dd if=/dev/zero of=/dev/mmcsd0 bs=128m. Well&amp;hellip; Big mistake. Among those partitions was u-boot. And probably earlier stage boot loader as well. So I had to install ubuntu on one of unused machines and re-flash TK1. Luckily no permanent damage was done to the device. After this accident I added a little bit of planning into the process. Here is short summary:&lt;/p&gt;</description>
    </item>
    <item>
      <title>VirtualBox Shared Folders: progress report</title>
      <link>https://kernelnomicon.org/posts/virtualbox-shared-folders-progress-report/</link>
      <pubDate>Mon, 12 Sep 2016 15:59:05 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/virtualbox-shared-folders-progress-report/</guid>
      <description>&lt;p&gt;I spent Labor Day weekend laboring on VBox shared folders support for FreeBSD. It&amp;rsquo;s been some time since I worked on it last time so I had to refresh my memory first. Things have moved on since then - VBox in ports was updated to version 5, but fortunately Li-Wen synced up &lt;a href=&#34;https://github.com/lwhsu/freebsd-vboxfs&#34;&gt;freebsd-vboxfs&lt;/a&gt; repo to the latest version. After three days of laid-back hacking I am glad to announce that following VOPs are kind of implemented (in no particular order): lookup, access, readdir, read, getattr, readlink, remove, rmdir, symlink, close, create, open, write. &amp;ldquo;Kind of implemented&amp;rdquo; means that I was able to mount directory, traverse it, read file, calculate md5 sums and compare with host&amp;rsquo;s md5sum, create/remove directories, unzip zip file, etc but I doubt it would survive stress-test. Locking is all wrong at the moment and read/write VOPs allocate buffers for every operation.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Jetson TK1, FreeBSD, and SSD</title>
      <link>https://kernelnomicon.org/posts/jetson-tk1-freebsd-and-ssd/</link>
      <pubDate>Fri, 19 Aug 2016 13:30:39 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/jetson-tk1-freebsd-and-ssd/</guid>
      <description>&lt;p&gt;Looks like my attempt to cheap out on SSD for TK1 has backfired. I went for the cheapest SSD available in local store (Toshiba Q300) but when I tried to checkout FreeBSD sources to the drive I got bunch of WRITE_FPDMA_QUEUED timeouts and system locked up. The same thing happened when I tried to perform checkout on Linux. The drive itself was OK, it survived &amp;ldquo;svn co &amp;hellip;/head&amp;rdquo; and dd when connected using USB-to-SATA adapter.&lt;/p&gt;</description>
    </item>
    <item>
      <title>FreeBSD on Jetson TK1</title>
      <link>https://kernelnomicon.org/posts/freebsd-on-jetson-tk1/</link>
      <pubDate>Tue, 28 Jun 2016 13:33:41 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/freebsd-on-jetson-tk1/</guid>
      <description>&lt;p&gt;I finally got around to BSDify my Jetson TK1. Here is short summary of what is involved. And to save you some scrolling here are artifacts obtained from whole ordeal: &lt;a href=&#34;https://people.freebsd.org/~gonzo/arm/jetson-tk1/&#34;&gt;https://people.freebsd.org/~gonzo/arm/jetson-tk1/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kernelnomicon.org/uploads/2016/06/IMG_2064-e1467143789207.jpg&#34;&gt;&lt;img alt=&#34;Jetson TK1&#34; loading=&#34;lazy&#34; src=&#34;https://kernelnomicon.org/uploads/2016/06/IMG_2064-e1467143789207-768x1024.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;u-boot&#34;&gt;U-Boot&lt;/h2&gt;
&lt;p&gt;First of all - my TK1 didn&amp;rsquo;t have U-Boot. Type of bootloader depends on the version of Linux4Tegra TK1 comes with. Mine had L4T R19, with some kind of &amp;ldquo;not u-boot&amp;rdquo; bootloader. My first attempt was to use tegrarcm tool, it uses libusb, so it&amp;rsquo;s possible to build it on FreeBSD with some elbow grease, but once I tried to run it - it gave me cryptic errors and USB is not my strong skill so I took low road and installed Ubuntu VM. For what is&amp;rsquo;s worth I got the same kind of error on Ubuntu.&lt;/p&gt;</description>
    </item>
    <item>
      <title>bsdfb platform plugin merged to Qt dev branch</title>
      <link>https://kernelnomicon.org/posts/bsdfb-platform-plugin-merged-to-qt-dev-branch/</link>
      <pubDate>Mon, 13 Jun 2016 17:28:22 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/bsdfb-platform-plugin-merged-to-qt-dev-branch/</guid>
      <description>&lt;p&gt;Few weeks back Ralf Nolden, who is *BSD champion in Qt community, urged me to clean-up and submit my Qt5-related projects to upstream and &lt;a href=&#34;https://github.com/gonzoua/qt-platform-scfb&#34;&gt;scfb platform plugin&lt;/a&gt; was picked as a test dummy. It took  &lt;a href=&#34;https://codereview.qt-project.org/#/c/159316/&#34;&gt;12 iterations&lt;/a&gt; to get things right, along the way plugin was renamed to bsdfb, but eventually patch has been &lt;a href=&#34;https://github.com/qtproject/qtbase/commit/1542d8881fc5ccbc5918cd4acbe4091ebbd24508&#34;&gt;merged&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Next two candidates are &lt;a href=&#34;https://github.com/gonzoua/qt5-bsd-input&#34;&gt;bsdkeyboard and bsdsysmouse input plugins&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>VirtualBox Shared Folders: One VOP at a Time</title>
      <link>https://kernelnomicon.org/posts/virtualbox-shared-folders-one-vop-at-a-time/</link>
      <pubDate>Sun, 12 Jun 2016 18:31:32 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/virtualbox-shared-folders-one-vop-at-a-time/</guid>
      <description>&lt;p&gt;Two months ago I tried to setup dev environment using FreeBSD Vagrant box just to find out that FreeBSD does not support VirtualBox shared folders. After some googling I found Li-Wen Hsu&amp;rsquo;s github &lt;a href=&#34;https://github.com/lwhsu/freebsd-vboxfs&#34;&gt;repository&lt;/a&gt; with some work in this area. Li-Wen and Will Andrews has already done major chunk of work: patches to VirtualBox build system, skeleton VFS driver, API to talk to hypervisor but hit a block with some implementation details in VirtualBox&amp;rsquo;s virtual-memory compatibility layer. Will provided &lt;a href=&#34;https://github.com/lwhsu/freebsd-vboxfs/blob/master/vboxvfs/vboxvfs_prov.c#L131&#34;&gt;very comprehensive analysis&lt;/a&gt; of the problem.&lt;/p&gt;</description>
    </item>
    <item>
      <title>gpiokeys support committed</title>
      <link>https://kernelnomicon.org/posts/gpiokeys-support-committed/</link>
      <pubDate>Fri, 20 May 2016 17:10:36 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/gpiokeys-support-committed/</guid>
      <description>&lt;p&gt;To those who do not track FreeBSD commit messages: I committed gpiokeys driver to -CURRENT as &lt;a href=&#34;https://svnweb.freebsd.org/base?view=revision&amp;amp;revision=299475&#34;&gt;r299475&lt;/a&gt;. The driver is not enabled in any of the kernels but can be built as a loadable module.&lt;/p&gt;
&lt;p&gt;For now it stays disconnected from main build because it breaks some MIPS kernel configs. Configs in question include &amp;ldquo;modules/gpio&amp;rdquo; as part of MODULES_OVERRIDE variable and since gpiokeys can be built only with FDT-enabled kernel the build fails.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Qt 5.6 is here and it runs on FreeBSD/Pi</title>
      <link>https://kernelnomicon.org/posts/qt-5-6-is-here-and-it-runs-on-freebsdpi/</link>
      <pubDate>Sun, 20 Mar 2016 13:11:32 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/qt-5-6-is-here-and-it-runs-on-freebsdpi/</guid>
      <description>&lt;p&gt;Qt 5.6 is finally out so I thought I&amp;rsquo;d give it a spin on my Raspberry Pi. Previously I used cross-compilation but this time I thought I&amp;rsquo;d spend some time in trying to create ports Qt modules. There is Qt 5.5.1 in ports and it&amp;rsquo;s nicely split into sub-ports and most of gory details are hidden in bsd.qt.mk library. The problem with it is it&amp;rsquo;s highly coupled with Xorg stuff and I didn&amp;rsquo;t find easy way to squeeze non-desktop use cases into current infrastructure. So I just created new &lt;a href=&#34;https://github.com/gonzoua/experimental-freebsd-ports&#34;&gt;custom devel/qt56 port&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Controlling AC power using GPIO</title>
      <link>https://kernelnomicon.org/posts/controlling-ac-power-using-gpio/</link>
      <pubDate>Thu, 24 Dec 2015 12:50:16 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/controlling-ac-power-using-gpio/</guid>
      <description>&lt;p&gt;Being able to power cycle ARM boards remotely (without spending a lot of $$$) was on my wish list for way to long, so I finally got around to put something together. The obvious way to do this is power relay controlled by GPIO + remotely accessible GPIO port. For the former I picked up &lt;a href=&#34;http://www.amazon.com/gp/product/B00WV7GMA2&#34;&gt;this relay by Digital Loggers&lt;/a&gt;. It was four ports, only two of them are connected at a time, you can switch selected pair by setting control port level. For a controller part I picked up RIoTBoard but actually any ARM board with  sshd running on it and user-accessible GPIO pin would do.&lt;/p&gt;</description>
    </item>
    <item>
      <title>i.MX6 IPU and HDMI drivers</title>
      <link>https://kernelnomicon.org/posts/i-mx6-ipu-and-hdmi-drivers/</link>
      <pubDate>Wed, 09 Dec 2015 15:10:39 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/i-mx6-ipu-and-hdmi-drivers/</guid>
      <description>&lt;p&gt;Back from vacation and back to work. Once I got RIoTboard up and running next natural step was to wrap up some i.MX6 project I had in &amp;ldquo;almost finished&amp;rdquo; state for months. So now they&amp;rsquo;re in &amp;ldquo;going through review&amp;rdquo; state: drivers for &lt;a href=&#34;https://reviews.freebsd.org/D4174&#34;&gt;HDMI framer&lt;/a&gt; and &lt;a href=&#34;https://reviews.freebsd.org/D4168&#34;&gt;IPU&lt;/a&gt;. They add basic 1024x768 console for iMX6 board. Video mode management requires more sophisticated timers framework, that is being work on as a part of Jetson TK1 port.&lt;/p&gt;</description>
    </item>
    <item>
      <title>RIoTboard support</title>
      <link>https://kernelnomicon.org/posts/riotboard-support/</link>
      <pubDate>Thu, 12 Nov 2015 20:28:13 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/riotboard-support/</guid>
      <description>&lt;p&gt;My career as &lt;a href=&#34;https://www.youtube.com/playlist?list=PLIlNZLQQ4dQvD_WThzImhmgI5477APYN4&#34;&gt;a trendy videoblogger&lt;/a&gt; starts to pay off. Nice people from &lt;a href=&#34;http://www.newark.com&#34;&gt;Newark element14&lt;/a&gt; offered to send me some hardware for experiments (no strings attached) I took them up on their offer and few days later received &lt;a href=&#34;http://www.element14.com/community/community/designcenter/single-board-computers/riotboard&#34;&gt;RIoTboard&lt;/a&gt;. It&amp;rsquo;s iMX6 Solo in developer-friendly package, not as compact as Beaglebone but nicely built and comes with more connectors.&lt;/p&gt;
&lt;p&gt;FreeBSD&amp;rsquo;s iMX6 support is very good, so it took two one-line fixes to FreeBSD kernel code to make it work on RIoTboard. The other chunk of work was U-Boot package. Took more time than it should have due to some operator errors. The bring up process is more or less the same as for any other iMX6 system, so it should be really easy to add this board to &lt;a href=&#34;https://github.com/freebsd/crochet&#34;&gt;crochet&lt;/a&gt;. Step by step it looks like this (some of the code came from crochet):&lt;/p&gt;</description>
    </item>
    <item>
      <title>FreeBSD on RPi 2 progress</title>
      <link>https://kernelnomicon.org/posts/freebsd-on-rpi-2-progress/</link>
      <pubDate>Mon, 09 Nov 2015 15:04:20 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/freebsd-on-rpi-2-progress/</guid>
      <description>&lt;p&gt;Quick update on progress in FreeBSD&amp;rsquo;s support of Raspberry Pi:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;VCHIQ driver was updated to the latest vendor code and bunch of FreeBSD-specific problems was fixed: locking, handling of non-cacheline aligned data&lt;/li&gt;
&lt;li&gt;Raspberry Pi userland code was updated to the latest vendor code&lt;/li&gt;
&lt;li&gt;Mikael Urankar created &lt;a href=&#34;https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=204388&#34;&gt;misc/raspberrypi-userland&lt;/a&gt; for userland libraries/utilities&lt;/li&gt;
&lt;li&gt;Mikael also created &lt;a href=&#34;https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=204392&#34;&gt;multimedia/omxplayer&lt;/a&gt; port for OMXPlayer, video player developed for RPi. It&amp;rsquo;s also used in Kodi player on Pi.&lt;/li&gt;
&lt;li&gt;I created &lt;a href=&#34;https://github.com/gonzoua/experimental-freebsd-ports/tree/master/games/ioquake3-pi&#34;&gt;misc/ioquake-pi&lt;/a&gt; port to make it easier for people to try it out&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I put together all this stuff on my brand new Pi 2 and recorded demo that showcases, OpenGL, Quake3, omxplayer, camera, and audio. I hope all these ports will be committed/updated before next round of armv6 packages build.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Official 7&#34; Raspberry Pi Touchscreen Display and FreeBSD</title>
      <link>https://kernelnomicon.org/posts/official-7-raspberry-pi-touchscreen/</link>
      <pubDate>Fri, 23 Oct 2015 12:28:47 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/official-7-raspberry-pi-touchscreen/</guid>
      <description>&lt;p&gt;Received yesterday and had to assembly it first thing today. Display part works like a charm without any system modifications. Haven&amp;rsquo;t researched touchscreen part though.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kernelnomicon.org/uploads/2015/10/IMG_1330.jpg&#34;&gt;&lt;img alt=&#34;IMG_1330&#34; loading=&#34;lazy&#34; src=&#34;https://kernelnomicon.org/uploads/2015/10/IMG_1330-768x1024.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kernelnomicon.org/uploads/2015/10/IMG_1331.jpg&#34;&gt;&lt;img alt=&#34;IMG_1331&#34; loading=&#34;lazy&#34; src=&#34;https://kernelnomicon.org/uploads/2015/10/IMG_1331-1024x768.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kernelnomicon.org/uploads/2015/10/IMG_1333.jpg&#34;&gt;&lt;img alt=&#34;IMG_1333&#34; loading=&#34;lazy&#34; src=&#34;https://kernelnomicon.org/uploads/2015/10/IMG_1333-1024x768.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kernelnomicon.org/uploads/2015/10/IMG_1334.jpg&#34;&gt;&lt;img alt=&#34;IMG_1334&#34; loading=&#34;lazy&#34; src=&#34;https://kernelnomicon.org/uploads/2015/10/IMG_1334-1024x768.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kernelnomicon.org/uploads/2015/10/IMG_1335.jpg&#34;&gt;&lt;img alt=&#34;IMG_1335&#34; loading=&#34;lazy&#34; src=&#34;https://kernelnomicon.org/uploads/2015/10/IMG_1335-1024x768.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>FreeBSD, BBB, and 4DCAPE-43T: touchscreen</title>
      <link>https://kernelnomicon.org/posts/freebsd-bbb-and-4dcape-43t-touchscreen/</link>
      <pubDate>Fri, 16 Oct 2015 19:42:08 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/freebsd-bbb-and-4dcape-43t-touchscreen/</guid>
      <description>&lt;p&gt;And yet another demo of 4DCAPE-43T, this time it&amp;rsquo;s touchscreen. On AM335x SoC touchscreen controller is coupled with analog-to-digital converter, for which there is a driver in FreeBSD HEAD: ti_adc. I had to implement touchscreen part and add driver  userland communication protocol. For proof of concept I used significantly dumbed-down version of &lt;a href=&#34;http://lxr.free-electrons.com/source/Documentation/input/input.txt#L262&#34;&gt;Linux input event protocol&lt;/a&gt;. tslib serves as a userland part of the demo. I believe it&amp;rsquo;s de-facto standard for touchscreen devices interface in Linux world. Only two things were changed comparing to stock one: I added bsd-raw  input plugin to communicate with kernel and rewrote framebuffer-related routines.&lt;/p&gt;</description>
    </item>
    <item>
      <title>More fun with Beaglebone Black and 4DCAPE-43T</title>
      <link>https://kernelnomicon.org/posts/more-fun-with-baglebone-black-and-4dcape-43t/</link>
      <pubDate>Fri, 09 Oct 2015 22:46:17 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/more-fun-with-baglebone-black-and-4dcape-43t/</guid>
      <description>&lt;p&gt;I like Qt. It runs on everything. More than 10 years ago you could run it on Linux/ARM on &lt;a href=&#34;https://en.wikipedia.org/wiki/Sharp_Zaurus&#34;&gt;Sharp Zaurus&lt;/a&gt; and now you can run it on &lt;a href=&#34;http://kernelnomicon.org/?p=461&#34;&gt;FreeBSD/Pi&lt;/a&gt;. I thought it would look neat on LCD screen on BBB and coded small demo player (&lt;a href=&#34;https://github.com/gonzoua/qt-demo-player&#34;&gt;qt-demo-player sources&lt;/a&gt;) just for the fun of it. Stock Qt does not have FreeBSD framebuffer support so I had to hack it up (&lt;a href=&#34;https://github.com/gonzoua/qt-platform-scfb&#34;&gt;qt-platform-scfb sources&lt;/a&gt;). Also it seems they still consider FreeBSD/clang second class citizen comparing to FreeBSD/gcc which causes some minor POSIX-related incompatibility fallout. But other than that it was smooth sailing, patch against vendor tree is really small. I&amp;rsquo;ll post it later along with build instructions. In addition to scfb platform support Qt console input plugins required: &lt;a href=&#34;https://github.com/gonzoua/qt5-bsd-input&#34;&gt;qt5-bsd-input&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>FreeBSD, BBB and 4DCAPE-43T</title>
      <link>https://kernelnomicon.org/posts/freebsd-bbb-and-4dcape-43t/</link>
      <pubDate>Sun, 04 Oct 2015 18:49:07 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/freebsd-bbb-and-4dcape-43t/</guid>
      <description>&lt;p&gt;Short demo of FreeBSD running on Beaglebone Black with &lt;a href=&#34;http://www.4dsystems.com.au/product/4DCAPE_43/&#34;&gt;4DCAPE-43T&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=4Vn_L_UzQhc&#34;&gt;https://www.youtube.com/watch?v=4Vn_L_UzQhc&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I used vendor-provided am335x-boneblack-4dcape-43t.dts file to generate dtb, you can download compiled blob &lt;a href=&#34;http://people.freebsd.org/~gonzo/arm/patches/am335x-boneblack-4dcape-43t.dtb&#34;&gt;here&lt;/a&gt;. The system running on demo is &lt;a href=&#34;https://github.com/gonzoua/freebsd/tree/gpiokeys&#34;&gt;gpiokeys branch&lt;/a&gt; of my git repo: . Patch against -head is &lt;a href=&#34;http://people.freebsd.org/~gonzo/arm/patches/bbb-gpiokeys.diff&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re interested only in LCD screen - it&amp;rsquo;s supported by -head but you&amp;rsquo;ll need to either add &lt;code&gt;device gpiobacklight&lt;/code&gt; to BEAGLEBONE kernel config or enable LCD backlight manually using gpioctl: &lt;code&gt;gpioctl -f /dev/gpioc1 18 1&lt;/code&gt;. gpiokeys is somewhat more complex thing and still WIP, there are some pieces missing in HEAD I had to hack around to make them work. And I haven&amp;rsquo;t started research on touchscreen yet.&lt;/p&gt;</description>
    </item>
    <item>
      <title>FDT overlays in FreeBSD</title>
      <link>https://kernelnomicon.org/posts/fdt-overlays-in-freebsd/</link>
      <pubDate>Fri, 24 Jul 2015 15:17:35 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/fdt-overlays-in-freebsd/</guid>
      <description>&lt;p&gt;FDT overlay is an extension to FDT format that lets user to modify base FDT run-time: add new nodes, add new properties to existing nodes or modify existing properties. It&amp;rsquo;s useful when you have base board and some extension units like cape/shield for Pi/BBB or loadable FPGA logic for Zynq. I will not go into details you can find internals described on &lt;a href=&#34;https://learn.adafruit.com/introduction-to-the-beaglebone-black-device-tree/device-tree-overlays&#34;&gt;Adafruit&lt;/a&gt; or &lt;a href=&#34;https://www.raspberrypi.org/documentation/configuration/device-tree.md&#34;&gt;Raspberry Pi&lt;/a&gt; websites.&lt;/p&gt;
&lt;p&gt;When dealing with overlays there are two options where to handle them: loader or kernel. Managing overlays at kernel level gives more flexibility but requires more related logic, e.g. re-init pinmux after applying overlay, re-run newbus probe/attach. On the other hand loader-level support is quite straightforward and involves nothing but DTB modifications and it&amp;rsquo;s a natural first step to adding FDT overlays to FreeBSD.&lt;/p&gt;</description>
    </item>
    <item>
      <title>HDMI support for Beaglebone Black</title>
      <link>https://kernelnomicon.org/posts/hdmi-support-for-beaglebone-black/</link>
      <pubDate>Thu, 09 Jul 2015 15:28:53 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/hdmi-support-for-beaglebone-black/</guid>
      <description>&lt;p&gt;Just quick (and overdue) update: HDMI for BBB is in HEAD as of r284534.&lt;/p&gt;</description>
    </item>
    <item>
      <title>HDMI progress and 4DCAPE-43 support for Beaglebone Black</title>
      <link>https://kernelnomicon.org/posts/hdmi-progress-and-4dcape-43-support-for-beaglebone-black/</link>
      <pubDate>Sat, 28 Feb 2015 19:54:28 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/hdmi-progress-and-4dcape-43-support-for-beaglebone-black/</guid>
      <description>&lt;p&gt;HDMI support for Beaglebone Black is stable now and supports reading EDID, you can get the path &lt;a href=&#34;https://people.freebsd.org/~gonzo/arm/patches/bbb-hdmi-20150128.diff&#34;&gt;here&lt;/a&gt;. Before committing it I&amp;rsquo;d like to make interoperability between HDMI framer and FB/LCD drivers as generic as possible and for this I need at least one more system with working HDMI to find common patterns. For this purpose I picked up i.MX6-based &lt;a href=&#34;http://www.solid-run.com/products/hummingboard/&#34;&gt;Hummingboard&lt;/a&gt; and now try to get video output working on it. There is some minor progress but it seems before getting to HDMI/IPU I need to do some work on clock management part of the system. So it&amp;rsquo;s going to be some time before I see first pixels on my monitor.&lt;/p&gt;</description>
    </item>
    <item>
      <title>HDMI support for Beaglebone Black: first milestone</title>
      <link>https://kernelnomicon.org/posts/hdmi-support-for-beaglebone-black-first-milestone/</link>
      <pubDate>Sun, 18 Jan 2015 18:56:06 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/hdmi-support-for-beaglebone-black-first-milestone/</guid>
      <description>&lt;p&gt;Today for the first time I&amp;rsquo;ve got stable and correctly positioned output on HDMI monitor connected to BeagleBone Black. It involved fixing bug in AM335x LCDC controller, fixing bug in I2C controller, and a lot of experiments with register-pushing. Code requires major clean-up and is not ready for the tree yet. I&amp;rsquo;ll post patch when it&amp;rsquo;s in readable form.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kernelnomicon.org/uploads/2015/01/IMG_0650.jpg&#34;&gt;&lt;img alt=&#34;IMG_0650&#34; loading=&#34;lazy&#34; src=&#34;https://kernelnomicon.org/uploads/2015/01/IMG_0650-1024x768.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Qt5 for FreeBSD/Pi</title>
      <link>https://kernelnomicon.org/posts/qt5-for-freebsdpi/</link>
      <pubDate>Wed, 14 Jan 2015 20:26:55 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/qt5-for-freebsdpi/</guid>
      <description>&lt;p&gt;Build SD card image using crochet-freebsd with &lt;code&gt;option VideoCore&lt;/code&gt; enabled. Mount either SD card itself of image to build host&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mount /dev/mmcsd0s2a /pi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Checkout Qt5 sources and patch them&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd /src
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git clone git://gitorious.org/qt/qt5.git qt5
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd qt5
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git checkout 5.4.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MODULES=qtbase,qtdeclarative,qtgraphicaleffects,qtimageformats,qtquick1,qtquickcontrols,qtscript,qtsvg,qtxmlpatterns
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;./init-repository --module-subset=$MODULES
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fetch -q -o - http://people.freebsd.org/~gonzo/arm/rpi/qt5-freebsd-pi.diff | patch -p1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Configure, build and install Qt5 to SD card&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;./configure -platform unsupported/freebsd-clang -no-openssl -opengl es2 -device freebsd-rasp-pi-clang -device-option CROSS_COMPILE=/usr/armv6-freebsd/usr/bin/ -sysroot /pi/ -no-gcc-sysroot -opensource -confirm-license -optimized-qmake -release -prefix /usr/local/Qt5 -no-pch -nomake tests -nomake examples -plugin-sql-sqlite
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gmake -j `sysctl -n hw.ncpu`
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo gmake install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You need BSD-specific plugins to enable mouse and keyboard input in EGLFS mode&lt;/p&gt;</description>
    </item>
    <item>
      <title>Update on ioquake/ARM for FreeBSD: controls support added</title>
      <link>https://kernelnomicon.org/posts/update-on-ioquakearm-for-freebsd-controls-support-added/</link>
      <pubDate>Tue, 13 Jan 2015 21:22:33 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/update-on-ioquakearm-for-freebsd-controls-support-added/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve update &lt;a href=&#34;http://people.freebsd.org/~gonzo/arm/ioquake3.arm.tar.gz&#34;&gt;ioquake binaries&lt;/a&gt; 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.:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;env Q_MOUSE_DEV=/dev/ums0 ioquake3.arm +set s_initsound 0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Audio on Raspberry Pi</title>
      <link>https://kernelnomicon.org/posts/audio-on-raspberry-pi/</link>
      <pubDate>Fri, 09 Jan 2015 23:25:08 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/audio-on-raspberry-pi/</guid>
      <description>&lt;p&gt;With stable VCHIQ driver next obvious target was to add VCHIQ-based audio support. So let me introduce to you: vchiq_audio, first take. It&amp;rsquo;s part of vchiq-freebsd repo so if you use Crochet to build SD card image just enable &lt;code&gt;option VideoCore&lt;/code&gt; in config file and module will be automatically included.&lt;/p&gt;
&lt;p&gt;From shell run &lt;code&gt;kldload vchiq_audio&lt;/code&gt; and you&amp;rsquo;re good to do. I believe that audio output is picked up automatically by VideoCore so if you have HDMI connected it&amp;rsquo;s probably going to be HDMI. I do not have device to confirm this. Adding knob to control audio output (auto, headphones, HDMI) is on my ToDo list.&lt;/p&gt;</description>
    </item>
    <item>
      <title>RaspberryPi, FreeBSD and ioquake3</title>
      <link>https://kernelnomicon.org/posts/raspberrypi-freebsd-and-ioquake3/</link>
      <pubDate>Wed, 07 Jan 2015 15:37:55 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/raspberrypi-freebsd-and-ioquake3/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: &lt;a href=&#34;http://kernelnomicon.org/?p=455&#34;&gt;support for keyboard/mouse&lt;/a&gt; has been added&lt;/p&gt;
&lt;p&gt;After New Year I got back to hacking the VCHIQ stuff (thanks to adrian@ for prodding). Since last time I touched NetBSD folks got it merged to main tree, syncing with latest upstream code and fixing some stupid bugs in my codebase. So I partially merged things back, spent some time on fixing more bugs introduced by yours truly, merged userland bits from latest Broadcom&amp;rsquo;s bits (and fixing some bugs introduced by them). And as a result VCHIQ got stable enough to run ioquake3d on raspberry pi. Well, you can&amp;rsquo;t play it because there is no sound and no mouse support and keyboard support is severely crippled but you can navigate menus and watch demoes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>State of FreeBSD/MIPS emulation</title>
      <link>https://kernelnomicon.org/posts/state-of-freebsdmips-emulation/</link>
      <pubDate>Wed, 04 Sep 2013 15:22:24 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/state-of-freebsdmips-emulation/</guid>
      <description>&lt;p&gt;A week ago Adrian Chadd asked me to take a loot at FreeBSD/MIPS emulation. So last week I&amp;rsquo;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.&lt;/p&gt;
&lt;h2 id=&#34;emulators&#34;&gt;Emulators&lt;/h2&gt;
&lt;p&gt;There are two widely used MIPS emulatoes that FreeBSD supports: &lt;a href=&#34;http://www.qemu.org&#34;&gt;QEMU&lt;/a&gt; and &lt;a href=&#34;http://gxemul.sourceforge.net&#34;&gt;GXemul&lt;/a&gt;. Both of them support numerous MIPS devices but we&amp;rsquo;re interested in only two.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Update on FreeBSD/armv6 in QEMU</title>
      <link>https://kernelnomicon.org/posts/update-on-freebsdarmv6-in-qemu/</link>
      <pubDate>Sat, 29 Jun 2013 17:37:58 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/update-on-freebsdarmv6-in-qemu/</guid>
      <description>&lt;p&gt;QEMU support in FreeBSD/armv6 regressed since I tried it last time few months back. Changes in FreeBSD kernel and in QEMU itself revealed bugs that were masked by previous behaviour.&lt;/p&gt;
&lt;p&gt;In FreeBSD it was r248467: the way memory/IO resources are activated on FDT bus has been changed and it triggered bug in versatile_pci.c&lt;/p&gt;
&lt;p&gt;The other issue is more complex. It seems that PCI IRQ routing in QEMU was out of sync with real hardware. So after &lt;a href=&#34;https://github.com/qemu/qemu/commit/66a96d7018b9cbabb73c9b87b62a37e4cc46580a&#34;&gt;commit 66a96d7018b9cbabb73c9b87b62a37e4cc46580a&lt;/a&gt; IRQ numbers assigned to PCI devices by FreeBSD kernel by default were invalid. Authors of QEMU eventually added compatibility knob to fall back to previous logic. So if you&amp;rsquo;re using QEMU 1.5 or later add this option to your command line:&lt;/p&gt;</description>
    </item>
    <item>
      <title>USB driver for FreeBSD/Beaglebone</title>
      <link>https://kernelnomicon.org/posts/usb-driver-for-freebsdbeaglebone/</link>
      <pubDate>Thu, 27 Jun 2013 21:10:36 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/usb-driver-for-freebsdbeaglebone/</guid>
      <description>&lt;p&gt;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: &lt;a href=&#34;http://people.freebsd.org/~gonzo/arm/patches/beaglebone-usb-20130626.diff&#34;&gt;beaglebone-usb-20130626.diff&lt;/a&gt;. 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.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Raspberry Pi console</title>
      <link>https://kernelnomicon.org/posts/raspberry-pi-console/</link>
      <pubDate>Mon, 24 Jun 2013 18:47:32 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/raspberry-pi-console/</guid>
      <description>&lt;p&gt;Quick hint. If you did not disable &lt;strong&gt;&amp;ldquo;device sc&amp;rdquo;&lt;/strong&gt; in kernel config all the message from kernel go to video console. But if something bad happened after kernel started and before framebuffer driver is activated all you&amp;rsquo;ll see would be &lt;strong&gt;&amp;ldquo;Kernel args: (null)&amp;rdquo;&lt;/strong&gt; message on serial console which is not very helpful. So in order to debug this problem and have kernel boot messages on both monitor and serial port without recompiling kernel just add following line to /boot/loader.rc on SD card:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Framebuffer/syscons support for AM335x</title>
      <link>https://kernelnomicon.org/posts/framebuffersyscons-support-for-am335x/</link>
      <pubDate>Sun, 26 May 2013 17:48:44 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/framebuffersyscons-support-for-am335x/</guid>
      <description>&lt;p&gt;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):&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kernelnomicon.org/uploads/2013/05/IMG_0049.jpg&#34;&gt;&lt;img alt=&#34;IMG_0049&#34; loading=&#34;lazy&#34; src=&#34;https://kernelnomicon.org/uploads/2013/05/IMG_0049-e1369615548914-300x224.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Work in Progress: LCD driver for AM335x evaluation module</title>
      <link>https://kernelnomicon.org/posts/work-in-progress-lcd-driver-for-am335x-evaluation-module/</link>
      <pubDate>Sun, 05 May 2013 17:25:57 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/work-in-progress-lcd-driver-for-am335x-evaluation-module/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m trying to wrap up some project I started working on quite some time ago and this is first chunk of clean-up.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://people.freebsd.org/~gonzo/arm/patches/am335x-pwm-lcd.diff&#34;&gt;Patch&lt;/a&gt;contains:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kernel config for AM335x EVM&lt;/li&gt;
&lt;li&gt;dts file for AM335x EVM with TFT panel info&lt;/li&gt;
&lt;li&gt;LCD controller driver with some functionality missing: only 24/32 bit depth and only TFT mode is supported&lt;/li&gt;
&lt;li&gt;Really simple PWM driver. LCD backlight is controlled through eCAS submodule of PWMSS0 module.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I tested it only on evaluation module, although I think with proper panel/pinmux configuration it should work with BeagleBone&amp;rsquo;s LCD caps too.
Parts missing: adjusting clock to proper pixel frequency, proper allocation of framebuffer memory.&lt;/p&gt;</description>
    </item>
    <item>
      <title>FDT driver skeleton generator</title>
      <link>https://kernelnomicon.org/posts/fdt-driver-skeleton-generator/</link>
      <pubDate>Fri, 03 May 2013 11:20:14 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/fdt-driver-skeleton-generator/</guid>
      <description>&lt;p&gt;Writing new driver for FDT-based device always involves several simple steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;writing generic newbus driver skeleton&lt;/li&gt;
&lt;li&gt;Checking for compatibility of node in probe routine&lt;/li&gt;
&lt;li&gt;Allocate memory/IRQ resources in attach routine&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I can&amp;rsquo;t say for other developers but I just copy existing driver, remove all device-specific stuff and rewrite generic stuff. Which is less time-consuming then writing it from scratch but time-consuming it is. Being huge fan of automation of any kind I decided to let computer do all this dumb work and leave creative part (copy-pasting registers definition from spec to code) to myself. the result is &lt;a href=&#34;https://github.com/gonzoua/freebsd-misc/tree/master/fdt_skeleton&#34;&gt;this script&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Netbooting ARM/MIPS devices: ubldr</title>
      <link>https://kernelnomicon.org/posts/netbooting-armmips-devices-ubldr/</link>
      <pubDate>Fri, 19 Apr 2013 19:24:19 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/netbooting-armmips-devices-ubldr/</guid>
      <description>&lt;p&gt;As it was mentioned in &lt;a href=&#34;http://kernelnomicon.org/?p=327&#34;&gt;previous post&lt;/a&gt; U-Boot can boot FreeBSD kernel directly but this approach doesn&amp;rsquo;t allow a great deal of control over boot process: there is no way to set tunables&amp;rsquo; values or pre-load module. Controlling this stuff requires more knowledge of FreeBSD internal data structures and its boot process then U-Boot holds.&lt;/p&gt;
&lt;p&gt;On i386 and other Tier1 architectures this task is handled by the &lt;a href=&#34;http://www.freebsd.org/cgi/man.cgi?query=loader&amp;amp;sektion=8&#34;&gt;loader(8)&lt;/a&gt; program. It&amp;rsquo;s last stage boot loader (e.g. it&amp;rsquo;s supposed to pass control to FreeBSD kernel only), highly customizable and scriptable. &lt;a href=&#34;http://www.freebsd.org/cgi/man.cgi?query=loader&amp;amp;sektion=8&#34;&gt;loader(8)&lt;/a&gt; relies on one of the previous stages boot loader to access resources like disks, console, network. For i386 it&amp;rsquo;s BTX and BIOS.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Netbooting ARM/MIPS devices: kinds of kernel and u-boot</title>
      <link>https://kernelnomicon.org/posts/netbooting-armmips-devices-kinds-of-kernel-and-u-boot/</link>
      <pubDate>Fri, 15 Feb 2013 16:33:58 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/netbooting-armmips-devices-kinds-of-kernel-and-u-boot/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.denx.de/wiki/U-Boot&#34;&gt;U-Boot&lt;/a&gt; is a boot loader. Its task is to get kernel into memory and pass control to it. I will cover only parts of it related to netboot.&lt;/p&gt;
&lt;h2 id=&#34;kernel-or-kernelbin&#34;&gt;kernel or kernel.bin&lt;/h2&gt;
&lt;p&gt;But before we start loading something we need to know what to load. In &lt;a href=&#34;http://kernelnomicon.org/?p=306&#34;&gt;previous post&lt;/a&gt; I mentioned that there are kernel, kernel.bin, and ubldr files. Let&amp;rsquo;s get into details. First of all: ubldr requires its own post. So there will be one more covering just ubldr. Now kernel and kernel.bin.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Netbooting ARM/MIPS devices: server setup</title>
      <link>https://kernelnomicon.org/posts/netbooting-armmips-devices-server-setup/</link>
      <pubDate>Thu, 14 Feb 2013 18:50:42 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/netbooting-armmips-devices-server-setup/</guid>
      <description>&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Usual components in the setup are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DHCP server&lt;/li&gt;
&lt;li&gt;TFTP server&lt;/li&gt;
&lt;li&gt;NFS server&lt;/li&gt;
&lt;li&gt;NAT (optional)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;dhcp-server&#34;&gt;DHCP server&lt;/h2&gt;
&lt;p&gt;I use &lt;strong&gt;net/isc-dhcp42-server&lt;/strong&gt; as a server. Sample dhcpd.conf:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;option root-opts code 130 = string; # NFS / mount options
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;log-facility local7;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;subnet 192.168.10.0 netmask 255.255.255.0 {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        server-name &amp;#34;cinderella.bluezbox.com&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        server-identifier 192.168.10.1;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        option subnet-mask 255.255.255.0;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        option broadcast-address 192.168.10.255;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        option domain-name-servers 8.8.8.8;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        option domain-name &amp;#34;bluezbox.com&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        next-server 192.168.10.1;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        option routers 192.168.10.1;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;group {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        host pandaboard {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                hardware ethernet 0E:60:33:B1:46:01;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                fixed-address 192.168.10.90;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                filename &amp;#34;kernel.PANDA.bin&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                option root-path &amp;#34;/src/FreeBSD/nfs/armv6&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                option root-opts &amp;#34;nolockd&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        host rpi {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                hardware ethernet b8:27:eb:f6:08:83;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                fixed-address 192.168.10.91;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                filename &amp;#34;ubldr&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                option root-path &amp;#34;/src/FreeBSD/nfs/rpi&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                option root-opts &amp;#34;nolockd&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Config is pretty self-explanatory. I use google&amp;rsquo;s &lt;strong&gt;8.8.8.8&lt;/strong&gt; nameserver but you can change it to your very own DNS server. Difference between various &lt;strong&gt;filename &amp;ldquo;&amp;hellip;&amp;rdquo;&lt;/strong&gt; will be explained later.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Netbooting Hackberry A10 (Allwinner A10)</title>
      <link>https://kernelnomicon.org/posts/netbooting-hackberry-a10-allwinner-a10/</link>
      <pubDate>Sun, 10 Feb 2013 00:14:34 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/netbooting-hackberry-a10-allwinner-a10/</guid>
      <description>&lt;p&gt;Last few weeks I&amp;rsquo;ve been acting as a reviewer for Ganbold Tsagaankhuu&amp;rsquo;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 &lt;a href=&#34;https://www.miniand.com/products/Hackberry%20A10%20Developer%20Board&#34;&gt;Hackberry&lt;/a&gt; from miniand.com. I&amp;rsquo;m not great fan of pushing SD cards back and forth so first thing I do with my SoCs is get them netbooting. That&amp;rsquo;s where fun begins.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Accessing GPIO from Perl, Python, and Ruby</title>
      <link>https://kernelnomicon.org/posts/accessing-gpio-from-perl-python-and-ruby/</link>
      <pubDate>Thu, 07 Feb 2013 18:01:21 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/accessing-gpio-from-perl-python-and-ruby/</guid>
      <description>&lt;p&gt;I started this smallish project to overcome coder&amp;rsquo;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.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Building image for Raspberry Pi: up to date version</title>
      <link>https://kernelnomicon.org/posts/building-image-for-raspberry-pi-up-to-date-version/</link>
      <pubDate>Fri, 01 Feb 2013 15:00:02 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/building-image-for-raspberry-pi-up-to-date-version/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Update 1: Add -DDB_FROM_SRC to install targets&lt;/strong&gt;
&lt;strong&gt;Update 2: Add user &amp;ldquo;pi&amp;rdquo; with password &amp;ldquo;raspberry&amp;rdquo;&lt;/strong&gt;
&lt;strong&gt;Update 3: Added host system requirements suggested in comments&lt;/strong&gt;
&lt;strong&gt;Update 4: Rename bcm2835-rpi-b.dtb to rpi.dtb&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s been a while since I posted original &lt;a href=&#34;http://kernelnomicon.org/?p=164&#34;&gt;build instruction&lt;/a&gt; and a lot has change. Here is new version of it with some explanations:&lt;/p&gt;
&lt;p&gt;First make sure your host system is configured properly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WITHOUT_FORTH= must NOT be set in src.conf&lt;/li&gt;
&lt;li&gt;msdos support must be available in the kernel&lt;/li&gt;
&lt;li&gt;geom_md support must be available in the kernel&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;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&lt;/p&gt;</description>
    </item>
    <item>
      <title>VCHIQ drivers work again</title>
      <link>https://kernelnomicon.org/posts/vchiq-drivers-work-again/</link>
      <pubDate>Sun, 13 Jan 2013 19:19:10 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/vchiq-drivers-work-again/</guid>
      <description>&lt;p&gt;I synced both &lt;a href=&#34;https://github.com/gonzoua/vchiq-freebsd&#34;&gt;vchiq-freebsd&lt;/a&gt; and &lt;a href=&#34;https://github.com/gonzoua/userland&#34;&gt;userland&lt;/a&gt; to latest and greatest.&lt;/p&gt;
&lt;p&gt;As I mentioned earlier - OS compatibility shim was removed from upstream sources so I had to create Linux KPI implementation layer which turned out not that awful task because I managed to reuse a lot of code from Max Khon&amp;rsquo;s &lt;a href=&#34;http://freebsdfoundation.blogspot.com/2010/10/update-on-dahdi-project.html&#34;&gt;DAHDI port&lt;/a&gt;. I had to implement (in somewhat hackish fashion) kthread API, re-implement semaphores support using condvar and mutex in order to get _interruptible part of API working properly and create dumb implementation of rather small subset of Linux list.h API.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Packages(*) for Rasberry Pi(**)</title>
      <link>https://kernelnomicon.org/posts/packages-for-rasberry-pi/</link>
      <pubDate>Fri, 11 Jan 2013 20:05:44 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/packages-for-rasberry-pi/</guid>
      <description>&lt;p&gt;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&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pkg create -a
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;command. Then I uploaded all newly generated files to the server, grabbed packages &lt;a href=&#34;http://lists.freebsd.org/pipermail/freebsd-arm/2012-December/004493.html&#34;&gt;built and shared&lt;/a&gt; by Stephen Hurd, removed duplicates with older versions and generated repo.txz by issuing&lt;/p&gt;</description>
    </item>
    <item>
      <title>VCHI driver, part 2</title>
      <link>https://kernelnomicon.org/posts/vchi-driver-part-2/</link>
      <pubDate>Tue, 08 Jan 2013 15:33:02 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/vchi-driver-part-2/</guid>
      <description>&lt;p&gt;Some time ago I &lt;a href=&#34;http://kernelnomicon.org/?p=185&#34;&gt;announced&lt;/a&gt; port of VCHI driver to FreeBSD. Since then it was re-licensed as BSD/GPL and I had high hopes for bringing it into the tree as a part of sys/contrib. This weekend I finally got around to it but  turned out things had changed for worse. VCHI driver used to have this neat OS-abstraction wrapper, so overall porting process was quite simple: implement synch primitives, physical pages management, driver-specific initialization and you&amp;rsquo;re done. But&amp;hellip; The layer was lost with driver update in October. The reason for it - &lt;a href=&#34;https://github.com/raspberrypi/firmware/issues/130&#34;&gt;OS compatibility shims are banned from Linux mainline kernel&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>FreeBSD/armv6: what&#39;s new and exciting?</title>
      <link>https://kernelnomicon.org/posts/freebsdarmv6-whats-new-and-exciting/</link>
      <pubDate>Sun, 30 Dec 2012 17:51:03 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/freebsdarmv6-whats-new-and-exciting/</guid>
      <description>&lt;p&gt;It&amp;rsquo;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.&lt;/p&gt;
&lt;p&gt;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&amp;rsquo;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.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Broadcom switches vchiq to dual license</title>
      <link>https://kernelnomicon.org/posts/broadcom-switched-vchiq-to-dual-license/</link>
      <pubDate>Mon, 17 Dec 2012 21:25:34 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/broadcom-switched-vchiq-to-dual-license/</guid>
      <description>&lt;p&gt;vchiq, kernel driver for interfacing ARM with VideoCore is now dual-licensed (BSD/GPL).&lt;/p&gt;
&lt;p&gt;References:
&lt;a href=&#34;https://github.com/raspberrypi/firmware/issues/40&#34;&gt;https://github.com/raspberrypi/firmware/issues/40&lt;/a&gt;
&lt;a href=&#34;https://github.com/raspberrypi/linux/commit/d21d26ebd773ab87888351220739b43a9733233a&#34;&gt;https://github.com/raspberrypi/linux/commit/d21d26ebd773ab87888351220739b43a9733233a&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>FreeBSD/armv6 in QEMU</title>
      <link>https://kernelnomicon.org/posts/freebsdarmv6-in-qemu/</link>
      <pubDate>Wed, 05 Dec 2012 22:48:55 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/freebsdarmv6-in-qemu/</guid>
      <description>&lt;p&gt;&lt;strong&gt;[QEMU 1.5 users see &lt;a href=&#34;http://kernelnomicon.org/?p=395&#34;&gt;this update&lt;/a&gt;]&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;First take at getting FreeBSD/armv6 running in simulators. Simulators are great for tracking down nasty bugs and building packages.&lt;/p&gt;
&lt;p&gt;So here is support for Versatile Platform Board machine supported by QEMU. Most likely this code will not run on real VersatilePB because I do not have this hardware and timing code (or lack of it) on CLCD driver and Keyboard/Mouse interface (PL050) is pure guesswork.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cross-compilation hiccups</title>
      <link>https://kernelnomicon.org/posts/cross-compilation-hickups/</link>
      <pubDate>Sat, 01 Dec 2012 14:01:36 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/cross-compilation-hickups/</guid>
      <description>&lt;p&gt;Good news and bad news. Let&amp;rsquo;s start with good ones.&lt;/p&gt;
&lt;p&gt;Daisuke Aoyama tracked down what causes &amp;ldquo;Unrecognized filesystem type&amp;rdquo; error with some SD cards. It is U-Boot using High Speed mode. Root cause is still unknown but as a workaround I just disabled HS mode for SD card in u-boot and updated freebsd-uboot-20121129.tar.gz. Or alternatively you can get &lt;a href=&#34;http://people.freebsd.org/~gonzo/arm/rpi/uboot-nohs.img&#34;&gt;uboot-nohs.img&lt;/a&gt; and use it to replace uboot.img on your SD card.&lt;/p&gt;
&lt;p&gt;Bad news are: installworld for cross-compiled FreeBSD is broken unless you&amp;rsquo;re doing it on the latest HEAD. The reason is utility called mtree(8). It is used to ensure that target filesystem permissions and owners/groups are correct. Owners and groups are described as usernames and group names, not as numeric UIDs/GUIDs and mtree uses getpwXXX family of routines to convert names to numeric values. See the problem already? If new system user is added to latest HEAD and you use old trusty FreeBSD 9.0, there is no way mtree would know about this user. NetBSD solved this problem by introducing -N command-line option that lets you point mtree to the &lt;strong&gt;target&lt;/strong&gt; system&amp;rsquo;s master.passwd and groups. So we need to port this feature to FreeBSD in order to get proper cross-compilation environment. And that&amp;rsquo;s my plan for next few days.&lt;/p&gt;</description>
    </item>
    <item>
      <title>FreeBSD on Pi: more stuff</title>
      <link>https://kernelnomicon.org/posts/freebsd-on-pi-more-stuff/</link>
      <pubDate>Thu, 29 Nov 2012 21:21:19 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/freebsd-on-pi-more-stuff/</guid>
      <description>&lt;p&gt;Long overdue update on how the things are going with FreeBSD on Raspberry Pi. We&amp;rsquo;ve made some good progress so far:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hans Petter Selasky fixed low-speed interrupt endpoints problem which means we have working USB keyboard now&lt;/li&gt;
&lt;li&gt;GPIO driver by Luiz Otavio O Souza. So now you can blink OK LED (gpioctl -f /dev/gpioc0 -t 16). Not the most productive activity though.&lt;/li&gt;
&lt;li&gt;Kernel now obtains information about display resolution, memory layout, MAC address from firmware&lt;/li&gt;
&lt;li&gt;Framebuffer/syscons support added&lt;/li&gt;
&lt;li&gt;Some stability fixes for SDHCI/li&amp;gt;
Initial port of VCHIQ interface (&lt;a href=&#34;https://github.com/gonzoua/vchiq-freebsd&#34;&gt;vchiq-freebsd&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Port of userland libraries (&lt;a href=&#34;https://github.com/gonzoua/userland&#34;&gt;userland&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Overall stability and performance is still a problem, but it&amp;rsquo;s what we&amp;rsquo;re going to work on next.&lt;/p&gt;</description>
    </item>
    <item>
      <title>U-Boot env variables iterator</title>
      <link>https://kernelnomicon.org/posts/u-boot-env-variables-iterator/</link>
      <pubDate>Mon, 26 Nov 2012 15:26:49 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/u-boot-env-variables-iterator/</guid>
      <description>&lt;p&gt;Ran into it recently and decided to post here just in case someone will have this problem too. Do not define both CONFIG_LOADADDR and loadaddr in CONFIG_EXTRA_ENV_SETTINGS. Otherwise environment variables enumeration API(API_ENV_ENUM) will loop forever.&lt;/p&gt;</description>
    </item>
    <item>
      <title>FreeBSD/Pi update</title>
      <link>https://kernelnomicon.org/posts/freebsdpi-update/</link>
      <pubDate>Mon, 29 Oct 2012 19:34:32 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/freebsdpi-update/</guid>
      <description>&lt;p&gt;So, here is status update on the progress:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;freebsd-pi github repo has been merged to HEAD and should be considered only as a reference from now on.&lt;/li&gt;
&lt;li&gt;I repackaged &lt;a href=&#34;http://people.freebsd.org/~gonzo/arm/rpi/freebsd-pi-uboot-20120806-sd.tar.gz&#34;&gt;freebsd-pi-uboot-20120806-sd.tar.gz&lt;/a&gt; so tar should not complain about uid/guid stuff&lt;/li&gt;
&lt;li&gt;Hans Peter Selasky and Alexander Rybalko added host mode support for DWC OTG driver&lt;/li&gt;
&lt;li&gt;Problem with tty on serial port has been fixed. Use 3wire.115200 type for ttyu0 in /etc/ttys&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Still a lot of stuff to do though.
P.S.
I&amp;rsquo;ll post updated build script later.&lt;/p&gt;</description>
    </item>
    <item>
      <title>projects/armv6 branch is no more</title>
      <link>https://kernelnomicon.org/posts/projectsarmv6-branch-is-no-more/</link>
      <pubDate>Fri, 17 Aug 2012 19:18:43 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/projectsarmv6-branch-is-no-more/</guid>
      <description>&lt;p&gt;ARMv6/AMRv7 support is &lt;a href=&#34;http://lists.freebsd.org/pipermail/freebsd-hackers/2012-August/040263.html&#34;&gt;now in main FreeBSD codebase&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;New goodies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;General ARMv6/ARMv7 kernel bits (pmap, cache,
assembler routines, etc&amp;hellip;)&lt;/li&gt;
&lt;li&gt;ARM SMP support&lt;/li&gt;
&lt;li&gt;VFP/Neon support&lt;/li&gt;
&lt;li&gt;ARM Generic Interrupt Controller driver&lt;/li&gt;
&lt;li&gt;Improved thread-local storage for cpus &amp;gt;=ARMv6&lt;/li&gt;
&lt;li&gt;Two new values for TARGET_ARCH: armv6 and armv6eb&lt;/li&gt;
&lt;li&gt;Driver for SMSC LAN95XX and LAN8710A ethernet controllers&lt;/li&gt;
&lt;li&gt;Marvell MV78x60 support (multiuser, ARMADA XP kernel config)&lt;/li&gt;
&lt;li&gt;TI OMAP4 and AM335x support (multiuser, no GPU or graphics
support, kernel configs for Pandaboard and Beaglebone)&lt;/li&gt;
&lt;li&gt;LPC32x0 support (multiuser, frame buffer works with SSD1289
LCD controller.Embedded Artists EA3250 kernel config)&lt;/li&gt;
&lt;li&gt;Barebone Nvidia Tegra2 support (timers, interrupts and UART.
No kernel config)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;rsquo;m going to re-create Raspberry Pi port off HEAD and start merging least intrusive bits back to the tree.&lt;/p&gt;</description>
    </item>
    <item>
      <title>FreeBSD/Pi setup HowTo</title>
      <link>https://kernelnomicon.org/posts/freebsdpi-setup-howto/</link>
      <pubDate>Sun, 05 Aug 2012 19:54:16 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/freebsdpi-setup-howto/</guid>
      <description>&lt;h3 id=&#34;this-instruction-is-no-longer-correct-new-version-is-here&#34;&gt;This instruction is no longer correct. New version is &lt;a href=&#34;http://kernelnomicon.org/?p=275&#34;&gt;here&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Took some time but it seems we&amp;rsquo;re there too :)&lt;/p&gt;
&lt;p&gt;Alexander Rybalko, who works on USB drivers for the platform got remote telnet shell to the device: &lt;a href=&#34;http://pastebin.com/6NqQLWD2&#34;&gt;http://pastebin.com/6NqQLWD2&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Having fixed serial console for userland applications (two lines change) and after some tweaking of SDHCI driver I got access to multiuser shell too: &lt;a href=&#34;http://people.freebsd.org/~gonzo/arm/rpi/multiuser.txt&#34;&gt;multiuser.txt&lt;/a&gt;
Still not usable for putting together distros but stable enough for those who are willing to get their hands dirty with kernel side.&lt;/p&gt;</description>
    </item>
    <item>
      <title>BSD Pi</title>
      <link>https://kernelnomicon.org/posts/bsd-pi/</link>
      <pubDate>Fri, 13 Jul 2012 21:34:06 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/bsd-pi/</guid>
      <description>&lt;p&gt;NetBSD &lt;a href=&#34;http://mail-index.netbsd.org/port-arm/2012/07/13/msg001367.html&#34;&gt;reached multiuser&lt;/a&gt; on Raspberry Pi! Congratulation to Nick Hudson and all involved.&lt;/p&gt;
&lt;p&gt;FreeBSD is not there yet, but we&amp;rsquo;re not slacking either:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://imgur.com/8pgOk&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://i.imgur.com/8pgOks.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;.&lt;/p&gt;
&lt;p&gt;Well, may be just a little. It&amp;rsquo;s not even single user yet. SDHC support is work in progress. No USB yet, hence no keyboard and no network. Just console output to framebuffer or serial port.&lt;/p&gt;</description>
    </item>
    <item>
      <title>New U-Boot build</title>
      <link>https://kernelnomicon.org/posts/new-u-boot-build/</link>
      <pubDate>Sat, 07 Jul 2012 13:20:39 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/new-u-boot-build/</guid>
      <description>&lt;p&gt;New build for Raspberry Pi. ChangeLog:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;New firmware&lt;/li&gt;
&lt;li&gt;Improved SD card performance&lt;/li&gt;
&lt;li&gt;Added USB mass storage devices support&lt;/li&gt;
&lt;li&gt;Added ext2 filesystem support (painfully slow with SD card, tolerable with USB memory stick)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tarball: &lt;a href=&#34;http://people.freebsd.org/~gonzo/arm/rpi/raspberry-pi-uboot-20120707.tar.gz&#34;&gt;raspberry-pi-uboot-20120707.tar.gz&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;SD card image (32Mb): &lt;a href=&#34;http://people.freebsd.org/~gonzo/arm/rpi/raspberry-pi-uboot-20120707.img&#34;&gt;raspberry-pi-uboot-20120707.img&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>U-Boot for Raspberry Pi, the last step</title>
      <link>https://kernelnomicon.org/posts/u-boot-for-raspberry-pi-the-last-step/</link>
      <pubDate>Fri, 22 Jun 2012 00:28:35 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/u-boot-for-raspberry-pi-the-last-step/</guid>
      <description>&lt;p&gt;Yes, the last step. It doesn&amp;rsquo;t mean that I&amp;rsquo;m abandoning this project. Not at all. It just that it has reached the state I wanted it to reach from the very beginning: fairly stable, flexible  u-boot distribution suitable to be used as an environment for OS bring-up. So now it&amp;rsquo;s time to get back to the original idea: get FreeBSD running on Raspberry Pi.&lt;/p&gt;
&lt;p&gt;So, current state of affairs is &lt;a href=&#34;http://people.freebsd.org/~gonzo/arm/rpi/raspberry-pi-uboot-20120621.tar.gz&#34;&gt;raspberry-pi-uboot-20120621.tar.gz&lt;/a&gt;. It includes:&lt;/p&gt;</description>
    </item>
    <item>
      <title>U-Boot for Raspberry Pi, step 8: SDHC support</title>
      <link>https://kernelnomicon.org/posts/u-boot-for-raspberry-pi-step-8-sdhc-support/</link>
      <pubDate>Wed, 20 Jun 2012 12:59:32 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/u-boot-for-raspberry-pi-step-8-sdhc-support/</guid>
      <description>&lt;p&gt;Initial support for SD card has just been pushed to github repo.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;U&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;Boot &lt;span style=&#34;color:#ae81ff&#34;&gt;2012.04&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;01&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;00479&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;gb58d9ae&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;dirty (Jun &lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2012&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;11&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;47&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;13&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DRAM:  &lt;span style=&#34;color:#ae81ff&#34;&gt;128&lt;/span&gt; MiB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;WARNING: Caches &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; enabled
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MMC:   CAPS: &lt;span style=&#34;color:#ae81ff&#34;&gt;00000000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bcm2835_sdh: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Using default environment
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;In:    serial
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Out:   serial
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Err:   serial
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Net:   Net Initialization Skipped
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;No ethernet found&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;U&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;Boot&lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; mmcinfo
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Device: bcm2835_sdh
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Manufacturer ID: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;b
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;OEM: &lt;span style=&#34;color:#ae81ff&#34;&gt;534&lt;/span&gt;d
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Name: &lt;span style=&#34;color:#ae81ff&#34;&gt;00000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Tran Speed: &lt;span style=&#34;color:#ae81ff&#34;&gt;25000000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Rd Block Len: &lt;span style=&#34;color:#ae81ff&#34;&gt;512&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SD version &lt;span style=&#34;color:#ae81ff&#34;&gt;2.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;High Capacity: No
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Capacity: &lt;span style=&#34;color:#ae81ff&#34;&gt;1.9&lt;/span&gt; GiB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Bus Width: &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;bit
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;U&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;Boot&lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; fatls mmc &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ae81ff&#34;&gt;16528&lt;/span&gt;   bootcode&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bin
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ae81ff&#34;&gt;127&lt;/span&gt;   cmdline&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;txt
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#ae81ff&#34;&gt;314691&lt;/span&gt;   loader&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bin
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#ae81ff&#34;&gt;2047848&lt;/span&gt;   start&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;elf
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#ae81ff&#34;&gt;181196&lt;/span&gt;   kernel&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;img
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt; file(s), &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; dir(s)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;U&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;Boot&lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>U-Boot for Raspberry Pi, step 7: cleanup</title>
      <link>https://kernelnomicon.org/posts/u-boot-for-raspberry-pi-step-7-cleanup/</link>
      <pubDate>Sun, 17 Jun 2012 19:32:26 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/u-boot-for-raspberry-pi-step-7-cleanup/</guid>
      <description>&lt;p&gt;More progress on the subject:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I cleaned up sources and pushed new version to github.&lt;/li&gt;
&lt;li&gt;Stephen Warren submitted patches for R-Pi support to U-Boot mailing list &lt;a href=&#34;http://lists.denx.de/pipermail/u-boot/2012-June/125834.html&#34;&gt;here&lt;/a&gt; and &lt;a href=&#34;http://lists.denx.de/pipermail/u-boot/2012-June/125835.html&#34;&gt;here&lt;/a&gt;. His version is much cleaner so I spent some time combining his patches with ported USB driver. So now target is called rpi_b and you should use &amp;ldquo;make rpi_b_config&amp;rdquo; instead of &amp;ldquo;make raspberry_pi_config&amp;rdquo; step when building U-Boot from sources.&lt;/li&gt;
&lt;li&gt;Pre-built binaries are available for download &lt;a href=&#34;http://people.freebsd.org/~gonzo/arm/rpi/rpi-uboot.tar.gz&#34;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>U-Boot for Raspberry Pi, step 6: It lives!</title>
      <link>https://kernelnomicon.org/posts/u-boot-for-raspberry-pi-step-6-it-lives/</link>
      <pubDate>Fri, 15 Jun 2012 20:15:27 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/u-boot-for-raspberry-pi-step-6-it-lives/</guid>
      <description>&lt;p&gt;And finally it works!&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;U-Boot 2012.04.01-00306-gecc6e3d-dirty (Jun 15 2012 - 19:05:09)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DRAM:  128 MiB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;WARNING: Caches not enabled
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Using default environment
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;In:    serial
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Out:   serial
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Err:   serial
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Net:   No ethernet found.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Raspberry-Pi # usb start
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(Re)start USB...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;USB:   Core Release: 2.80a
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;scanning bus for devices... 3 USB Device(s) found
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       scanning bus for ethernet devices... 1 Ethernet Device(s) found
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Raspberry-Pi # dhcp
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Waiting for Ethernet connection... done.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;BOOTP broadcast 1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;*** Unhandled DHCP Option in OFFER/ACK: 28
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;*** Unhandled DHCP Option in OFFER/ACK: 28
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DHCP client bound to address 192.168.10.21
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Using sms0 device
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TFTP from server 192.168.10.1; our IP address is 192.168.10.21
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Filename &amp;#39;kernel.RPI&amp;#39;.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Load address: 0x700000
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Loading: #################################################################
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         #################################################################
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         #################################################################
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         #################################################################
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         ######################################################
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;done
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Bytes transferred = 4597674 (4627aa hex)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Raspberry-Pi # ping 192.168.10.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Waiting for Ethernet connection... done.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Using sms0 device
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;host 192.168.10.1 is alive
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Raspberry-Pi #
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>U-Boot on Raspberry Pi, step 5: More USB stuff</title>
      <link>https://kernelnomicon.org/posts/u-boot-on-raspberry-pi-step-5-more-usb-stuff/</link>
      <pubDate>Fri, 15 Jun 2012 00:54:09 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/u-boot-on-raspberry-pi-step-5-more-usb-stuff/</guid>
      <description>&lt;p&gt;OK. No visual progress, but short SitRep: I got control transfers working more stable and got bulk transfer somewhat working: U-Boot sends one packet and receives response, then all bulk transfers end up in STALL state. Investigating.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;BOOTP broadcast 1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;** smsc95xx_send(), len 342, buf 0x7e8db5e
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;BULK -&amp;gt; &amp;lt;3,2&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dev = 3 pipe = 2 buf = 07e8db5e size = 350 dir_out = 1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;max_hc_xfer_size = 65535, max_hc_pkt_count = 511
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;xfer_len = 350, num_packets = 6, max = 64, buffer = 07e8db5e(07e8f490)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Tx: len = 350, actual = 350, err = 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;** smsc95xx_recv()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;BULK -&amp;gt; &amp;lt;3,1&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dev = 3 pipe = 1 buf = 07fec698 size = 2048 dir_out = 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;max_hc_xfer_size = 65535, max_hc_pkt_count = 511
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;xfer_len = 2048, num_packets = 32, max = 64, buffer = 07fec698(07e8f490)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Rx: len = 2048, actual = 368, err = 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;packet received
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;packet received
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Receive from protocol 0x800
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Got IP
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;len=346, v=45
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DHCPHandler: got packet: (src=67, dst=68, len=318) state: 3
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Filtering pkt = 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DHCPHandler: got DHCP packet: (src=67, dst=68, len=318) state: 3
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DHCP: state=SELECTING bp_file: &amp;#34;kernel.RPI&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TRANSITIONING TO REQUESTING STATE
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;*** Unhandled DHCP Option in OFFER/ACK: 130
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;*** Unhandled DHCP Option in OFFER/ACK: 28
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DhcpSendRequestPkt: Sending DHCPREQUEST
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Transmitting DHCPREQUEST packet: len = 342
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;** smsc95xx_send(), len 342, buf 0x7e8dace
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;BULK -&amp;gt; &amp;lt;3,2&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dev = 3 pipe = 2 buf = 07e8dace size = 350 dir_out = 1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;max_hc_xfer_size = 65535, max_hc_pkt_count = 511
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;xfer_len = 350, num_packets = 6, max = 64, buffer = 07e8dace(07e8f490)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Channel halted
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Tx: len = 350, actual = 0, err = 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;BOOTP broadcast 2
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;** smsc95xx_send(), len 342, buf 0x7e8db5e
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;BULK -&amp;gt; &amp;lt;3,2&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dev = 3 pipe = 2 buf = 07e8dace size = 350 dir_out = 1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;max_hc_xfer_size = 65535, max_hc_pkt_count = 511
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;xfer_len = 350, num_packets = 6, max = 64, buffer = 07e8dace(07e8f490)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Channel halted
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Tx: len = 350, actual = 0, err = 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;BOOTP broadcast 2
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;** smsc95xx_send(), len 342, buf 0x7e8db5e
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;BULK -&amp;gt; &amp;lt;3,2&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dev = 3 pipe = 2 buf = 07e8db5e size = 350 dir_out = 1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;max_hc_xfer_size = 65535, max_hc_pkt_count = 511
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;xfer_len = 350, num_packets = 6, max = 64, buffer = 07e8db5e(07e8f490)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Channel halted
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Tx: len = 350, actual = 0, err = 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;** smsc95xx_recv()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;BULK -&amp;gt; &amp;lt;3,1&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dev = 3 pipe = 1 buf = 07fec698 size = 2048 dir_out = 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;max_hc_xfer_size = 65535, max_hc_pkt_count = 511
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;xfer_len = 2048, num_packets = 32, max = 64, buffer = 07fec698(07e8f490)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HANG at line 533: 00000423
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>U-Boot on Raspberry Pi, step 4: DWC OTG, Control transactions</title>
      <link>https://kernelnomicon.org/posts/u-boot-on-raspberry-pi-step-4-dwc-otg-control-transactions/</link>
      <pubDate>Tue, 12 Jun 2012 00:20:11 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/u-boot-on-raspberry-pi-step-4-dwc-otg-control-transactions/</guid>
      <description>&lt;p&gt;After rather busy weekend I finally got control transaction support for DWC OTG controller working on Raspberry Pi. U-Boot DWC OTG driver is cut-down version of Linux driver that works in polling mode. Stability is not very good at the moment though. And make sure to use latest firmware files. It does matter.&lt;/p&gt;
&lt;p&gt;Next step - bulk transactions.&lt;/p&gt;
&lt;p&gt;Repo: &lt;a href=&#34;https://github.com/gonzoua/u-boot-pi&#34;&gt;https://github.com/gonzoua/u-boot-pi&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Raspberry-Pi # usb info
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;1: Hub,  USB Revision 1.10
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - DWC OTG RootHub
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - Class: Hub
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - PacketSize: 8  Configurations: 1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - Vendor: 0x0000  Product 0x0000 Version 0.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   Configuration: 1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   - Interfaces: 1 Self Powered 0mA
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     Interface: 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     - Alternate Setting 0, Endpoints: 1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     - Class Hub
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     - Endpoint 1 In Interrupt MaxPacket 8 Interval 255ms
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2: Hub,  USB Revision 2.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - Class: Hub
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - PacketSize: 64  Configurations: 1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - Vendor: 0x0424  Product 0x9512 Version 2.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   Configuration: 1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   - Interfaces: 1 Self Powered Remote Wakeup 2mA
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     Interface: 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     - Alternate Setting 0, Endpoints: 1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     - Class Hub
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     - Endpoint 1 In Interrupt MaxPacket 1 Interval 255ms
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;3: Vendor specific,  USB Revision 2.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - Class: Vendor specific
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - PacketSize: 64  Configurations: 1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - Vendor: 0x0424  Product 0xec00 Version 2.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   Configuration: 1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   - Interfaces: 1 Self Powered Remote Wakeup 2mA
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     Interface: 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     - Alternate Setting 0, Endpoints: 3
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     - Class Vendor specific
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     - Endpoint 1 In Bulk MaxPacket 64
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     - Endpoint 2 Out Bulk MaxPacket 64
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     - Endpoint 3 In Interrupt MaxPacket 16 Interval 1ms
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>R-Pi Boot process</title>
      <link>https://kernelnomicon.org/posts/r-pi-boot-process/</link>
      <pubDate>Mon, 04 Jun 2012 20:12:12 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/r-pi-boot-process/</guid>
      <description>&lt;p&gt;Just a note to myself to keep useful info.
Bakul Shah in freebsd-arm quotes R-Pi forum, but I failed to find original.&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Stage 1 boot is in the on-chip ROM. Loads stage2 in the L2 cache!&lt;/li&gt;
&lt;li&gt;Stage 2 is bootcode.bin. Enables SDRAM and loads stage3&lt;/li&gt;
&lt;li&gt;Stage 3 is loader.bin.  Knows about elf format and load start.elf&lt;/li&gt;
&lt;li&gt;start.elf loads kernel.img (+ it is the main gpu code).
It reads config.txt, cmdline.txt and bcm2835.dtb
If the dtb file exists, it is loaded at 0x100 &amp;amp; kernel @ 0x8000
Else if disable_commandline_tags is set load kernel @ 0x0
Else if load kernel @ 0x8000 and put ATAGS at 0x100
See Issue 16 in &lt;a href=&#34;https://github.com/raspberrypi/linux/issues&#34;&gt;https://github.com/raspberrypi/linux/issues&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;kernel.img, is the &lt;em&gt;first&lt;/em&gt; thing that runs on the ARM
processor.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;And more information on config.txt &lt;a href=&#34;http://elinux.org/RPi_config.txt&#34;&gt;here&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>U-Boot for Raspberry Pi, step 3</title>
      <link>https://kernelnomicon.org/posts/u-boot-for-raspberry-pi-step-3/</link>
      <pubDate>Sun, 03 Jun 2012 14:06:30 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/u-boot-for-raspberry-pi-step-3/</guid>
      <description>&lt;p&gt;Finally I received my female/male cables for inter-board connects (my soldering skill is close to zero) and got FTDI-based TTL/USB converter work. I had more luck with it then with my old trusty TTL/RS232 converter. No garbage in linux output, serial input works for u-boot.&lt;/p&gt;
&lt;p&gt;You can find content of boot partition of SD-card I use &lt;a href=&#34;http://people.freebsd.org/~gonzo/r-pi/u-boot-pi.tar.gz&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Fully functional serial port means that boot-over-serial should work and I do not need to move SD-card between R-Pi and card reader to get new version of u-boot running. So based on &lt;a href=&#34;http://blog.mezeske.com/?p=483&#34;&gt;this post&lt;/a&gt; I managed to automate compile/run/fix cycle to some extent. Not C-Kermit expert here, so the script is lame but it does its work:&lt;/p&gt;</description>
    </item>
    <item>
      <title>U-Boot for Raspberry Pi, step 2</title>
      <link>https://kernelnomicon.org/posts/u-boot-for-raspberry-pi-step-2/</link>
      <pubDate>Sat, 26 May 2012 00:36:52 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/u-boot-for-raspberry-pi-step-2/</guid>
      <description>&lt;p&gt;I had some issues with console output from U-Boot on my R-Pi but Alexander Rybalko submitted patch that seems to fix them. One more issue that needed to be resolved: mysterious hangs in relocate_code. Some digging revealed that system hangs once PC reaches address 0x100. Some more digging yielded that at this address is used by GPU part of loader to store arguments for kernel.&lt;/p&gt;
&lt;p&gt;So after tweaking .text offset for u-boot and generating proper image using &lt;a href=&#34;https://github.com/raspberrypi/tools/tree/master/mkimage&#34;&gt;this tool&lt;/a&gt; I finally got:&lt;/p&gt;</description>
    </item>
    <item>
      <title>FreeBSD on Raspberry Pi: baby steps</title>
      <link>https://kernelnomicon.org/posts/freebsd-on-raspberry-pi-baby-steps/</link>
      <pubDate>Mon, 21 May 2012 20:47:43 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/freebsd-on-raspberry-pi-baby-steps/</guid>
      <description>&lt;p&gt;Thanks to Robert Watson I got my hands on brand new raspberry pi device (model B) and now trying to get FreeBSD running on it. That turned out to be non-trivial task. For one - there is no way to netboot the board. At least I failed to find it. It seems that initial Linux bring-up was done on evaluation modules with proper bootloader, JTAG support and whatnot and for public use limited boot loader was released. So instead porting FreeBSD on it I face the task of porting U-Boot. Which is not something entirely impossible.&lt;/p&gt;</description>
    </item>
    <item>
      <title>FreeBSD on ARM devices</title>
      <link>https://kernelnomicon.org/posts/freebsd-on-arm-devices/</link>
      <pubDate>Thu, 19 Apr 2012 18:20:25 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/freebsd-on-arm-devices/</guid>
      <description>&lt;p&gt;Damjan Marion published &lt;a href=&#34;http://people.freebsd.org/~dmarion/beaglebone/creating_bootable_sd_card/&#34;&gt;nice how-to&lt;/a&gt; for getting FreeBSD running on BeagleBone. Using it I managed to get my PandaBoard ES running off SD card. The only modifications to this instructions are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use PANDABOARD kernel config. Stock version is configured to use NFS so it should be modified to use SD card as root.&lt;/li&gt;
&lt;li&gt;MLO and u-boot.bin binaries are different. I used &lt;a href=&#34;http://people.freebsd.org/~gonzo/pandaboard/&#34;&gt;these&lt;/a&gt;. You&amp;rsquo;ll need boot.scr too.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Performance is still affected by using write-through caches by default, but this issue should be fixed soon.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Flyswatter JTAG and AVR32</title>
      <link>https://kernelnomicon.org/posts/flyswatter-jtag-and-avr32/</link>
      <pubDate>Mon, 09 Aug 2010 04:21:00 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/flyswatter-jtag-and-avr32/</guid>
      <description>&lt;p&gt;Today I soldered AVR32 adapter for Flyswatter JTAG. Actually it&amp;rsquo;s very simple task - just connect respective pins and make common ground wire. No capacitors, resistors or MOSFETs. Idea was to make it nice and neat but having bought wrong breadboard and soldered first headers in a wrong place I just let it flow and here it is:&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://lh6.ggpht.com/_bTtZWrFtKsc/TF9749h_xnI/AAAAAAAAFYI/NgKmDdyq0_8/IMGP9940.JPG&#34;&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://lh3.ggpht.com/_bTtZWrFtKsc/TF975cHy0SI/AAAAAAAAFYM/Uy6SNPtWw8Q/IMGP9941.JPG&#34;&gt;&lt;/p&gt;
&lt;p&gt;From aesthetics point of view suck, but it also works and it&amp;rsquo;s everything I need:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Minor OpenOCD fixes</title>
      <link>https://kernelnomicon.org/posts/minor-openocd-fixes/</link>
      <pubDate>Tue, 06 Jul 2010 03:00:00 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/minor-openocd-fixes/</guid>
      <description>&lt;p&gt;Back from the land of GUI software. I have bought one more Flyswatter JTAG recently and now have two boards connected to my home box. Unfortunately both Flyswatters got the same USB serial number so stock openocd opens only the first device it stumbles upon. Here is &lt;a href=&#34;http://people.freebsd.org/~gonzo/openocd/ftdi_index.diff&#34;&gt;small patch&lt;/a&gt; that adds ft2232_index command to OpenOCD FTDI driver that allows to point at specific device to open. Works only with libftdi.  In the same directory you can find my configs for AR71XX-based RouterStation Pro and Portwell&amp;rsquo;s CAM-0010 device based on Octeon CN3010&lt;/p&gt;</description>
    </item>
    <item>
      <title>Writing FreeBSD NIC driver</title>
      <link>https://kernelnomicon.org/posts/writing-freebsd-nic-driver/</link>
      <pubDate>Fri, 19 Feb 2010 06:22:00 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/writing-freebsd-nic-driver/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been through writing NIC driver 2.5 times. 0.5 was porting ADM5120 switch driver by Ruslan Ermilov and Vsevolod Lobko from NetBSD. The usual routine for this kind of thing is &amp;ldquo;take existing driver and rewrite it&amp;rdquo;, e.g. copy selected parts or remove unnecessary ones. So I decided that it would be nice to skip &amp;ldquo;remove&amp;rdquo; part of procedure next time.&lt;/p&gt;
&lt;p&gt;All cards I had to deal with (&amp;ldquo;both&amp;rdquo; wouldn&amp;rsquo;t be that impressive here) had similar design save for registers layout and some quirks. I believe that vast majority of NICs have the same design to some extent: there are circular RX/TX rings of more or less similar structure, interrupt status/mask register, media settings registers, you name it. Not a rocket science.&lt;/p&gt;</description>
    </item>
    <item>
      <title>FreeBSD/MIPS &amp; clang/LLVM</title>
      <link>https://kernelnomicon.org/posts/freebsdmips-clangllvm/</link>
      <pubDate>Mon, 18 Jan 2010 21:49:00 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/freebsdmips-clangllvm/</guid>
      <description>&lt;p&gt;Now I know a little bit more about clang. I can&amp;rsquo;t say it&amp;rsquo;s quite useful for MIPS yet, but it&amp;rsquo;s nice to see some progress in this field.  My findings might be inaccurate and any corrections are welcome.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No proper cross-compilation so far. Clang team plans to do it &amp;ldquo;right way&amp;rdquo; but so far it&amp;rsquo;s just an item on their ToDo list: &lt;a href=&#34;http://clang.llvm.org/UniversalDriver.html&#34;&gt;Universal driver&lt;/a&gt;. There are command-line options like -ccc-host-triple  to get target assembler code, but names for assembler/linker are hardcoded to as/ld, which puts some restriction on building target toolchain&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;UPD: -ccc-host-triple does the trick OK&lt;/p&gt;</description>
    </item>
    <item>
      <title>projects/mips RIP</title>
      <link>https://kernelnomicon.org/posts/projectsmips-rip/</link>
      <pubDate>Mon, 11 Jan 2010 19:45:00 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/projectsmips-rip/</guid>
      <description>&lt;p&gt;All changes from projects/mips has been merged to HEAD. Kudos go to imp@ for sieving through mergeinfo mess projects/mips has been.&lt;/p&gt;</description>
    </item>
    <item>
      <title>FreeBSD/mips and LLVM</title>
      <link>https://kernelnomicon.org/posts/freebsdmips-and-llvm/</link>
      <pubDate>Fri, 08 Jan 2010 23:12:00 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/freebsdmips-and-llvm/</guid>
      <description>&lt;p&gt;Good news: LLVM builds fine on RouterStation Pro with root mounted over NFS.&lt;/p&gt;
&lt;p&gt;Bad news: it segfaults on some tests and when trying to build hello world application.&lt;/p&gt;
&lt;p&gt;Stay tuned&lt;/p&gt;</description>
    </item>
    <item>
      <title>OS X: Flyswatter, JTAG &amp; RS232</title>
      <link>https://kernelnomicon.org/posts/os-x-flyswatter-jtag-rs232/</link>
      <pubDate>Mon, 23 Nov 2009 19:33:00 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/os-x-flyswatter-jtag-rs232/</guid>
      <description>&lt;p&gt;Since I lent my RS232/USB adapter to a friend it was nice opportunity to experiment with Flyswatter on-board RS232 port. OS X does not support FTDI devices out of the box, but it&amp;rsquo;s not a problem for OpenOCD, which uses generic interface to communicate JTAG board. Things get a little bit more complicated when you&amp;rsquo;re trying to get on-board RS232 port working.&lt;/p&gt;
&lt;p&gt;I started with installing stock drivers from &lt;a href=&#34;http://www.ftdichip.com/Drivers/VCP.htm&#34;&gt;FTDI site&lt;/a&gt;. Current version supports Snow Leopard. With these drivers installed system started to detect two COM ports but JTAG part stopped to work as OpenOCD failed to claim USB device.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tasting Cocoa</title>
      <link>https://kernelnomicon.org/posts/tasting-cocoa/</link>
      <pubDate>Mon, 10 Aug 2009 07:31:00 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/tasting-cocoa/</guid>
      <description>&lt;p&gt;The best way to learn new technology is to use it. Here is a small project I&amp;rsquo;ve put together while learning Mac OS X/Cocoa development: &lt;a href=&#34;http://gonzo.kiev.ua/projects/audiobookbinder/&#34;&gt;AudioBookBinder&lt;/a&gt;, may be someone will find it useful. This utility takes collection of mp3 files (or any other audio format recognizable by OS X) and binds it to one audiobook(m4b file) suitable for listening on iPod. The initial idea was to make it a GUI app, but I&amp;rsquo;ve been spoiled with command line power for too long.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Is it self-hosted yet?</title>
      <link>https://kernelnomicon.org/posts/is-it-self-hosted-yet/</link>
      <pubDate>Wed, 08 Jul 2009 17:18:00 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/is-it-self-hosted-yet/</guid>
      <description>&lt;p&gt;Good news everyone! Last two days I&amp;rsquo;ve been testing FreeBSD/mips by running buildworld on netbooted &lt;a href=&#34;http://wiki.freebsd.org/FreeBSD/mips/UBNT-RouterStation&#34;&gt;RouterStation&lt;/a&gt; with root mounted over NFS. So far so good, it successfully completed twice.&lt;/p&gt;
&lt;p&gt;A couple of weeks ago arch-dependent part of libthr (both kernel and userland) was implemented and it seems to work. &amp;ldquo;Seems to work&amp;rdquo; means that it passes thr1 and thr2 tests from stress2 and python&amp;rsquo;s test_thread[ing].py. And yes, python and perl build fine on the same board from the ports do work. As bash et al :) Though perl should be built without Perl malloc but it&amp;rsquo;s on my ToDo list.&lt;/p&gt;</description>
    </item>
    <item>
      <title>ohloh and FreeBSD</title>
      <link>https://kernelnomicon.org/posts/ohloh-and-freebsd/</link>
      <pubDate>Tue, 05 May 2009 20:37:00 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/ohloh-and-freebsd/</guid>
      <description>&lt;p&gt;ohloh seems to be unable to grind FreeBSD&amp;rsquo;s svn repo. I&amp;rsquo;ve been watching for its efforts for several days now and commits progress meter resets from time to time:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.ohloh.net/p/freebsd/enlistments&#34;&gt;https://www.ohloh.net/p/freebsd/enlistments&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>singleuser on routerstation</title>
      <link>https://kernelnomicon.org/posts/singleuser-on-routerstation/</link>
      <pubDate>Fri, 01 May 2009 05:23:00 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/singleuser-on-routerstation/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://people.freebsd.org/~gonzo/mips/routerstation.log&#34;&gt;http://people.freebsd.org/~gonzo/mips/routerstation.log&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Some issues still pending though. Cache management is major one. Things seemed to work fine in emulation but backfired into face with real hardware. I ran into several &amp;ldquo;random&amp;rdquo; bugs that were narrowed down to caches. More to go :( Also ethernet driver performance is low but it&amp;rsquo;s easier then hunting down ethereal cache matters. Or so I think.&lt;/p&gt;
&lt;p&gt;This weekend will be dedicated to making openocd work with routerstation, learning debugging and profiling techniques for MIPS hardware and improving FreeBSD/MIPS pieces of DDB.&lt;/p&gt;</description>
    </item>
    <item>
      <title>More on OpenOCD and MIPS/EJTAG</title>
      <link>https://kernelnomicon.org/posts/more-on-openocd-and-mipsejtag/</link>
      <pubDate>Mon, 27 Apr 2009 22:36:00 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/more-on-openocd-and-mipsejtag/</guid>
      <description>&lt;p&gt;Well, I was overly optimistic. OpenOCD can halt CPU, reset, examine registers and perform software breakpoints. Trying to figure out what&amp;rsquo;s wrong with EJTAG support I skimmed the code and the state of it is, well, poor. Current implementation assumes that target is of the same endianness as host. That&amp;rsquo;s why number of HW breakpoints/watchpoints was detected wrong. But even fixing (endianness and breakpoints) and implementing(watchpoints) in hack&amp;rsquo;n&amp;rsquo;slash mode didn&amp;rsquo;t help. I still can&amp;rsquo;t get bp/wp to work. But I&amp;rsquo;ll definitely try. May be next weekend.&lt;/p&gt;</description>
    </item>
    <item>
      <title>JTAG, OpenOCD &amp; FreeBSD</title>
      <link>https://kernelnomicon.org/posts/jtag-openocd-freebsd/</link>
      <pubDate>Sun, 19 Apr 2009 18:51:00 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/jtag-openocd-freebsd/</guid>
      <description>&lt;p&gt;As it was &lt;a href=&#34;http://bsddev.blogspot.com/2009/02/wip-ubiquitys-router-station.html&#34;&gt;mentioned earlier&lt;/a&gt; now I have new cool toy to play with. Flyswatter JTAG with MIPS14 adapter. Though Tin Can Tools kindly warned me that OpenOCD did not support EJTAG/MIPS I decided to order it and it turned to be a good deal. Why? Because there is EJTAG/MIPS support for OpenOCD as of 0.1.0. Moreover it works really nice with FreeBSD port of libftdi. So all I had to do was to make &lt;a href=&#34;http://people.freebsd.org/~gonzo/ports/openocd.tar&#34;&gt;devel/openocd&lt;/a&gt; port and tweak some configs. And that&amp;rsquo;s it. Stock gdb for MIPS is not ready yet, but one can attach, examine registers, single step using telnet interface to daemon:&lt;/p&gt;</description>
    </item>
    <item>
      <title>svk &amp; vim</title>
      <link>https://kernelnomicon.org/posts/svk-vim/</link>
      <pubDate>Fri, 10 Apr 2009 16:45:00 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/svk-vim/</guid>
      <description>&lt;p&gt;My SCM of choice for FreeBSD-related projects is SVK (it&amp;rsquo;s much faster then subversion and provides offline access to repo history, easy branching/merging and so on). And my editor of choice is vim. And it turns out vim doesn&amp;rsquo;t highlight svk commit files. What a shame. No bright colors for happy hacker who is about to commit clean and robust code (or break buildworld, whatever).  So I spent 20 minutes of tweaking svn.vim and produced &lt;a href=&#34;http://www.vim.org/scripts/script.php?script_id=2604&#34;&gt;this&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>WIP: Ubiquity&#39;s router station</title>
      <link>https://kernelnomicon.org/posts/wip-ubiquitys-router-station/</link>
      <pubDate>Thu, 26 Feb 2009 21:30:00 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/wip-ubiquitys-router-station/</guid>
      <description>&lt;p&gt;So it has been a month since last post about this device and I think it&amp;rsquo;s time to announce current state of affairs.&lt;/p&gt;
&lt;p&gt;At the moment further progress was blocked with something that looks like memory corruption. It&amp;rsquo;s hard to trace with ktr(4) and printf(9) so I ordered &lt;a href=&#34;http://www.tincantools.com/product.php?productid=16134&#34;&gt;Flyswatter JTAG adapter&lt;/a&gt; and &lt;a href=&#34;http://www.tincantools.com/product.php?productid=16145&amp;amp;cat=251&amp;amp;page=1&#34;&gt;MIPS14 adapter&lt;/a&gt; from Tin Can Tools. I was warned that Flyswatter/MIPS combination is not supported by OpenOCD but I&amp;rsquo;d better spend some time making it work then tracing obscure memory corruptions in the wild.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Scheduled for reading</title>
      <link>https://kernelnomicon.org/posts/scheduled-for-reading/</link>
      <pubDate>Tue, 24 Feb 2009 00:33:00 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/scheduled-for-reading/</guid>
      <description>&lt;p&gt;Has just received two books from Amazon.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.amazon.ca/Beautiful-Architecture-Diomidis-Spinellis/dp/059651798X/ref=sr_1_3?ie=UTF8&amp;amp;s=books&amp;amp;qid=1235435653&amp;amp;sr=8-3&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://ecx.images-amazon.com/images/I/311e-9x8UQL._SL500_AA180_.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The first one is Beautiful Architecture by fellow FreeBSD developer Diomidis Spinellis and Georgios Gousios. I bought it because software design is not my strongest skill and there is a lot of place for improvement. And learning from real life examples is always better then reading pure theory.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.amazon.ca/Productive-Programmer-David-Bock/dp/0596519788/ref=pd_bxgy_b_img_b?ie=UTF8&amp;amp;qid=1235435653&amp;amp;sr=8-3&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://ecx.images-amazon.com/images/I/61dx4Iu-fyL._SL500_AA240_.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The other one is The Productive Programmer by David Bock. Productivity is my sweet spot (well, it&amp;rsquo;s more about cool tips then real productivity boost). This had nice reviews so I decided to give it a try.&lt;/p&gt;</description>
    </item>
    <item>
      <title>FreeBSD/mips: what&#39;s cooking</title>
      <link>https://kernelnomicon.org/posts/freebsdmips-whats-cooking/</link>
      <pubDate>Mon, 26 Jan 2009 21:46:00 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/freebsdmips-whats-cooking/</guid>
      <description>&lt;p&gt;In last two months I&amp;rsquo;ve got two new toys: WGT634U from bms@ and Ubiquity Networks&amp;rsquo; Router Station 2 provided by manufacturer. The first one is Broadcom&amp;rsquo;s Sentry5 based and the second one is built on Atheros&amp;rsquo; AR7100 chip. As AR7100 is more advanced technology (and has less obscure design, at least it seams less obscure to me) I decided to pick up this low hanging fruit. So far so good: kernel boots, PCI bridge detects Atheros miniPCI wireless card. GigE driver is on its way.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Thinkpad T400 and FreeBSD</title>
      <link>https://kernelnomicon.org/posts/thinkpad-t400-and-freebsd/</link>
      <pubDate>Thu, 22 Jan 2009 01:12:00 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/thinkpad-t400-and-freebsd/</guid>
      <description>&lt;p&gt;Finally I got my hands on new and shiny Lenovo Thinkpad T400. What can I say? It&amp;rsquo;s cool. My only complaint about T60 was its somewhat dim display (yes, I tried to save some money on this vital part and got punished). This time I ordered model with LED backlight and it&amp;rsquo;s worth every dime spent :)&lt;/p&gt;
&lt;p&gt;My configuration also included Atheros wifi, built-in bluetooth, Intel GMA X4500 graphics (I&amp;rsquo;m not in games, really). Unfortunately 7.1 was able to run wifi. Newer HAL did the trick though and here I am: eating my own dog food - running -CURRENT on a workhorse.&lt;/p&gt;</description>
    </item>
    <item>
      <title>FreeBSD/MIPS: something lost, something gained</title>
      <link>https://kernelnomicon.org/posts/freebsdmips-something-lost-something-gained/</link>
      <pubDate>Tue, 04 Nov 2008 04:01:00 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/freebsdmips-something-lost-something-gained/</guid>
      <description>&lt;p&gt;And again long pause in blogging. In this 4 months several things happened to me: I relocated to Vancouver, was interviewed and rejected by Microsoft (don&amp;rsquo;t know why they contacted me in the first place), met new people (philip@ and thompa@ among them), saw new places and even got some free time and learned to cook (it turned out to be fun!).&lt;/p&gt;
&lt;p&gt;Being close(geographically) to PMC-Sierra, major MIPS vendor, I tried to contact them and ask for a donation for FreeBSD/MIPS project. Got no reply, though. Predictable result, but it&amp;rsquo;s better to try and fail then have never try at all.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Joy of Bugbusting</title>
      <link>https://kernelnomicon.org/posts/the-joy-of-bugbusting/</link>
      <pubDate>Wed, 11 Jun 2008 14:11:00 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/the-joy-of-bugbusting/</guid>
      <description>&lt;p&gt;While waiting for MIPS toolchain import to happen I entertain myself with bugbusting. You should try it sometime. GNATS jungle, small and large bugs are sneaking around, scent of rotten emails in the air. I don&amp;rsquo;t feel like hunting down large bugs. They&amp;rsquo;re dangerous beasts. It&amp;rsquo;s much better to deal with small ones. Pick a (one|two|three|up-to-twenty)-liner and fix it. Then you can bring it home, varnish it and eventually MFC it. Nice outdoor activity for developers :)&lt;/p&gt;</description>
    </item>
    <item>
      <title>bsddev blog SitRep</title>
      <link>https://kernelnomicon.org/posts/bsddev-blog-sitrep/</link>
      <pubDate>Thu, 29 May 2008 14:36:00 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/bsddev-blog-sitrep/</guid>
      <description>&lt;p&gt;Long time no blog. Many things have happened during last 6 months: I got a commit bit, FreeBSD/MIPS reached multiuser and started migration from P4 to CVS. Right now we&amp;rsquo;re waiting for toolchain patches to be imported to contrib/binutils properly. So let&amp;rsquo;s prepare to celebrate buildable FreeBSD/MIPS world in a couple of weeks! Meanwhile I&amp;rsquo;m busy with getting latest zaptel (they changed name to DAHDI, actually) drivers to FreeBSD and a couple of side aсtivities like digging into aio code from OpenSolaris/Linux/FreeBSD. Hope to blog more regularly now. Stay tuned.&lt;/p&gt;</description>
    </item>
    <item>
      <title>NY gift from Juniper</title>
      <link>https://kernelnomicon.org/posts/ny-gift-from-juniper/</link>
      <pubDate>Fri, 28 Dec 2007 14:57:00 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/ny-gift-from-juniper/</guid>
      <description>&lt;p&gt;Juniper released FreeBSD/MIPS port to public. There are no references to JNPR-specific hardware pieces but a lot of mature code for generic MIPS devices that mips2 tree lacks: VM/pmap, libc, FPU support. Nice gift, thanks JNPR!&lt;/p&gt;</description>
    </item>
    <item>
      <title>RB532 progress</title>
      <link>https://kernelnomicon.org/posts/rb532-progress/</link>
      <pubDate>Sun, 09 Dec 2007 19:37:00 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/rb532-progress/</guid>
      <description>&lt;p&gt;This weekend I spent writing driver for IDT RC32434 on-board Ethernet adapter. Weird hobby, isn&amp;rsquo;t it? Writing NIC drivers is new to me so I shared my time between reading if_XX sources, reading IDT specs and writing my own code. Task turned out easier then it appeared and 15 minutes ago I managed to mount root over NFS using kr0 interface. Time to get some beer and celebrate!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mikrotik RB532 - single user mode.</title>
      <link>https://kernelnomicon.org/posts/mikrotik-rb532-single-user-mode/</link>
      <pubDate>Sat, 01 Dec 2007 23:38:00 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/mikrotik-rb532-single-user-mode/</guid>
      <description>&lt;p&gt;Today I managed to get shell prompt on Mikrotik&amp;rsquo;s Routerboard 532. So now we have 3 platforms with single user mode for FreeBSD/mips, not very useful :)  The last problem was getting high-level console interface working. I always fell lost when it comes to resource allocation and uart stuff. I should write a couple of posts on these subjects to memorize all details better.&lt;/p&gt;</description>
    </item>
    <item>
      <title>INTR_FAST and selwakeup</title>
      <link>https://kernelnomicon.org/posts/intr_fast-and-selwakeup/</link>
      <pubDate>Sun, 25 Nov 2007 13:22:00 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/intr_fast-and-selwakeup/</guid>
      <description>&lt;p&gt;I stumbled over this problem a couple of years ago, ignored it, was punished for my carelessness, came out with hackerish solution and now I know &amp;ldquo;The Right Way&amp;rdquo; to solve this issue. So, the headache starts when you&amp;rsquo;re trying to wakeup userland application polling on a descriptor from INTR_FAST IRQ handler (for 7.X and later that would be interrupt filter). INTR_FAST/interrupt filter  routines are usually used for timing-critical tasks and run in IRQ dispatcher context, so no operations that may cause context switch are allowed in this code. Unfortunately &lt;a href=&#34;http://www.freebsd.org/cgi/man.cgi?query=selwakeup&amp;amp;apropos=0&amp;amp;sektion=0&amp;amp;manpath=FreeBSD+7-current&amp;amp;format=html&#34;&gt;selwakeup(9)&lt;/a&gt; tries to acquire sellock that leads to a possible context switch and leaves us in a total mess. My solution was handmade kernel thread that has been running through list of channels and performed all dirty work, not the cleanest and easiest to maintain code. &amp;ldquo;Zaptel-bsd take 2&amp;rdquo; utilizes &lt;a href=&#34;http://www.freebsd.org/cgi/man.cgi?query=taskqueue&amp;amp;apropos=0&amp;amp;sektion=0&amp;amp;manpath=FreeBSD+7-current&amp;amp;format=html&#34;&gt;taskqueue(9)&lt;/a&gt; interface to work around IRQ handler limitations. There is handler routine:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Module/kernel parameters</title>
      <link>https://kernelnomicon.org/posts/modulekernel-parameters/</link>
      <pubDate>Tue, 20 Nov 2007 20:58:00 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/modulekernel-parameters/</guid>
      <description>&lt;p&gt;Sometimes it&amp;rsquo;s desirable to pass some arguments to module to customize its behavior, e.g.: to set/unset verbosity level of debug output, set operation mode etc&amp;hellip; Linux modules can get this information from insmod utility, but kldload is not capable of doing such kind of things. What a pity. But don&amp;rsquo;t get desperate - tunables to the rescue!&lt;/p&gt;
&lt;p&gt;Just like an ordinary command shell (bash, csh, sh) kernel has its own environment, the set of &amp;lt;name, value&amp;gt; pairs. You can get, set, test, unset these variables using &lt;strong&gt;getenv&lt;/strong&gt;, &lt;strong&gt;setenv&lt;/strong&gt;, &lt;strong&gt;testenv&lt;/strong&gt;, &lt;strong&gt;unsetenv&lt;/strong&gt; functions in the kernel and &lt;a href=&#34;http://www.freebsd.org/cgi/man.cgi?query=kenv&amp;amp;sektion=2&amp;amp;apropos=0&amp;amp;manpath=FreeBSD+7-current&#34;&gt;&lt;strong&gt;kenv(2)&lt;/strong&gt;&lt;/a&gt; syscall or &lt;a href=&#34;http://www.freebsd.org/cgi/man.cgi?query=kenv&amp;amp;sektion=1&amp;amp;apropos=0&amp;amp;manpath=FreeBSD+7-current&#34;&gt;&lt;strong&gt;kenv(1)&lt;/strong&gt;&lt;/a&gt; command in userland. So if you want to set verbosity level for module, you would do something like this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Introduction</title>
      <link>https://kernelnomicon.org/posts/introduction/</link>
      <pubDate>Mon, 29 Oct 2007 21:04:00 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/introduction/</guid>
      <description>&lt;p&gt;Hello. My name is Oleksandr Tymoshenko. I&amp;rsquo;m a software developer. My involvement in FreeBSD project started in 1998 by making static entries in ARP table really static. Though patch hasn&amp;rsquo;t made out of my university&amp;rsquo;s network it was &amp;ldquo;the beginning of a beautiful friendship&amp;rdquo;. My first significant contribution to FreeBSD community (or so I&amp;rsquo;d like to think) was porting of  &lt;a href=&#34;http://www.voip-info.org/wiki/view/Zaptel&#34;&gt;Zaptel drivers&lt;/a&gt; from Linux to FreeBSD. About two years ago I happened to work with a MIPS board and got some interest to the architecture. Since then I&amp;rsquo;ve been doing my best trying to bring FreeBSD to this platform and, actually, succeeded to some extent with a help from developers crowd.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
