トップ «前の日記(2004年03月18日) 最新 次の日記(2004年03月20日)» 編集
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)

2004年03月19日

CAT709

ルネサスひどいじゃ〜ん。SH3のアプリケーションノートやエラータが出てないかなとルネサステクノロジのWebを見てたら、FAQの中の一つに目が留まった。
http://www.renesas.com/jpn/products/mpumcu/32bit/sh/faq/all_sh3/all_a_4.html
【質問】 
SH7709Sの消費電力が予想より大きいのですが? 
【回答】 
スタンバイコントロールレジスタ2(STBCR2)において、 
「ビット7:予約ビット 
プログラム中で必ず1を書き込んでください。」になっているかご確認下さい。 
本ビットを1にすることで、消費電流が抑制されます。 
ほえ?なんだこれは?SH7709Sハードウェアマニュアルを見てみると

STBCR2レジスタって初期値おもいっきり 0x00 じゃん。この仕様書を見てbit7を1にするんだと気がつくエンジニアがいたら天才だと思うぞ。なんで初期値が0なのよん。現在のiplプログラムもSH-Linuxカーネルも、このレジスタは一切触ってないはずだから0x00のままになってるだろう。JTAGデバッガで確かめてみたらやっぱり0x00だ。bit7を1にしろと言っているのでiplプログラムを書き換えて試してみた。効果があるのかどうか、、、

なんと効果てきめんだ!!

EB709の電源5Vラインで測定して、無限ループプログラムを走らせたときの消費電流。これが最大負荷になるはず。90mAも少なくなった!!

STBCR2=0x00STBCR2=0x80
ROMモニター360mA280mA
Linux起動後idle時190mA190mA
無限ループプログラム実行550mA460mA
idle時の消費電流は減らせなかったけど最大消費電流が90mAも少なくなった。
この差はでかい。
昨日マザボを作ったときに三端子レギュレータがかなり熱くなるといったけど、これで少しは改善されるかもしれない(EB709ではDC/DCコンバータを使っているので5V 460mAだけど三端子レギュレータを使った場合はもっと消費してしまうけどね)

ということで新しいipl-romをupした。Wikiページからどうぞ

CAT709

それにしてもこの話題(STBCR2レジスタの話)はたぶんSH-Linux界隈では初ネタではないかなぁ。このレジスタ誰も触ってないし。ルネサスひどいよ〜。仕様書には確かに1にせよと書いてあるけどリザーブビットは触らないのが普通じゃないの?(A^o^;;。ぜったい気がつかねーって。しかも予約ビットだから1にすると何が起こるかは全く書いてない(A^^;;

linuxとは直接関係無い...といえば関係ないのでsh-linux-mlに振るネタではないけけど。。。カーネルでこのレジスタを触るのもアーキテクチャ的に美しくないけれど、スワッパの asm("sleep")のところも少し直してアイドル時の消費電流も下げるところまでやってからmlに振ろうと思う。