contents
- 2016年07月29日(金) NetBSDのご紹介 at OSC2016 Kyoto
 - この発表はここから!!
 - それは… 2015年12月の一つの記事からはじまった(?)
 - RetroBSDとは?
 - たけおかさんの発表も参考にして下さい(_O_)
 - RetroBSD対応ハードウエア
 - ボード選択のポイント
 - むとうのおすすめ
 - Olimex PIC32-RetroBSD ボード
 - DIGILENT chipKIT Max32 + SD Cardシールド類
 - Max32デモ環境
 - PIC32-RetroBSDデモ環境
 - デモ: RetroBSDブート(1/2) at MAX32
 - デモ: RetroBSDブート(2/2) at MAX32
 - デモ: RetroBSDブート at PIC32-RetroBSD
 - デモ: RetroBSDコマンド入力 at PIC32-RetroBSD
 - デモ: RetroBSD manコマンド at PIC32-RetroBSD
 - デモ: RetroBSD /games/ at PIC32-RetroBSD
 - GPIO (General Purpose Input/Output)
 - 設定
 - 入出力
 - ADC (Analogue-to-Digital Converter)
 - デモ: GPIO at PIC32-RetroBSD
 - MAX32
 - PIC32-RetroBSD
 - デモ: ADC at PIC32-RetroBSD
 - LiteBSDとは?
 - LiteBSD対応ハードウエア
 - むとうのおすすめ
 - DIGILENT chipKIT Wi-FIRE board
 - Olimex EMZ64 board
 - Wi-FIREデモ環境
 - デモ: LiteBSDブート(1/3) at chipKIT Wi-FIRE
 - デモ: LiteBSDブート(2/3) at chipKIT Wi-FIRE
 - デモ: LiteBSDブート(3/3) at chipKIT Wi-FIRE
 - デモ: LiteBSDコマンド入力 at chipKIT Wi-FIRE
 - デモ: LiteBSD man at chipKIT Wi-FIRE
 - デモ: LiteBSD GPIO at chipKIT Wi-FIRE
 - おわりに
 - RetroBSDやLiteBSDで遊びませんか?
 - むとうのやりたいこと
 
RetroBSD & LiteBSDのご紹介
2016年07月29日(金) NetBSDのご紹介 at OSC2016 Kyoto
この発表はここから!!
それは… 2015年12月の一つの記事からはじまった(?)
RetroBSDとは?
- RetroBSD公式: : http://retrobsd.org/
 - RetroBSD - a minimalistic Unix system at BSD Day 2011
 
- 2.11BSDベース: PDP11で動いていたもの
 - PIC32MX用OS(MIPS M4Kアーキテクチャ, 32bit): MMUなし
 - 組み込み用ボード向け
 - ネットワークは、w5100に対応しているみたい(?)
 
たけおかさんの発表も参考にして下さい(_O_)
- retroBSD on PIC32マイコン
 - RetroBSDを味見 at JNUG BSD BoF 2012
 
RetroBSD対応ハードウエア
- Supported Boards: http://retrobsd.org/wiki/doku.php/board/index
 
ボード選択のポイント
- 使い勝手: USBシリアル内蔵? (kernel用)writerは必要?
 - I/O: すぐに使えるI/Oがあるか?
 - 値段: できるだけ安いほうが良いよね?
 
むとうのおすすめ
- Olimex PIC32-RETROBSD
 - 買ってすぐにRetroBSDが動く!!
 - DIGILENT chipKIT Max32
 - 安定の定番、メインの開発環境
 
Olimex PIC32-RetroBSD ボード

- Olimexで19.95 EUR (Pinguno-Microは12.95 EUR)
 - 主なI/O: USBシリアル / writer / スイッチx1 / LEDx2
 
- PIC32-RETROBSD
 - New Product in stock: PIC32-RetroBSD Open Source Hardware Board running Unix like RetroBSD OS 2015/12/16
 - Pinguino-MicroのCPU性能を上げ(512KB Flash, 128KB RAM)、あらかじめRetroBSDがインストールされている
 
DIGILENT chipKIT Max32 + SD Cardシールド類

- 秋月で5400円、 SDシールド類は1000円ぐらいから
 - 主なI/O: USBシリアル / writer / LEDx1
 
- たけおかさんも使ってる
 
- chipKIT Max32
 - 普通は、Arduinoとして使う
 
Max32デモ環境

PIC32-RetroBSDデモ環境

デモ: RetroBSDブート(1/2) at MAX32
2.11 BSD Unix for PIC32, revision G488 build 1:
     Compiled 2016-01-24 by root@goa.vak.ru:
     /website/retrobsd/build/retrobsd-sources/sys/pic32/max32
