●●●くみこの組み込み相談室1.0●●●at TECH
●●●くみこの組み込み相談室1.0●●● - 暇つぶし2ch200:デフォルトの名無しさん
08/03/09 05:39:44
その頃には自由の女神は砂漠に埋まってるな

201:デフォルトの名無しさん
08/03/10 18:36:46
200年くらいじゃ猿が支配するのは無理だろう

202:デフォルトの名無しさん
08/03/10 18:55:01
でも40年くらい前の装置が今でも平気で使われているんだよな。

この前ベルト式のが動いてるのを見たよ。
あれって昭和のはじめだよな。たぶん。

俺達の作ったものが50年60年先にも、もしかして使われてるかもしれないとは考えておかないとな。


203:デフォルトの名無しさん
08/03/10 19:04:42
こないだ、DOSアプリ、AX→DOS/Vの移植をした。
まだまだよw

204:デフォルトの名無しさん
08/03/10 19:09:11
>>202
ベルト式のなに?

205:デフォルトの名無しさん
08/03/11 01:56:41
技の1号

206:デフォルトの名無しさん
08/03/11 08:08:50
工場の動力伝達かなぁ?

207:デフォルトの名無しさん
08/03/11 10:05:01
昔はモータやらエンジンは高価だったからノコや旋盤やらを上からベルトで駆動してたって奴か?

農機具でエンジンから脱穀機の動力伝達にベルト使ってるの実家でやってたの覚えてはいるけど
今ではコンバインだもんな。

208:デフォルトの名無しさん
08/03/11 21:10:32
自動車エンジンは今でも動力伝達にベルトを使用してますが何か。

209:デフォルトの名無しさん
08/03/11 21:37:19
それ駆動軸じゃないし

210:デフォルトの名無しさん
08/03/11 21:42:38
えーと、どこかに駆動軸限定と言う書き込みはありましたでしょうか。

211:デフォルトの名無しさん
08/03/12 08:44:51
>>210
何の話をしてたんだよw

212:デフォルトの名無しさん
08/03/12 08:50:15
ファンベルトだろ。

213:デフォルトの名無しさん
08/03/12 10:32:37
横置きエンジンのファンはほとんど電動だしな

214:デフォルトの名無しさん
08/03/12 23:32:34
その場合はオルタネータだけを回すからオルタネータベルトって言う罠。

215:デフォルトの名無しさん
08/03/14 14:22:36
ファンドルネCVTはたしかにベルト駆動だが

>>208
が主張したいのはおおかたオルタネータ駆動だろw




つーか脱線しすぎ!

216:デフォルトの名無しさん
08/03/19 09:13:23
H8/2378で、ルネサスのcコンパイラ使ってます。longのデータがxxxxx6番地で、4の倍数
ではない境界にあっても、石のアーキテクチャ上は大丈夫ですよね?

また、このデータを割り込みとメインループ両方から触るのですが、32bitレジスタでLD/ST
されるので、タスク側から触るときにも割り込みマスクせず触ってよい、と認識していますが
合ってますか?(16bitレジスタで分けてLD/STされるならマスク要、と考えました)

217:デフォルトの名無しさん
08/03/19 09:42:21
1、
H8は内部16ビットバスの8bitマイコンだから32bitデータは偶数から始まればよく
32bitデータでも4の倍数である必要はない。

2、
H8/500系ならメモリへの加算などが出来るのですが
H8/300系では 演算は基本的にレジスタです
ですから1ビットのフラグ処理や TASをアセンブラから使う場合を除いて
割り込み側で見る値をメイン側で書き換えるなら割り込み禁止が必要です。


218:デフォルトの名無しさん
08/03/19 09:53:34
書き間違えた。

○割り込み側でも書く値をメイン側で書き換えるなら割り込み禁止が必要です。

両方から触るというのを双方から書き換えると読んだので、割り込み禁止が必要と書きました。


たとえばメイン側で
cnt++;
するのを割り込み側で見るだけの場合は、割り込み禁止する必要はありません。
cnt++は、
偶数番地から始まっていれば32bitレジスタにロードされ、
inc命令を実行してから STされます。
LD/STはそれぞれ2回のメモリアクセスになりますが、
その実行中に割り込めません。

219:デフォルトの名無しさん
08/03/19 10:41:03
HEWって未だにSTL未対応なんでしょうか?

文法的には、テンプレートとネームスペース未対応?

220:デフォルトの名無しさん
08/03/19 11:04:00
>>218 ありがとうございます。割り込み側では++/--するが、メイン側では = n; しかやらない
というケースでは割り込みマスク要りませんよね。

221:デフォルトの名無しさん
08/03/20 17:09:59
このスレの住人なら知っていますね、あの糞開発ツールのことを

・自分のプログラムのバグなのかコンパイラのバグなのかわからない
・他の仕事に応用できない糞開発ツールの独自世界を必死に学習している
・テキストエディタで書いたほうが効率的なのに糞UIツールを懸命に使っている
・糞開発ツールを批判すると「性格が悪いから糞ツールを批判するんだ」と言われる

糞だけど、政治的な理由で無理やり使わされているんですよね。
もう、あんな厨の作った糞ツールを我慢して使うのはやめましょう。

・糞開発ツールを部下に押し付ける上司の命令は無視しましょう。
 上司は糞開発ツールが使われる実績を作ることであの会社のごきげんをとっているのです。
・あの糞開発ツール提供会社には「おたくの糞開発ツールは話にならない」と突き放しましょう。
 バグレポートなどしてはいけません。改善要求などもってのほかです。
 あの会社はあなたたちのことをテスター/モルモットとしか思っていません。
・あの会議で「糞開発ツールを使ったら生産性がxx%アップしました」
 なんて話が出たら力強く机を叩き、会議室を出ましょう。
 あの人たちは糞開発ツールをマンセーすることで立場を確保しているのです。

糞な開発ツールを糞だと言える、そんな当たり前の環境をみんなの力で取り戻しましょう。

222:デフォルトの名無しさん
08/03/20 17:11:37
コピペ君って馬鹿だな、まで読んだ。

223:デフォルトの名無しさん
08/03/24 11:54:46
コピペ警備員はえー

224:デフォルトの名無しさん
08/03/29 04:44:49
HD64180のタイマについて質問です。タイマリロードレジスタ:CH0=0Eh,0Fh CH1=16h,17hで、
64180のpdfではどちらがLow/Highか明記されていませんが、Z80180のpdfを見ると、
偶数番地がLow、奇数番地がHigh と理解してよいようです。 ある機器の内部I/O初期化の所
; ;TIMER0=10MS
LD A,000H
OUT0 (0EH),A ; タイマーリロードレジスターチャネル 0
OUT0 (0CH),A ; タイマーデータレジスター チャネル 0L /20
LD A,0CH ; 12288KHZ/20=614400 /3072=200Hz:5ms
OUT0 (0FH),A ; タイマーリロードレジスターチャネル 0
OUT0 (0DH),A ; タイマーデータレジスター チャネル 0H /20
; ;TIMER1=120US FOR BUZZER
LD A,025H ;/37 12288KHZ/2500H=1297Hz
OUT0 (16H),A ; タイマーリロードレジスターチャネル 1L
OUT0 (14H),A ; タイマーデータレジスター チャネル 1 /20
LD A,00H
OUT0 (17H),A ; タイマーリロードレジスターチャネル 1H
OUT0 (15H),A ; タイマーデータレジスター チャネル 1 /20
このように書かれていました。 CH0のコメントからはCH0=0C00hで分周、と読めます。

CH1のコメントに2500hで分周と書いてありますが、Low側に25h、High側に00hを書いています。
ブザー音のピを作る値なのですが、/20無しで12.288MHz/2500h=1297Hzってのも??です。
これ、動いている機器のコードなんですけど、自分の目が信じられなくて聞いてみました。
私がどこか誤読してるのか? pdfにウソがあって、CH1は偶数番地がHigh-Byteなのか?

225:デフォルトの名無しさん
08/03/29 09:25:06
コメントが間違っているんじゃないのかな 12.288E6/($25)/20/2 で 8.3 KHz 出力じゃないの?

226:224
08/03/29 16:30:36
8KHzじゃピの音には聞こえないので、それは無いですね。64180のタイマはΦ÷20しかないし。
分周比の式はΦ/20/リロードレジスタなんですよね。 このシステムも、Φ=12.288MHzなんですけど、
どこかで半分になって6.144をベースにしてるみたいだし、ホントワカランorz

227:デフォルトの名無しさん
08/03/29 22:51:57
8kHzてふつーに聴けるでしょ?

228:224
08/03/30 05:35:39
計算し直してみました。レジスタの設定値信じるなら、8KHzしかありえないですね。
私が作った機器だとタッチトーンは3KHz前後が多かったので、思いこみがあったようです。
水晶が12MHzで、64180の中で半分になると理解すればよさそうですね。
CH0のほうも、コメントは5mSになってますが、インターバル処理のほうは10mSとコメント
されていました。

12.288MHzの石が生産中止になり、12.28MHzのものしかなくなるのだそうで、その影響を
調べてるとこなんです。uartの信号はあまり長いフレームでなければ(80キャラ以下)いけそう。
ソフトタイマが0.7%遅れるのは許容できなそうですよね。100mS毎とか1秒毎とかの処理が
いっぱいあるし。全体の処理もぎゅう詰めなので、CPUパワーが0.7%落ちただけで機能不全
を起こす処理が出そうで怖いのなんの・・・

229:デフォルトの名無しさん
08/03/30 13:19:37
>>228
ポートに出力させて、DSOで見ればいいじゃん

230:デフォルトの名無しさん
08/03/30 13:52:49
そうですね。空きポートに1か0を書くコードが残っているので、過去にもそうやって確認した
ことがあったようです。DSOが何か判りませんが、オシロみたいなもんですか?

231:デフォルトの名無しさん
08/03/30 14:07:24
>>230
つ「デジタル・ストレージ・オシロ」

232:デフォルトの名無しさん
08/03/31 10:17:29
HD64180の資料なんてどっかにしまいこんでしまったけど
TOUTをトグルで使ってるのか、割り込みかけてソフトでどっかのピンをトグルさせてるのか
どっちにしても 1/2は出力段階でされる。

だから、もしTimerの入力クロック段階で1/2されてるなら 4KHzって事になるぞ

233:デフォルトの名無しさん
08/03/31 18:03:16
>>232 トグルで1/2になるのを忘れていました。4KHzならちょい高めだが聞こえますね。
ただC4dip付近のトーンになるのが私的にはイクナイですね。

234:デフォルトの名無しさん
08/04/02 11:57:12
確かに8KHzあたりが聞き取り難くなってる人はいるから8KHzは使わないだろな
4KHz以下でないとね


235:デフォルトの名無しさん
08/04/02 23:13:24
ある一定の時間ループを回し続けたいんですが
どんな方法があるんけ?
GW中の自由課題でLEDを光らせたいんです。


236:デフォルトの名無しさん
08/04/02 23:25:53
while(!TimeOut){}

237:デフォルトの名無しさん
08/04/02 23:30:04
組み込み系をかじりたいのですが、雑誌InterFaceの付録に付いてくるような
基盤はどこで買えるのでしょうか?
予算の関係もあり、出来ればICEとか大がかりな装置は不要な物がいいのですが。

よろしくお願いします


238:デフォルトの名無しさん
08/04/02 23:46:59
>>235
自分はどうやって計ってるんだ?
同じこと汁ヨロシ

239:デフォルトの名無しさん
08/04/02 23:57:00
>>235
細かいことを言い出すときりがなくなるんだけど
CPU のクロックが10MHzから100MHz程度までの場合

1. 数マイクロ秒程度ならCPUのパイプラインのストール時間まで含めて
インストラクションのクロック数を求めて空ループ回る
2. それ以上10ミリ秒未満なら適当なハードウェアタイマの割り込みに頼る
3. それより長い場合OSに頼る

ってのが定石的な手法だと思われる


240:デフォルトの名無しさん
08/04/03 00:40:21
>237
たとえばこんなやつ?
URLリンク(www.rakuten.co.jp)

241:デフォルトの名無しさん
08/04/03 00:51:24
>>237
秋月通商とかどう?

242:デフォルトの名無しさん
08/04/03 02:25:01
>>237
無いようでいっぱいあったりする

