トップページ⇒tech
1001コメント331KB

●●●くみこの組み込み相談室●●●

■ このスレッドは過去ログ倉庫に格納されています
0001くみこNGNG
組み込み用ワンチップマイコンについて語りましょ。
STB/ゲーム機のゲーム以外のプログラムもOKよ!
0002デフォルトの名無しさんNGNG
なんかアレだな。
0003デフォルトの名無しさんNGNG
EMB開発環境ネタもここでおけー?
どこそこのコンパイラは腐ってるとか某のRTOSは終わってるとか。
0004デフォルトの名無しさんNGNG
H8もOKにして。この板って意外と日立社員がいるから
答えられるはず。
0005デフォルトの名無しさんNGNG
じゃ M16Cも追加キボー
0006くみこNGNG
>>4
当然H8もOKよ!H8/300でもH8/500でも何でもいらっしゃい!
SHシリーズだって歓迎しちゃうわ。
H16ネタなんて書いてくれたらくみこイッちゃうかも。うふふ。
0007デフォルトの名無しさんNGNG
う〜ん、組み込みチップって若い女性がやっているようなイメージが無いので、
なんだか35歳以上の女性が>>6のようなことを書いているのかな、と思ってしまって
いまいち萎えます。

・・・独り言なので、気にせずに。(;´〜`)ァゥゥ
0008ぷもぉNGNG
え、Embedded MLはいってないのかぁ〜、みんなぁ〜
0009くみこNGNG
くみこはHの経験無いから、Hの話いっぱい聞きたいな(^v^)
もちろんスーパーHの話もね!
0010デフォルトの名無しさんNGNG
H8を使った制御システムがあった。
ところが、ある日、人気のない工場で
突然H8で制御されたシリンダーが
動き出したのだ。
が、H8を組み込んだ基盤の電源は..
落ちていた....

なんとH8は空気中の電位差で動作して
いたのだった。(実話)
0011デフォルトの名無しさんNGNG
>>10
すげぇ!
低電力動作を極めるとそうなるのか!?(何か違う?
0012デフォルトの名無しさんNGNG
>>10
でもそれって致命的なバグ(?)だよねー

例えば安全装置的な物が動いてないのに
メインの部分が動き出したりするの(ワラ)
0013デフォルトの名無しさんNGNG
>>11 体温で動く時計もあるくらいだからな。
>>10 は電気がキャパシタに残ってたか他のボードからのリークかなんかだろうけど。
0014デフォルトの名無しさんNGNG
●●●くみこの組い込み相談室●●●

ハァハァ
0015くみこNGNG
ちなみに、くみこの経験はZ80、68k、i376,i860/960、某DSPあたりよ。
i860/960と某DSPは高級言語開発ね。
某DSPは標準の開発環境がトンチキでとっても苦労したの!

ハードウェア割込からソフトウェア割込を発行できなかったりとか、
統合環境のリンクマップエディタがROM化プログラムに対応してなくて
手でコンフィグファイル書き換えたりとか。
0016>1NGNG
ハードウェア板・・
の方が適当でない?行ったことないけどさ。
ネタだったら無視してくれ
0017デフォルトの名無しさんNGNG
Hシリーズはともかく、組み込み系はレアな感じがしますがそうでも
ない? ワシはゲーム系なのでさげるけど。

0018くみこNGNG
いやん。私これでもファームウェア職人よ。
ハード板なんて逝ったらマワされちゃうわ(鬱
0019デフォルトの名無しさんNGNG
くみこに組み込みたいハァハァ
0020デフォルトの名無しさんNGNG
マワされろ〜
0021デフォルトの名無しさんNGNG
組み込みだと優先度固定だから、ちっとも俺に回ってこない(T_T) >>20
0022デフォルトの名無しさんNGNG
つーか、機械・工学板じゃ.
0023デフォルトの名無しさんNGNG
いや、組み込みだからと言って必ずしもステッピングモータ回したりしてる
わけじゃないぞ。むしろそっちの方が少ないだろ。
家電とかの民生品でも業務用機器でも今ほとんどマイコン制御だし。
そういうののファームウェア技術者ってここ読まないのかな?
0024デフォルトの名無しさんNGNG
>>23
よんでるよ
Javaとかでくそつまんないしごともあるし
0025もうヤケNGNG
>Hシリーズはともかく、
Hしりーずよりも一般的な
TMS34020/TMS34030が使えるぞ
MC88000と同様、世間一般で通用する知識だ(藁
0026デフォルトの名無しさんNGNG
携帯関係だけどこれってくみこみ?
firmってほどしたまわり触ってないんだよなあ。
0027デフォルトの名無しさんNGNG
組み込み分野においてJavaを使おうとかいう
ふざけた流行がありますが
そのへんについてのくみこ嬢の見解をおねがいします
0028くみこNGNG
>>27
くみこ的には、C++使おうとかいうKittyGuyじみた発想よりはチョットだけましだと思うの。
あ、ターゲットがJavaネイティブプロセッサじゃない場合ね。
Javaネイティブが相手だったら(量産されてるのかしら?)いいんじゃない?
0029デフォルトの名無しさんNGNG
じゃあkaffe使うのはどうですか?>嬢

ついでに、その分野でwaba使ってる人はいるか?
0030デフォルトの名無しさんNGNG
今やってるのはCすら使ってなかったりする。
だってROMは4Kしか載ってないもん。
0031デフォルトの名無しさんNGNG
組みこみって言っても広いしなあ・・・
JavaネイティブCPUって富士通とか出してなかったっけ?
速度が必要な時はCコンパイラもあるっつー奴。
東芝なんかはJavaシステム載せたネット経由の
組みこみ機器監視用ユニットを外販してたっけ。
0032デフォルトの名無しさんNGNG
くみこさん、お願い。
今度MPC860を使うことになったんだけど
マニャアルが厚すぎて読む気しない。
わかりやすい解説とか使えそうなサンプルソースあったら教えて。
0033くみこNGNG
だ〜か〜ら〜
くみこはZ80とか68000とかしか経験ないのよん。
0034デフォルトの名無しさんNGNG
じゃあ消えてくれ
0035くみこNGNG
>>32
くみこが860やったときはほとんどCだったの。
勘弁してね(ワラ
0036デフォルトの名無しさんNGNG
Cでもいいからお願い。
0037デフォルトの名無しさんNGNG
今度、H社のNEW CPUでH69というのが出るらしいです。
呼び名は「エッチ・シックス・ナイン」で良いのでしょうか?
0038デフォルトの名無しさんNGNG
このスレ見つけて以来、言いたくて言いたくて仕方がなかったのだが…

くみこのくいこみ

あー、すっきりした!逝ってきます。
0039デフォルトの名無しさんNGNG
>>38
ガイシュツ晒しアゲ>>14
0040デフォルトの名無しさんNGNG
組み込みでOOPでの開発が流行だというけど、
実際やってる人いるの?
ちなみに、うちは永久に今のままみたいです。
0041デフォルトの名無しさんNGNG
>>40
え、やってないの?
0042デフォルトの名無しさんNGNG
プロセッサの種類とかターゲットの用途にもよるだろね。
μsを争うようなシビアなタイミング制御とかだとそもそも高級言語
自体敬遠されるだろうから。
0043デフォルトの名無しさんNGNG
32です。
くみこさん以外の人に聞きますけど、
MPC860使ったことある人います?
他で聞いた方がいいんでしょうか?
0044デフォルトの名無しさんNGNG
MediaGXのCPUはときどき止まるんですけど
どうにかなりませんか?
0045デフォルトの名無しさんNGNG
手がけたなかで一番小さいのは3072ステップ(1ステップ24ビット)
の電卓れす。実装器がFPGAだけでできてた。
あまりに構造が原始的すぎて、開発に関わったときはカルチャーショック
を受けたな・・。いわゆるマイコンの1つ手前のアーキテクチャだった。
0046デフォルトの名無しさんNGNG
MediaGXでCPUが止まったことはないが、
動きが遅いのでOSが止まって見えることもある。
MediaGXは割り込み命令が異常に遅いので、
割り込みが多発するような事態は避けた方がいい。
API呼出しが必然的に頻発するようなOSには不向き。
これはどうにもならん。
0047デフォルトの名無しさんNGNG
組み込みでC++使うってどのへんが狂酔?
インライン展開しまくって、テンプレートを上手に使えば、結構いけるんだけどな。
ああ、仮想クラスの使用はかなり限定よ。
0048デフォルトの名無しさんNGNG
設計段階からかなりコストを意識しないと大変なことになりそう。
で、結局制限が多すぎてC++を使う意味がなかった。なんて事態が目に浮かぶ。
0049デフォルトの名無しさんNGNG
設計者が処理系の挙動を把握してないのがいたそげ<<C++
naiveにくめばいいんだろうけど。
くみ込みゆえに ROM化しようとしたりして変なテクニック使いたく
なりそう。
0050デフォルトの名無しさんNGNG
>>47
組込用のCコンパイラは、たいていインライン関数が使えるように拡張されてんのよ。
0051デフォルトの名無しさんNGNG
C+ ただし、全部スタティックにしろと言わそうだな
005247NGNG
>>48 >>49
設計段階では、純粋にOOで設計(純粋なOO設計とは何か?でもめそうだね)
できるとおもうけど。設計時は、言語とは独立だしね。

コストの問題は実装時に考えれば、たいていすむことだと思うが。
フリーストアの使用, RTTIの使用, 仮想クラスの使用
はかなり制限うけるけどね。

>>51 全部staticということはないが、大部分がstaticという風に
なるのは確かだと思うね。 placement newが活躍しまくり。

ここまでやって、わざわざC++を使う必要があるのかは俺もわからない。
ただ、C++でも十分にパフォーマンスは引き出せるし、処理系の挙動も把握できるよ。

でも、OO設計して、OOなパラダイムで、Cで書いてやれば十分な気もする。

(>>50 なんか論点ずれてないか?)
0053デフォルトの名無しさんNGNG
>>52
いや、だから、「そうまでしてC++を使うメリット」についての言及なんだが。
「C++ならインラインが使える」というのはメリットにならんと。
0054デフォルトの名無しさんNGNG
>53
誰もC++のメリットがインラインなんていってないので、君は炒ってよし。
0055名無しさんNGNG
えーっと、組み込みっつーてもプリンターバッファから
レーザープリンターまで色々とあります。
一時期のプリンターはHDD内蔵なんて噂のあるやつまであり、
80286時代に20MHzオーバーの32bitCPUが乗っていました。
C++を使うメリットはやはり複素数や行列やBCDなどの非標準の
型を扱いたい場合や巨大なソースの物量をチョットデモ抑えたい、
あるいはUNIXやWindows用のソフトのソースを他のメーカーの
研究所から買って来て移植する場合、元のソースがC++
だったらという都合が考えられるでしょう。
ついでに、高スペックの石の開発環境てUNIXあるいは
それからの移植が多いみたい(AT&Tの商標を良く見掛ける)。
だからgccのフリーソフトでなおかつGUIがない場合、
以外と簡単に専用機に乗っかりそうですよ。
0056ちょっと興味ある門外漢NGNG
>>52
> フリーストアの使用, RTTIの使用, 仮想クラスの使用
> はかなり制限うけるけどね。

意外に制限あるのはC++的な難しい機能だけみたいですね

「フリーストアの使用」とはデフォルトのnewとかmalloc
が使えないということでしょうか?
overloadして、static配列からでも確保すればOK?
仮想クラスは多重継承使わなければOK?

virtual functionを使ったpolymorphismとか、
例外処理とかは制限ないもんなのでしょうか?

# 例外とかいうと割り込みがかかりそう
0057デフォルトの名無しさんNGNG
例外処理はただのジャンプなので問題なし。
virtualは気を付けないとコードの増大を招く。
メモリがタイトな条件だと使いにくいね。
0058デフォルトの名無しさんNGNG
C++?十年早い。C//を使え。
0059デフォルトの名無しさんNGNG
仮想関数は、ほんとによーーく考えて使わないとねえ。
無駄にばしばし使うと、メモリにもパフォーマンスにもけっこう響いてくるね。
0060ちょっと興味ある門外漢NGNG
実行時のオーバーヘッドだけでなくてメモりにも効いてくるのか、
virtualの使用に制限があるとOOっぽくなくなって、
ちょっとげんなりしちゃいますね
例外処理はOKですか、意外です

テンプレートも結構いけるみたいですね
STLのvectorとか、見た目はJavaのCollectionAPIみたいになるけど
iterator使ったとこなんかは、ポインタ演算に展開されちゃうんですかね
0061デフォルトの名無しさんNGNG
>>60
ただ、スタックフレームを消費するから、あんまり階層が深いと
タイトなスタックの場合悲惨なことが…
0062デフォルトの名無しさんNGNG
アセンブラ出力を確認せよ>>60
0063デフォルトの名無しさんNGNG
テンプレートはコンパイラさえ対応すれば問題がない。
STLはアロケータをきちんと定義して、メモリ確保のところを細工する必要はあるけど。
0064デフォルトの名無しさんNGNG
Cで開発出来る規模というと ROM100K RAM20K 程度からでは?

最近のH8とか 三菱 M16C クラスならC使っても快適ですよね

C++で開発出来る規模はどの程度からかな?
0065デフォルトの名無しさんNGNG
RISCだともうちょっと小さいサイズでもCを使いますよ。
0066デフォルトの名無しさんNGNG
ソフトウェアでsigned shortからfloatに変換するにはどうすればいいでしょう?
だれか5歳の子に説明するように判りやすく説明してください
0067デフォルトの名無しさんNGNG
>66
Q1、ライブラリは使えないの?

Q2、floatの形式は判ってるの?

Q3、そもそも何の為に変換するの? 他とのデータ変換?
  内部表現なら自作なりした方がいいんでは?
0068デフォルトの名無しさんNGNG
IEEEなら
MSB 符号
nbit 指数部
nbit 仮数部

だから、
1)整数のMSBを符号ビットとする
2)整数の絶対値を求める=負数なら符号反転
3)CFが1になるまで左シフトとして仮数部とする。
4) そシフトした回数と整数のビット幅から指数部を決定
0069デフォルトの名無しさんNGNG
>67
Q1->
ライブラリというかハードウェアでの変換です
Q2->
IEEEです
Q3->
ハードウェアだとレジスタを一時スタックに退避しロード時に
ハードウェアが変換するようなので遅くて使えません

>68
1)は問題ないです
2)もレジスタ上のexpで問題ないです
3)4)をループ、分岐を使わずやりたいのですが何か良い方法ありませんか?
0070デフォルトの名無しさんNGNG
CFかMSBが1になる迄のシフトとその回数を計算する命令が
CPUによってはある場合があるけどね

http://piza.2ch.net/test/read.cgi?bbs=tech&key=987068177

バレルシフタを持ってるCPUにしか使えないけど

比較回数を減らすアイデアとしては 2分法で検索する方法があると思うよ
16ビットなら最初に$0100 と比較 より大きいなら $1000と比較てな調子で
MSBの位置を検索するって方法だけど、
0071デフォルトの名無しさんNGNG
>>69
なんか凄い条件ですね。
桁数を求める部分に的を絞って
とりあえずプログラム板なのでプログラム的解決を。

非常に呼ばれる頻度が高くあらゆる犠牲をいとわないのであれば
0〜32768 に対応するテーブル(約32K or 約16K Bytes)を作って検索一発。
1回だけ src >= 0x4000 で分岐すればテーブルサイズ半分。

これに耐えられないのであれば小さなテーブルで済ます。
以下4桁ずつ調べる例。

U8 GetKeta(U16 src)
{
static U8 aKetaTable[16] = {
/* 0 1 2 3 4 5 6 7 8 9 a b c d e f */
0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4
};

#if 1 /* 好きな方を選んでください */
{
int nShift;

for(nShift = 12; nShift >= 0 ; nShift -= 4){
U16 tmp;
tmp = src >> nShift;
if(tmp > 0) return(nShift + aKetaTable[tmp]);
}
}
#else
{
if (src >= 0x1000) return(12 + aKetaTable[src >> 12]);
else if(src >= 0x0100) return( 8 + aKetaTable[src >> 8]);
else if(src >= 0x0010) return( 4 + aKetaTable[src >> 4]);
else return( 0 + aKetaTable[src >> 0]);
}
#endif

return(0);
}

どうでしょう。
返り値は 0〜16 の値を取ります。
とりあえずアルゴリズムだけ。
オプティマイズは環境依存で。
1要素1Byteのテーブルを使っていますが、
もっとつめたほうがいい場合も結構あると思います。
分岐なしは自分の脳みそでは無理です。

ちなみに、普通はキャッシュがあるので、
16bit程度だったらアホみたいに
ループして検索した方が良いと思います。
007271NGNG
うわっ、スペースが全部消えてる。
タブだと消えちゃうかもと思って
全部スペースにしたのに。
0073くみ子NGNG
くみこ何処行っちゃったのかしら?
せっかく有意義ぽいスレなのに。
戻って来るまで同名のよしみで引き継ぐわ。
ARM7とK4しか知らないけど大丈夫かしら?心配。
0074久美子NGNG
久美子のくみこみリンク集
http://www.mit.pref.miyagi.jp/embedded/link.html
0075うぐぅNGNG
普段、OS9/SH4の上で動作するのをC++で開発してます。
画像描画チップが遅いので苦労するっす。
OS9が動いているので、シェルでプロセスの一覧とかを出せるので、ある
意味デバッグはやりやすくなったけど、その分、性能的には遅いってのも
あるってことで苦労するなあ。

今日、同じハードの上で、WindowsCE3.0英語版で動いているのをみた。
でも、やっぱ遅いや。ハードの性能がいまいちなんだろうな。

前のハードウェアでは、RAMの容量も限られてたから、プログラムも
フラッシュメモリ直読みで実行していたけど、今のシステムは、RAM
にコピーして実行しているから、もっと速くてしかるべきなんだけど。

SH4だから速いってのを期待してしまうけど、その分、実行する内容も
増えちゃって、ソフト設計の問題もあったりで、やっぱダメダメな感じ
だな。

やっぱ、世間の組込み用RTOSは何が主流なんだろうか・・・。
まあ、主流がなんであれ、うちの商品とは関係ないだろうけどさ。
0076ちょっと興味ある門外漢NGNG
cygnusでeCosというRTOSがあるけど流行らないんでしょうか?
ITRON互換、OpenSourceでおもしろそうなんだけど
0077くみ子NGNG
>>75
OS/9って事は、ファイルシステムが必要ね。
今の業界のトレンドよね?くみ子は経験無いけれど。
OS/9はRTOSじゃないから組み込みとしてはかなり大規模なのでしょうね。
うらやましく感じちゃう。

>>76
eCosの実装例はあるわよ。フリーだから常に選択枝には入れるべきだと思うわ。
ただ世の流れはJTAGを用いたRISCマイコンでの実装だから、デバッガの充実から
して、μITRONの選択になってしまうよね?
小規模開発ならeCosは悪くない選択だと思うわ。
0078デフォルトの名無しさんNGNG
μCLinuxのスレッド立てても怒らない?
0079デフォルトの名無しさんNGNG
もし組み込み用C#が出てきたらどうしよう・・・
0080:デフォルトの名無しさんNGNG
くみこってネカマですか? それとも40歳のおばさんですか?
0081くみこNGNG
本物はネカマよん。
くみ子の事は知らないけど(w
0082 NGNG
OS−9ってRTOSじゃないの?
0083組子NGNG
>>82
OS-9はRTOSじゃないわ。
ついでに言うとWINDOWSもLINUXもBSDもRTOSじゃないわよ。
最近のトレンドはRTOSのタスクの一つとしてLINUXを動かすことね。
そういう設計ってあこがれちゃわない?
0084デフォルトの名無しさんNGNG
>>83
別に。
0085デフォルトの名無しさんNGNG
OS-9は RTOSって中学校のころから叩き込まれたんですけど。
そのころは RTOSって意味知らなかったけど、タスクの優先度が
固定できるってぐらいの意味か?

あと eCosって licenseは大丈夫なの? GPLだったりしない?
0086デフォルトの名無しさんNGNG
>>83
常識
0087くみ子NGNG
賑わっているわね。くみ子もネカマよん。組子は?

>>83
ルーターとかそういう設計が多いみたいね。良く知らないけれど。
TCP/IPのプロトコルスタックやアプリケーション層を流用できるからお徳よね。

>>85
eCosのライセンス?
大丈夫よ。組み込んでしまえばバレないって主任が…え?ごめーん、
これ言っちゃいけないんだって。ナイショにしてね。
ライセンスとかって、私弱いんだ。詳しい人教えてくれないかなぁ。
0088 NGNG
WINDOWSとLinuxがRTOSじゃないのはわかるけど、
OS-9はRTOSじゃないんでしょうか?
あまり詳しくは知らないけど、だいたいRTOSとして紹介されてますよね?
0089デフォルトの名無しさんNGNG
そもそもRTOSの定義自体、色々あるらしい。
詳しい人解説きぼーん
0090デフォルトの名無しさんNGNG
>>16
組み込み=制御系でないの?
無知でゴメン
0091デフォルトの名無しさんNGNG
携帯とかか?
0092くみこNGNG
>>90
広い意味では同義ね。
狭義では、家電みたいにFWの存在を意識させないスタンドアロンでソリッドな
用途を「組込」、システムを構成する機器のひとつとして保守端末を接続でき
たりするような装置の用途を「制御系」て言ったりするわね。
0093 NGNG
>>89
割り込み応答時間とディスパッチにかかる時間の最悪値が保証されてるOS
と考えてるけど違うかな?
組み込みで使う場合はだいたい数μsecくらいだと思うけど。
0094デフォルトの名無しさんNGNG
>>93に加えて、タスクスケジューラの振る舞いが規定されていて、
あるタスクが単位時間内にどれだけの実実行時間を得られるか、
きちんと設計可能なことも重要(時に93と若干矛盾するけど)。
0095デフォルトの名無しさんNGNG
とあるアプリを作るバッチで

FOR %%A IN (*.obj) DO ECHO -+%%A &>>LIBMK.fil

てな調子で LIBMK.filを作って
 TLIB myLib.lib @LIBMK.fil
とライブラリを作ってたのですが、
windows2000では巧くゆきません
理由は & が区切りとして処理されてしまう為です。

何か巧い方法はないでしょうか?
009695NGNG
スミマセン ^& と ^ を付ければいいのを見つけました
0097くみこNGNG
>>94
強制タスクスイッチイングが付いてれば完璧だわ。

>>95-96
なによ!失礼しちゃうわね!スレ違いの上に自己完結かよゴルァ!
009895NGNG
ありゃ、申し訳ない

突然 7年前のコードの事で問合せが来たんだけど 今使ってるのがwin2000だった
もんだから
最近、プリンタポートをパラレルで使ってたのを win2000で動かしたいって言われて
win2000入れたばかりなもんで勝手がわからんかった
こっちは結局、 gwiopm.sys か giveio.sys か悩んで gwiopm.sys にしたけど
ハードが直接たたけるようになると win2000もいいもんだね

で、最近DSPも触りだしたんだけど、 これ、マジでExcelでコード書きたくなるね
0099くみこNGNG
>>98
フェッチパケットをパイプラインステージに並べて・・・ってことかしらん?
3次元コーディングね。脳味噌が沸騰するわ。
010095NGNG
いや そうじゃなくて アセンブラでフィールドが6つも7つも8つもあるんだよ
しかもそいつを カンマで区切って書かなきゃならん

こりゃ専用のエディター作った方がいいかも
010195NGNG
あ、もちろん、
先行した命令の あるレジスタ書込みの後 nクロック後に有効になるなんて
特異例は 当然山のようにある しかも nが操作によって可変なんてね(^^;
■ このスレッドは過去ログ倉庫に格納されています