cpu: 795F512L 80 MHz, bus 80 MHz
oscillator: XT crystal, PLL div 1:2 mult x20
spi2: pins sdi=RG7/sdo=RG8/sck=RG6
uart1: pins rx=RF2/tx=RF8, interrupts 26/27/28, console
uart2: pins rx=RF4/tx=RF5, interrupts 40/41/42
uart4: pins rx=RD14/tx=RD15, interrupts 67/68/69
sd0: port SPI2, pin cs=RC14
gpio0: portA, pins ii---ii-iiiioiii
gpio1: portB, pins iiiiiiiiiiiiiiii
gpio2: portC, pins i-ii-------iiii-
gpio3: portD, pins --iiiiiiiiiiiiii
gpio4: portE, pins ------iiiiiiiiii
gpio5: portF, pins --ii--------i-ii
gpio6: portG, pins iiii--i-----iiii
デモ: RetroBSDブート(2/2) at MAX32
adc: 15 channels pwm: 5 channels sd0: function groups 3/1/1/1/1/1, max current 200 mA sd0: type SDHC, size 1966080 kbytes, speed 20 Mbit/sec sd0a: partition type b7, sector 2, size 102400 kbytes sd0b: partition type b8, sector 204802, size 2048 kbytes sd0c: partition type b7, sector 208898, size 102400 kbytes phys mem = 128 kbytes user mem = 96 kbytes root dev = (0,1) swap dev = (0,2) root size = 102400 kbytes swap size = 2048 kbytes /dev/sd0a: 1447 files, 12070 used, 89929 free Starting daemons: update cron 2.11 BSD UNIX (pic32) (console) login:
デモ: RetroBSDブート at PIC32-RetroBSD
2.11 BSD Unix for PIC32, revision G290 build 7:
     Compiled 2015-07-14 by chris@olimex:
     /home/chris/retrobsd/sys/pic32/pinguino-micro
cpu: 795F512H 80 MHz, bus 80 MHz
oscillator: HS crystal, PLL div 1:2 mult x20
console: ttyUSB0 (7,0)
sd0: port SPI2, select pin B13
sd0: type SDHC, size 7565312 kbytes, speed 13 Mbit/sec
phys mem  = 128 kbytes
user mem  = 96 kbytes
root dev  = rd0a (0,1)
root size = 102400 kbytes
swap dev  = rd0b (0,2)
swap size = 2048 kbytes
/dev/sd0a: 1451 files, 12149 used, 89850 free
Starting daemons: update cron 
2.11 BSD UNIX (pic32) (console)
login: 
デモ: RetroBSDコマンド入力 at PIC32-RetroBSD
- BSDなので、manも/games/もあります;-)
 
% w 10:29am up 1 min, 1 user, load averages: 0.03, 0.00, 0.00 User tty login@ idle JCPU PCPU what root console 10:29am - % ps alx F S UID PID PPID CPU PRI NICE ADDR SZ WCHAN TTY TIME COMMAND 3 S 0 0 0 21 0 0 0x6800 3 runout ? 0:02 swapper 200 S 0 1 0 1 30 0 0x50 33 proc ? 0:00 init - 200 S 0 10 1 0 40 0 0xd 7 u ? 0:00 update 200 S 0 12 1 0 26 0 0xa 52 selwait ? 0:00 cron 200 S 0 13 1 0 30 0 0x19 39 proc USB 0:00 -sh 1 R 0 16 13 13 50 0 0x7400 38 USB 0:00 ps alx % df -i Filesystem 1K-blocks Used Avail Capacity iused ifree %iused Mounted on /dev/sd0a 101999 12151 89848 11% 1453 4947 22% /
デモ: RetroBSD manコマンド at PIC32-RetroBSD
% man echo
ECHO(1)                                                                ECHO(1)
NAME
       echo - echo arguments
SYNOPSIS
       echo [ -n ] [ arg ] ...
