トップ 最新 追記
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|10|12|
2009|02|03|06|07|10|11|12|
2010|01|02|03|04|07|09|10|11|12|
2011|01|03|04|05|06|07|08|10|
2012|01|06|08|09|10|12|
2013|01|02|03|04|07|09|11|12|
2014|01|03|04|05|06|09|
2015|04|
2016|01|08|
ここは旧えびめもです。えびめも2に移行します(2016/12/1)

2008年03月03日

VISTAで「送る」

右クリックメニューの「送る」にテキストエディタとか登録しておくと便利なのだけどVISTAで送るの位置がとてもわかりにくい。
C:\Users\ユーザ名\AppData\Roaming\Microsoft\Windows\SendTo
なので上に対して C:\Users\ユーザ名\ にショートカットを作っておくと便利

2008年03月04日

colinux-0.7.2

がリリースされていた。カーネルは linux-2.6.22 対応になっている。linux-2.6.22 + colinux-0.7.2 をビルドした。
sourceforge から coLinux-0.7.2-src.tar.gz
ftp.kernel.org から linux-2.6.22.tar.gz
を取得する。それぞれを /usr/src で展開する
   /usr/src/coLinux-0.7.2/
   /usr/src/linux-2.6.22/
となっている前提で、
1)パッチを合成する
   # cd /usr/src/coLinux-0.7.2/patch
   # cat `cat series-2.6.22` > /tmp/sumary.patch
   # cd /usr/src/linux-2.6.22/
2)パッチを当てる
   # patch -p1 < /tmp/sumary.patch
   # rm /tmp/sumary.patch
3).configを作る
   # zcat /proc/config.gz > .config
4)ビルド
   # make
5)インストール
できあがった vmlinux を c:\program files\colinux にコピーする
   # make modules_install
coLinuxでは SMPネイティブは無理のようだ
   # less arch/i386/Kconfig
   中略
   config SMP
           bool "Symmetric multi-processing support"
           depends on !COOPERATIVE

2008年03月10日

CAT760 ohci-hcd の rmmod で kernel_dump する

CAT760 kernel-2.6.15 で ohci-hcd を rmmod するとカーネルダンプする
sh7760-ohci sh7760-ohci.0: remove, state 1
usb usb1: USB disconnect, address 1
usb 1-1: USB disconnect, address 2
usb 1-1.1: USB disconnect, address 3
sh7760-ohci sh7760-ohci.0: USB bus 1 deregistered
sh7760-ohci: stopping SH7760 USB Controller
Device 'sh7760-ohci.0' does not have a release() function, it is broken and must be fixed.
Badness in device_release at drivers/base/core.c:83
理由
drivers/usb/host/ohci-sh.c で
void __exit ohci_hcd_sh_cleanup(void)
{
        platform_device_unregister(&usb_hcd_sh_dev);   ←ここでエラー
        platform_driver_unregister(&usb_hcd_sh_driver);
}
リソース(iobase,irq)を unregister しようとしているのでエラーが出ている。本来リソースは unregister しない。リソースの登録を setup760.c に移せば解決する。(TODO)

2008年03月13日

VISTA usbシリアルケーブル不調

VISTAにしたら USBシリアルケーブルが不調。とりこぼしたりする。ドライバが悪い可能性大。
型名 elecom UC-VRS03
メーカ純正のものでダメ。OEM供給元と思われる
ATEN UC232A
のドライバで試す。でもだめ。
素直に取り替えろという話もある。

2008年03月14日

音声コーデックできた

以前設計して中断していた音声コーデック基板のハード試作とドライバ試作ができた。コーデックは Phillips製でたぶん量産CDプレイヤー用だと思われる。

SH4 LinuxマイコンボードCAT760(MB760)用の、録音再生基板。試作1号機。勢いで作ったので超空中配線だ。SMTの水晶に足をつけて立ってる(笑)

SH7760のSSI(シリアルサウンドインターフェース)が録音もしくは再生どちらかしか使えないので外部に3stateバッファを入れて半二重とした。サンプリングレートはCD互換の44.1KHzがよかったのだけど水晶が手に入らなかったのでDVD互換の48KHzとした。時期リビジョンまでに44.1K用の水晶(44.1KHz * 256 = 11.2896MHz)を手配しよう。
    /dev/ssi_play
    /dev/ssi_rec
のデバイスとした。で、大方の予想通り
  # cat /dev/ssi_rec > data.bin       で録音ができ
  # cat data.bin > /dev/ssi_play      で再生ができる
