フォト
2025年4月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      
無料ブログはココログ

« 映画 2001年宇宙の旅 船内でタブレットが使われている | トップページ | CEATEC JAPAN 2014に行ってきました »

2014年10月 6日 (月)

arduinoで利用可能な漢字フォントROMの製作

作業メモです。

以前、arduinoで大容量のメモリが使いということで調査した
SPIインタフェースのSerial Flash memory W25Q64VBを使って漢字フォントROMを製作しました。

16x16LEDドットマトリックス表示やグラフィック液晶なんかに使おうと思います。
Unicodeで利用できるようにしました。

フォントデータは、電子書体オープンラボさんで配布している
日本語 ビットマップフォント集のjapanese-bitmap-fonts-0.4.5.tar.bz2と
Little Limitさんが配布している美咲フォントを利用させていただきました。

8〜24ドットの半角・全角文字 14種類のフォントを詰め込みました。
Unicode対応ですが、半角と全角JISX0208のみなので7000字弱のみの対応です。
データサイズは1.73Mバイトとなりました。

W25Q64VBへ書き込みは、flashromで紹介されている「Serprog/Arduino flasher」を利用しました。
Arduinoをprogrammerとして利用し、flashromコマンドを使ってフラッシュメモリに書き込みします。
flashromでは「FT2232SPI Programmer」なんかも紹介しているので
秋月のFT232RL USBシリアル変換モジュール何かでも書けそうです。

以降、「Serprog/Arduino flasher」利用の作業メモです。
書き込みのためのホストとしてCentOS6.5を利用しました。

CentOS6.5上でのツールの入手と作成
1)flashromツール
下記の手順でコマンドを実行してソースのダウンロードをコンパイルを行う。
$ svn co svn://flashrom.org/flashrom/trunk flashrom
$ cd flashrom && make
$ cd ../

コンパイル時、幾つかのライブラリ不足でパッケージを適宜インストールする必要あり。
pciutils-develをインストールした。

#yum install pciutils-devel

2)arduino用プロフラムの入手と書き込み
下記の手順でコマンドを実行してソースのダウンロードをコンパイルを行う。
$ git clone git://gitorious.org/gnutoo-personal-arduino-projects/serprog-duino.git
$ cd serprog-duino && make && make upload

ここでは、arduinoのCPU AVRをターゲットとしたクロスコンパイルを行うので
avr-gcc等のavr toolchain環境が必要となる。
make upkoad でavrdudeコマンドにてarduinoへのブログラムの書き込みを行っている。
デバイスとして/dev/ttyACM0を使う。
/dev/ttyACM0のアクセス権限をいじる必要あり。

 The AVR GCC ToolchainのRedHatのインストールの説明のパッケージをインストールすることで
対応できる。
 #yum install avr-gcc

 #yum install avr-binutils
 #yum install avr-libc
 #yum install avr-gdb
 #yum install avrdude 

flashromコマンドを使った書き込み

/dev/ttyACM0のアクセス権限の変更は面倒なのでスーパーユーザ権限で行った。
書き込み時には、「Serprog/Arduino flasher」の説明のようにarduonoにSPI接続で
W25Q64VBを接続させる。3.3V駆動なのでレベル調整が必要。CD4050で対応。

Dscn3095

01
書き込むイメージについて
flashromコマンドは、フラッシュメモリのメモリ領域の全書き込みしかできないので
フォントデータ1.73Mバイト(1,817,162バイト)にダミーデータをつけてきっちと
8,388,608バイトのイメージファイルにしないとダメ。
ddコマンドでダミーを作成し後ろに結合して image.binファイルを作成した。

コマンドの実行

[root@marimo fontbin]# time flashrom -p serprog:dev=/dev/ttyACM0:2000000 -w ./image.bin
flashrom v0.9.7-r1850 on Linux 2.6.32-431.5.1.el6.i686 (i686)
flashrom is free software, get the source code at http://www.flashrom.org

Calibrating delay loop... OK.
serprog: Programmer name is "serprog-duino"
Found Winbond flash chip "W25Q64.V" (8192 kB, SPI) on serprog.
Reading old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.

real    3m32.206s
user    0m10.409s
sys     0m0.211s

3分32秒で書き込み完了。
当初、途中で止まったりベリファイエラーが発生したがコンデンサを入れることで
安定し回避できた。

イメージをROMから読みだして念のため確認

[root@marimo fontbin]# time flashrom -p serprog:dev=/dev/ttyACM0:2000000 -r test.bin
flashrom v0.9.7-r1850 on Linux 2.6.32-431.5.1.el6.i686 (i686)
flashrom is free software, get the source code at http://www.flashrom.org

Calibrating delay loop... OK.
serprog: Programmer name is "serprog-duino"
Found Winbond flash chip "W25Q64.V" (8192 kB, SPI) on serprog.
Reading flash... done.

real    1m47.215s
user    0m6.013s
sys     0m0.139s

[root@marimo fontbin]# cmp test.bin image.bin -l
[root@marimo fontbin]# echo $?
0

問題なし
bviコマンドでバイナリデータの中も見たが問題なし

取りあえず、正常に焼けたのでフォント利用のライブラリを作成します。

---
この記事には続きがあります。
  arduinoで利用可能な漢字フォントROMの製作(2)
 

« 映画 2001年宇宙の旅 船内でタブレットが使われている | トップページ | CEATEC JAPAN 2014に行ってきました »

arduino」カテゴリの記事

AVR」カテゴリの記事

表示器制御関連」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: arduinoで利用可能な漢字フォントROMの製作:

« 映画 2001年宇宙の旅 船内でタブレットが使われている | トップページ | CEATEC JAPAN 2014に行ってきました »