- 開発プロセスについて Documentation/development-process/ [kernel.org]
- $ make defconfig
は arch//configs/*_defconfig が呼ばれる
- カーネルビルドプロセスについて Documentation/kbuild/ [kernel.org]
- ramzswap
- fio - Flexible IO Tester [kernel.dk]
- カーネルビルドプロセスについて Documentation/kbuild/ [kernel.org]
June 3, 2014
"Linux Kernel HACKS"
June 2, 2014
DraftSight for Fedora installation on CentOS
rpm インストール時に必要と言われる cups-libs.i686、起動時に必要と言われる mesa-libGLU.i686 nas.i686 glib2.i686 をインストールすると起動できたはずが、Segmentation fault。
Draftsight - CAD - installing in 64bits (Page 1) / Applications & Desktop Environments / Arch Linux Forums [archlinux.org] によると、NVIDIA のドライバをインストールするときに NVIDIA's 32-bit compatibility libraries を入れなかったのが問題かもしれない。NVIDIA のドライバインストーラで 32-bit ライブラリをインストールしたら、起動できた。
# yum install cups-libs.i686 # rpm -ivh draftSight.rpm # yum install mesa-libGLU.i686 nas.i686 glib2.i686 # ./NVIDIA-Linux-x86_64-331.67.run $ startx $ /opt/dassault-systemes/DraftSight/Linux/DraftSight &
May 14, 2014
EAGLE PCB 6.5.0 for Linux
EAGLE PCB 6.5.0 を CentOS 6.5 (x86_64) にインストールしようとしたところ、libssl.so.1.0.0 や libcrypto.so.1.0.0 がないと怒られる。OpenSSL のアップデートで libssl.so.1.0.1e になっていたのが問題。アップデートでは古いバージョン名のシンボリックリンクは作ってくれない模様。
Download - Get the latest Version of EAGLE PCB Design Software [cadsoftusa.com] によると 32-bit runtime environment with the libraries libssl.so.1.0.0 and libcrypto.so.1.0.0. とあるので、32-bit 版の openssl をインストールして、lib*.so.1.0.0 というシンボリックリンクを作って解決。
Download - Get the latest Version of EAGLE PCB Design Software [cadsoftusa.com] によると 32-bit runtime environment with the libraries libssl.so.1.0.0 and libcrypto.so.1.0.0. とあるので、32-bit 版の openssl をインストールして、lib*.so.1.0.0 というシンボリックリンクを作って解決。
$ ./eagle-lin-6.5.0.run /tmp/eagle-setup.3131/eagle-6.5.0/bin/eagle: error while loading shared libraries: libssl.so.1.0.0: cannot open shared object file: No such file or directory # yum install openssl.i686 # cd /usr/lib # ln -s libssl.so.1.0.1e libssl.so.1.0.0 # ln -s libcrypto.so.1.0.1e libcrypto.so.1.0.0
April 22, 2014
eagleUp-4.4 on OS X Mavericks
Eagle から SketchUp に変換する eagleUp [wordpress.com] をセットアップ。基本的に Installation [wordpress.com] と Tutorial [wordpress.com] に従えば動いた。
環境
eagleUp のインストール
eagleUp4.4.zip をダウンロード、中のファイルやディレクトリをインストール。
Eagle で .eup をエクスポート
SketchUp でインポート
環境
- OS X 10.9.2
- SketchUp Make 14.0.4899
- Cadsoft Eagle 6.5.0
- Trimble SketchUp 2014 14.0.4899
- ImageMagick 6.8.8-9
($ brew install imagemagick でインストール)
eagleUp のインストール
eagleUp4.4.zip をダウンロード、中のファイルやディレクトリをインストール。
- Eagle ULP/eagleUp_export.ulp -> /Applications/EAGLE-6.5.0/ulp/
- models -> /Applications/EAGLE-6.5.0/
- eagleUp_import_sketchup2014.rb -> /Users/[user]/Library/Application\ Support/SketchUp\ 2014/SketchUp/Plugins/
Eagle で .eup をエクスポート
- File -> Open "demo files/demo3d.brd"
- File -> Run ULP "/Applications/EAGLE-6.5.0/ulp/eagleUp_export.ulp"
- 初回実行時は初期設定。
- 初期設定後、エクスポート。
- 生成された demo3d.eup のモデルディレクトリのパスに誤りがあったので訂正。
$ vi demo\ files/eagleUp/demo3d.eup $ diff -u demo\ files/eagleUp/demo3d.eup.orig demo\ files/eagleUp/demo3d.eup --- demo files/eagleUp/demo3d.eup.orig 2014-04-22 06:30:25.000000000 +0900 +++ demo files/eagleUp/demo3d.eup 2014-04-22 06:30:36.000000000 +0900 @@ -1,5 +1,5 @@ version;4;4;http://eagleup.wordpress.com/; -settings;/Applications/EAGLE/models/;/usr/local/bin/convert;/usr/local/bin/composite;rm; +settings;/Applications/EAGLE-6.5.0/models/;/usr/local/bin/convert;/usr/local/bin/composite;rm; color;0x98041C;0xE2012D;silver;ivory; images;/Users/a2ya/Downloads/eagleUp4.4/demo files/eagleUp/;eagleUp_demo3d;png;600;png; outline-arc;38.100000;19.050000;5.080000;0.000000;90.000000;1.600000;
SketchUp でインポート
- Preference -> Extension -> Extentions で Ruby Script Examples が有効になっていることを確認。
- Plugins -> Scale -> set units -> Units で Length unit が Decimal と Meters になっていることを確認。
- Plugins -> Import eagle Up v4.4 で demo files/eagleUp/eagleUp/demo3d.eup をインポート。
March 11, 2014
"High Performance Data Processing by Advanced Hardware" in 76th National Convention of IPSJ
- e-trees.Japan [e-trees.jp]
- Fast Handshake Join Implementation on FPGA with Adaptive Merging Network [acm.org]
- Hardware acceleration of Hadoop MapReduce [ieee.org]
- Tilera [tilera.com]
- Supporting Low-Latency CPS using GPUs and Direct I/O Schemes [ertl.jp]
- Data Transfer Matters for GPU Computing [ertl.jp]
- Relational Joins on Graphics Processors [acm.org]
- GPUDirect [nvidia.com]
- Roofline: an insightful visual performance model for multicore architectures [acm.org]
- Computer Organization and Design, 5th Edition [elsevier.com]
- Computer Architecture: A Quantitative Approach, 5th Edition [elsevier.com]
- The Datacenter as a Computer: An Introduction to the Design of Warehouse-Scale Machines, Second edition [morganclaypool.com]
March 6, 2014
bootargs in .dts for Altera JTAG UART
Nios II Linux、Altera JTAG UART を使っている場合、sopc2dts で .sopcinfo から .dts を自動生成すると、bootargs に
sopc2dts の GUI 画面や、--board オプションで渡す boardinfo ファイルで bootargs の console=ttyAL0,... を console=ttyJ0,... に置き換えることで、early0 が閉じられた後もコンソールが表示される。
Linux の .config は make 3c120_defconfig のデフォルト値で構わなかった。
version: linux-socfpga 3.13 bb0bb0a
debug console=ttyAL0,115200
などと記載される。その場合でも make menuconfig で、Device Drivers -> Character devices -> Serial drivers -> Altera UART console support (CONFIG_SERIAL_ALTERA_UART_CONSOLE) を有効にすると、下記のように途中まではコンソールが表示される。しかし、その後ルートファイルシステムをマウントする辺りで boot console early0 が閉じられ、その後何も表示されなくなる。$ nios2-terminal Linux version 3.13.0-g434d565-dirty ... bootconsole [early0] enabled ... ... ... turn off boot console early0
sopc2dts の GUI 画面や、--board オプションで渡す boardinfo ファイルで bootargs の console=ttyAL0,... を console=ttyJ0,... に置き換えることで、early0 が閉じられた後もコンソールが表示される。
Linux の .config は make 3c120_defconfig のデフォルト値で構わなかった。
version: linux-socfpga 3.13 bb0bb0a
March 5, 2014
Linux kernel config for GPIO-less Nios II Qsys design
Nios II Linux、GPIO が無い Qsys デザインの場合、make menuconfig で Device Drivers -> GPIO Support を未選択にすると、Platform options -> Compile and link device tree into kernel image を有効にした場合でも、コンパイル時にエラーにならない。
version: linux-socfpga 3.13 bb0bb0a
version: linux-socfpga 3.13 bb0bb0a
March 4, 2014
Swap on RAM disk in CentOS 6.5 x86_64
RAM ディスク上にスワップを設定できるかの調査。
環境
swap file on ext4 @/tmp -> PASS
ちなみに、util-linux [wikipedia.org] によると、util-linux-ng は util-linux の後継として開発されたが、また util-linux という名前に戻ったらしい。
swap file on ramfs @/dev/ram0 -> FAIL
swap file on ext2 @/dev/ram0 -> PASS
swap partition @/dev/ram0 -> PASS
swap file on tmpfs -> FAIL
環境
$ uname -r 2.6.32-431.5.1.el6.x86_64 $ grep CONFIG_SWAP /usr/src/kernels/`uname -r`/.config CONFIG_SWAP=y $ grep CONFIG_BLK_DEV_RAM /usr/src/kernels/`uname -r`/.config CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_BLK_DEV_RAM_SIZE=16384 $ cat /proc/swaps Filename Type Size Used Priority /dev/dm-1 partition 835576 0 -1
swap file on ext4 @/tmp -> PASS
$ mount (近頃(?) /tmp は RAM 扱いではない模様) $ dd if=/dev/zero of=/tmp/swapfile bs=1M count=1 $ mkswap -f /tmp/swapfile Setting up swapspace version 1, size = 1020 KiB no label, UUID=fd6633bd-5d5c-4e6a-99fc-f8ee9741eacc $ file /tmp/swapfile /tmp/swapfile: Linux/i386 swap file (new style) 1 (4K pages) size 255 pages $ chmod 600 /tmp/swapfile # swapon -v /tmp/swapfile swapon on /tmp/swapfile swapon: /tmp/swapfile: found swap signature: version 1, page-size 4, same byte order swapon: /tmp/swapfile: pagesize=4096, swapsize=1048576, devsize=1048576 # swapon -s Filename Type Size Used Priority /dev/dm-1 partition 835576 0 -1 /tmp/swapfile file 1016 0 -2 # swapoff /tmp/swapfileちなみに、swapon -v オプションを有効にしているとスワップファイルの permission が 600 でないと警告されたが、 600 であっても root 以外がオーナになら警告すべきだが警告されなかった。
$ swapon -V swapon: (util-linux-ng 2.17.2)stable/v2.17 の swapon.c は util-linux/util-linux.git [kernel.org] で uid を確認していないが、最新 stable/v2.24 の swapon.c util-linux/util-linux.git [kernel.org] では、uid もチェックしている模様。
ちなみに、util-linux [wikipedia.org] によると、util-linux-ng は util-linux の後継として開発されたが、また util-linux という名前に戻ったらしい。
swap file on ramfs @/dev/ram0 -> FAIL
# mkdir /mnt/ram0 # mount -t ramfs /dev/ram0 /mnt/ram0 # dd if=/dev/zero of=/mnt/ram0/swapfile bs=1M count=1 # mkswap -f /mnt/ram0/swapfile Setting up swapspace version 1, size = 1020 KiB no label, UUID=7a23a073-c7a0-4e13-abfb-a0746abe3afc mkswap: unable to relabel /mnt/ram0/swapfile to system_u:object_r:swapfile_t:s0: Operation not supported # file /mnt/ram0/swapfile /mnt/ram0/swapfile: Linux/i386 swap file (new style) 1 (4K pages) size 255 pages # chmod 600 /mnt/ram0/swapfile # swapon -v swapfile swapon on swapfile swapon: /mnt/ram0/swapfile: found swap signature: version 1, page-size 4, same byte order swapon: /mnt/ram0/swapfile: pagesize=4096, swapsize=1048576, devsize=1048576 swapon: swapfile: swapon failed: Invalid argument # dmesg | tail -1 swapon: swapfile has holes # cp /tmp/swapfile /mnt/ram0/ # chmod 600 /mnt/ram0/swapfile # swapon -v /mnt/ram0/swapfile swapon on /mnt/ram0/swapfile swapon: /mnt/ram0/swapfile: found swap signature: version 1, page-size 4, same byte order swapon: /mnt/ram0/swapfile: pagesize=4096, swapsize=1048576, devsize=1048576 swapon: /mnt/ram0/swapfile: swapon failed: Invalid argument # dmesg | tail -2 swapon: swapfile has holes swapon: swapfile has holes
swap file on ext2 @/dev/ram0 -> PASS
# mkfs /dev/ram0 mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 4096 inodes, 16384 blocks 819 blocks (5.00%) reserved for the super user First data block=1 Maximum filesystem blocks=16777216 2 block groups 8192 blocks per group, 8192 fragments per group 2048 inodes per group Superblock backups stored on blocks: 8193 Writing inode tables: done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 23 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. # mount -t ext2 /dev/ram0 /mnt/ram0 # dd if=/dev/zero of=/mnt/ram0/swapfile bs=1M count=1 # mkswap -f /mnt/ram0/swapfile Setting up swapspace version 1, size = 1020 KiB no label, UUID=acaff689-a570-43a7-8c97-2c8c80045bbc # chmod 600 /mnt/ram0/swapfile # swapon -v /mnt/ram0/swapfile swapon on /mnt/ram0/swapfile swapon: /mnt/ram0/swapfile: found swap signature: version 1, page-size 4, same byte order swapon: /mnt/ram0/swapfile: pagesize=4096, swapsize=1048576, devsize=1048576 # swapon -s Filename Type Size Used Priority /dev/dm-1 partition 835576 0 -1 /mnt/ram0/swapfile file 1004 0 -2 # dmesg | tail -1 Adding 1004k swap on /mnt/ram0/swapfile. Priority:-2 extents:5 across:1020k # swapoff /mnt/ram0/swapfile
swap partition @/dev/ram0 -> PASS
# mkswap /dev/ram0 Setting up swapspace version 1, size = 16380 KiB no label, UUID=efac3cf3-9d79-4f68-935c-f4da81845dbb # swapon -v /dev/ram0 swapon on /dev/ram0 swapon: /dev/ram0: found swap signature: version 1, page-size 4, same byte order swapon: /dev/ram0: pagesize=4096, swapsize=16777216, devsize=16777216 # swapon -s Filename Type Size Used Priority /dev/dm-1 partition 835576 0 -1 /dev/ram0 partition 16376 0 -2 # dmesg | tail -1 Adding 16376k swap on /dev/ram0. Priority:-2 extents:1 across:16376k # swapoff
swap file on tmpfs -> FAIL
# mkdir /mnt/tmp # mount -t tmpfs tmpfs /mnt/tmp # dd if=/dev/zero of=/mnt/tmp/tmpfsswap bs=1M count=1 # mkswap -f /mnt/tmp/tmpfsswap Setting up swapspace version 1, size = 1020 KiB no label, UUID=ed44d266-47e6-40a2-8ac7-7f925d88fa6e # chmod 600 /mnt/tmp/tmpfsswap # swapon -v /mnt/tmp/tmpfsswap swapon on /mnt/tmp/tmpfsswap swapon: /mnt/tmp/tmpfsswap: found swap signature: version 1, page-size 4, same byte order swapon: /mnt/tmp/tmpfsswap: pagesize=4096, swapsize=1048576, devsize=1048576 swapon: /mnt/tmp/tmpfsswap: swapon failed: Invalid argument # dmesg | tail (no message invoked by this swapon)tmpfs 自体 swap を使うのだから swap を tmpfs 上に作れるとは思えなかったが、念のためやってみた。
March 1, 2014
Linux for Nios II (MMU) on custom design
MMU を有効にした Nios II で Linux を動かす場合の最近の流儀はルートファイルシステムは uClinux [uclinux.org] でなく、BuildRoot [buildroot.net] に移行した模様。ビルド方法などの各種情報も Category:Linux - Altera Wiki [alterawiki.com] から Nios II Linux User Manual ・ Documentation ・ RocketBoards.org [rocketboards.org] に一本化されている。流行りは ARM 内蔵の Altera SoC [altera.com] に移ったのか、Nios II (MMU) + Linux で BuildRoot 移行後の情報はとても少ない(日本語では皆無?)。ちなみに、Altera SoC の場合は Yocto になる模様。Altera SoC Yocto Powered Embedded Linux [altera.com]
基本的に Nios II Linux User Manual ・ Documentation ・ RocketBoards.org [rocketboards.org] に従う。以下のセクションは上記文書に合わせる。
ホスト環境
- RedHat 5 x86_64
- Quartus II v13.1 (64bit)
1. Setting up toolchain
Sourcery CodeBench Lite Edition - Altera Nios II Processor - GNU/Linux release をダウンロード、インストール。
利用バージョン: Sourcery CodeBench Lite 2013.05-43
$ export PATH=/<your path>/CodeSourcery/Sourcery_CodeBench_Lite_for_Nios_II_GNU_Linux/bin/:$PATH $ export ARCH=nios2 $ export CROSS_COMPILE=nios2-linux-gnu-
2. Building root filesystem
git レポジトリでも良いが、Buildroot - Download [buildroot.net] より、リリース版をダウンロード、展開。
利用バージョン: buildroot-2013.11.tar.(bz2|gz)
$ wget http://www.rocketboards.org/pub/Documentation/NiosIILinuxUserManual/nios2_defconfig $ mv nios2_defconfig configs/ $ make nios2_defconfig $ make menuconfig $ make source (オフラインビルドをしたい場合) $ make
3. Building U-Boot
とりあえず U-Boot は使わず、JTAG (nios2-download) でカーネルとルートファイルシステムをメモリに展開するため、スキップ。
4. Building Nios II Linux kernel
sopc2dts [alterawiki.com] をインストールしておく。
レポジトリ: sopc-tools.git
ブランチは無いので、master の現時点での head をダウンロード、展開、make。
利用バーション: commit 83a62e0e3d8618afeb92bf15f2696fbd0804680a [rocketboards.org]
java がインストールされていなければ、インストールしておく。
# yum install java-1.7.0-oracle-devel
OpenJDK (CentOS 6) でもコンパイル、実行できた。
# yum install java-1.7.0-openjdk-devel
linux-socfpga.git [rocketboards.org] レポジトリの socfpga-3.13 [rocketboards.org] head のスナップショットをダウンロード、展開。
利用バージョン: commit: bb0bb0a2a05443edef7af9f7de9fc8c3f36f01cb [rocketboards.org]
$ make 3c120_defconfig $ java -jar ../sopc-tools-83a62e0/sopc2dts/sopc2dts.jar --board ../hoge.boardinfo --input ../hoge.sopcinfo --output arch/nios2/boot/dts/hoge.dts (.sopcinfo は Qsys で出力。.boardinfo は一度 sopc2dts --gui で起動し生成。) $ make menuconfig General setup -> Initial RAM filesystem and RAM disk (initramfs/initrd) support を有効化 General setup -> Initramfs source file(s). に "../buildroot/output/images/rootfs.cpio" など、buildroot で生成したルートファイルシステムの .cpio のパスを指定 Platform options -> Compile and link device tree into kernel image を有効化 Platform options -> Device tree source file. に "arch/nios2/boot/dts/hoge.dts" など上記 .dts のパスを指定 $ make zImage $ nios2-download -g vmlinux && nios2-terminal (nios2-download -g arch/nios2/boot/zImage の方が転送が速い)
February 10, 2014
uClinux-dist (nommu) for Nios II on custom design
February 7, 2014
Memory Leak Patch to Homebrew Emacs 24.3 on OS X Mavericks
$ brew edit emacs $ brew reinstall emacs参考文献
- distnoted が原因でEmacsが落ちるのを防ぐemacs.rb [qiita.com]
- emacsやdistnotedを安定させるパッチをhomebrewで適用した [n-z.jp]
(February 8, 2014 追記)
折角なので今回は Formula Cookbook [github.com] に従い Pull Request してみた。
- emacs: add patch for memory leaks by geodenx · Pull Request #26516 · Homebrew/homebrew [github.com]
- emacs: add patch for memory leaks · 07ef188 · geodenx/homebrew [github.com]
早速取り込んでいただけた模様。
commit message の英文法が間違ってるのが恥ずかしい。オープンソース活動はスヌープされても問題ないから、英文構成サービス使うべし。
February 5, 2014
uClinux-dist (nommu) build for Nios II
ホスト環境: RedHat 5 x86_64
デザインをダウンロード、展開
$ wget http://image.gihyo.co.jp/assets/files/book/2011/978-4-7741-4839-7/download/DE0.ZIP $ unzip DE0.ZIP
ビルドに必要なツールをインストール
# yum install git-all git-gui make gcc ncurses-devel bison byacc flex \ gawk gettext ccache zlib-devel gtk2-devel lzo-devel pax-utils libglade2-devel uboot-toolsInstall Nios II Linux [alterawiki.com] のパッケージ指定にタイポがあり pax-utils と libglade2-devel の間にスペースが必要
クロスコンパイラをダウンロード、展開
$ wget ftp://ftp.altera.com/outgoing/nios2-linux/nios2gcc-20080203.tar.bz2 $ tar jxvf nios2gcc-20080203.tar.bz2 $ export PATH=$PWD/opt/unios2/bin:$PATH
uClinux-dist をビルド
Install Nios II Linux [alterawiki.com] や Downloading Linux Distribution [alterawiki.com] によると、nommu の場合は test-nios2 ブランチになっているらしい。
$ wget http://sopc.et.ntust.edu.tw/pub/linux/nios2-linux-20100621.tar $ tar xvf nios2-linux-20100621.tar $ cd nios2-linux/linux-2.6 $ git checkout test-nios2 $ cd ../uClinux-dist $ git checkout test-nios2 $ make menuconfig $ make vendor_hwselect SYSPTF=$HOME/DE0/dai9sho/uclinux/uclinux_sopc.ptf $ make $ file images/zImage images/zImage: ELF 32-bit LSB executable, version 1 (embedded), statically linked, not strippedptf ファイルは絶対パスで指定する必要あり。
January 28, 2014
Porting Altera Transciever Toolkit
環境: RedHat 5.10 x86_64, Quartus II 13.1.1 Build 166
- On-chip Debugging Design Examples [altera.com]
より Transceiver Toolkit Example をダウンロードし展開。現時点では Transceiver Toolkit Examples for Stratix V GX, Arria V GX/GT, Cyclone V GX/GT and Stratix IV GX/GT devices (Quartus II software v13.0 SP1) が最新で、これを Quartus II 13.1 で開くと 13.1 用にコンバートされる。
- 各ディレクトリ以下の readme.txt にある通り、*.qar を展開した後 ip ディレクトリを展開したプロジェクトディレクトリ内に移動する。
- Quartus II でプロジェクト (*.qpf) を開き、Qsys を起動、*.qsys を開く。
- System Contents タブで xcvr_low_latency_phy を Edit...。General タブでNumber of lanes と、Data rate、Input clock frequency を編集し、Base data rate を選択。クロックとデータレートの組み合わせは、MegaWizard Plug-in Manager の ALTGX のウィザードで探った。
- System Contents タブで pllclk を Edit...。Clock frequency を編集する。
- System Console タブで元々あったあるレーン用の generater_*, timing_adapter_*, checker_*, timing_adapter_* をそれぞれ右クリック Duplicate し、Connection で元々あったレーンを参考に同様の配線を行う。
- Qsys の Generate メニューより Generate... を選択し、Generation ウィンドウで必要なら各種パラメータを設定し、Generate。
- Quartus II に戻り、Qsys で生成したモジュールを含むトップモジュール(*.v など) とクロックのタイミング制約が書かれている *.sdc を編集し、ピンアサインメント変更など必要があれば行い、Processing メニューから Start Compilation を実行。*.sof ファイルが生成される。
January 22, 2014
Emacs Mew Biff with MacOS X Notification Center
Google Notifier [google.com] がサンセットするらしい。以前は Mew の Biff [mew.org] 機能で新着メールを確認していたが、最近は Emacs が常に最前面に表示されているような生活でもないので、Mew から terminal-notifier [github.com] 経由で、MacOS X の Noficitaion Center (通知センター)に新着メールの到着を表示するようにした。
Homebrew で terminal-notifier をインストール。
Mew 6.5, Emacs 24.3.1, terminal-notifier 1.5.1, OS X 10.9.1 で動作確認。

ちなみに、最近の Emacs は Desktop Notification [gnu.org] がサポートされているらしいが、freedesktop.org Desktop Notifications Specification のみの模様。
(January 23, 2014 追記; Gist Revision 2)
既に新着メールが1個以上あるときに更に新しいメールが来ても通知されないのは、Emacs のモードラインが常に見える状況ならよいかもしれないが、Notification Center の使い方としてはやはり不便なので、若干変更し Gist に置いた。
(January 30, 2014 追記; Gist Revision 3)
新着メールを Mew で取り込みモードラインの "Mail(n)" の表示を消す mew-buff-clear が呼び出されるときに、Notification Center の通知も消すように変更。
Homebrew で terminal-notifier をインストール。
$ brew install terminal-notifier下記を .mew.el に追記し、mew-biff-bark をオーバーライト。
(defun mew-biff-bark (n) "Overwrite mew-biff-bark to invoke terminal-notifier to show a biff alert in MacOS X Notification Center" (if (= n 0) (setq mew-biff-string nil) (if (and mew-use-biff-bell (eq mew-biff-string nil)) (call-process "/bin/bash" nil nil nil "-c" (format "\/usr\/local\/bin\/terminal-notifier -message Mail\\\(%d\\\) -title Mew -sound Default -activate org\.gnu\.Emacs -sender org\.gnu\.Emacs -group Emacs.mew -remove Emacs.mew" n))) (setq mew-biff-string (format "Mail(%d)" n))))オリジナルの mew-biff-bark の beep を terminal-notifier の呼び出しに置き換えたので、既に新着メールが1個以上あるときに更に新しいメールが来ても、通知はされない(五月蝿いからそういう仕様になってる!?)。
Mew 6.5, Emacs 24.3.1, terminal-notifier 1.5.1, OS X 10.9.1 で動作確認。
(January 23, 2014 追記; Gist Revision 2)
既に新着メールが1個以上あるときに更に新しいメールが来ても通知されないのは、Emacs のモードラインが常に見える状況ならよいかもしれないが、Notification Center の使い方としてはやはり不便なので、若干変更し Gist に置いた。
(January 30, 2014 追記; Gist Revision 3)
新着メールを Mew で取り込みモードラインの "Mail(n)" の表示を消す mew-buff-clear が呼び出されるときに、Notification Center の通知も消すように変更。
January 20, 2014
January 18, 2014
bookmarklet "ehon2calil"
絵本ナビ [ehonnavi.net] で表示している本をカーリル [calil.jp] で検索するブックマークレットを作った。
使い方
Safari 7.0.1 及び Google Chrome 32.0.1700.77 で動作確認。
使い方
- ehon2calil をブックマークバーにドラッグ
Bookmarkitfy.it [bookmarkify.it] からも登録可(簡単なスクリーンショット解説付き)
- 絵本ナビの各絵本の紹介ページを表示
例えば、とかいのネズミといなかのネズミ [ehonnavi.net] など
- 1 で登録したしたブックマークをクリック
- 少し待つと、絵本ナビで表示していた絵本をカーリルで検索した結果が表示される
Safari 7.0.1 及び Google Chrome 32.0.1700.77 で動作確認。
January 11, 2014
Qsys 13.1.1 Build 166 (64 bit)
Design Examples [altera.com] の中から比較的新しい Qsys Compliant のデザインを探し、Nios II Ethernet Standard Design Example [altera.com] の niosii-ethernet-standard-4sgx230.zip を Qsys で開いてみると、同じ IP を追加できた。
その後、先ほど IP を追加できなかったデザイン .qsys を開き、同じ IP (Avalon ALTPLL) を追加してみると、今度は追加された。謎。
Device family: Stratix IV
January 10, 2014
Fast Nios II Hardware Design Example
プロジェクトファイル .qpf を見ると v7.2 で作られたらしい。
CentOS 6.5 x86_64 に v7.2 SP3 をインストールしたものの、プロジェクトを開いたり option ウィンドウを開くと、Segment Violation で落ちる。
Opening "option" window in Tool menu causes the following error: *** Fatal Error: Segment Violation at 0x28 Module: quartus 0xFDACD : FontDrawCharset::bInit(tagLOGFONTA*) + 0x22D (gdiuser32) 0xFF0EF : fontcache::GetNewFontDraw(tagLOGFONTA*, tagXFORM*, int, unsigned long, unsigned long) + 0x21F (gdiuser32) 0xFF387 : fontcache::FindOrCreateFontDraw(tagXFORM*, CW_DC*, tagLOGFONTA*) + 0x197 (gdiuser32) ...調べてみると、v7.2 当時に新しめの Linux ディストリビューションで動かそうとしていた人たちは同様のエラーに苦しんで居たようだ。そういえば当時の Quartus II は MainWin を使っていたので、色々苦しんだのを思いだしてきた…。
KDE は利用していないので関係なさそうだが、念のため Why does the Quartus II software version 7.2 main GUI window disappear or fail to open when running on Linux with a KDE desktop? [altera.com] のパッチを当てるが治らず。
そんな中、Device Support List [altera.com] を発見。直近の 13.0sp1 で Stratix II もサポートされていた。最新ツールは古いデバイスのサポートが後回しになっているだけで、忘れ去れているわけではない模様。
Quartus II v13.0 SP0 をインストールし .sopc を開いたが、SOPC Builder は無くなっているので、Qsys で開いて変換。無事開けた。
結局、v13.1 でも、Stratix II はサポートされていないが Qsys で .sopc を開くと、サポードデバイスへのリプレースを促され、デバイス依存の PLL の再設定をする程度で Stratix IV で Hello World が動いた。
January 9, 2014
VBoxService --timesync-set-threshold
正確には、直接修正するコマンドオプションではなく、ホストとのズレの閾値設定なのだが、コマンド実行時に閾値以上ずれていると結果的にすぐ同期された。
# VBoxService --help ... --timesync-set-threshold The absolute drift threshold, given as milliseconds, where to start setting the time instead of trying to adjust it. The default is 20 min. ... # VBoxService --timesync-set-threshold 60000 # VBoxService --version 4.3.6r91406参考文献
- Oracle VM VirtualBox User Manual - 9.14.3. Tuning the Guest Additions time synchronization parameters [virtualbox.org]
January 8, 2014
Synthesis options for SignalTap II in Altera Quartus II
reg hoge /* synthesys syn_noprune syn_preserve = 1 */;参考文献
- Quartus II Handbook Version 13.1 - Volume 1: Design and Synthesis - Chapter 16: Quartus II Integrated Synthesis [altera.com] - Quartus II Synthesis Options - Preserve Registers 及び Noprune Synthesis Attribute/Preserve Fan-out Free Register Node
January 7, 2014
Altera Quartus II 13.1 Install Memo
手元の RedHat 5.10 x86_64 では必要な 32 bit ライブラリが予めインストールされているようで、インストール不要だった。
Stand-Alone Software の Quartus II Programmer and SignalTap II [altera.com] はインストール後に $QUARTUS_64BIT や $QUARTUS_ROOTDIR など下手に環境変数を設定すると起動しなかった(CentOS 6.4 x86_64)。
CentOS 6.4 x86_64 では USB-Bluster Driver for Linux [altera.com] や USB-Bluster Driver for Linux [altera.co.jp] に書かれている udev のルールファイル(/etc/udev/rules.d/51-usbblaster.rule)のフォーマットは古く、
- Using Altera's USB-Blaster on Debian Linux [toronto.edu]
- Unable to lock chain (Insufficient port permissions) [stackoverflow.com]
- Altera Design Software [archlinux.org]
- Setting up the Altera FPGA environment on a Mac [blogspot.jp]
SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6001", MODE="0666", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", RUN+="/bin/chmod 0666 %c"と書き直すと、(ルートでなく一般ユーザでも)JTAG ケーブルを利用できるようになった。
January 5, 2014
Cocoa Emacs 24.3 - locale
Cocoa Emacs 23のIME patchでPreferred Languagesを参照させる [tempus.org] によると、System の環境が日本語になっていない場合は、
defaults write org.gnu.Emacs AppleLanguages "(ja, en)"などが必要だったらしい。この情報になかなかたどり着けなかったのだが、システム環境が日本語になっていない人は少ないのだろうか。Emacs のときのみアップルメニューが日本語になり、あまり見ないので構わないがなんだか気持ち悪い。
Subscribe to:
Posts (Atom)