う〜ん。こいうのが簡単にできるのがLinuxのいいところだなぁ。
  # cat dancingqueen48K.pcm > /dev/ssi_play
とかして遊んでみた。ノイズ対策を全くしていない基板だが意外と音がよくて驚いた。48KHz,16bit,Stereoデータ(=データレートは192KByte/secだね)の再生時に、気になるロードアベレージは 0.22くらい。ドライバを工夫したらもちっと下げれるかも。以外と低負荷だ。

低負荷達成

ほぼ測定限界以下のロードアベレージ 0.00 まで下がった。DMAと自動リングバッファのアイディアが活きた。
# time cat dancingqueen48K.pcm > /dev/ssi_play
real    3m49.402s
user    0m0.000s
sys     0m0.030s
スプールバッファ256Kバイト/一回の転送サイズ8Kバイトの条件で、3分49秒のPCMデータを鳴らして、ドライバ動作時間+CFからのファイル読み込み時間の累計はたったの30msec。

44.1KHz→48KHz変換

この試作基板のサンプリングレートは48KHzなのでCDからリッピングした44.1KHzのPCMデータはそのままでは再生できない。試しにやってみたら1音以上音が高くなって気持ち悪かった。変換ツールはヤマハさんが出しているフリーのものが便利に使えた。

http://www.yamaha.co.jp/ にいって検索窓に twe と入れると出てくる。2001年のものだけどVISTAでも動いたし、機能も十分だった。

SSI DMAドライバメモ

SH7760の DMA にはハーフ転送完了割り込みと全転送完了割り込みがある。マニュアル読んでみると AB 2面バッファ方式を意図していると読み取れる。しかし DMAには自動リピート機能もあるので、これをつかうと自動リングバッファと考えることもできると思われる。そう考えるたほうが半々なんて制約せずに確保した全バッファ分スプールできる。
んでリングバッファになるようにコードを作ったのだけど受信ですごくノイズが乗る。
#define RX_INP	(RX_SIZE-*DMAARXTCNT0)
while(RX_INP == RX_OUTP){
	// 受信リングバッファが空から少し待つ
	;
}
rx_inp = RX_INP;	// RX_INPは動いてしまうのでテンポラリ変数に控える
if(rx_inp > RX_OUTP){
	length = rx_inp - RX_OUTP;
}else{
	length = RX_SIZE - RX_OUTP;
}
とやるとノイズだらけ。どうやら DMAARXTCNT0 (受信DMA残りバイト数)が示す値よりも実際にメモリに書き込まれた情報が少ないようである。ここから先はマニュアルにも書いていないので憶測だけど、SDRAMへの転送ストアキューに入っているデータが数ライン分あって、それはSDRAMには到達していないように思う。仮に
while(RX_INP == RX_OUTP){
	// 受信リングバッファが空から少し待つ
	;
}
rx_inp = RX_INP;	// RX_INPは動いてしまうのでテンポラリ変数に控える
mdelay(1);   // 1msec待つ
以下同じ
とやって DMAからメモリに書き込まれただろうと適当に1msec待ちを挟むとノイズがない。む。

2008年03月22日

sh7760 シリアル(SCIF)ドライバ不具合

見つけてしまった。SH7760, SH7780, SH7785 のカーネルで、ある特定の条件でカーネルがフリーズしてしまいます。CAT760も含みます。対策など詳しくはこちら↓
http://www.si-linux.co.jp/wiki/cat/index.php?SH7760_kernel-2.6.15_sh-sci%C9%D4%B6%F1%B9%E7%BE%DC%BA%D9

2008年03月24日

colinuxブリッジ

colinuxをインストールするとき windosのブリッジ機能を使うことになる。windowsのブリッジミニポートは、ブリッジに参加している物理I/Fのmacアドレスの上位を 0x02 に置き換えたものをブリッジのmacアドレスとして使うようだ。そのため、DHCPサーバからみると新しいPCが増えたように見えてしまい、MACアドレスと縛りつけたDHCPでの運営ができなくなった。要注意だ。


2008年03月25日

VISTAでUSBシリアル

BicカメラでサンワサプライのUSB-CVRS9を買ってきた。パッケージにはVISTA対応と書いてあったが結局文字化けがおさまらなかった。ダメ。PL2303系はだめかもしれない。

CP2101のモジュールも silicon laboratory においてある最新のドライバでは化ける。

結局、CP2101+XP用ドライバ の組み合わせで正常動作した。