DESCRIPTION
       Echo  writes its    arguments separated by blanks and terminated by a new-
       line on the standard output.  If the flag -n is  used,  no  newline  is
       added to the output.
       Echo  is     useful  for  producing  diagnostics in shell programs and for
       writing constant data on pipes.  To send diagnostics  to  the  standard
       error file, do `echo ... 1>&2'.
7th Edition                     April 29, 1985                         ECHO(1)
デモ: RetroBSD /games/ at PIC32-RetroBSD
% ls /games/ aclock bcd factor morse rain trek adventure boggle fish number robots worm arithmetic btlgammon fortune pig rogue worms atc caesar hangman pom sail wump backgammon canfield lib ppt snake banner cfscores mille primes snscore battlestar cribbage monop quiz teachgammon
%  /games/hangman
     ______
     |    |
     |    O                                          Guessed:  abfgilnqs
     |   /|\
     |    |                                          Word #:           1
     |   / \                                         Current Average:  9.000
   __|_____                                          Overall Average:  0.000
   |      |___
   |_________|
 Word:  --g--a--
Guess:  
Sorry, the word was "vegetate"
Another word? 
GPIO (General Purpose Input/Output)
- ディジタルの入出力が可能な汎用バス
 - RetroBSDでは、制御用に/dev/conf*を、アクセス用に/dev/port*を使う
 
設定
% cat /dev/confe ------iiiiiiiiii % echo --------iiiioooo > /dev/confe % cat /dev/confe ------iiiiiioooo
入出力
% cat /dev/porte --------11111000 % echo --------00000000 > /dev/porte % echo --------11111111 > /dev/porte
ADC (Analogue-to-Digital Converter)
- アナログ入力データを、デジタル値としてコンピュータに入力
 - RetroBSDでは、/dev/adc*を入力として使う(値を出し続ける)
 
% cat /dev/adc0|head -1 1023
- adc-demoコマンドあり
 
% adc-demo
adc0   722  ============================================
adc1   538  ================================
adc2   880  ======================================================
adc3   332  ===================
    …
デモ: GPIO at PIC32-RetroBSD
MAX32
- ユーザLEDを点滅する
 
PIC32-RetroBSD
- GPIO経由で外部LEDを点灯する
 - 外部ボタンを押すと、全部のLEDが点滅する
 
- シェルスクリプトは死ぬほど遅いorz
 - 特にパイプを使った時
 
デモ: ADC at PIC32-RetroBSD
- 4つの可変抵抗値(adc0-3)と1つのCdSの値(adc4)を入力
 
% cat /dev/adc0|head -1 681
- adc-demo
 
% adc-demo adc0 682 ========================================= adc1 379 ====================== adc2 278 ================ adc3 921 ======================================================== adc4 11 adc5 0 adc6 5 adc7 8 adc8 17 adc9 0 adc10 0 adc11 0 adc12 0 adc13 1023 ============================================================== adc14 419 ========================= adc15 1023 ==============================================================
LiteBSDとは?
- LiteBSD公式: : http://litebsd.org/
 
- 4.4BSD-Liteベース
 - PIC32MZ(MIPS M5150, 32bit)用OS: MMUあり
 - TCP/IPサポートあり (有線: SMSC LAN8720A, LAN8740A, 無線: MRF24WG(開発中))
 
- GPIOはRetroBSDと同じように使える (ADCは無し)
 
LiteBSD対応ハードウエア
- Supported boards at https://github.com/sergev/LiteBSD/wiki
 
むとうのおすすめ
- DIGILENT chipKIT Wi-FIRE board
 - 無線LAN(mrf0:ドライバ未完成)
 - Olimex EMZ64 board (PIC32-EMZ64)
 - 豊富なI/O
 
DIGILENT chipKIT Wi-FIRE board

- 主なI/O
 - 無線LANがある (mrf0): ドライバは完成していない
 - USBシリアル / writer / LEDx4 / スイッチx2 / ポテンショメータ
 - $79
 
- https://github.com/sergev/LiteBSD/wiki/chipKIT%20WiFire%20board
 - 普通はArduino互換機として使う
 
Olimex EMZ64 board

- Olimexで24.95 EUR
 - 主なI/O
 - Ethernet 100M / OLED128x64 / LEDx3 / スイッチx3
 - 3.3Vシリアル変換必要, kernel書込にPICkit2が必要
 
Wi-FIREデモ環境

デモ: LiteBSDブート(1/3) at chipKIT Wi-FIRE
Copyright (c) 1982, 1986, 1989, 1991, 1993
        The Regents of the University of California.  All rights reserved.
4.4BSD-Lite build 0 compiled 2016-01-03
    root@goa.vak.ru:litebsd-sources/sys/compile/WIFIRE.pic32
cpu: PIC32MZ2048EFG100 rev A1, 200 MHz
oscillator: system PLL div 1:6 mult x50
cache: 16/4 kbytes
real mem = 512 kbytes
avail mem = 344 kbytes
using 18 buffers containing 73728 bytes of memory
spi1 at pins sdi=RD14/sdo=RC1/sck=RD1
spi2 at pins sdi=RF0/sdo=RD11/sck=RG6
spi3 at pins sdi=RB10/sdo=RC4/sck=RB14
spi4 at pins sdi=RF5/sdo=RG0/sck=RD10
uart1 at pins rx=RF1/tx=RD15, interrupts 112/113/114
uart4 at pins rx=RF2/tx=RF8, interrupts 170/171/172, console
デモ: LiteBSDブート(2/3) at chipKIT Wi-FIRE
sd0 at port spi3, pin cs=RC3 gpio0 at portA, pins -i---ii-iiiiiiii gpio1 at portB, pins i---i-iiiiiiiiii gpio2 at portC, pins iiii---------i-- gpio3 at portD, pins --ii------iiii-i gpio4 at portE, pins ------iiiiiiiiii gpio5 at portF, pins --ii--------i--- gpio6 at portG, pins iiii--iii------- mrf0 at port spi4, pins cs=RD9, irq=RA15, reset=RF4, hibernate=RG1 mrf0: MRF24WG version 31.c, MAC address 00:1e:c0:1a:41:5d bpf: mrf0 attached sd0: function groups 1/1/1/1/1/3, max current 200 mA sd0: type SDHC, size 1966080 kbytes, speed 50 Mbit/sec sd0a: partition type b7, sector 2, size 204800 kbytes sd0b: partition type b8, sector 409602, size 32768 kbytes sd0c: partition type b7, sector 475138, size 102400 kbytes
デモ: LiteBSDブート(3/3) at chipKIT Wi-FIRE
bpf: sl0 attached bpf: lo0 attached WARNING: preposterous clock chip time -- CHECK AND RESET THE DATE! starting file system checks. /dev/rsd0a: 2317 files, 16799 blocks used, 33416 free /dev/rsd0a: MARKING FILE SYSTEM CLEAN starting network clearing /tmp standard daemons: update cron. Sun Apr 17 09:37:57 PDT 2016 4.4BSD-Lite (bsd.net) (console) login:
デモ: LiteBSDコマンド入力 at chipKIT Wi-FIRE
- manはあるけど、/usr/games/のソースはあるけど入って無いみたい
 
/root # w
10:49AM  up 2 mins, 1 user, load averages: 0.38, 0.17, 0.06
USER    TTY FROM              LOGIN@  IDLE WHAT
root     co -                10:47AM     0 (w)
/root # ps alx
  UID   PID  PPID CPU PRI NI   VSZ  RSS WCHAN  STAT TT       TIME COMMAND
    0     0     0   0 -18  0     0    0 schedu DLs  ??    0:00.04 (swapper)
    0     1     0   1  10  0   168    0 wait   IWs  ??    0:00.08 /sbin/init
    0     2     0  20 -18  0     0    0 -      RL   ??    0:10.52 (pagedaemon)
    0    27     1   0  18  0    20    0 pause  IWs  ??    0:00.23 update
    0    29     1   0  18  0   216    0 pause  IWs  ??    0:00.15 cron
    0    33     1   2  18  0   380   36 pause  Ss    4    0:04.33 -sh (ksh)
    0    60    33   2  28  0   200   92 -      R+    4    0:00.05 (ps)
/root # df -i
Filesystem  1K-blocks     Used    Avail Capacity iused   ifree  %iused  Mounted on
/dev/sd0a      200860    67196   117592    36%    2317   28561     8%   /
デモ: LiteBSD man at chipKIT Wi-FIRE
/root # man uptime|cat
UPTIME(1)                 BSD General Commands Manual                UPTIME(1)
NAME
     uptime — show how long system has been running
SYNOPSIS
     uptime
DESCRIPTION
     The uptime utility displays the current time, the length of time the sys‐
     tem has been up, the number of users, and the load average of the system
     over the last 1, 5, and 15 minutes.
FILES
     /vmunix  system name list
SEE ALSO
     w(1)
HISTORY
     The uptime command appeared in 3.0BSD.
3rd Berkeley Distribution       April 18, 1994       3rd Berkeley Distribution
デモ: LiteBSD GPIO at chipKIT Wi-FIRE
- ボタン入力をそのままLED出力として表示
 
おわりに
RetroBSDやLiteBSDで遊びませんか?
- まだ実装されていないドライバがあります (無線LAN, USB, ...)
 - 最近、FreeBSDでビルドできるようになりました
 - 時に動かないコマンドもありますorz
 - 実機がなくても、RetroBSDにはVirtualMIPS(pic32)エミュレータがあります
 - 今からでも遊べますね!?
 
むとうのやりたいこと
- RetroBSDで、echoやbcやawkなどを直す
 - TCP/IP回りの調査
 - LiteBSDでADCは動かない?
 
Last modified: 2016-07-28
Post-it: New Post-it (help)


