今年最初のプリビルドイメージを公開しました。
昨年末に不安定の原因が特定できたので、一番有効そうなタイマー処理と
SDカードの転送処理の部分を手動最適化したアセンブラコードで置き換えてみました。
およそ80%の性能向上です(当社比)
それ以外にも修正してありますが、アセンブラコードに比べたら些細な事です。
興味あればMLの方をどうぞ。
追記:
2013/01/30 ↓新しいページはこちらになります。
http://shell.peach.ne.jp/aoyama/archives/2545
追記:
まだ実験的ですがVFPサポートを開始しました。(test12以降)
VFP部分に問題が発生したためテストカーネルをアップしました。
SDカードのDMA転送モードをサポート開始しました。(test13以降)
デフォルトはDMA転送モードなのでPIOに戻したい場合はsysctlなどで
変更する必要があります。
DMA転送部分に問題が発生した為テストカーネルをアップしました。
シングルモード時にDMA読込転送で問題を起こすのでさらにパッチ版をアップしました。
さらに問題が発生したので最終修正版をしました。(20130112)
無線LANとquotaを有効にしたカーネルでイメージを再生成しました(test14以降)
無線デバイスドライバはdevdで自動的に読み込まれます。
※PIO最終版は freebsd-pi-clang-20130105.img.gz と kernel-vfp-p1-20130106.gz になります。
http://www.peach.ne.jp/archives/rpi/kernel/kernel-vfp-p1-20130106.gz
http://www.peach.ne.jp/archives/rpi/kernel/kernel-20130110.gz
http://www.peach.ne.jp/archives/rpi/kernel/kernel-p1-20130110.gz
http://www.peach.ne.jp/archives/rpi/kernel/kernel-20130112.gz
FreeBSD armv6z/clang/RPI-B-test11:
http://www.peach.ne.jp/archives/rpi/freebsd-pi-clang-20130101.img.gz
FreeBSD armv6z/clang/RPI-B-test12:
http://www.peach.ne.jp/archives/rpi/freebsd-pi-clang-20130105.img.gz
FreeBSD armv6z/clang/RPI-B-test13:
http://www.peach.ne.jp/archives/rpi/freebsd-pi-clang-20130108.img.gz
FreeBSD armv6z/clang/RPI-B-test14:
http://www.peach.ne.jp/archives/rpi/freebsd-pi-clang-20130115.img.gz
ダウンロードしたらGZIP圧縮されているので解凍して4GB以上のSDカードに展開してください。
追加用にaxe(ASIX AX88x7x/760)のUSB LANドライバを入れてあります。
デフォルトコンパイラは clang になります。
セルフコンパイルすると警告が出て止まる事があるので、NO_WERROR= と
WERROR= を /etc/make.conf に追加するのを忘れないようにしてください。
※HDMIにも出力しますがシリアル優先なのでHDMI優先したい場合は、
set console=comconsole の行を /boot/loader.rc から削除してください。
使用コンフィグ:
http://www.peach.ne.jp/archives/rpi/config/RPI-B-test11
http://www.peach.ne.jp/archives/rpi/config/RPI-B-test13
http://www.peach.ne.jp/archives/rpi/config/RPI-B-test14
新カーネルのみ:
http://www.peach.ne.jp/archives/rpi/kernel/
ソースとパッチ:
http://www.peach.ne.jp/archives/rpi/patch/
参考用 MLのアーカイブ等:
http://lists.freebsd.org/pipermail/freebsd-arm/2013-January/004555.html
http://lists.freebsd.org/pipermail/freebsd-arm/2013-January/004541.html
http://lists.freebsd.org/pipermail/freebsd-arm/2013-January/004507.html
http://lists.freebsd.org/pipermail/freebsd-arm/2012-December/004421.html
http://lists.freebsd.org/pipermail/freebsd-arm/2012-December/004331.html
過去の情報はこちらに:
http://shell.peach.ne.jp/aoyama/archives/2357
初期設定:
MEM 496MB/GPU 16MB/SWAP 512MB
I/O: マルチコンソール(シリアル優先)
IP アドレス: 192.168.1.240
デフォルトルータ: 192.168.1.1
DNS: 192.168.1.1
sshd: 有効
ntpdate: 有効 (0.freebsd.pool.ntp.org)
ユーザ: pi
パスワード: raspberry
パスワード(root): raspberry
初期設定のため変更されたファイル:
/boot/loader.rc
/etc/fstab
/etc/rc.conf
/etc/hosts
/etc/resolv.conf
/etc/master.passwd
/etc/group
参考用 /etc/make.conf:
WITHOUT_X11=yes
WITH_CLANG=yes
WITH_CLANG_IS_CC=yes
# For clang
NO_WERROR=
WERROR=
CFLAGS=-O2 -fno-strict-aliasing -pipe -march=armv6z -mtune=arm1176jzf-s -mfloat-abi=soft
COPTFLAGS=-O1 -fno-strict-aliasing -pipe -march=armv6z -mtune=arm1176jzf-s -mfloat-abi=soft
カーネルのセルフビルドのやりかた:
# fetch -o /usr http://www.peach.ne.jp/archives/rpi/patch/src-244906-20130101.patch.gz
# fetch -o /usr/src/sys/arm/conf http://www.peach.ne.jp/archives/rpi/config/RPI-B-test11
# cd /usr/src
# gzcat /usr/src-244906-20130101.patch.gz | patch
# make buildkernel KERNCONF=RPI-B-test11 WITH_FDT=yes
(wait about 50 minutes)
Don't forget to add NO_WERROR= and WERROR= to /etc/make.conf if you use clang.
If you already applied previous patch, you can remove it by like this:
# cd /usr/src
# gzcat /usr/src-XXXXXX-YYYYMMDD.patch.gz | patch -R
If you want re-compile without cleaning, you can try to use like this:
# make buildkernel KERNCONF=RPI-B-test11 WITH_FDT=yes -DNO_CLEAN -DNO_CLEANDIR
GPTパーティションのUSBメモリの作り方とか:
(if you use something, delete/destory it before doing)
# gpart delete -i N da0 (where N is number of a partition)
# gpart destroy -F da0
(create new partition and format)
# gpart create -s gpt da0
# gpart add -t freebsd-ufs da0
# gpart show
# newfs -U -j /dev/da0p1
(mount it)
# mount /dev/da0p1 /mnt
起動パーティション(MSDOS)のマウント方法:
# mount -t msdosfs /dev/mmcsd0s1 /mnt
After this, you can edit the files such as config.txt in the boot partition.
VFPの使い方:
add "-mfloat-abi=softfp -mfpu=vfp" to your CFLAGS
for example:
CFLAGS=-O2 -fno-strict-aliasing -pipe -march=armv6z -mtune=arm1176jzf-s -mfloat-abi=softfp -mfpu=vfp
HSモード(SDカードのハイスピードモード)の有効化方法:
add to /boot/loader.rc:
set hw.bcm2835.sdhci.hs=1
DMAモード(pio=0)とPIOモード(pio=1)の切り替え方法:
# sysctl hw.bcm2835.sdhci.pio=1
or add to /boot/loader.rc:
set hw.bcm2835.sdhci.pio=1
タグ: arm, clang, FreeBSD, Raspberry Pi
Thank you for the build, keep it up.
And happy New Year :)
Happy New Year!
Thanks.
however, can you point me how to compile linux.ko?