URLリンク(akizukidenshi.com)
URLリンク(www.marutsu.co.jp)
URLリンク(www.adwin.com)
URLリンク(www2.u-netsurf.ne.jp)

243:237
08/04/03 07:36:33
サンクス、出勤中なんで見れないが14時間後くらいには帰宅出来ると思うので
後でゆっくりリンク先見てみます(´ω`)

244:デフォルトの名無しさん
08/04/03 08:18:17
MCUのメーカーが直に評価ボード出してるケースも多いんじゃない?

245:デフォルトの名無しさん
08/04/03 08:41:38
でもそういうのは代理店とお付き合い無いと買いにくいんだろね。
サンハヤトとかが扱ってる分なら買えるんだろうけど
URLリンク(www.sunhayato.co.jp)

246:デフォルトの名無しさん
08/04/03 23:18:49
あの、組み込みってどうやって勉強すればいいんでしょうか。
今の会社で組み込みやらされそうなんですが、本を読んでも具体的に分からない。
割り込みとかスタートアップルーチンとか意味はわかるんだけど、いまいち内容がつかめない。

それと組み込みはCが主流らしいのですがC++も勉強したほうがいいんですか?
Cは一通り理解していて、C++はかじった程度なんですが・・・。

247:デフォルトの名無しさん
08/04/03 23:24:48
>>246
まずは会社の人間に聞け

248:デフォルトの名無しさん
08/04/03 23:32:06
とりあえず教育用のキットを買ってくるんだ

249:デフォルトの名無しさん
08/04/04 00:20:03
とりあえず俺に授業料の前納汁w

250:デフォルトの名無しさん
08/04/04 23:26:46
>>246

うちの会社に発注しませんか?
あと、子会社で組込み初心者向けセミナーやってまっせ。


251:デフォルトの名無しさん
08/04/05 15:01:20
ぼったくるの?

252:デフォルトの名無しさん
08/04/05 16:12:27
非常にリーズナブル、良心的価格で教えますよ

253:デフォルトの名無しさん
08/04/05 16:29:20
幼稚園児レベルの教育が受けられて幸せ?

254:デフォルトの名無しさん
08/04/05 18:54:41
幼稚園入園前レベルには。

255:デフォルトの名無しさん
08/04/05 22:09:33
ていうかセミナーだけでかなり絞れるな
絞らないけど

256:デフォルトの名無しさん
08/04/06 00:41:30
勢いで行ける世界&
自己確立の奥行きがないとな

257:デフォルトの名無しさん
08/05/11 04:21:51
振動子と発振器ってどう違うんですか?
12.688MHzの水晶が製造中止になって、13MHz*ぐらい*のに変わるのだが、uartは
ずれないかな? とか ダイナミックループでタイミング取る処理ないかな?
とか聞いたことがあるので。

258:デフォルトの名無しさん
08/05/11 05:08:51
>>257
bps次第じゃない?
計算したら?

259:デフォルトの名無しさん
08/05/11 08:36:56
>>257
振動子: 水晶とか表面波フィルタ素子に電極をつけたもの
高精度の発振を起こすときに使用する受動素子
発振器: 持続したほぼ一定の周波数の交流を作る回路またはモジュール

振動子は単体で発振することはできない

コンピュータ関連で発振器と言う場合, 水晶振動子もしくは表面波フィルタ素子
を使用した発信回路を小型のパッケージに入れたものをさす場合が多い


260:257
08/05/11 15:36:21
>>259 ありがとう、それで少し想像がつきました。たぶん水晶が高いので、水晶振動子に
よらない発信回路を採用したが、水晶ほど正確なHzは出せない、ということなのでしょうね。
そういう発振器はどんな原理のものなのでしょうか?

261:デフォルトの名無しさん
08/05/11 17:05:26
>>260
> たぶん水晶が高いので、水晶振動子によらない発信回路

いや、いくらなんでもそれはないと思うぞ…
100ppm 程度の水晶入った発信器なんて安いし…
表面波フィルタ使った奴だとさらに安いし…
今時、水晶とか表面波フィルタなんて周波数の設定思いの
ままだし…
ちょっとした回路あれば周波数なんて好きに合成できるし…

出荷用の調整とか考えたら、コイルとコンデンサと抵抗を
使った発振回路の方がはるかに割高


262:257
08/05/11 17:38:59
資料が見つかりました。12.288MHz-->12.3MHzの代品 でした。 現代の素子のほうが正確
なら解るけど、なんでアバウトになるの? ってお客に聞いたら、何とか・・・って説明もらった
のですが詳細は忘れてしまいました。量産用の基板だから一定のクロックを付けるので、
調整の効くようなクロックは付けないとおもいます。

263:デフォルトの名無しさん
08/05/11 17:58:08
>>262
別になんでもいいんじゃない?なにか問題?
UARTなら、言ったとおりbps次第
1200bpsならぜんぜん関係ないけど、5Mbpsなら大問題じゃね?

264:デフォルトの名無しさん
08/05/11 21:10:32
いわゆるセラロックにしたんでしょ。
水晶振動子はバラ売りで100円以上~400円くらいする
セラロックは20円~40円

265:257
08/05/12 02:25:05
uartは4.8Kなんでだいじょうぶです。セラロックぐぐってみました。それみたいです。
水晶に比べると原理的に精度が劣るみたいですけど、その辺のことはヒットが多すぎて
見つけられませんでした。20円~40円の奴の精度は0.5%くらいでしょうね。

内蔵タイマを使って1秒毎の処理とかあるのですが、0.0977%速くなるだけなので、そのまま
使える、とソフトを調査して報告したことがあります。
原理的になんで水晶より精度が劣るのか簡単に教えてくださいませ。

266:デフォルトの名無しさん
08/05/12 04:41:55
>>265
セラミックで、温度変化に弱いんじゃなかったかと思う

267:デフォルトの名無しさん
08/05/12 04:45:33
>>265
というか、セラロックは、ホビーレベルでは普通に使ってるが
温度変化が激しいと厳しいかもしれないな

268:257
08/05/12 17:03:11
ありがとうございます。セトモノなのに、温度が上がると柔らかくなるんですかね・・・

269:デフォルトの名無しさん
08/05/12 17:32:24
>>268
セラミックス=瀬戸物なんて、旧時代過ぎる発想だな。
この場合のセラミックスは金属酸化物などを高温で焼き固めたもの(焼結体)だね。
セラロックに使われるのは、チタン酸ジルコン酸鉛だね。

270:デフォルトの名無しさん
08/05/12 17:36:10
ついでに言えば、結晶体である水晶に比べるから不安定なのであって、
LC発振回路なんかに比べればよっぽど安定しているよ。

271:デフォルトの名無しさん
08/05/13 04:09:54
焼結体で、結晶と比べて数桁のオーダー程度の精度にできる、ということは粉の細かさや
配合、焼結温度などをもの凄く正確に制御できるのでしょうね。天然素材に人工素材が
追いついて行く過程がこの分野でも見られるようで、興味深いです。

272:デフォルトの名無しさん
08/05/13 04:14:40
>>271
目的のものを作るのじゃなく
作ってから選別するんじゃね?

273:デフォルトの名無しさん
08/05/14 03:05:08
それだと歩留まりが問題になりそう・・・

274:デフォルトの名無しさん
08/05/20 04:29:34
北陸先端科学技術大学院大学情報科学研究科組込みシステムコース(博士前期課程、博士後期課程)
URLリンク(www.jaist.ac.jp)

東海大学専門職大学院組込み技術研究科組込み技術専攻(専門職学位課程)
URLリンク(www.u-tokai.ac.jp)

信州大学大学院工学研究科情報工学専攻組込み技術者育成コース(博士前期課程)
URLリンク(www.cs.shinshu-u.ac.jp)

275:デフォルトの名無しさん
08/05/20 08:17:00
コピペ君って馬鹿だな、まで読んだ。

276:デフォルトの名無しさん
08/07/10 01:42:52
ミドルウェアが強い企業ってどこなのでしょうか?


277:デフォルトの名無しさん
08/07/12 07:46:43
>>276

質問が抽象的すぎ。
「組込み系で、ミドルウェア製品を多く出している企業」ってこと?


278:デフォルトの名無しさん
08/07/12 08:55:28
ACCESSて一時期のGoogleショックからは立ち直ったのか。

279:276
08/07/12 22:54:23
>>277
すみません、抽象的でした。
>「組込み系で、ミドルウェア製品を多く出している企業」ってこと?
そうです。

自分の最近の夢は
組み込みソフト用ミドルウェアを拡販する会社を起業することです。
その参考のため。


280:デフォルトの名無しさん
08/07/13 00:10:31
それくらい自分で調べられん奴が起業してもろくなことにならんと思うが・・・

281:デフォルトの名無しさん
08/07/13 00:15:20
>>279

ミドルウェア、って一口にいってもいろいろあるからなあ。
ブラウザとかの比較的上の方ならACCESSとか富士通とかかなあ。
FSとかTCP/IPとか、比較的下の方ならOSベンダーが一緒に売ってる。
WindRiverとか。日本企業ならミスポとかイーソルとか。


282:276
08/07/13 11:30:40
>>279
ありがとうございます。
大抵知っているところでした。
個人的には特出したところはないと思っていますが、違いますか?
なので、まだ入り込める余地があると妄想してます・・・・


まずは、uITRON4.0準拠OSを作ることから始めた方がよさそうですね。。。
以下、妄想しているもの。

TCP/IPプロトコルスタック
FFS(フラッシュファイルシステム)
組み込み向けGUIライブラリ
etc...



283:デフォルトの名無しさん
08/07/13 18:13:46
>特出したところはないと

とは思うけど、特出できるのか?

284:276
08/07/13 18:30:30
>>283
正直なところ、できるかどうかは分かりません。

現在、一人でコツコツと作業を進めていますが
一人だと限界を感じてきています。。。
なので、如何に優秀な人材を確保できるのかにもよりますね。。。



285:デフォルトの名無しさん
08/07/13 18:48:10
すでに他力本願か
夢は寝てる間だけにしとけ

286:デフォルトの名無しさん
08/07/14 00:50:16
>>282

> TCP/IPプロトコルスタック
> FFS(フラッシュファイルシステム)
> 組み込み向けGUIライブラリ

どれも一人だけでやるには無理があるよ。
全部一人でやろうとしたら20年はかかるぞ。


> FFS(フラッシュファイルシステム)

フラッシュだけなら簡単だろう、と思ってそうだが、ATA/ATAPIとFATの実装も必須。
場合によってはext3とかも。


287:デフォルトの名無しさん
08/07/14 03:00:09
>>284
頑張れ。
優秀な技術者を20人も集めれば
大体5年で完成するぞ

288:276
08/07/15 00:22:00
>>286
20年はかかりすぎだと思います。
3年あればできると思いますが、如何せん本業が忙しく(ry

フラッシュはその寿命を伸ばすことも考えないといけないので
他のストレージデバイスより難しいと考えています。
簡単とは思ってません。

>>287
優秀な人材、もしくは同志はどこに行けば
見つかるでしょうか。。。


289:276
08/07/15 00:27:05
本業(組み込みソフト開発)が忙しいので出来ませんと言い訳してます。
これじゃ、他力本願と言われても仕方ないか。


290:デフォルトの名無しさん
08/07/15 01:03:31
これじゃ、どころか
最初の時点で、だ。

291:デフォルトの名無しさん
08/07/15 02:22:47
フラッシュROMにFFを書き込む場合、その書き込みによって寿命を縮めますか?

292:276
08/07/15 02:30:59
eraseに回数制限があります。


293:デフォルトの名無しさん
08/07/15 04:00:46
1のbitに1を書く分には寿命に影響しない、と理解していいですか?
すると、0のbitが増える方向へは重ね書きが可能ですね。 FF→FE→FCとか。

294:デフォルトの名無しさん
08/07/15 07:40:33
nand flushについて調べてみるといいよ

295:デフォルトの名無しさん
08/07/15 08:09:15
>>294
|д゚)ジー
|彡サッ

296:デフォルトの名無しさん
08/07/15 20:06:01
>>276 確かに一理あるかもな。成功したときに雇ってくれ。

297:デフォルトの名無しさん
08/07/15 23:48:57
>>288

> 20年はかかりすぎだと思います。
> 3年あればできると思いますが、如何せん本業が忙しく(ry

どんだけ自信家なんだよww

つーか、
> TCP/IPプロトコルスタック
> 組み込み向けGUIライブラリ

↑このへんはどこまでサポートするつもり?
それによってだいぶコード量変わるし、テストの工数まで考えてる?



298:276
08/07/16 00:06:00
>>297
確かにどこまでやるかで工数は大きく変わりますね。
TCP/IPプロトコルスタックは
ネットワーク層、トランスポート層をサポート予定。
物理層はユーザ作成関数として、ユーザカスタマイズとする。
アプリ層は、サンプルとして提供する。

297は組み込みソフト屋さんですか?




299:デフォルトの名無しさん
08/07/16 02:18:24
>>298
DNSとかDHCPとかも忘れずに頼むわ

あとARP周りはシンプルだけど地味にトラブル多いから
マジ気合入れてテストしろよ

300:デフォルトの名無しさん
08/07/16 16:26:50
すいません、ここのスレでいいのかわからないのですが、一つ御相談させてください。

いままでWindows系PCで作っていたTCPソケット通信を多用するアプリがあるのですが、これを組み込みBoxに移植してほしいという話があがっています。
そっち系の会社に投げればいいじゃん、というのはごもっともなのですが、カスタマイズが結構多い関係で、アプリ部分はコストが多少かかっても自社開発でメンテできるようにしろ、という指示がきています。
(ウチは組み込み系の技術者は今はいません)
基本的に、どこかの既存の開発ボード上で組んで、その開発ボードベースのハコに収めてプログラムを焼いて出荷、のようなイメージをしております。

要件としては
インターフェース
・Ehernet * 1必須
・ログ・オーディオファイル用外部記憶デバイス(CForUSBメモリ等) *1必須
・オーディオ制御&出力 *1 必須
・VGA出力 (できれば)
・シリアル(できれば)
・できればイーモバイルのUSB通信可能であること
OS・開発環境
・開発言語は問わず。LinuxでもTRON系でもOK。(一から勉強になるので問わない)
・一通りのネットワーク通信関係のライブラリ、開発環境が揃っていること(DHCPクライアント、TCPソケット通信、NTPクライアントなど)
・1秒単位でLANの常時通信コネクションで1Mbyte程のデータが送られてくるので、それを裁く程度の処理能力
生産要件
・少数ロット(1個単位)で入手可能なこと
・ある程度長期間での入手保証が見込めること(プログラム互換性を持つバージョンアップ可)
・できれば安価なほうが好ましい。Max単価10万円程度

要件みてればなんとなく想像できると思いますが、センサーのデータ収集用です。
そこにモニター用の画面と問題発生時のアラーム警報が必要です。(画面はhttpdで代用が利くかもしれません)

こんなような物で、オススメのプラットフォームはないでしょうか?
ざっと探したところ、下記あたりが要件を満たしていますが、扱ったことがないので評価がわかりません。コレの善し悪しや他のオススメあったら教えてください。
URLリンク(armadillo.atmark-techno.com)


301:デフォルトの名無しさん
08/07/16 16:35:43
追記です
元々PCのLinux箱あたりにしたかったのですが、「プログラムはフラッシュに焼いてあるのと同等でないとダメ」と言われています。
(要はCF抜いたからプログラム起動しません、とかは不可。CFがないからログが保存されないとか、音源ファイルがないから音が鳴りませんは可。)

なので、組み込み系で探しているという状況です。

302:デフォルトの名無しさん
08/07/16 16:40:00
追記を無視すればWindowsCEなんだが

303:デフォルトの名無しさん
08/07/16 16:54:47
Windows XP Embeded、プログラムがVC++でやってましたので、WindowsCEは真っ先に検討したのですが、NGでしたorz
(根本的にWindowsがお嫌いなユーザのようです)
「プログラムモジュール部分は不揮発性メモリ等に保持され、外部から容易に触れることができないこと。
またHDDやCF等の磁気メディア等、容易に書き換え可能なメディアでのプログラムモジュールの保持は不可」とされています。。。

304:300
08/07/16 16:56:36
すいません、この板はIDが付かないんですね
>>300>>301>>303 >>304は同一です。

遅れましたが>>302さん返答ありがとうございます。

305:デフォルトの名無しさん
08/07/16 17:04:48
じゃあBBR-4MGでも買いあさっておけば?

306:デフォルトの名無しさん
08/07/16 17:11:04
シビアなリアルタイム物じゃないみたいだし
LinuxかBSD系の箱でいんじゃね?

307:デフォルトの名無しさん
08/07/16 21:33:26
玄箱とかどうよ。
アルマジロは私のところのプロジェクトでも話題に上っているから、罷り間違うと使う羽目になりそうだが。

308:297
08/07/16 23:55:54
>>298
> TCP/IPプロトコルスタックは
> ネットワーク層、トランスポート層をサポート予定。
> 物理層はユーザ作成関数として、ユーザカスタマイズとする。
> アプリ層は、サンプルとして提供する。

Socket、HTTPやFTPぐらいまではサポートしないと売れないと思うよ。
それか、よほど安いとか。
ちょっと突っ込み入れると、「物理層」はデバイスそのもので、ドライバはデータリンク層だな。
ドライバはサンプルで構わないが、アプリが「サンプル」扱いはきついかも。


> 297は組み込みソフト屋さんですか?

そう。最近はアプリの仕事が多いが。


309:デフォルトの名無しさん
08/07/17 00:10:58
>>308
> ドライバはデータリンク層だな。

つまらん茶々だけど、ドライバってのは位置付けがイマイチ曖昧なんだけど、
おおむね、ネットワーク層からデータリンク層へのつなぎを担当する部分。

チップ側にIPオフローディング機能とか入ってくると、もう完全に、分けが
わからん位置付けになるんだわな、これが………


310:300
08/07/17 01:32:39
>>306さん
元々PCアプリのため、リアルタイム性をミリSec単位で要求するようなことはないので、私もLinux系がいいのかなぁと漠然と思っています。
LinuxはPCサーバでは頻繁に使っているので設定・操作は問題ないです。
組み込み開発経験がまったくないので、何を重視すれば良いのかいまいち掴めていません。

>>307さん
玄箱は玄箱/HGを持っていまして、アレはシステムをHDDに書いてるからダメぢゃん、とおもっていたのですが、
wiki調べてみたら玄箱/PROはARM9ベースになってシステム用フラッシュメモリ載せてるんですね、安価な割におもしろそうです。
ただ、開発がほぼ初心者状態で一からやる関係上、できればご丁寧な開発キットが欲しいところです。

うーん、アルマジロは結構悪くない選択肢なんですかね。
組み込み関係の展示会にでも行って情報収集したいところですが、11月のようで。。。

311:デフォルトの名無しさん
08/07/17 01:56:52
>>308
> Socket、HTTPやFTPぐらいまではサポートしないと売れないと思うよ。
> それか、よほど安いとか。
あるOSに付いているプロトコルスタックのアプリ層は
サンプルという扱いでした。
アプリ層もちょっと真面目に検討してみます。
でも、今本腰入れて作ろうと計画しているのはFFSだったり...

>>309
> チップ側にIPオフローディング機能とか入ってくると、もう完全に、分けが
> わからん位置付けになるんだわな、これが………
ミドルウェアとユーザカスタマイズ部(所謂ドライバ)との切り口は
イーサフレーム送受信レベルが妥当でしょうか?




312:デフォルトの名無しさん
08/07/18 03:21:23
>>297
別にその手のものなら、幾らでも売ってる訳だが
それらに対する優位性って何?

>>309
おかげでレイヤでMIとMDがガッツリ別れてる
xBSDのドライバが書き辛いのなんの

>>310
OpenBLOCKSでよくね?

313:デフォルトの名無しさん
08/07/18 09:12:56
>>311
> ミドルウェアとユーザカスタマイズ部(所謂ドライバ)との切り口は
> イーサフレーム送受信レベルが妥当でしょうか?

ミドルウェアってのは、通常、トランスポートの上にあるもんだと思うが…
ルータ作るとかってな仕事でもない限り, トランスポート以下を
つつくってのはまずないと思うぞ

そして出てくるfj世代の得意技
ソース読め!!!

>>312
> xBSDのドライバが書き辛いのなんの
バークレーの連中は、当初、IPオフローディグなんて考えても見なかったんだろうな


314:デフォルトの名無しさん
08/07/18 09:52:21
>>303
LinuxBIOS とかどうですか?
URLリンク(www.ibm.com)

315:314
08/07/18 09:53:20
>>303 X
>>300
アンカーミスです すいません。


316:デフォルトの名無しさん
08/07/18 10:04:56
>バークレーの連中は、当初、IPオフローディグなんて考えても見なかったんだろう

30年前にどうやってそんなものを予測しろと

317:300
08/07/18 19:15:07
>>312さん
OpenBlocksは私も調べてみたんですが、オーディオがないんですよね。(音による警報制御が必須要件なんです)
またOpenBlocks266だと、アルマジロ-220あたりと大差ないのかなあ、と思ってしまうところです。
開発環境でOpenBlocksのほうがイイ!とかあれば是非情報頂きたいところです。

>>314さん
私はアプリ屋なので、ハードと開発環境をセットで提供してくれるものを探しています。
LinuxBIOSのような技術が私の求めるものを支えていることは察しますが、これを素で持ってきても、どう熱かったら良いのかわからない状況です。技量が低くてすいません。

318:デフォルトの名無しさん
08/07/18 20:57:46
>>317
LED出力あたりをいぢってブザーでも付けるとか。
発売元か開発元に相談してみるといいかも。

319:デフォルトの名無しさん
08/07/18 22:48:03
>>317
OpenBLOCKSってLinuxの開発環境がセットで提供されてなかったっけ?
つーか、そんなにPC並のスペックが欲しいなら
CONTECあたりの組み込み用PC使えば?

320:デフォルトの名無しさん
08/07/18 23:24:07
blanca ってあれからどうなったんでしょ?
これはパフォーマンス的にも問題あるかも

321:300
08/07/19 15:12:37
皆様、色々ご意見ありがとうございます
>>318さん
なるほど、後付が可能なんですね。ハード関係はさっぱり知識がないので、そういうことすらわかってませんorz

>>319さん
アルマジロもOpenBlocksもLinuxベースで開発環境が提供されているようです。
開発環境についてはどっちのほうが良いのか見分けがつかないのです。。。

元々がPCベースで開発していたものなので色々てんこ盛りでやっておりまして、それを簡単に機能削減ができないのです。
CONTECを調べてみました。PCベースの機器なんですね。
ざっと調べた感じで、スペックは申し分ないのですが、>>303 にひっかかってしまいそうなのです。。。

>>320さん
blanca、ぱっと見では結構使えそうな気がします。ライブラリあたりはまだ拡張開発中なんでしょうかね

322:デフォルトの名無しさん
08/07/19 15:23:18
こいつはいつまでグズグズしてんだ?2~3種類くらいさっさと取り寄せろよノロマ野郎

323:300
08/07/19 18:34:49
すいません、これで最後で消えます。
実は先週アルマジロ-500の購入稟議かけたら、「要件満たしてるのはわかるけど他製品比較資料くらいもってこい、もっと安いのはないのか」と言われて困りましてこちらでご相談させて頂いた次第です。
色々な意見頂き、あまり選択肢も多くないということが確認できましたのでコレで試してみます。ありがとうございました。

324:デフォルトの名無しさん
08/07/19 19:10:09
新入社員か

325:デフォルトの名無しさん
08/07/20 22:49:08
uITRON4.0準拠OSでタスク間通信をやろうと思うのだけれど
みなさん、どうやってます?
一般的な方法を知りたい。

326:デフォルトの名無しさん
08/07/20 23:03:29
>>325
メール

327:デフォルトの名無しさん
08/07/21 00:08:15
>>325

ケースバイケース。
普通はメッセージかイベントフラグだと思うけど。


328:デフォルトの名無しさん
08/07/21 00:41:06
メールだな。
送信側でメモリを確保して
そのメモリのアドレスをメールボックへ送る。
受信側でメールを受け取りメモリを解放する。



329:デフォルトの名無しさん
08/07/21 17:11:00
>>325
データキューと固定長メモリプールの組み合わせが、今ならいいと思う。
メールボックスは、メモリプロテクション仕様のものからは推奨されないから。
結構データキューって、uITRON3.0のメールボックスの一種の実装だと知らない人って
多かったりしない?
それから、スタンダードプロファイルにはないけど、メッセージバッファが使えるなら
データキュー+固定長メモリプールのようにやってくれるので、コードが少なくて書ける
と思うけど。


330:デフォルトの名無しさん
08/07/22 10:33:03
データキユーって送信時に待たされる可能性あるからなぁ。個人的にはメールボックスを勧める。

331:329
08/07/23 09:25:29
>>330
個人的好き嫌いは、自由だけど、

データキューで送信待ちが発生するということは、それだけ、受信側のタスクが処理できない状況に
なっているわけですよね。キューが膨れ上がる状態ですね。

固定長メモリプールとの組合せの場合、結局、メールボックスで送信待ちにならないとしても、
固定長メモリプールの獲得時に待ちになってしまう状況になるので、50歩100歩のような。。。

332:325
08/07/23 23:17:47
>>331
50歩100歩ではないような気がします。
送信側が受信側より優先度が高い場合
優先度の逆転が起こってしまいますよね。
その点、メールボックスの方が安全と言えないですか?



333:329
08/07/24 10:06:13
>>332
それを優先度の逆転とはいいません。優先度逆転を議論するなら、セマフォおよびミューテックスですかね。
たしかに、送信側の優先度が高い場合は、メールボックスでは、送信一辺倒でひたすら送信する状態になる場合もありますね。

「安全」という言葉が出てきたので、あえて言うけど、
1)送信側が一方的に送信データ、つまりメールボックスが膨張していく状態
2)送信側が一方的に送信データが増えた場合に、ある程度のところで送信タスクがWaitされる状態

ではどちらが安全だろうか? すぐにわかる話だと思いますが

それから、私が言っているのは、MBX + MPF の場合と DTQ + MPF の場合の比較です。
かならず、固定長メモリプールとの組合せの場合のことです。

送信側は、固定長メモリプールから、一定のメモリを獲得、そのアドレスを
データキューあるいは、メールボックスで送る。

受信タスクは、データキュー、あるいは、メールボックスを受信、
そのアドレスから、該当メモリを参照し処理、処理が終わったら、
その該当メモリを固定長メモリプールに返却する。
という流れですね。

この場合にメールボックスが膨張する状況が起こったら、そのうち、固定長メモリ
プールが獲得不可になって、結局待ちになるから同じなんじゃないかという
ことですが、

お分かりになりましたか?





334:325
08/07/25 00:55:19
>>333
真摯な回答ありがとうございます。

受信側がメッセージを処理しなければ送信側が待たされますよね。
受信側が処理中に受信側と送信側の中間の優先度を持つタスクへ
ディスパッチすることを優先度の逆転と言いませんか?
決して優先度の逆転がダメと言っている訳ではないです。

DTQ+MPFの場合、送信側が待たされる要因として
送信待ち、メモリブロック取得待ちの二つがありますよね。
一方、MBX+MPFの場合、メモリブロック取得待ちしかありません。
保守やデバッグを考えると後者を選択したくなります。

どちらが安全であるか説明していただきましたが
ちょっと理解できませんでした。。。





335:329
08/07/25 11:03:02
1)優先度逆転について
  受信側タスク -- 低プライオリティ
  送信側タスク -- 高プライオリティ
  それ以外のタスク --中プライオリティ

  この状況で、送信タスクがブロックされると、それ以外のタスクが動いてしまう。
  これを優先度逆転と言えば、待ち条件になった場合のことをすべて優先度逆転という
  ことになる。 言葉の問題なんであまりたいした問題でもないですが。。。
2)DTQ+MPFの保守性
  MPFだけがwaitされる場合とDTQもしくはMPFがwaitされる場合とで保守するのが、難易度が
  違うというご意見ですね。 理解しました。 私的には50歩100歩だと思っていますが、
  
3)どちらが安全かについて
  1)送信側が一方的に送信データ、つまりメールボックスが膨張していく状態
  2)送信側が一方的に送信データが増えた場合に、ある程度のところで送信タスクがWaitされる状態
安全でないとはどういうことかというと、いわゆるデッドロックをおこさないことだと考えればいいと
思っています。
1)の場合は、その送信タスクが占有するメモリプールであれば、問題は少ないが、共有のメモリプールの
場合にメモリを食いつぶして、場合によっては受信タスクもメモリ獲得待ちになりデッドロックに陥ります。
よくある実装として、それぞれのタスクが送信/受信を行うような場合はそうなります。
一方、2)の場合は、送信タスクが送信待ちでwaitになってもそのうち、受信タスクがDTQを受信し、送信タスクの
待ちが解除されます。

1)の場合はどこまで、メールボックスが増えていくことを考えないというところが非常に危ない設計の
ように私は思いますが。。。

 


336:デフォルトの名無しさん
08/07/25 16:13:50
>MPFだけがwaitされる場合とDTQもしくはMPFがwaitされる場合とで保守するのが、難易度が違うというご意見ですね。
スタンダードプロファイルにはないけど、メッセージバッファ使うという手もあるかな。


337:デフォルトの名無しさん
08/08/17 01:40:54
【頑固】派遣テスターの人格問題【向上心ゼロ】

自分からテスト専門です、って宣言してる派遣テスターって何なの?

将来プログラマとかSEになりたい、とかならわかるけど。
向上心ないよね、頑固だし。
そういう派遣テスターって、仕様書は読めない、
テスト仕様書も作れない、テストプログラムも作れない
やれることは「テキトーにプログラムを触る」ことだけ。

俺は派遣プだけどさ、こういう派遣テスターがいると
派遣全体がバカにされるんだよ。
テスト専門派遣なんて氏んで欲しいよ、まったく。

今日も正社員の人が派遣テスターに仕様書を読んで
テスト仕様書を作ってください、って説教してたよ。
その派遣は頑固に「何故、仕様書が必要なんですか?」って
反論してたから、きっとテスト専門派遣テスターだな。
仕様書も読まず、テスト仕様書も作らず、ただテキトーに
プログラム触るだけで給料もらおうなんて頭おかしいんじゃねーの?

あ~あ、あの派遣テスターが3ヵ月後に切られるまで、
仕様書も読まねーでテキトーにテストしたバグ票がまわってくんのかよ。
そんな糞なもん、読んで処理する派遣プの身にもなってくれよ。
うわ~、しかもそいつが切られる3ヵ月以内に中間納品あるじゃねーか!
テスト仕様書もなしにテキトーにテストして納品か。
中間納品後にソッコウクレームでデスマ必至だな。俺の休みも返上かよ。

派遣専門テスターさんよ、少しは向上心持てよ!
頑固な性格直して仕様書読めよ!テスト仕様書作れよ!


338:デフォルトの名無しさん
08/08/17 02:05:51
>>337
>頑固な性格直して仕様書読めよ!テスト仕様書作れよ!
性格とかじゃないだろ、単に仕事してないだけ

339:デフォルトの名無しさん
08/08/19 21:49:36
うちの会社の開発プロセスに嫌気が差してきた。
とりあえず、数をこなしてソフトの品質は二の次な体質。
みなさんの会社はどうですか?


340:デフォルトの名無しさん
08/08/19 22:26:54
マ板でやれクソが。
お前には嫌気が差してきた。
類は友を呼ぶんだろうよ!

341:デフォルトの名無しさん
08/08/19 23:03:51
スレ違い
テスターに適当にさわらせるテストなんて
最底辺会社がPCでやるならありえなくもないが
組み込みでそれやったら会社消滅だろ
ありえねー

342:デフォルトの名無しさん
08/08/21 01:55:07
>>341
納品物が工場の現場の人間が使う端末だったりする場合は
アホに与えて観察することもある。

343:デフォルトの名無しさん
08/08/21 05:51:13
そのアホは臨時に短期に雇うバイトで十分だろ
派遣にやらせる必要は全くない

344:デフォルトの名無しさん
08/08/21 08:40:12
>>342
それは納品物のテストじゃなく、そのアホの方のテスト

345:デフォルトの名無しさん
08/08/23 08:57:12
>>344

「フールプルーフ」って言葉知ってるか?
アホが使っても大丈夫なように作んなきゃいけないものもあるんだよ。
アホは普通の人間には想像もつかない使い方をすることがある。


346:デフォルトの名無しさん
08/08/23 10:02:45
>>345
「優先度」って言葉知ってるか?
アホが使っても大丈夫以前に仕様どおり動かなければお話にならないんだよ。
アホ開発チームは普通の人間には想像もつかない納品の仕方をすることがある。



347:デフォルトの名無しさん
08/08/23 19:57:10
>>346
人命にかかわったりライン停止の危険をはらむ動作が
アホにはできないようにする必要があるんだよ
納期を守って人が死ぬのはもうカンベン

348:デフォルトの名無しさん
08/08/23 20:10:48
>>347
ホームラン級バカ発見!
人命にかかわるシステムをテスト仕様書もなしに適当にテストなんてしねーよ

実際に人命にかかわるシステムの動作保証なんて経験したことない癖に
無茶苦茶な嘘を書くなよ、ボケが

349:デフォルトの名無しさん
08/08/23 20:15:44
>>347
>納期を守って人が死ぬのはもうカンベン
アホのテストのせいで人が死ぬのはもっとカンベンだよw

350:デフォルトの名無しさん
08/08/23 21:02:03
>>347
もうカンベンって、、、、何人か殺してんのかよ(((((゚д゚;))))))

351:デフォルトの名無しさん
08/08/23 21:11:43
テスト仕様書無しでテストして納品しました、バグのせいで人が死にました

↑会社の存続が無理なのは当然として、業務上過失致死で刑務所もありえるよ


352:デフォルトの名無しさん
08/09/08 01:14:55
組み込みで、イーモバイルとかを使った通信を実装した方っています?


353:デフォルトの名無しさん
08/09/09 09:26:31
>>352
原理上はPPPダイアルアップ
PHSカードと56kモデムは、やったことある。

むしろネットワークサービス層の選定・実装が問題じゃない?

354:デフォルトの名無しさん
08/09/09 13:47:24
>>353
ありがとうです
>むしろネットワークサービス層の選定・実装が問題じゃない?
その辺はあまり問題にはしていないです。
CFのタイプにしろ、USBのタイプにしろ、どう制御するのかがまったくわからなくて
どうしようかと思っています。
USBのタイプは、USBのプロトコルから上は、いきなりATコマンド様に扱えるんでしょうかね?

355:デフォルトの名無しさん
08/09/09 18:19:42
>>354
実装例としては Linux のものが参考になると思う。
もちろん、Linux のものから引っ張ってくるときは、
約束事には気をつけてな!

356:デフォルトの名無しさん
08/09/09 18:59:02
>>355
thxです
約束事?。。。なんだろ
すいません、わかるように。。(手もみ

357:デフォルトの名無しさん
08/09/09 19:21:20
丸ごと持ってくるとGPL縛りにかかる

358:デフォルトの名無しさん
08/09/09 22:26:01
>>356
>>357
xBSDにしろ

359:デフォルトの名無しさん
08/10/15 02:28:16
SH2+HEW なんですが
汎用レジスタにアクセスしたいのですが、どうしたらよいですかね

#pragma inline_asmを使うとcode=asmcode指定が必要で、
デバッガがお利巧じゃないので、ソースリストがasmになって見づらい
#pragma global_register で変数にあてようとすると"Illegal register" のエラーがでます
そもそも、global_registerで出来るのかな

どなたかわかるかた、ご教示あれ

360:デフォルトの名無しさん
08/10/15 07:22:50
gcc?

361:デフォルトの名無しさん
08/10/15 07:30:28
>>360
renesasです。

362:デフォルトの名無しさん
08/10/15 08:40:24
gccの方がレジスタアクセスは簡単だよ。

363:359
08/10/15 10:57:37
>>362
お客さんの指定なんです

364:デフォルトの名無しさん
08/10/15 16:25:33
サンプルコードを書いて、ルネサスに聞いた方がいいんじゃないの?

365:359
08/10/15 19:44:12
>>364
そういうのアリなんですかね?
調べてみます

366:デフォルトの名無しさん
08/10/17 02:56:42
>>359 俺も同じ体験したよ。
>デバッガがお利巧じゃないので、ソースリストがasmになって見づらい
ルネサスなら、こっちにしないとダメだったよ。必要な箇所は少量だと思われるので、
そこだけを別モジュールにしてASMで書いてCから呼び出すようにしたらいいとおもう。

367:359
08/10/17 03:28:10
>>366
ありがとうございます
>そこだけを別モジュールにしてASMで書いてCから呼び出すようにしたらいいとおもう。
いまその方向で始めました
スピードはあまり要求されないのでCでまとめられたらよかったんですけどね

368:デフォルトの名無しさん
08/10/17 09:13:35
そもそも、具体的にどういう動作をさせたかったのかに興味あり。

369:デフォルトの名無しさん
08/10/17 16:42:08
ポート叩くのに、ROTX(L/R)系の命令を使いたかったのだと思う。
キャリーをポートに出すのがCでは書けなくて若干速いんだよね。

370:デフォルトの名無しさん
08/10/17 17:45:09
スタックポインタ?

371:デフォルトの名無しさん
08/10/18 02:15:45
Rnをさわらなきゃいけない状況つうのがあんまし想像できないなあ。
アセンブラで呼ぶことしか想定していないライブラリをつかうとか、
俺OS作っていてコンテキストスイッチ部分を書きたいとか…


372:359
08/10/18 04:47:08
>>368
>>371
ユーザープログラムモードで、
プログラム上からROMの書き換えをするのに、Rnを触らないといけないんです


373:デフォルトの名無しさん
08/10/18 13:55:54
ああ、あれか。

引数をレジスタ渡しにすればそのまま呼べたような気がするが。






374:359
08/10/19 01:41:37
>>373
>引数をレジスタ渡しにすればそのまま呼べたような気がするが。
そう思って、#pragma global_register を使ったら"Illegal register"のエラーが出てしまってます。

375:359
08/10/19 08:40:14
#pragma global_register(a=R8)
int a;

としたときは、コンパイルが通りますね
どうやら、R8-R14だとOKみたいです
制限がかかってるのかな

376:デフォルトの名無しさん
08/10/19 08:41:20
>>575 だな、スケールが小さいな。もっとあるだろうに。

ってかやらされてるんだろうな官僚に。何もやらないと要求されるから。

377:デフォルトの名無しさん
08/10/19 08:41:52
↑gobaku

378:359
08/10/19 08:51:03
>>376
乙ですw

379:359
08/10/19 08:57:49
よくみたら、>>374は、>>373の答えになってなかったかも;
ああ、なるほど!
R4は引数をレジスタ渡しにすればそのままってことですね
レジスタ渡しにすればR4に入る保証というのは、どこかで定義できるんでしょうかね
これは、処理系(コンパイラ)依存ですよね?
マニュアルをちょっとよく見てみないとですね


380:359
08/10/19 09:47:24
>>375
自己レス
マニュアルに書いてありました;

>>373
やっぱり、それでいけるかもしれません
ありがとうございます

381:デフォルトの名無しさん
08/10/27 16:42:38
今までオープン系業務システムの開発を
やっていたのですが、今度組み込みを
やることになりました。
具体的に何をやるかまだわからないのですが、
おすすめの入門書はありますでしょうか?

382:デフォルトの名無しさん
08/10/27 20:35:13
何をやるかわかってから聞けよ

383:デフォルトの名無しさん
08/10/29 03:12:24
>>381
加算機とアンプ作っとけ

384:デフォルトの名無しさん
08/12/04 01:30:46
アンプってどうやってつくるの?

385:デフォルトの名無しさん
08/12/04 02:44:37
すみません 防犯カメラの設置および組み込みPGの募集ってあったのですが
(HDDに機器をつなげる:サーバー知識あれば尚可)
アパッチ、SQL、LINUX、でサーバー構築くらいはやったことあるのですが
どういった作業なのでしょうか?単純作業の繰り返しでしょうか?

386:デフォルトの名無しさん
08/12/04 03:38:13
かっこでくくると判りやすいな。(防犯カメラの設置および組み込み)PGの募集。
組み込み系PGではないな。設置と結線ならPGである必要もない。

387:デフォルトの名無しさん
08/12/04 07:57:57
要は、普段は防犯カメラの設置をやってもらうが必要によってサーバの設定などの運用や
簡単な保守管理の設定なども行なってもらうけど肩書きはPGなんで宜しく、ってことだな。

388:デフォルトの名無しさん
08/12/04 08:14:30
>>386 まあ、インストールと設定(ファームウェア)の領域ですかね?
>>387 人数が少ないから全部やると思いますがw

389:デフォルトの名無しさん
08/12/04 10:20:21
>>385
防犯カメラの設置と組み込みPGってぜんぜん領域が違うと思うんだけどな
なんか、テキトーな会社っぽいね
前にあったのは
会社:「どんなことをやってました?」
応募者:「基本ソフトのですね~(ほにゃらら)」
会社:「うちはベーシックの技術者は募集してないんです」
応募者:「‥‥‥」



390:デフォルトの名無しさん
08/12/04 11:54:09
OSを「基本ソフト」と呼ぶ奴を俺は信用しない

391:デフォルトの名無しさん
08/12/04 12:13:48
基本ソフト、たまにハード

392:デフォルトの名無しさん
08/12/04 13:27:17
>>390
なにか嫌なことがあったのか?w
おれは、「ping」を「ピング」と呼ぶ奴を信用しないがね

393:デフォルトの名無しさん
08/12/04 13:35:54
pingerは何て読むの?

394:デフォルトの名無しさん
08/12/04 13:52:32
>>393
「pinger」は造語だろ、pingerが「ピンガー」って読むから
「ping」を「ピング」とは読まない
1歩譲って「ピング」と言ってもいいけど、恥ずかしい人と思われることもあるから注意な

395:デフォルトの名無しさん
08/12/04 14:02:44
じゃあ、bomberは?

396:デフォルトの名無しさん
08/12/04 14:05:54
こういうどうでもいいことをいきがってくだらないこだわり見せる人のが恥ずかしいな。

397:デフォルトの名無しさん
08/12/04 19:04:34
>>396
>>390のことな、ほんとそうだな

398:デフォルトの名無しさん
08/12/04 21:00:07
ピングーとポングー

399:デフォルトの名無しさん
08/12/04 21:38:13
ソナー員 「艦長!敵艦が"ピングー"を打ってきました!」
艦長 (ズコーー!)

400:デフォルトの名無しさん
08/12/04 22:06:06
>>383
すいません、どこから手をつけてよいのか
皆目見当がつきません。
何を参考にすればよいでしょうか?

401:デフォルトの名無しさん
08/12/04 22:35:09
>>400
秋月電子に行ってらっしゃい。

402:デフォルトの名無しさん
08/12/04 22:39:27
PICマイコンって 組み込み系でいいんですか?

403:デフォルトの名無しさん
08/12/04 22:52:01
愚問。
ガソリンエンジンって自動車でいいんですか?、と同じ意味で。

404:デフォルトの名無しさん
08/12/05 00:39:44
>>403
幾らなんでも、そりゃ例えが飛躍しすぎで伝わらんだろ

>>402
ペンティアムって 業務系でいいんですか?

くらいだろ

405:385 388 402
08/12/05 04:15:41
回答ありがとうございました 参考に勉強します

406:デフォルトの名無しさん
08/12/05 23:02:28
>>405
あと、参考になりそうなネタ元

この辺の電子回路の教科書クラスでいいかも
URLリンク(www.amazon.co.jp)
URLリンク(www.amazon.co.jp)

その他、国公立大学・工学部の基礎レベルの講義資料も使えると思う
確か、東工大がそういった資料のネットでの公開に力を入れてたはず

407:デフォルトの名無しさん
08/12/05 23:52:39
>>401
サイト見たのですがよく分かりません。
ご指導頂けないでしょうか。

408:デフォルトの名無しさん
08/12/06 00:05:53
>>406 どうも 参考にします。
URLリンク(monoist.atmarkit.co.jp)
たとえば、H8マイコンにC言語でプログラムした場合のPGと組み込み
についてどう解釈すればいいのでしょうか。

409:デフォルトの名無しさん
08/12/06 00:41:24
何が知りたいんだおまえは

410:デフォルトの名無しさん
08/12/06 00:50:38
>>409 >>385の作業を具体的に知りたいんです。範囲がどうのこうのとか
車がどうとかは、別にどうでもいいんです。

411:デフォルトの名無しさん
08/12/06 01:04:56
説明できなくもないが、まずはその会社に問い合わせなさい
こちらが色々予想するのは無駄なことだ

412:デフォルトの名無しさん
08/12/06 01:31:37
あ わかりました。どうもです。

413:デフォルトの名無しさん
08/12/07 18:01:27
日本で有名な組込み屋さんってどこになるのかな
アックスとかウィンドリバーとか?

リナックスは組込みに強いと聞くけど
会社としてはあんまり聞かないよね

414:デフォルトの名無しさん
08/12/07 18:05:32
>>413
URLリンク(www.emblix.org)

415:デフォルトの名無しさん
08/12/07 18:32:41
linuxはいい加減な処理しかできないし動かすだけで余計なコストも掛かる
リアルタイム系では出る幕が無い

416:デフォルトの名無しさん
08/12/07 19:34:45
>>415
でも、タダ

417:デフォルトの名無しさん
08/12/07 19:42:45
いやだから最初から選択肢に入らない
無料つっても何も無いも同然だから人件費の方が高くなる

418:デフォルトの名無しさん
08/12/07 20:10:27
>>417
人件費は、外注にかぶせればタダ
が、クライアントの脳内

419:デフォルトの名無しさん
08/12/07 20:51:43
作るモノにもよるんじゃない?
ネットにつなげるような仕様だとLinuxBOXのような物のほうがラクだと思うがな
電器ポットにLinux入れようとは思わないけど

420:デフォルトの名無しさん
08/12/07 21:00:03
NICのドライバ部分なんてPICにもあるから
そんなとこ楽したいだけでlinuxを載せる理由にはならない
無知ほどlinuxと喚きたがるだけ


421:デフォルトの名無しさん
08/12/07 21:03:07
規模の話をしたつもりだったんだが、そんなにLinuxを毛嫌いする必要あるのかな

422:デフォルトの名無しさん
08/12/07 21:05:13
~のソフトがlinuxでしか動かない、
とか、ソフトの都合が多いね。
linuxが出てるのは大体ソフト屋の発想。
それで完成するのは大抵産業ゴミ。

423:デフォルトの名無しさん
08/12/07 21:07:54
そして車輪の再発明

424:デフォルトの名無しさん
08/12/07 21:11:27
>>421
そんな話してないだろ。
どこの誰さんですか?


425:デフォルトの名無しさん
08/12/07 21:12:09
なにか都合が悪かった?

426:デフォルトの名無しさん
08/12/07 21:13:29
経験から言えばLinuxが動かせる規模なら
最初からCEやWindows Embedded使った方が楽。
Linuxはソフト作ってくれる奴が確保できない。

427:デフォルトの名無しさん
08/12/07 21:14:34
意味不明な理由でGPLになるしなあ
信じられんよ

428:デフォルトの名無しさん
08/12/07 21:22:27
意味不明でGPLとか、それはあんまりだ

429:デフォルトの名無しさん
08/12/07 21:29:52
NetBSDがアップを始めました

430:デフォルトの名無しさん
08/12/07 21:34:30
Linuxを使っていいのは趣味レベルまで。
大手なら金の力で乗り切れる場合もあるが、
中小で下手に関わると悲惨なことにしかならない。

431:デフォルトの名無しさん
08/12/07 21:38:13
このスレはシビアですね。
だがそれがいい。

432:デフォルトの名無しさん
08/12/07 21:59:40
>>422
>それで完成するのは大抵産業ゴミ。
あるメーカのある民生品は、思いっきりlinuxだけどね。
ライセンス費のある組み込みOSは、民生品に入れるときついんじゃないのかね

433:デフォルトの名無しさん
08/12/07 22:17:13
>>413

どっちかっつーと、こっちの幹事会員、A会員かと。
URLリンク(www.t-engine.org)

純粋なソフト屋さんは数社しかないけど。


434:デフォルトの名無しさん
08/12/07 22:17:49
>>432
そういう妄想はいくらでも吐けそうだよなw
何か明かせない理由でもあんのか?

435:デフォルトの名無しさん
08/12/07 22:21:59
明かせない理由はずばり、
おもいっきりライセンス違反してて
明かすとしょっ引かれるから。

436:デフォルトの名無しさん
08/12/07 22:22:10
>>434
いや、ネタ元にバレるとまずいから;
AV機器なんだけどね、英文字の日本の会社。
これ以上はかんべんしてくれ。

437:デフォルトの名無しさん
08/12/07 22:24:32
当初Linuxで計画してたのが見事頓挫して、
別の物に丸ごとすげ変わった。
ってパターンだと明かせないわな。

438:デフォルトの名無しさん
08/12/07 22:28:30
>>436
だからさ、そんな明かせない事例なんかここで出しても
お前の妄想と変わらんだろ。

439:デフォルトの名無しさん
08/12/07 22:35:49
>>438
悪いが釣られないよ
組み込みlinuxを大量生産の民生品に使うケースもあるってことだ


440:デフォルトの名無しさん
08/12/07 22:42:19
絶対あるもん!
いやいや
絶対あるもん!
いやいや

・・・バカ?

441:デフォルトの名無しさん
08/12/07 22:49:47
明かせない理由→バレるとまずい
はいはい

442:デフォルトの名無しさん
08/12/07 22:50:33
昔linux組み込んだルーターでライセンス問題になって大騒ぎしたことがあったよなあ…
今どうしてるんだろう

443:デフォルトの名無しさん
08/12/07 22:53:02
どうしても、ないことにしたいらしいw
オレ的には、どうでもいいが

URLリンク(kaden.yahoo.co.jp)
URLリンク(homepage3.nifty.com)

444:デフォルトの名無しさん
08/12/07 22:56:10
>>442
「もう2度と使わない」と悪態吐いてたろう

そういやLinksys GPL違反はどうなったんだろうな?

445:デフォルトの名無しさん
08/12/07 22:58:33
糞煮程度デカイならそりゃ何だって作れるだろ
アホか

446:デフォルトの名無しさん
08/12/07 23:04:08
linuxはドライバが強制GPL。
その時点でありえない。
NetBSDの方はまだ可能性がある。

447:デフォルトの名無しさん
08/12/07 23:27:43
>>446
可能性があるつーか、
あっちこっちのネットワーク機器がNetBSDじゃん

448:デフォルトの名無しさん
08/12/07 23:36:21
某NASや一部のPDAの例外のせいで組み込み=Linux
みたいな考え違いをするバカが多いんだよ。

449:デフォルトの名無しさん
08/12/07 23:50:30
その某PDAのSDドライバは黒いという話が・・・。
負けず劣らずユーザーも黒いけどね。
Linuxで組み込みは暗い話しか聞いた事がない。
あまり関わりたくないね。

450:デフォルトの名無しさん
08/12/07 23:50:57
ドライバ部分はGPLにしたがって公開しなきゃいけないけど
ソフト部は公開する必要ないよね
低レベルのソフト会社には恐くて丸投げできないけど

451:デフォルトの名無しさん
08/12/08 00:46:10
>>445
なに逆ギレしてんだ?こいつw

452:デフォルトの名無しさん
08/12/08 02:53:05
低レベルなスレだと>>450の言う低レベルがどんな意味を持つのか分かりにくいな

453:デフォルトの名無しさん
08/12/08 11:27:09
Linux積んでる民生機器といえば東芝RDシリーズがそうだが?

454:デフォルトの名無しさん
08/12/08 11:46:17
何をいきがりたいのか知らんけど、
そうやってジャンル問わず探せば絶無なんてことはないし、
Linuxが使える状況なら使えばいいんでは

455:デフォルトの名無しさん
08/12/08 11:54:39
>>454
どうしても使っていないと信じたい奴がひとりいるんだわさ

456:デフォルトの名無しさん
08/12/08 12:03:04
>>453
起動がもっさりで有名になってしまったアレかw

457:デフォルトの名無しさん
08/12/08 15:24:11
>>456
だから、コンセントを入れたときに既に起動させておいてスリープさせてる機器もあるけどね(笑)

458:デフォルトの名無しさん
08/12/15 11:27:18
H8/500系を使い続けなければいけないんだ…
10年選手のFULLICEとヘボいデバッガしかないんだ…

何とかならないもんかなぁ…

459:デフォルトの名無しさん
08/12/15 12:03:58
>>458
懐かしいなぁ>H8/500系

460:デフォルトの名無しさん
08/12/15 19:47:41
>>458
デバッガなんかの世話になるヤワな体質の方をなんとかしたほうがいいと思うよマジで。
私見だがデバッガに頼る人っていうのはコードが汚いんだと思う。
十分可読的なコード書けば(もちろんデバッグは必要だが)デバッガなんていらん。

461:デフォルトの名無しさん
08/12/15 20:26:44
保守性のあるコード書くのって難しいよね。

462:デフォルトの名無しさん
08/12/15 22:15:48
>>460
規模によってだね。
小さくても、FPGAとかハードが絡むと、身の潔白を晴らすために必要。

463:デフォルトの名無しさん
08/12/15 23:10:46
>>462
おまいと仕事したいぜ
おれの周りは動かないと全部ハードが悪いって思考停止する奴おおすぎ
こっちもハード確認用ファーム自前で用意して確認してるのに…
数時間後に同じハードを修正したといって渡すとちゃんと動き「やっぱりハードか」
ってどの口が言うって感じw

464:デフォルトの名無しさん
08/12/16 02:04:17
>>463
同情するわw
いまやってるプロジェクトのチームは10数人の外人部隊だけど
トラブルがあると、全員が「オレか?」って自分のところを当たる
だから、解決も早い
力のある奴らってたいていそうだ

465:デフォルトの名無しさん
08/12/16 04:05:29
それは・・・普通じゃないチームだな。脊髄反射で 「俺ではない」 が出るのが一般的だよな

466:デフォルトの名無しさん
08/12/17 00:46:34
>>465
それなりに経験あるなら
そうは言ってても、最低限、自分の責任範囲+αくらいは
裏でこっそりみるだろ

467:デフォルトの名無しさん
08/12/17 05:05:10
うちはそれだな。

468:デフォルトの名無しさん
08/12/17 12:36:13
風の中のすぅ~ばるぅ~♪

469:デフォルトの名無しさん
08/12/17 13:48:21
自分のとこチェックしてデバッグしてるうちに原因が特定できることあるしな。
それが他人のとこだったりしても。

470:デフォルトの名無しさん
08/12/24 09:26:12
10数年前からベース変えずに色々な人間が書き加えてるようなソースに
保守性なんか無いんじゃああああああああっ!
仕向け先ごとに別々の改造入ってるし

ああ、全部書き直したい・・・

471:デフォルトの名無しさん
08/12/24 11:23:18
>>470
そこまで熟成してしまったら、同じものを一から再構成するのは
不可能でないかと思うわけで。

かと言って最初からそこまで考えて作る余裕もないんだよなあ。



472:デフォルトの名無しさん
08/12/24 12:42:30
OSなどは0から書き直したりしてるよね
あれは売るためでもあるけど

473:デフォルトの名無しさん
08/12/24 15:09:29
OSなんかはマニュアルちゃんとしてりゃ、それに合わせておけば
何も問題ないからねえ。

書いていないような所で微妙に変わっても、今回からそーいう仕様に
なりましたで終わりそうだし。


474:デフォルトの名無しさん
08/12/24 15:46:59
>>470
上司「一部変更でみこんでいる期間で10数年分を書き直して完全に同じ動作するようにできるならやってもいいよ」

475:デフォルトの名無しさん
08/12/24 15:51:29
雛形が相当ひどかったのでは?

476:デフォルトの名無しさん
08/12/24 16:35:07
その後10数年分の変更を見込んだ雛形なんて作れないだろ。
当時の仕様に対してきっちりしていたってその後好き勝手な変更加わればめちゃくちゃになるよ。

477:デフォルトの名無しさん
08/12/24 16:58:37
実際OS(カーネル)書いていますが、元ネタは、10年くらい前のやつ。
それまで、担当者は何人か変わっていますが、「好き勝手でない」レベルで
統一された保守がされていた感じがします。

マイコンが違うので当然ソースは全面変更なのですが、処理方法など、フシュウではなく、当初の
ものを踏襲してます。建前上、新規作成ですが、私的には流用と思っています。

私から、また担当が替わって、次の人が見たときは、勝手な変更が加えられたと思われるかも
しれませんが、...



478:デフォルトの名無しさん
08/12/24 17:39:12
アセンブラ?

479:デフォルトの名無しさん
08/12/24 20:28:09
Windowsの深層部にはx86の超レガシーな命令が使われてるらしいね
だからx86はいつまで経っても互換性の縛りから抜け出せない

480:デフォルトの名無しさん
08/12/24 21:02:34
Windowsはx86以外にも出てたんだがな

481:デフォルトの名無しさん
08/12/24 21:07:04
えっ、そうなの?

482:デフォルトの名無しさん
08/12/24 21:16:09
WindowsNTにはAlpha MIPS PowerPCで動くものもあったし
WindowsCEだとSH4とかARMとか色々あるんだが?

483:デフォルトの名無しさん
08/12/24 21:19:53
そもそもブートする時以外に「レガシーな」命令なんて使ってるの?w

484:デフォルトの名無しさん
08/12/24 23:36:24
移植性ってあったの?

485:デフォルトの名無しさん
08/12/25 13:47:45
>>483
16ビットモードという意味では起動時だけだな。

ていうか479は釣り。加算命令とか基本的な命令はレガシーかつ現役。
そういう命令の互換性が必要なんだし、遺物のような命令は使われなく
なってる(LOOPだとか)。

486:デフォルトの名無しさん
08/12/26 06:10:46
セグメントのあたりも初期化以外に使われないのが色々ありそうだが。



487:デフォルトの名無しさん
08/12/26 06:51:55
>>486

セグメント関係は、メモリ管理でバリバリ使うよ。
OSの実装にもよるけど。

つーか、そろそろスレ違いだろ。


488:デフォルトの名無しさん
08/12/26 22:43:12
折角高速化を期待してアセンブリ言語で書いてるのに
LOOP とか遅い命令使ってもしゃーないしな。

489:デフォルトの名無しさん
08/12/27 08:33:04
>>487

セグメントをメモリ管理でバリバリ使うOSって何?

セグメントは面倒なだけであまりメリットがないと思うんだよな。
32bit 以上のOSでは、初期化以外には使っていないっていうのは
俺も同じ認識なんだが。

8086/80186/80286みたいなアドレッシングできる範囲が実アドレス
空間より狭い場合にやむをえず使うって感じじゃないの?

490:デフォルトの名無しさん
08/12/27 08:44:08
OS-2

491:デフォルトの名無しさん
08/12/27 10:12:57
>>490

OS-2ってOS/2のこと? OS/2 もWarp からは32ビットなんで
セグメントは使ってなかったのでは。

すでにサポート終了したOSしか例がないんだったら、
現在はセグメントをバリバリ使ってプログラムするOSなんて
ないって結論でいいのかな。


492:デフォルトの名無しさん
08/12/27 11:06:55
そりゃぁ、「プログラムするOS」なんてないだろ。
セグメントを使って管理していたとしても。

493:デフォルトの名無しさん
08/12/27 11:41:20
それは誤解ですね。

x86の16ビットOSの場合、64Kを超えるプログラムを作る場合は
セグメントを意識せずにプログラムの作成はできないよ。

正確には、コードとデータそれぞれ64Kまで、それを超えると
コードは、セグメントの関数CALL、データはセグメントの切り替えが
必要になる。

ライブラリで覆い隠している場合はあるかもしれないが、OSだけが
管理すれば良いって話ではない。

494:デフォルトの名無しさん
08/12/27 11:57:22
>>493
それは8086などの16ビットCPUに限定された話だろ。
今の話題は、セグメントレジスタを使ったプログラムをOSがするかどうかじゃないのか?

495:デフォルトの名無しさん
08/12/27 16:00:03
Linuxの何かで、32ビットモードで実メモリ4Gオーバーを扱えるようにした
拡張バージョンとかやってなかったっけ?

496:デフォルトの名無しさん
08/12/27 23:53:13
もしかして、OS がメモリ管理にセグメントを使うって話じゃなくて、
アプリケーション側がメモリ管理にセグメントを使うかどうかって話なのか?
現状では普通アプリケーション側にセグメントをいじる権限は与えないのが普通だな。

497:デフォルトの名無しさん
08/12/28 12:19:10
じゃなくて、セグメントを利用した2次元アドレッシングを活用してるかどうか、という話。

498:デフォルトの名無しさん
08/12/29 03:09:32
NetBSDやLinuxの移植って難しいよね…
まず何から勉強したらいいのかな…
BootLoaderは何がいいのかな…


499:デフォルトの名無しさん
08/12/29 23:32:53
>>498
GPLが気にならないならU-Bootでいいだろ

500:デフォルトの名無しさん
08/12/30 01:16:30
ありがと、まずはU-Bootの移植頑張ってみる

501: 【小吉】 【215円】
09/01/01 02:40:43
あけおめ!ただいまクロスコンパイル環境を構築中!

502:デフォルトの名無しさん
09/01/17 12:48:43
static uchar replybuf[8];
usbMsgPtr = replybuf;
int i_adch;
int i_adcl;
double ret;

//ADC開始
DDRC = 0x00;
ADCSRA=0b11000111;
ADMUX= 0b01000101;

while((ADCSRA & 0x10)==0){;}
i_adcl=ADCL;
i_adch=ADCH;
ret = (ADCW>>2);

ADCSRA=0x96;
//ADC終了

このようなプログラムでAD変換を行っているのですが、低い値を取得した際にADCLの値(i_adcl)が246や255といったおかしい値になってしまいます。
例でいうと、70-47-32-17-4-246-7-3-239...といった具合です。
ノイズ源なども取り除いたのですが、値が突然暴走するのはプログラムに問題があるような気がします。
できれば0-1024でしっかり値をとりたいのですが、何か方法はありませんか?

使用チップはmega88で、環境はWinAVRを使用です。


503:デフォルトの名無しさん
09/01/17 13:01:05
コードが判らない
ちょっと1行ずつ何がしたいか解説して見ろ

i_adcl=ADCL;
i_adch=ADCH;
ret = (ADCW>>2);
何しとんの?

504:デフォルトの名無しさん
09/01/17 13:01:09
>>502
>i_adcl=ADCL;
まず、ここに時差がある。
>i_adch=ADCH;

505:デフォルトの名無しさん
09/01/17 13:09:40
>>503
確かにその部分は不要ですね・・・消します

>>504
時差があるとまずいでしょうか?


506:デフォルトの名無しさん
09/01/17 13:15:31
↓adcの遷移はリニア
0x0FFF >i_adcl=ADCL;
0x1000 >i_adch=ADCH;

こうなる、ことがある。

507:デフォルトの名無しさん
09/01/17 13:17:52
>>506
なるほど・・・とすると、同時性を確保するにはADCWだけ読み出せばよいのでしょうか?
しかし、ADCWを使って0-1024までの整数に表現する方法が分からないんです。

508:デフォルトの名無しさん
09/01/17 13:18:24
>>502
フツーにソースの信号が実際に安定してないんじゃないの?

関係ないけどADCxと、その値をキャッシュしてる変数のビット幅って
それで一致してるの?

あと、504がたぶん言いたいことだと思うんだけど、(もし割り込みを使ってるなら)
サンプリングの間隔にもよるけど、2つのレジスタをアトミックに読み取るように
しないとまずいかもね。
今回の問題とは関係ないと思うけど。

509:デフォルトの名無しさん
09/01/17 13:20:24
>>508
ソースはLEDを入力に使った距離センサーですし、値が低いときだけ暴走するので良く分からないです。
ノイズ源なども極力取り払いましたが・・・。

変数のビット幅は良く分かりません、参考にした本にはこれ以上のことが書いてなかったので良く分からないのですが、
少なくとも本の通りにやるとおかしな値になることだけは確かなんですよ・・・

510:デフォルトの名無しさん
09/01/17 13:23:59
データシートによるとADCLを読み出したらADCHを読み出すまでは値は変化しないらしいぞ。
他の問題じゃないか?

511:デフォルトの名無しさん
09/01/17 13:25:56
これか、
レジスタ名 bit7:0
ADCH ADC9 ADC8 ADC7 ADC6 ADC5 ADC4 ADC3 ADC2
ADCL ADC1 ADC0 - - - - - -

512:デフォルトの名無しさん
09/01/17 13:26:32
情報が小出しになってしまって申し訳ないです。

uchar usbFunctionSetup(uchar data[8])
{

(上記のプログラム)

static uchar replybuf[8];
replybuf[0]=data[7];
replybuf[1]=ADCL;
replybuf[2]=ADCH;
replybuf[3]=ADCL + (ADCH<<8);
replybuf[4]=~(ADCW>>2);
replybuf[5]=i_adcl|i_adch;
replybuf[6]=data[6];
ADCSRA=0x96;

return 7;
}

今こんな状況で色々な値を読み出して比べているのですが、もしかしてそもそもuchar型で返していること自体に問題があるのでしょうか?
だとすると、どのようにすればuchar型にはめ込んで値を取得できますでしょうか?

513:デフォルトの名無しさん
09/01/17 13:29:33
>>509
まあ一番可能性が高そうなのは、符号付1xビットのAD変換値の下位8ビットを、
unsigned charとして扱ってしまってるってところじゃないの?

ADCxはどう定義されてる?

514:デフォルトの名無しさん
09/01/17 13:34:43
>>513
AD系の定義は、io.hの

#define ADCW _SFR_MEM16 (0x78)
#define ADCL _SFR_MEM8 (0x78)
#define ADCH _SFR_MEM8 (0x79)

という記述がありました。
数字から察するに16bit,8bit,8bitということなのでしょうか?

515:デフォルトの名無しさん
09/01/17 13:36:27
>>510
なるほど。
となるとADCLだけじゃなく、ADCHの遷移とかもないとわからないな・・。

516:デフォルトの名無しさん
09/01/17 13:38:23
>>515
上のを実際にPCで見て見るとこんな感じになりました。
buf[2](ADCH)が0のときにおかしな値を吐くことくらいは分かりましたが、他はなんとも・・・。

buf[1]= 35 buf[2]= 1 buf[3]= 35 buf[4]=183 buf[5]= 35
buf[1]= 40 buf[2]= 1 buf[3]= 40 buf[4]=181 buf[5]= 41
buf[1]= 83 buf[2]= 1 buf[3]= 83 buf[4]=171 buf[5]= 83
buf[1]= 26 buf[2]= 1 buf[3]= 26 buf[4]=185 buf[5]= 27
buf[1]=255 buf[2]= 0 buf[3]=255 buf[4]=192 buf[5]=255
buf[1]= 39 buf[2]= 1 buf[3]= 39 buf[4]=182 buf[5]= 39
buf[1]= 75 buf[2]= 1 buf[3]= 75 buf[4]=173 buf[5]= 75
buf[1]= 72 buf[2]= 1 buf[3]= 72 buf[4]=173 buf[5]= 73
buf[1]= 10 buf[2]= 1 buf[3]= 10 buf[4]=189 buf[5]= 11
buf[1]= 25 buf[2]= 1 buf[3]= 25 buf[4]=185 buf[5]= 25
buf[1]= 44 buf[2]= 1 buf[3]= 44 buf[4]=180 buf[5]= 45


517:デフォルトの名無しさん
09/01/17 13:40:32
>>512
ちょっとまて、
コードが無茶苦茶だぞ

replybuf[3]=ADCL + (ADCH<<8);
replybuf[4]=~(ADCW>>2);
replybuf[5]=i_adcl|i_adch;
ADCSRA=0x96;
これらはほんとに正しいのか?
まるで意味判ってないだろ
こんなんでは質問しても時間の無駄
C言語仕様書とデータシート100回読み直して出直してこい


518:デフォルトの名無しさん
09/01/17 13:49:19
>>516
なんだこれ見る限り、AD変換値は何も問題なさそうじゃん。

bug[1]がADCの下位8ビット、buf[2]が上位8ビットだよね?
ひょっとして「ビットの並びでどうやって数を表現するか?」から知らない人?

519:デフォルトの名無しさん
09/01/17 13:50:04
>>516
buf[1]= 83 buf[2]= 1 -->83+256
buf[1]= 26 buf[2]= 1 -->26+256
buf[1]=255 buf[2]= 0 -->255+0
ばらつきはあるけど、別におかしくないんじゃないか?

520:デフォルトの名無しさん
09/01/17 13:53:24
>>518
うっく・・・よく分からんです・・・

>>519
なるほど・・・!
ということは両方の値を足してやって、256を引けば良いということですか・・・


521:デフォルトの名無しさん
09/01/17 14:00:49
>>520
(ADCH<<8);

これ、
ADCH=1 とか、ADCH=2
のとき、計算結果がどうなるかわかるか?

522:デフォルトの名無しさん
09/01/17 14:00:49
いいから出直してこいよ
お前には無理だ
>>516
これではテストにもならない

基本的なことが欠けている
例えばADCのようなレジスタをアトミックに参照する場合
一時変数を使うことがまず考えられる
uchar lo, hi;
lo = ADCL;
hi = ADCH;
//以後 lo hiを参照
buf[0] = lo;
buf[1] = hi;

wordが必要なら
uint16_t word = (hi<<8)|lo;
8ビットMCUはビットを意識できないとどうしようもないぞ

523:デフォルトの名無しさん
09/01/17 14:04:13
お前等やさしいなw

524:デフォルトの名無しさん
09/01/17 14:10:30
>>521
ビットパターンの表を見て、今やっと上位ビットと下位ビットの意味を理解しました。

>>522
恐れ入ります。
本当はもっと勉強したいのですが、月曜に最終発表なのでとにかく少しでも進めないといけないんですよ。
でもおかげさまで参考になりました。値の取得は結構うまく出来てるようなので、ビット表とにらめっこしながら正しい値を取れるようにしてみます。

525:デフォルトの名無しさん
09/01/17 14:18:07
学生か? 悪いことは言わないから一年やり直せ。

526:デフォルトの名無しさん
09/01/17 14:20:39
まあそう必要以上に煽るなよ。
逆切れしてる訳でもない奴を一方的に煽るのはちょっとみっともないぞ。

でもマイコン弄るのにバイナリによる整数表現も理解してないのは
かなりマズいのは確かだねw

527:デフォルトの名無しさん
09/01/17 14:20:57
replybuf[0]=data[7];
replybuf[6]=data[6];
・・わけわからん
あまり時間は無さそうだが、
変数名ぐらいはきちんと考えてつけた方がいいぞ
おれがこんなの受け取ったら作り直せと言うがなあ

一度tiny辺りのギリギリの環境で修行した方がいい
mega88はもったいない

528:デフォルトの名無しさん
09/01/17 14:26:29
>>525
まだ1年なのでそれはきついっす。

>>526
ですよね。。
しかしこれだけでも少しは勉強になったので、次回以降は同じことでつまずかないようにします。

>>527
1から作る力がないんで、元々教授が作ったソースを改変して作ってるので、多分その名残だと思います。
USBで123456と送ると、612345にして返すとかいう単純なプログラムだった記憶があります
megaにしたのも「AD変換するならmegaのほうがいい」といわれて決めただけなので、入門どころか門前で土下座してるような状態です。


529:デフォルトの名無しさん
09/01/18 22:10:48
Linuxがどうとかって話があったよな
URLリンク(www.technobahn.com)

530:デフォルトの名無しさん
09/01/18 23:32:32
Palmに飽き足らず、
こんどはlinuxを潰す気か


531:デフォルトの名無しさん
09/01/19 20:21:20
Linuxに法則発動か。
ナンマイダブナンマイダブ。

532:デフォルトの名無しさん
09/01/19 20:26:10
上の方じゃcharにword押し込んでるのに指摘しない人ばっかだし。
組込み業界に法則発動してるんじゃね?ww

533:デフォルトの名無しさん
09/01/19 20:29:12
小出しにされたから

534:デフォルトの名無しさん
09/01/22 13:16:29
SH2で2chのシリアル受信を同時に行いたいんです。

データの取りこぼしがないようにDTCとDMAを
使おうと思ってます。
大筋でどんな感じにすればいいでしょうか?

535:デフォルトの名無しさん
09/01/22 15:16:14
ブー

536:デフォルトの名無しさん
09/01/22 15:52:24
>>534 H8系はたくさんやってるから助言はできるとおもうが、レートを書いてくれないことには
方針が確認できないじゃん。イックニか384くらいまでなら割り込みでも取りこぼさないし。
俺はふつうに割り込みで書いて、耐久性はringバッファのサイズで調整したぞ。

537:534
09/01/22 17:02:55
ボーレートは38400です。
参考までにリングバッファのサイズは
どれくらいまで大丈夫でしたでしょうか?

538:534
09/01/22 17:27:41
シリアルの割り込み関数にはこんな感じに書いてます。
リングバッファのサイズは256バイトです。

------------------------------------------------
INTDI  //割り込み許可
ucW = SCI2.RDR;
SCI2.SSR.BIT.RDRF = 0;
if (uiSCI2_RecCount < MAX_REC_BUF) {
ucSCI2_RecBuf[uiSCI2_RecPut] = ucW;
uiSCI2_RecCount += 1;
uiSCI2_RecPut += 1;
if (uiSCI2_RecPut >= MAX_REC_BUF) {
uiSCI2_RecPut = 0;
}
}
INTEI    //割り込み許可
------------------------------------------------

539:534
09/01/22 17:28:11
連投すみません。

INTDI  //割り込み禁止

の間違いです。

540:デフォルトの名無しさん
09/01/22 18:20:24
384なら普通に割り込みで問題ないと思う


541:デフォルトの名無しさん
09/01/22 18:34:50
割り込み突入時は割り込み禁止状態だよ。

542:デフォルトの名無しさん
09/01/22 18:35:57
SH2だと割り込みレベルで考えなきゃいけないんだった。

543:デフォルトの名無しさん
09/01/22 19:01:33
多重割り込みしないと取りこぼすよ
禁止にしない方向で


544:デフォルトの名無しさん
09/01/22 19:06:29
割り込み以外のところで長めの割り込み禁止があったら、地獄行きだろうな?

545:534
09/01/22 19:12:29
みんなありがとう!
とりあえず割り込み関数の中の割り込み禁止は無くしました。
が、やっぱり取りこぼしが発生しているみたいです。(;;)

受信したデータをmainループで回して処理していて、
その度にRecCount をデクリメントしてるんだけど、
処理が追いつかずにRecCountの値が
MAX_REC_BUFを超えてしまうんです。
これは、DMA&DTCを使っても同じことなんでしょうか・・・

546:デフォルトの名無しさん
09/01/22 19:14:31
RecCount をデクリメントしてるところで
SCIの割り込みがかからないようにしてる?

547:534
09/01/22 19:18:52
>546さん
してます。
具体的には、こんな感じに。

-----------------------------------------------
INTDI
if(uiCH==0){
ucW = ucSCI0_RecBuf[uiSCI0_RecGet];
uiSCI0_RecCount -= 1;
uiSCI0_RecGet += 1;
if (uiSCI0_RecGet >= MAX_REC_BUF) {
uiSCI0_RecGet = 0;
}
}else{
ucW = ucSCI2_RecBuf[uiSCI2_RecGet];
uiSCI2_RecCount -= 1;
uiSCI2_RecGet += 1;
if (uiSCI2_RecGet >= MAX_REC_BUF) {
uiSCI2_RecGet = 0;
}
}
INTEI
-------------------------------------------

548:デフォルトの名無しさん
09/01/22 19:26:50
INTDI
uiSCI0_RecCount -= 1;
INTEI
って、感じかな?
それでだめなら、SCIのエラーを調べてみるとか
1CHだけで動かして処理が間違ってないか確認するとか

549:デフォルトの名無しさん
09/01/22 20:12:50
RecCountっているの?

#define MAX_REC_BUF 256
割り込み側:
ucSCI2_RecBuf [Put++ & & (MAX_REC_BUF-1)] = ucW;
メインルーチン側:
ucW = ucSCI2_RecBuf [Get++ & (MAX_REC_BUF-1)];
#define IsEmpty (Get == Put)
こんなんでいいのでは


550:デフォルトの名無しさん
09/01/22 20:35:08
それだとPutがGetを追い越さない判定が必要?

551:デフォルトの名無しさん
09/01/22 20:42:03
追い越してもいい作り
256バイトの間読まなかったらそれはリードの責任ということで

552:デフォルトの名無しさん
09/01/22 21:18:25
それと、受信割り込みが2つあるなら>>549のセットも2つ用意するべき
1つのバッファで受けようとすると予期しないことが起こる
2つのバッファで受けて、メインルーチンで順番に処理する
フロー制御する場合は割り込み側でバッファのポインタを見て行う

553:デフォルトの名無しさん
09/01/22 21:25:04
フロー制御するなら、別にカウンタがいるのでは?

554:534
09/01/22 21:46:33
>>548さん
試してみましたが、駄目でした。
片CHのみの動作は各ch共にOKで、
SCIエラーなどは発生していないです。

>>549さん
ご指摘のような感じにも書き直してみましたが、
状況変わらずです。
やはりメインルーチン側の読み取りが
追いつかないようです。
ちなみバッファは各ch用意しています。

外部からのシリアルデータは2つのCHに
常に同時に入ってくるような動作をするのが
ネックのような気もします。

555:デフォルトの名無しさん
09/01/22 21:50:18
マイコンの動作クロックは上げられないの?
もしくはフロー制御は出来ないの?

556:デフォルトの名無しさん
09/01/22 21:54:15
もしくは受信バッファのサイズを大きくしてみるとか?

557:デフォルトの名無しさん
09/01/22 21:59:00
追いつかないってことは割り込みが連続で発生して
メインルーチンに処理が戻ってこないとかかね
もしそうなら見積もりが甘かったな
マイコンの選定からやり直しだ

558:デフォルトの名無しさん
09/01/22 22:09:49
せめて割り込み部分はアセンブラでギチギチに書いてクロックを稼ぐ
多分何も考えずにCに吐かせると、えらい無駄なコードになってるだろうから


559:デフォルトの名無しさん
09/01/22 22:10:32
なんか論点ズレてると思うんだよね。

俺は恐らく>>534の書いたコードのアルゴリズムが根本的に下手なだけだとおもう。
「RecCount をデクリメント」なんて書いてる時点で変だと思う奴が誰もいないのかよ。

何かのフラグをメインでポーリングして1バイトずつチビチビ処理するような
コードになってるんだろうけど、そりゃそんなやり方じゃダメだろ。

デリミタ方式かSTX,ETXみたいなやり方かわからんけど、
一区切りのデータがバッファに入った時点で丸ごとバッファからデキューして
処理するように書かないと。

560:デフォルトの名無しさん
09/01/22 22:18:16
最適化してコンパイルしてなかったとか?

561:534
09/01/23 01:05:59
皆さん、アドバイスありがとうございます!
>>555さん
動作クロックをあげたり、フロー制御を入れたりというのは
出来ないんです。
>>556さん
バッファのサイズはもっといろいろと試してみたいと思います。
>>557さん
メインに全く戻らないという訳ではないです。
ただ受信のピークに取りこぼしが発生しちゃっている感じですね。
>>558さん
アセンブラ・・・出来ることなら避けたいです・・・
>>559さん
ご指摘の通りでポーリングで回して
受信したデータを解析、処理させています。

決まったデリミタがなく、通信の長さがまちまちのものから、
必要な一部のデータだけ抜き取らないといけないので、
どう区切るかが難しいのですけども。

メインでちまちまとデータを解析するなら、DTC使おうが、
DMA使おうが状況は同じでしょうか?
>>560さん
そんなことはないです。


562:デフォルトの名無しさん
09/01/23 01:22:59
>>561
だから一番誰でも思いつく単純でわかりやすい方法は、
少なくともデータの区切りかどうかの判定まではISRの中でやってしまうこと。

一区切りのデータを受信した時点で初めてフラグを立てるんだよ。
で通常ルーチンでバッファの中のひとまとまりのデータを解析すればいい。

563:デフォルトの名無しさん
09/01/23 01:28:03
2CH分のデータ解析処理を同時に動くように工夫した方がいいような。

564:デフォルトの名無しさん
09/01/23 04:00:23
他の割り込みは使ってる?タイマとか。SCIの割り込みレベルを最優先にしてる?
256というサイズは何から決めた?通信の1バーストがそれより短いことは確実?
バーストとバーストの間のお休みはどの位?
決まったデリミタが無い状況で何を手がかりに切り出してるの?

俺が書いたpgmでは、デリミタを認識して状態遷移する部分はメインループに書いたな。
割り込みはringに蓄積するのみ。遅いレートならメインループ1回に1文字取り出す方式でも
充分ついていったし。384なら、while(今ringに溜まってる分)取り出す方式のがいいかもだが、
2ch並行処理がぎくしゃくすると思うから、前者を奨めるなあ。

565:564
09/01/23 04:06:50
こんな感じ:
for(;;)
 if( uiSCI0_RecCount )
  chtask0();  // CH0の取り出し・解析
 if( uiSCI1_RecCount )
  chtask1();  // CH1の取り出し・解析
}
3MHzの8085で、4.8Kを4CH同時に処理できたよ。38400でも割り込み間隔1/8でしょ。
32bit機で、clockが10倍ぐらいなら十分以上に余裕があるはず。

566:デフォルトの名無しさん
09/01/23 05:00:23
>>538
1バイトしか読んでないような気がするんだが、
なぜ FIFO が空になるまで読み出さない?


567:デフォルトの名無しさん
09/01/23 16:31:27
解析が始まると終了するまで処理続けてるとか?

568:534
09/01/23 18:19:49
皆さんから頂いたアドバイスに基づいて、
シリアル受信部で一定の処理の後、
フラグを立て、そのフラグをメインループで
見て解析を行うように変更してみました。

しかしながら、片方のCHは動作してくれるものの、
もう片方はデータを取りこぼしてしまい
正常に動きません。

やはり、シリアルの受信をDMA、DTCで
バッファに格納しないとだめなのではないでしょうか?
(もし理解に誤りがありましたら、ご指摘ください。)

タクトタイムは1秒間に20回ほど、
1回につき両CHにそれぞれ240バイトほどの
データが送られてきます。

569:デフォルトの名無しさん
09/01/23 18:47:41
データを取りこぼしてしまいって、
通信エラーじゃなくて解析が間に合わないってこと?

570:534
09/01/23 18:54:36
受信したバッファとラインモニタの内容を
比較すると受信したバッファが飛び飛びに
なっているんです。

571:デフォルトの名無しさん
09/01/23 19:06:39
試しにシリアルの速度落としてみれば?
速度化ロジックかすら分からないのだとしたら。

572:デフォルトの名無しさん
09/01/23 19:07:08
>>571
速度かロジックか、ね。

573:デフォルトの名無しさん
09/01/23 19:36:08
マイコンの動作クロックが気になる。

574:534
09/01/23 20:00:01
水晶が12.288Mhzで
動作モードはモード2。
クロックモードは3(MD2=1、MD3=1)です。

送信元の速度は固定なので、速度は落とせないんです・・・

575:デフォルトの名無しさん
09/01/23 20:36:43
取りこぼすCHの割り込み優先順位を上げてみる。

576:H.K
09/01/23 20:41:46
[5]
#include<stdio.h>
main()
{
int x,ans;
char y;
printf("年号と年:");
scanf("%c%d",&y,&x); /*文字型*/
while(y=='m'||y=='t'||y=='s'||y=='h')
{
if(y=='m')
ans=1868+x-1;
else if(y=='t')
ans=1912+x-1;
else if(y=='s')
ans=1926+x-1;
else if(y=='h')
ans=1989+x-1;
printf("%d\n\n",ans);
printf("年号と年:");
scanf("%c%d",&y,&x);
}
printf("プログラムを終了します。");
}
までできているのですが、2回目にならず終了してしまうため直してください


577:デフォルトの名無しさん
09/01/23 20:46:30
嫌です

578:534
09/01/23 20:50:36
>>575さん
CH1を優先すれば、CH2が取りこぼれ
CH2を優先すれば、CH1が・・・

579:デフォルトの名無しさん
09/01/23 20:56:03
>>566の指摘が正解かも?

580:デフォルトの名無しさん
09/01/23 21:12:28
割り込み処理をいじって負荷が掛かるようになったんじゃないの?

581:デフォルトの名無しさん
09/01/23 22:11:37
>>578
対向機の速度を変えられないならダミーを作ればいいじゃない。
Windowsにも相変わらず端末エミュレータがついているんだから。

582:デフォルトの名無しさん
09/01/24 00:47:11
RecCountにvolatileつけないとコードによっては最適化でとんでもないことになってるかも?

583:デフォルトの名無しさん
09/01/24 03:09:01
>>547
uiCHってどうなってんの?
両chでenqueueされたら、もちろん両chでdequeueしてるんだよね?


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch