1 :
デフォルトの名無しさん :
2005/09/06(火) 17:13:46
2 :
デフォルトの名無しさん :2005/09/06(火) 17:39:17
没スレ乙
3 :
デフォルトの名無しさん :2005/09/06(火) 17:42:03
制御系とはなんですか?
のっけから凄い質問が(^o^)・・・ 一応釣られてあげると、機器の制御専用に使われるマイコン をプログラムする仕事です。 Winなんかと違って、昔のプログラム習慣が生き残っていたり、 いまだにASMオンリーだったり。パソコンより低脳の石が主流。ある程度ハードの知識も要ります。
と、組み込み系しか制御系じゃないと思い込んでる>4が回答しております。
俺は産業用パソコンで組んだことがあるな。 石なんだったかな〜? Pentiumの何か。 でも、普通、組み込み系を想像するよね。
まーこのスレは何でもアリでしょう みんなの所の仕事も色々やらされてない?
8 :
4 :2005/09/07(水) 16:51:37
あ〜、すいません、俺はたしかにクミコ系ばっかり。パソコンで産業用機器の制御指令を 出すような分野も含むのね。でも過去の話題もクミコ系が多かったですね。
9 :
デフォルトの名無しさん :2005/09/07(水) 20:30:10
>>5 ならてめーが回答するときは、
すべてのケースを想定してんのかよ
うぜーんだよぼけ
くそ
携帯関係は制御系ですか?
冷蔵庫関係は制御系ですか?
12 :
デフォルトの名無しさん :2005/09/07(水) 22:12:05
本屋で組み込み入門みたいな雑誌が置いてたよ。 Cマガジンあたりの隣に
13 :
デフォルトの名無しさん :2005/09/07(水) 22:59:05
眠たいときは制御系が朝鮮系に見える
凄いな、プレス機も組み込みなのか
18 :
デフォルトの名無しさん :2005/09/13(火) 23:31:08
T-Engineのやりかたおしえて
21 :
デフォルトの名無しさん :2005/09/15(木) 02:29:31
T-Kernelの仕様書とかいうのを買ったんだけど これをコーディングすればあっというまに T-Kernelのできあがりなの?
そうだ
あっというまに は言い過ぎだな。さんざんアホな馬具を出しまくった後に。
25 :
デフォルトの名無しさん :2005/09/15(木) 19:45:03
>>24 個人情報の入力がうざいので1から作ることにしました。
質問なのですが 仕事でunixでCでソケットを使うプログラムをつくってるひとっておられますか? unixプログラミングのスレのひとは学生しかいないみたいなんですけど、、。
作ってましたが何か。
>>27 さすが
レス有難うございます。
やはり、デバイスドライバとかも書けないと私は使い物にならないのでしょうか?
頭が痛くなってきた
30 :
27 :2005/09/16(金) 18:35:48
私はデバイスドライバなど書いたことはない! 書けるかと聞かれたら、当然「書けるように努力する」と答えるのみ(ぉぃ
デバドラって名前が何か格好いい
連ドラと似たようなもんだと思うが。
33 :
デフォルトの名無しさん :2005/09/18(日) 16:07:27
OSは使わない ほとんど静的に周辺機器や変数のサイズが決まってしまう こんな環境でオブジェクト指向風に組む価値はあるのでしょうか?
>>33 それだけではなんともいえない。つーか、オブジェクト指向は周辺機器やOSによって左右されるわけではない。
>>33 あんまり徹底的にやらず、妥協したほうがいい。 でも、その考え方を知っていると
「情報隔離」の考え方をできるので、モジュール分けのときに「デバイス対応」の分け方をできる。
俺はその原則+多少の妥協をこんなふうにやった。格納=ライトルーチン(そのルーチンはドライバを使い
実際のデバイスに書き込む) 参照=ライトルーチン内のキャッシュに残ってる情報を返す、実際のデバイス
ドライバにはアクセスしない。 非対称ではあるけれど、アクセス速度・デバイスの書き込み制限、
などからこうするのがベターだった。
37 :
デフォルトの名無しさん :2005/09/18(日) 22:08:53
デバイス − ドライバ − ルーチン − 格納 キャッシュ − 参照 データ構造 キャッシュ 手続き なんとかルーチン::格納() { ドライバがうんたらかんたら キャッシュになんかする? } なんとかルーチン::参照() { キャッシュの情報? } 俺もよくわからん
こういう人がプロジェクトにいると困るよね 一人プロジェクトを任せるときには便利だけと チームものは無理だな
39 :
35 :2005/09/19(月) 05:05:57
うん、俺は小物専門だから常に一人。内部摩擦係数ゼロでお気楽。
40 :
33 :2005/09/20(火) 07:05:14
ちょっと抽象的すぎてわかりにくかったと思います。 もう少し書くと、動的にオブジェクトを生成したりすることなく すべて静的に決まってしまう用途という意味です。
まあCでOOやるなら FILE 方式。 つまり、 1、openで何かの初期化した構造体へのポインタを返すと同時にハードを初期化して その構造体の中身を教えないという手もある。 つまり、void * で渡してしまう。 2、アクセス関数の最初の引数は その構造体へのポインタ 実際の関数は、その構造体中に関数ポインタが埋められていて、そっちが処理する。 ⇒利用者はそういう構造を知らない ⇒同じアクセス関数が、openの仕方によ変化する が操作方法は当然同じ だろうな
>>40 意味はある。 ハードは性的にキマってるとしても
ソフト、とくに何らかの通信プロトコルのようなものや
単純な状態遷移を実装するときはC++便利だよ。
何も考えなくてもいいからな。newは当然使用禁止な。
44 :
デフォルトの名無しさん :2005/09/20(火) 22:03:55
>>40 静的に決まるなら配列でやればよい
何もmallocだfreeだとかnewだとかdeleteだとかにこだわらなくてもよい
つまり、>40は動的オブジェクトこそがOOだと思っているということか? まぁ、>42も似たようなもんか。
46 :
デフォルトの名無しさん :2005/09/21(水) 00:02:36
そんな一方的にイワンでも・・
47 :
42 :2005/09/21(水) 06:43:52
>>45 おいおい、ポインタを返すから動的って決め付けはどうかな
いや、「ポインタを返す」からじゃなくて「実装方法に拘泥している」から。
49 :
42 :2005/09/21(水) 07:47:48
ああそういう事か。 そこらへんはセンスだから、お好きなように。 といっても、作り手と利用者をしっかり分けられるこういうスタイルになると思うけどね
実装方法に拘泥したコーディング なんちゃってゲハハ
どこで笑えばいいの?
52 :
デフォルトの名無しさん :2005/09/25(日) 13:42:48
多分「拘泥」と「「コーディ」ング」をかけたところが本人的に すばらしく知的でハイセンスなギャグだと感じて この感動を2chの皆様にも披露したくなったんではないでしょうか
最近見かける、会社の入り口に置いてある電話番号案内も制御系か? ああ言うの作る仕事に転職したいんだが
いや、あれは単に交換機の仕様からメモし直して貼ってあるだけかと。電話番号案内を 作るみたいな仕事は制御系とは違うぞ。 交換機のほうを作るのは制御系だが。
uartのringバッファの管理について、こんなことを考えました。 ライトポインタ・リードポインタ・バッファ内滞留数をuintで考えます。 バッファ内滞留数はタスク側・割り込み側両方で++/--するので、タスク側でdi/eiが必用。 ライトポインタは書き込み側のみが、リードポインタは読み込み側のみがそれぞれ変更します。 「バッファ内に有効バイトがあるかどうか」だけなら「滞留バイト数」の情報は不要で、 (書き込みポインタ != 読み込みポインタ) の判定でできます。今は滞留バイト数を参照して 例えばバッファのサイズを超えて書き込むなどを避けているのですが、 「ライトポインタとリードポインタ(どちらも2のn乗のバッファサイズのモジュロで循環している)だけから 滞留バイト数を計算する」 ことは可能でしょうか? それが可能なら「滞留バイト数」の情報を削ることができて(゚Д゚)ウマーなのですが。
□1、理屈の上ではこの手のFIFO処理で割り込み禁止する必要はない。 たとえば、シリアル受信の場合 割り込みでwp メインでrp を更新するが メインでrpを更新してから、実際に書き込む実装、つまり 1、 wrp :=rp; 2、 rp := ( rp+1) mod BufSize; 3、 with wrp^ do begin メンバの設定 ;end とすれば、どこで割り込まれても困りはしない □2、 で、バッファにあるデータのサイズは Size = ( (wp-BufTop) - (rp-BufTop) +BufSize) % BufSize; Size = ( wp - rp +BufSize) % BufSize;
57 :
55 :2005/10/06(木) 06:35:52
□1は知ってます。di/eiは滞留数の更新時だけやってます。 □2:ありがとうございます。幾つか数値を入れてやってみたらうまくいきますね。 ラップアラウンド中どうなるかが判らなかったので質問したのですが、ヤッホー(^o^)
2のべき乗のサイズならmodの部分は and か bclr で 書ける
59 :
55 :2005/10/06(木) 09:02:26
□2について、「滞留数」情報の有るときと1点だけ違いが見つかりました。
滞留数情報があれば、wp==rp で、滞留数==BufSizeという、極端な滞留が許されるのですが、
滞留数情報が無いと、滞留数は (BufSize-1) までになりますね。
でも、ふつうはそこまで溜めないうちにガードがかかるようにシステム/アプリを作るはずだから
問題にはならないとおもいます。
>>58 そうですね。遅い石なのでその辺も使ってます。sizeof 配列 が2**nなら
%演算を書いても cが and を出してくれるかどうか試してみようとおもってます。
wp=rpを使うとなると、メイン側で、バッファの値を読むところまで 割り込み禁止しないといけない そうすると、禁止されてる間に処理しなければいけないデータが来たときに厄介だよ
61 :
55 :2005/10/06(木) 10:05:12
なので、受信側は滞留数情報を残しました。送信側についてだけ、wp、rpのみでやります。 すると、wpとrpが同じか判断するところは割り込み側にだけあるようにできます。 LSIC-80の8085機能でやってみたら、%演算書いても cが and にしてくれました。 演算量は8085なのであまり減りませんでしたね。wordの比較を8bitACCでやるから。 H8あたりだとウマーなのですが。 でもcコードは簡潔になったから(・∀・)イイ!。 受信側は、「受信滞留あり?」をメインループで判定する構造にしてるので、滞留数情報を 残しました。wpとrpを比較するコードより滞留数intがゼロかどうか見るコードのほうが軽いから。 ちなみにwp^rpと書くと16bitのXORをインライン展開して、wp!=rpと書くと call word比較が出ました。
ていうか受信にリングバッファなんて必要? どうせマイコンでやるようなシリアル通信なら相手から来るコマンドなり何なりは デリミタ付きなりパケットにデータ長が含まれてるなりするわけでしょ? つまり、ある1バイトを受信したとき、その時点でそこが一区切りの情報かどうか はっきりするわけだ。 だったらその時点で受信バッファの内容を「コマンドバッファ」にコピーしたらいいじゃん。 そうすりゃ受信をリングバッファにする必要なんてないよ。 もちろんこの方式でも、コマンドバッファの内容が未処理のうちに 次のコマンドの受信が完了してしまったらどうするのかって問題はあるが。
>>63 幼稚な奴。
どうせ反論するなら、なぜ受信バッファはベタな配列ではなく
キューにする必要があるのか根拠を言えばいいのに。
まあそんな能力はないのに口だけ出したいんだろうけど。
今日日こういうレスする奴が40面下げたオッサンだったりするんだよなあw
>>62 (><)ノ お答えしまっす!
確かに電文が短いうちはそれでいいと思うけど
なが〜い電文を逐次処理する羽目になったときに
リングバッファがいるかな〜 という感じです!
データの長さは関係ないと思うけど。 っていうか、普通は(逐次処理できるのなら)逐次処理できるからこそ リングバッファなんてイラネってなるはずだと思うけど。 例えばWinのメッセジーキューはPOSTされたメッセージを逐次処理できないんで キューになってるわけね。 マイコンでやるようなシリアル通信なんてたいていはデリミタか指定バイト数分受信したら 受信バッファの内容を全部パーサーに投げればいいような処理でしょ。 こんなのリングバッファでやる必要なんて全くないじゃん。
>>66 (><)ノ 補足しまっす!
リングバッファのもうひとつの利点は
シリアル受信を割り込み屋さんにお任せすることにより
キューを処理中にもガスガスとデータ受信できることで、
これがただのベタ配列だと あー キューを2本用意すれば
いけると思ったあなた! 鋭いですが そのキューの処理は
>>62 でご自身も書いてますように いろいろある感じです!
リングバッファが複雑すぎて作れないって人は無理に作らなくて良いよ
複雑すぎるという言葉自体に驚いた
(><)ノ データ受信とメイン処理を一緒にするのはお勧めしません!
>>66 のようにコードを書くと、データの受信のあとに
処理が終わるまで次のデータは受信できない? ということに
なりかねないコードになります。 相手は問答無用でデータを
押し付けてくる機械マンのケースが多いので、つらいDEATH。
じゃあデータの処理を別スレッドに飛ばそうか? とかいうと
つまんない受信処理が本スレ、メインの処理は別スレ、と
なんだかコードの視認性が悪くなってしまいますのです。
(><)ノ ですが、限定された条件下でなら確かにリングバッファは不要です!
短かめのデータ受信→なんか処理→ACK/NAK返送
という流れが確定し、今後30年はその仕様に変化がないと
クライアント様にハンコを突かせたなら、もうそれは
>>66 さんの
コードで必要十分なわけです。これはこれで見やすくなります。
>>67 >>70 わかってないな。
>>62 に書いた「問題」ってのはリングバッファでリングが一週回ってしまった
場合の問題とほとんど等価だよ。
つまりどちらにしろ問題は起こりうるわけで、それはリングバッファを採用する
理由にはなりにくい。
>
>>66 のようにコードを書くと、データの受信のあとに
>処理が終わるまで次のデータは受信できない? ということに
なりません。今日的な常識でいって普通はね。
前のコマンドの受信完了から次のコマンドの受信完了までの時間はまあ
短くてもmSecのオーダーといっていいだろう。
パーサーがコールされるまでにmSecオーダーレイテンシがありうるシステムなんて
今時ありえんでしょ。
仮にあるとすれば、リングバッファにしようがどんなデータ構造を採用しようが
同じこと。いずれ地獄は来ることになる。
73 :
55 :2005/10/08(土) 03:18:44
私の製品の実装例では、4.8Kで受信、数十バイト可変長のASCIIフレームが揃ったらその中から
数値情報を抽出するなんてことをやります。1文字の受信間隔は2mS、CPUは3MHzの8bitで
乗除算命令が無いので、sscanfの整数変換相当の機能を実行するのに数十mSオーダーで
時間かかります。ですからあるフレームの処理中に普通に次のフレームの頭何バイトかは受信が
あるわけで、
>>62 や
>>66 みたいなわけには行かないのです。
74 :
55 :2005/10/08(土) 03:24:48
すげ〜な、こんな時間に起きてる人が少なくとも2人・・・ 私は早起きのほうですが。 リングバッファのサイズは、受信では重い処理が何十ミリかかるか、送信では一度にどの位 の情報を書くかを見つくろって決めます。全部で8KBしかないメモリを、制御用変数とスタックと リングでやりくりします。
>>74 (><)ノ バトンタッチします!
逃げるついでに今から仮眠取ってきます!
せっかくFIFO式(リングバッファ)にしているのに、最後に コマンドバッファド式にコピーして使ってるせいで台無しになってるコードをメインテナンスした所だ。 コマンドバッファ式だと、受信して処理して結果を返すというサイクルで回ってる間は問題ない。 でも、通信路の速度を最大にしようとすると、 コマンドを処理している間に次の受信をさせる事になる。 受けと取って処理して返信だと、処理時間がゼロでも2倍以上かかる。 USBーシリアルなんて使うと、さらにディレイが入る事になる。 PCやマイコンは高性能になっても、通信路(ボーレート)は物理的な制限で上げられないし USB-シリアルの遅延なんてのはボーレートを上げても改善しない。 だから、コマンドを結果を待たずに、FIFOがある限りどんどん送りつけて(フロー制御して) という方向になってるわけよ
>もちろんこの方式でも、コマンドバッファの内容が未処理のうちに >次のコマンドの受信が完了してしまったらどうするのかって問題はあるが。 この対策がフロー制御です。 FIFO(リングバッファ)を持っていると メイン: 返信用FIFOが一杯(に近づいていれば) コマンド処理をしない 受信: 受信FIFOが一杯に近づいて来たら、(ちょっと待ってね)状態にする。 という決まったスタイルで安全に対応出来ます。 (ちょっと待ってね)状態にしても何バイトか送りつけられる事が殆どなので、それを考慮するとか、 コマンド処理が分散して処理されて時間がかかる場合は、それを考慮するとか そういう事も、決まったスタイルには含まれています。 コマンドバッファ方式だと、コマンドを受け取って即座に(ちょっと待ってね)状態にしないといけないでしょ? そうすると、一般的に通信速度が上がらないわけで、そっから、「対策しる!」と言われたら、 あちこち対策入れて、だんだん訳が判らない状態になるわけです。 そんなわけで、PICのようによほど小さい規模のマイコンで無い限りは、シリアル通信ではFIFOを 入れるというのが一般的です
ハードにFIFOを持っているが、ハードのFIFO自身にフロー制御機構を持たない場合、停止要求してから 何バイトもダダ漏れになるから(一昔前のPCの大部分に載ってたNS16550Aとか)、フロー制御を下手に 過信するのは危険だし、それなりの対策は打っておくのが普通。
79 :
デフォルトの名無しさん :2005/10/15(土) 11:43:23
保守あげ
>>80 >ハードのFIFO自身にフロー制御機構を持たない場合
>>81 あ、そうかw
3本線で工場内を繋いでるのかw
83 :
デフォルトの名無しさん :2005/10/15(土) 14:02:05
まあ、FIFO内のコードを全部解読してから実際のコマンドを発行する仕組みにすれば良いのではないか? そうそう途切れる事無くコードが送られて来る事も無いだろうに。
おまいらのにプロセッサボードにはシリアルポートしか付いてないのか?
>>85 つうより、ハード屋さんがそれしか繋げてくれなかったって場合の話らしいよ。
>>85 エーテルネットやらUSBやら無線やらうらやましいです
>>85 たまに3ポート内蔵とかだとウキウキしちゃうよね。
LEDでモールスはもう面倒になってきました。
スレ違いかもしれないですが、 WindowsでUSB接続のデバイスを扱うプロクラムを 作りました。 そのデバイスドライバをインストール させるのに、Windowsのコマンドか何か(API)からインストール させる方法をご教示ください。 プログラムのインストーラまでは作ったのですが、 そのデバイスドライバも一緒にそのインストーラで インストールさせたいです。 infファイルとsysファイル、関連dllはあります。 今は、USBを接続させ、ウィンドウズの自動認識による ドライバインストールのウィザードからインストール させるようにしています。
>>89 昔のWin DDKにinfファイルからドライバインストールするサンプルコードが付いてたな
俺はそれをDLLにして、InstallShieldから呼び出して使ったよ。
最近はその辺触ってないし、DDKもDLできなくなっちゃったからわからんけど、
Win関係のスレで聞いたほうがいいかもね
>>90 そうです、まさしくそれをしたいです。
「デバイス ドライバ インストール」等で
ぐぐったりしましたが、なかなか見つかりませんでした。
Win関連板、スレの場合、多分OSの基本的な
話題ばかりかと思い、実践している方が多そうな
このスレで聞いてみました。
>>91 寧ろこのスレはインストーラーなんて興味ないって香具師が多い希ガス。
現にうちのプロジェクトなら、「ドライバをインストールしてください」の一言で終わる。
過疎ってるけど、WDMスレのが近いかな
94 :
デフォルトの名無しさん :2005/10/29(土) 07:15:04
教えてください。
http://mbm.livewiredev.com/ [INFORMATION]で[SHARED MEMORY]の項目を選び、[C CODE]の中の
C++Class Wrapper can be downloaded here, thanks to Raoul
を選んでダウンロードし解凍(するとcmbm.cpp とccmbm.h)してVB6.0でDLLを作成した。その際、
,(即興的っつーかテスト用に)、関数を追加した。そしてvb6.0から関数をコールしたら、
ReadValues()は、connect()から(内部で)参照されたときはエラーになってないようなのですが、
getSensorType()から(内部で)参照されたときには↓のところでエラーになるのです。何故でしょうか。
bool CMBM::ReadValues(); // connect()とgetSensorType();から参照されている
{
data = (TSharedData *)MapViewOfFile(hMapFile, FILE_MAP_READ, 0, 0, 0); <―でエラー
if (data == NULL)
{
Connected = false;
return Connected;
}
return true;
}
95 :
デフォルトの名無しさん :2005/10/29(土) 07:17:03
テスト用に便宜的に追加した関数とは↓です。 int CMBM::getNbSensorvbType(int n_sensor) { int is; is= n_sensor; TsensorType tt; tt = getSensorType(is); is = getNbSensor(tt); return is; } 追加した理由は、getSensorTypeでは戻値、getNbSensor()では引数として使われている TsensorTypeに対応するパラメータの型を、vb6.0では俺にはできなかったから。
回答者はそれをダウンロードして試した上で俺様に答えるべき、とでも思ってるのかな。 まあ問題の性質上しょうがないのかも知れないが、 それでもせめてエラーの内容ぐらい書けばいいのに。 っていうか、スレ違いのような気がする。 まあマルチがはわわ〜、なんだろうけどさ。
97 :
デフォルトの名無しさん :2005/10/29(土) 16:42:02
vb6のデバッグモードでの実行時のエラーメッセージ 以下の[ ]や( )の文は説明のためであって、表示されたものではない。 (ダイアログメッセージボックス) VB6.EXE-アプリケーションエラー “0×038644bd”の命令が”0×03861036”のメモリを参照しましたが、メモリが”written”になることは できませんでした。プログラムを終了するには・・・・・・ プログラムをデバッグするには キャンセル をクリックしてください。 ↓[キャンセルボタン] (ダイアログメッセージボックス) Microsoft VisuaI C++ ハンドルされてない例外は、VB6.EXE(CMBPRJ.DLL)にあります。:0×C0000005: Access Violation ↓[OK ボタン] (cmbm.cpp) bool CMBM::ReadValues() { ⇒ data = (TSharedData *)MapViewOfFile(hMapFile, FILE_MAP_READ, 0, 0, 0); ・・・・・・・・
98 :
デフォルトの名無しさん :2005/10/29(土) 17:05:16
Public Declare Function Connect Lib "cmbmprj" () As Double Public Declare Function isConnected Lib "cmbmprj" () As Boolean Public Declare Sub DisConnect Lib "cmbmprj" () Public Declare Function getNbSensorvbType Lib "cmbmprj" (ByVal n_sensor As Integer) As Integer 以下はTsensortypeの型定義の仕方が不明だから、標準モジュールで止めたファンクション定義 'Public Declare Function getNbSensor Lib "cmbmprj" (Tsensortype As SensorType) As Integer 'Public Declare Function getSensorType Lib "cmbmprj" (n_sensor As integer) As Tsensortype 以下のboolean Bcnctは ローカルウィンドウで、"True"に表示される。 cmbmprj.dllの,bool CMBM::isConnected()のリターンコードがTrueで戻ってくるというのは 既に、dllが参照された時点で、CMBM::CMBM()とdouble CMBM::Connect()が参照され、それによって bool CMBM::ReadValues()も参照されていると判断される。 Dim iret As Integer Dim wcnct As Double Dim Bcnct As Boolean Bcnct = isConnected() '戻り値は Trueが確認されている If Bcnct = False Then wcnct = Connect() If wcnct = -1 Then ・・・・・ ElseIf wcnct = -2 Then ・・・・ Else ・・・・ End If Else iret = getNbSensorvbType(1) 'vb 側としてはここでエラー発生 Form1.List1.AddItem "温度センサーの登録数:" & Str(iret) & " " & TTIME End If
99 :
デフォルトの名無しさん :2005/10/29(土) 17:11:19
CMBM::CMBM() { data = NULL; Connected = false; Connect(); } //--------------------------------------------------------------------------- CMBM::~CMBM() { DisConnect(); } //--------------------------------------------------------------------------- bool CMBM::ReadValues() { data = (TSharedData *)MapViewOfFile(hMapFile, FILE_MAP_READ, 0, 0, 0); if (data == NULL) { Connected = false; return Connected; } return true; }
スマナイけど、俺たちは仕事をする為にこのスレに来てるわけじゃないし、ましてやタダ働きする為に来てるんでもない。 なにか面白い書き込みを楽しみに来てるわけで。 細かい具体的内容書かれれば書かれる程、ゲンナリしちゃうわけ。 質問は結構だけど、もう少し整理してくれ。 理解出来ないから丸投げじゃ、面白くもなんともないよ
101 :
デフォルトの名無しさん :2005/10/29(土) 17:12:45
double CMBM::Connect() { if (isConnected()) return -2; // try to open shared memory hMapFile = OpenFileMapping(FILE_MAP_READ, FALSE, "$M$B$M$5$S$D$"); if (hMapFile == 0) return -1; // try to make a first read to memory if (!ReadValues()) return -1; Connected = true; //return MBM version return data->sdVersion; } //--------------------------------------------------------------------------- bool CMBM::isConnected() { return Connected; }
102 :
デフォルトの名無しさん :2005/10/29(土) 17:17:06
>回答者はそれをダウンロードして試した上で俺様に答えるべき、とでも思ってるのかな。 >っていうか、スレ違いのような気がする。 >まあマルチがはわわ〜、なんだろうけどさ。 ↑(だから、コードを貼ったのだ) 矛盾 ↓ >理解出来ないから丸投げじゃ、面白くもなんともないよ 結局、答える能力はないから、自己投影で最後に難癖つけてきただけだろ。
103 :
デフォルトの名無しさん :2005/10/29(土) 17:18:11
>制御系なら・・・ ↑ 「羊頭狗肉」ってこういうことを言うんだ。
だからさ、 回答したくなるような+アルファをクレって、 そういう芸風はもう飽きてるんだよ。
お前のためのスレじゃない 飽きたなら消えろ
おいおい・・・このスレの最初のスレから3割以上レスしてたこの俺に消えろっていうんだな?
その通り 邪魔だ消えろ
判ったよ。 じゃあ、後は頼んだ。
109 :
デフォルトの名無しさん :2005/10/29(土) 17:47:07
AD変換のシステム(計測マン・マシーンインターフェースソフトも含む) は計測制御の基本だよ。計測が出来なければ制御(DAシステム)なんて 出来るわけがないからだ。しかもCPUの温度に関してときてるのだ。それなのに、 「制御」のスレで、その質問に高飛車に「スレ違い」って言うような連中が、 なんら批判されず、のさばってられるスレっていうのは奇妙なものだ。
110 :
デフォルトの名無しさん :2005/10/29(土) 17:47:58
住人さんたち、スレタイに「系」がついてることを忘れるなよ。
>>109 誰も高飛車に言ってないだろ。 そんだけ講釈出来るんだらお前が答えて終わらせてやれよ。
結局 (俺も含めて) 誰も回答できないわけか…。
113 :
デフォルトの名無しさん :2005/10/29(土) 18:02:45
>スマナイけど、俺たちは仕事をする為にこのスレに来てるわけじゃないし、ましてやタダ働きする為に来てるんでもない。 こういうの、高飛車だけではないな。陰湿な排他的性格も含むから。 あ、そうか。ここの「制御」って「人間排他制御」のことか。(藁 今や水冷とかファンコントロールがオーバークロッカーだけでなく静音マニアでも でもあたりまえ。それを「仕事」とか「タダ働き」だとさ。呆れるね。
金にならねえやっつけ仕事ほど、無駄な時間の浪費はない。
115 :
108 :2005/10/29(土) 18:08:02
やれやれ 質問者へ 1、まず、どういう立場なのかとか多少は自分の事も書いてみて 2、つぎに、何をしようとしているのか買いてみて 3、そして、問題は何なのか簡潔に書いてみて で、メモリマップファイルで、通信しようとしているようだけど、 書かれているコードではバイト数をゼロでREADオンリーにしてる。 後から変更しているの?
MBMの本体が動いてないからじゃないの?
制御系とか関係ないじゃん。 MBM DLLをVBから使いたいってことじゃん。 ス レ 違 い
119 :
96 :2005/10/29(土) 20:16:51
>>100 の書き込みは俺じゃないよ。
っていうか、
>>96 の書き込みを見て、それでそれに応えるつもりで
コードをコピペしてるんだったら、質問者は基本的な日本語の読解力が怪しいんじゃないの?
まあ
>>102 が質問者かどうかわからないけど、それにしてもね。
とりあえずWin32のCのintに対応するVBの型はIntegerじゃなくてLongだよ。
それが障害の原因かどうかはわからないけどね。
大体質問に答えてもらおうって態度じゃないな。 俺のところじゃそのモニタを使えてるが 絶 対 に 教 え な い
121 :
108 :2005/10/29(土) 20:39:04
あ勘違いだ。 サイズゼロだと、最大を指定したのと同じなんだね。 それから data = (TSharedData *)MapViewOfFile(hMapFile, FILE_MAP_READ, 0, 0, 0); <―でエラー と書いてあるから、 data への書き込みに失敗したのだろう。 となると、CMBMが作成されていないのに、メソッドが呼び出されたという所かな
122 :
108 :2005/10/29(土) 20:46:58
ところでVBからDLLを呼び出すからエラーの追跡が面倒になるのだと思うのだが VBだけではポインタが無いから難しいと思ったのだろうけど・・・・・ なんか昔、VBだけでやれた気もするんだけどなあ 最近、こういうのはDelphi使ってるから忘れちゃったよ。Delphiならポインタ使えるし
123 :
デフォルトの名無しさん :2005/10/29(土) 21:20:34
VB厨(笑)
124 :
108 :2005/10/29(土) 21:35:58
ちょっとぼんやり思い出した。 long 変数でポインタを受けて、MoveMemoryとかのAPIで VarPtr(構造体) で移動ってな所だったかな?
まあ制御系でもVB使わない事もないが、さすがにメインじゃ使わない。 PC用のGUIが必要なら DelphiかBCBだろ。 ただ、実験とか社内ツールだとExcelVBAなら結構多いかもな。 一昔前は測定器にPC使ってVBなんてのも多かったけど、 なんか大変動じゃないけどいつの間にかVBやってた所はZ80と一緒に地盤沈下。
126 :
96 :2005/10/29(土) 22:12:59
>>125 本当にこの世界の人?
この世界に限らず、特定用途向けのGUIアプリなんて今でもほとんどVB製ですけど。
じゃなきゃ、ここ二年ぐらいはドトネト。
Delphi使ってるなんてところは日本じゃほとんど見たことない。
>>196 そうか?
なんかVBアプリからの置換の仕事が多いから一昔前は多かったというのは実感してるが、
昔はバブルだったのか、これが今の請負額より1桁上の金額取ってたのかよというのばかりだけどな
組み込み専門の俺には割り込む余地も無い(w
>>128 組込み専門なら、割り込みもこなせなくてどうする!
最近は、そういうのは OS がやってくれたりするからなぁ。
131 :
デフォルトの名無しさん :2005/10/30(日) 11:07:10
組み込みと制御系って何が違うの?
制御系は組込み系の部分集合。
まあ、諸説あるだろうけど… 組み込み系というのは、機器に組み込まれて動作するソ フトウェアを言う。つまり、どちらかと言うと実装上か ら見た区別。 制御系は、機器を制御するソフトウェアを言う。つまり、 用途から見た区別。 だと思う。
組み込み系⊆制御系 じゃないの?
>>132 ,
>>134 例えば、物流の制御システムなんかだと PC 使ってやってることもあるから、
制御系だけど組み込み系じゃないって感じがする。
逆に、電卓のプログラムは組み込み系だけど制御系というのはちょっと違う感
じがする。
>>136 LCDの制御やボタンの入力などを読んだりするのは?
マジレスすると、電卓にソフトウェア部分は無い。
そんな餌で、釣れるんか?
オマエモナー。
制御系っていうと、最近は会社によっては、 MPUの仕様やプログラムは一切知らずに、 ステートフローや伝達関数書いてシミュレーションしたり、 実験してパラメータ決定するだけで、 その組み込みは、他部署にお任せってのも多々あるみたいだけど、 このスレでは、そういうやからもおkなん?
>>143 ああ、あの「試作品作るなんてお金の無駄です。」ってやつな。
いいんじゃね?
こんにちは、今回、会社にあるん古いバーコード・プリンタを 復活させる必要が出てきました。マニュアルを読むとRS232c経由で 制御できるようなんですが、XPのDOS窓から、RS232Cにエスケープコマンドって 送れますか? 昔、DOSの頃パラレルのプリンタをエスケープシーケンスで制御して遊んだ事が あるんですが。出来ることは覚えていますが、TYPE CONとかなんだったか 忘れてしまいました。 詳しいサイトとかありましたら教えてください。
>>145 送れるるよ。modeコマンドで各種パラメータを設定するのを忘れずに。
あーあと、EscコードはEscキーでは発生しないからね。
147 :
145 :2005/11/02(水) 22:12:20
>mode ありがとうございます。だんだん思い出してきました。
148 :
145 :2005/11/02(水) 22:18:06
>>145 ターミナルソフト使ったほうが便利では?
半角かなの使用率高いな
151 :
デフォルトの名無しさん :2005/11/06(日) 19:01:32
制御系で働くものとしては、どの程度まで制御理論を理解するのが一般的なんだろ。 現実的には古典から最新理論まで全部理解してるって無理だと思うんだよなぁ
俺は古典制御ならわかるが、現代制御はさっぱりだな でも、仕事では殆どが、通信の制御だったり、ロジックの制御だったり、 デバイスの制御だったりするから、 知らなくても全く問題なしだw
>91 亀だが、MSがDriver Install Frameworks Tools 2.0 とか称してそのあたりを纏めたツール・APIを公開している。 1.0のときには、ドライバ認証が要るとかいうふざけた話だったが。
>>153 情報ありがとうございます。
そのツールを使用して何とか
作成しようと思います。
155 :
デフォルトの名無しさん :2005/11/08(火) 16:38:40
TRON準拠のマイコンソフトなのですが、 デバッグのため、イベントが発生する毎にリングバッファにイベントをどんどん記録する、 という仕組みを追加する事にしました。 リングバッファに書き込む処理自体は共通のサブルーチンを用意して、イベントを引数で渡す、という 単純なもので特に問題ないのですが、 このサブルーチンを通常のタスク処理と、割込み両方から使いたいので、排他制御を考える必要が発生しました。 実装に当たって参考になる、なにか、良い資料やサンプル等ないでしょうか。または定番の方法など
NORTi/86 ? 排他ならセマフォが定番
>>155 正直そういう処理をするなら、排他以前に
イベントの検出直後〜リングバッファへの書き込みの間は
割り込みを禁止(Maskでは無い)しないと、イベントの発生順が
訳分からん状態になると思われ
>155 以下、uITRONVer4仕様での話 固定長メモリプールからイベントを書き込むバッファをゲットする。 (固定長メモリプールの長さはイベントのデータの最大長とする。) 書きたいデータをそのバッファに書く。 ゲットしたデータをメールボックスで送り出す。 受けるタスクでメールボックスを受け、固定長メモリを解放する。 実装によりますが、非タスクコンテキストからもpget_mpf(),snd_mbx()が利用できるものが 多いと思います。少なくともNortiは、仕様書をみたところそうなっています。 この場合、特に排他処理を用いなくても問題ありません。というよりサービスコール はリエントラントです。(正確には、サービスコールの不可分性の保証のことです) 方法は上記と違いますが、参考としては、私の知る限り、toppersJSPのログ機能です。 ログタスク経由か、直接出すかを選択できたと思います。ログタスク経由の場合はいったんキューイング して出していたように記憶しています。肝心な排他制御しているかどうかは未確認 です。 していなければ、セマフォよりも、loc_cpuが、いいかと思います。 lockするのは、キューの管理ポインタの更新時のみに限定できると思います。 ver4からの仕様ですが、loc_cpu中といえどカーネル管理外の割込は可ですので、 lock中 != 割込ディセーブルです。お間違えなく。
レスありがとうございました。 説明が最初に不足しておりましたが、元々の処理のタイミング等に出来るだけ影響を与えないようシンプルにしたい、 という事情がありまして、 本当は割込み禁止はしたくなかったのですが、 検討の結果、157さんもおっしゃるような書き込み中割込み禁止にする、という方向になりました 結局、これが一番シンプルでした あとは、割込み禁止期間が少しでも短くなるようなロジックにしました (セマフォはやや大掛かりになってしまうため不可) ありがとうございました。
>>152 そんなもんだよね。
古典も完璧とはいえないけども
Forth使ってる人居る?
組み込みスクリプトに? 自作の中間言語インタプリタなら作って使った事はあるけど
業務系プログラマでつ。 制御系にジョブチェンジしたいんですが (Java,C/C++、簡単なUSBのドライバならつくれます) 参考書籍を3冊くらい教えてください。
>>163 制御系たっていろいろあるからね。
目指すものによっていろいろ
ドライバ書けるなら、いろんなOSマスターして
ドライバ屋という手も無いではない
その場合はマニュアル見ながらひたすらソース読んだ方が
理解できたり。。。。。
>>163 弊社でよければ面接の用意をしますw
いや、業務系も制御系も人が足らんのよ。
昼間から2ch覗いてる管理職のいる会社には行きたくないです
大丈夫、夜間仕事しているから(ぉぃ
プログラミングではなく制御設計はこのスレではあまり関係ない? PIDとかz変換とか。
169 :
デフォルトの名無しさん :2005/12/09(金) 00:35:52
正直、業務系に転職したい 業務系ならあと20年は働ける気がする
妄想だけじゃメシは食っていけないよ?
>>168 それをネタに話してもスレ違いと暴れる奴はいないと思うが
電気・電子板でやった方が人がいると思うぞ
俺は無理、ついていけない
マ板のクミコスレで聞いたら呆れられたのでこっちで聞かせて。 8051互換チップでDAC端子 が「作動状態」=Lo-Z状態=制御電圧が出ている状態、「停止状態」=Hi-Z状態で、テスタ で見てみると0Vが出てるように見えます。 これと0Vが出てる状態とがどう違うか?なんです。 インピーダンスって、理科の時間には「交流、とくに高周波に対するコイルの抵抗」って習った のに、直流の端子でインピーダンスがどういう意味を持つんですか?
>>172 またも板違い
電気・電子板が適切かと
制御電圧に対してHiZだって事でしょ
インピーダンスは交流もあるんだよ
>>172 そのテスターで、+電源とその端子の間の電圧を測って、それぞれ結果を報告してみて。それからだ
マ板って、、、、、あそこはネタスレだろう
しっかり釣られて、まともな話をし始めてるのが業だな
>>172 お前さんのやったことは
+端子と−端子を持っただけの時の電圧を測ったのと変わらん
>>172 ぶっちゃけ、その線が断線しているのと同じ状態<HiZ
ハイ・インピーダンスって抵抗値が大きすぎて繋がっていない事と同義だと思うの TTL出力は出力と出力をつないではいけないけど、3ステート出力なら 出力していないときはハイインピーダンスにしておけば大丈夫(バスの基本原理)
ありがとう。理系的な解り方じゃないけど、感覚的にはわかったような気が・・・(^o^) 話は変わりますけど、安いROMライタありませんか?簡単なシリアル入出力をよく頼まれる のですが、PCしかないのでHEXを送って向こうで焼いてもらうと、つまらないタイプミスが 1,2度はあります。弁当箱は貸してもらえそうなので、ROMライタを自前で持ってれば便利そう なのですが・・・スマートライタというのは見たことあってコンパクトでいいなと思ったのですが、 \59,800ぐらいします。
仕事じゃないなら秋葉でジャンクを探すとか自作するとか。 仕事なら、レンタルで借りるとか。 #処で弁当箱とは何のこと? #それがUVEPROMの消去用の紫外線灯の入った箱のことなら蛍光灯スタンド+殺菌等でも大丈夫w
殺菌灯は強力なので、カバーをつけないといけないよ。 俺は、隣の机でカバー無しで使ってたら顔の半分の皮がボロボロと・・・
182 :
179 :2005/12/15(木) 19:10:32
机の下に入れて水虫対策とか。 私自身は机の中に入れてた。
8255と16550を合わせたようなLSIないですか?
184 :
178 :2005/12/15(木) 19:33:39
皆様早速ありがとうございます。半田ごては髭剃りのニカド交換ぐらいしかできないので
自作はムリです。 弁当箱=「ターゲットのボード+電源」の箱です。ちょうどドカ弁ぐらいの
大きさなので。 27C256か27C512ぐらいしか焼かないのですが、客先のはなんかドデカイ奴
で、とても持ち出しとか考えられません。
>>180 さんのは安いですね。イレーザーが意外と
安かったのも参考になります。 レポートご期待よろ。
その弁当箱とやらを改造して フラッシュメモリとダウンローダを乗せとく
>>183 昨今、そういったマルチIOのLSIはなくなっちまってるだろ
別にLSI載せるよりIOてんこ盛りのCPUを選択したほうが安いし
188 :
178 :2005/12/17(土) 04:53:02
>>186 改造、というか作り直すときはROM周りだけじゃなくCPUから全部になると思います。
8251を4CH-->uartが4CH載ってるH8(下位シリーズ)はないので、3CHは内臓、あと1CHは
タイマで作るというのを客に提案してあります。わざわざ基盤起こすほどのシロモノでもないので
8085が秋葉で買える間は今の基盤でいくみたいです。
このスレマジなだけに年末居なくなるのも早いなあ。雑談の一つも出ずにパタッと無人になる
何が言いたいのかわからん。
>>189 >>190 言わんとしていることだけはなんとか読み取れる
みんなネタが豊富なマ板の組み込みスレに行っちまったんじゃないか?
ネタスレがすっかりマトモなスレになっちまってる(w
でもこっちの方が質問にマジレスしてくれるから頼りになります。
193 :
デフォルトの名無しさん :2006/01/15(日) 01:10:20
はじめまして。質問させてください。 この度、タスクを担当することになったのですが、例えばタスクAが割込み信号を受けて 処理を開始しますが、プログラムの処理中に別の割込みを受けた場合はどうなるのでしょう? その処理が中断されて新たな割込みの処理に走ってしまうのでしょうか? それともプライオリティにより、処理が終わるまで割込みが待たされたりするのでしょうか?
さーて、OSはなんだね
195 :
193 :2006/01/15(日) 01:17:44
失礼しました。OSはiTRONっす
>タスクAが割込み信号を受けて処理を開始 うーん、まぁいいや。 以下、割り込みを禁止していない状態での話ね。 あと細かい話も省略。 >プログラムの処理中に別の割込みを受けた場合はどうなるのでしょう? >その処理が中断されて新たな割込みの処理に走ってしまうのでしょうか? うん。プログラムというか、タスクの実行中なら割込み処理するよ。 >それともプライオリティにより、処理が終わるまで割込みが待たされたりするのでしょうか? タスク実行中なら割込まれちゃうね。
197 :
193 :2006/01/15(日) 01:42:13
>>196 レスありがとうございます
> >プログラムの処理中に別の割込みを受けた場合はどうなるのでしょう?
> >その処理が中断されて新たな割込みの処理に走ってしまうのでしょうか?
> うん。プログラムというか、タスクの実行中なら割込み処理するよ。
やはりそれまでの処理は途中で中断されてしまうのですね。
> >それともプライオリティにより、処理が終わるまで割込みが待たされたりするのでしょうか?
> タスク実行中なら割込まれちゃうね。
つまり、処理に割込まれないようにするために割込み禁止にするって事ですか?
ちなみに、やろうとしていることは、USB接続された他のPCのソフトから文字列が送られ、
その文字列毎に処理を行うものなんです。
"ABC"と叩かれたらAの処理"DEF"と叩かれたらまた別の処理をするみたいな。
ここで"ABC"の処理中に"DEF"の文字列を受け取ってしまった場合を考えていました。
行うものです。
198 :
193 :2006/01/15(日) 01:44:23
>>197 > 行うものです。 ←ミスです^-^;
単純に割込みを禁止にしてしまうと他の割込み処理に影響しないかなぁ、など
馬鹿な頭で思ってしまったのです。
>>197 割込みはタスクより優先されて動くよ。
1.タスクはOSの同期オブジェクト待ちになって受信データを待つ。
2.割込み側はOSの同期オブジェクトをシグナル状態にしてタスクの待ち状態を解除して割込み処理を終了する。
3.タスクはOSによって待ちを解除されて受信したデータを取得して処理する
4.タスクは再び受信データ待ちになる。
って感じで同期するんではないかと。
同期オブジェクトについては先輩に聞いて下され。
たぶんそこが分かれば一歩前進できたといえるかと。
貴方の言うとおり、割込み禁止は他の割込みにも影響するよ。
タスク部を書く人はなるべく割込み禁止を使わないか、その期間が短くなるようなコードを
書くことを求められるだろうね。
普通は、 割り込み処理では、送られて来た文字列をバッファに溜め込んで、 通常処理では、バッファに溜まった文字列を解析&実行させる。 ってえのが常識ってもんだ。 割り込みを禁止にするなんて、論外。 割り込み処理を使う意味が無い。
201 :
193 :2006/01/15(日) 02:06:18
>>199 レスありがとうございます。
同期オブジェクトですか。初めて聞いた言葉なので後で調べてみるっす!
割込み禁止の処理を使う事があったら、ご指摘の点について注意してコーディングします。
>>200 レスありがとうございます。
仰る通りですね。イメージとしては文字列をバッファに溜めて・・だと思うのですが
(まだソースコードをみていないので)、文字列をバッファに詰め込む前に、更に割込みが
あがって来てしまった場合とかを考えてしまうのです。
>>201 文字が送られて来る時間の間隔を計算してみれば? よっぽどマヌケなコードでも書かない限り、バッファメモリに書き出す処理が終了する方が早いでしょ?
>>201 > 文字列をバッファに詰め込む前に、更に割込みが
> あがって来てしまった場合
そういう場合のために割り込み禁止という機能があるのよ。
割り込みハンドラ(){
割り込み禁止
受信データを蓄積用のバッファにコピー
割り込み許可
必要があれば受信フラグを立てたり、タスクを起こしたり
}
当然、割り込み禁止区間は極力短くしないとシステム全体に影響が及ぶ。
>>202 のような、受信間隔なんていう不確定なものをあてにするのは、
不可解なバグの要因になるので、普通はしない。
>>204 おいおい、ハーウェアの通信性能以上に短い間隔にはならないんだよ?
確実に数値で計算出来る値だろうがw
ハードウェアだな・・・タイプミスしちまったw
つうか、ハードウェア割り込みに関係する所を作るのに、ハードウェアの性能とか動作タイミング計算しないでどうするの?
なんかよく分らないから割り込み禁止にしちゃおう って方が問題だな。
まあ、脳あるOS(CPU)ならハードウェア割り込みには、要求される動作速度や重要度に沿ったプライオリティーが付いてるからな。
210 :
デフォルトの名無しさん :2006/01/15(日) 04:10:29
214 :
デフォルトの名無しさん :2006/01/15(日) 04:14:01
>>205 多重割り込みなんか関係無いよなw
もっと続けてー
>>208 割込みマスクの必要性をよく分かってないのは誰ですか?
他の割り込みが処理に要する時間と、通信割り込み内で要する処理時間を合計しても、次の通信割り込みには間に合うんだよ。 つうか、そう作る。
217 :
デフォルトの名無しさん :2006/01/15(日) 04:23:16
イタタタ
要は、割り込み処理内でダラダラと処理させないって事だな。
>>207 >>216 そういう作り方自体は制御系としては別に間違ってないよ。
OSもないような小規模で、かつ、ハードが確実に特定できるターゲットならね。
>>193 のターゲットはiTRONと言ってるんだが、
それでもそんな作り方を薦めるつもりなの?
>>219 OSが何であれ、そうしないと通信データ取りこぼすよ?
まーOSの無い小規模なシステムならそれでもいいんじゃね? だがOS載せてる環境でタイミング依存するコードなど書くのは愚かだね
>>220 何のために受信バッファだのフロー制御だのがあるの?
ちょっとまて、 信号って言うのはハードウェア割り込みの事じゃないのか? だから、ハードウェア限定されてる話じゃないのか?? つうか、普通ならドライバーがやってる仕事を書いてるだけなんだが???
224 :
デフォルトの名無しさん :2006/01/15(日) 04:32:48
ハードの動作タイミングなんかに依存してるほうがよっぽどヤバいだろ
>>222 だから、受信バッファに貯める処理自体の話をしてるし、フロー制御もありだよ?
227 :
デフォルトの名無しさん :2006/01/15(日) 04:34:40
OS載っているのにタイミング「だけ」で何とかしようという輩がいるとは…
割り込み処理内ではバッファに貯めるだけとか極力少ない最低限の処理をして、もうひとつの処理でゆっくり実装するって話の。 特に、クリティカルな方の話なのになぁ・・・。
なあ、普通は、通信割り込み内ではバッファに書き込むとか、ハードウェア制御だけとかするんだろ? この部分はどんなOS乗ってようが、ハードウェア依存だし、タイミングの話からは逃れられないだろ。
230 :
デフォルトの名無しさん :2006/01/15(日) 04:44:34
そんなもんは必要条件 なぜか割込み不要と言い切っているところがワロス
おまえら、割り込み処理内で"ABC"や"DEF"の解析まで全部やる気だった? バカだろ?
バカが湧きました
>>230 割り込み不要?
そんな読解力無い奴相手だったのか??
234 :
デフォルトの名無しさん :2006/01/15(日) 04:49:33
>なんかよく分らないから割り込み禁止にしちゃおう って方が問題だな。 おーい名無しばかりでよくわからんが、これ言った奴なんか言えよw
>>233 喪前さん以外(多分漏れ以外に2人くらいいそうだが)はそう読んでるぞ。
書き方の問題じゃないか?
読解力ではなく書き手のry
>>234 俺のf読解力ではその一言を書いた奴が
一番分かってないように見えるね。
>>234 俺だ。
処理自体を吟味もせず、割り込み禁止すれば解決! みたいな考えは、危険だろ。
何故禁止にするのか、禁止期間は他の割り込みに影響が出ないか吟味した上で、最小限度の禁止区域を設ける。
そういうプロセスで考えないと、割り込み内で解析までやって頭から最後まで禁止にされちゃあ、かなわん。
うh
240 :
デフォルトの名無しさん :2006/01/15(日) 05:00:05
割り込みハンドラではデータコピー処理だけして、解析はタスク側だけでやる、 という前提の上で、割り込みハンドラと割り込み禁止の問題を話してる ・・・んじゃないのか?
>>240 200も割り込み禁止にすればどんな長い処理でも出来るって思ってる節がある事への反論じゃね?
>>242 そう読める?
反論ということならば、
>>199 に対してだろうが
>>199 が「割り込み禁止にすればどんな長い処理でも出来るって思ってる」節がある
ようには見えないんだが。
>>242 >>200 は「タスクで割り込み禁止するなんて論外」と言ってるだけで、
冒頭で「解析は通常処理(タスク)で」とも言ってるから、
そういう風には思ってなさそうだが。
246 :
デフォルトの名無しさん :2006/01/15(日) 05:13:26
>>245 あー、そっちが自然だね
レス先書かない奴がいるとワケワカラン
まあ、
>>200 が言葉足らずだった事は認める。
誰に対して言ってるのかは、勘違いしないでくれよ。
>>199 と
>>200 は1分23秒差だ。
少し考える時間を含めれば、到底無理だ。
249 :
デフォルトの名無しさん :2006/01/15(日) 05:22:24
普通とか常識とか使って断言口調で書く奴と話がしたかったなぁw 寝る!
>>249 多分、2人だけだったんじゃねえの? ここにいたの。
俺も寝ますよ?
いや、見てはいたが余りにアホ臭いので放置しておいた。
おまいら、分身の術上手いですね?
ネタはさておいて久しぶりに盛り上がったな
ですなぁ ム板でもこのスレはやや年齢高いのか、荒れそうで荒れないような
まあ、みんな新人の同じようなミスと教育に疲れきっていますから。 新人のレベルによって、 「判らんのなら割り込み禁止しろ!」といってみたり 「判らんからといって割り込み禁止するな!」と言ってみたり
あれ?祭りだった?
これで「荒れてない」って感覚は相当ヤバいというか麻痺してると思うけどね。 海外の掲示板よく覗くが、こういう技術系の内容の板で こんな幼稚なやり取りをやってるところは見たことがない。 正直、いい歳した大人がこんな幼稚なことやってる国の将来が明るいはずがないと思う。 将来っていうか今でも十分ダメだけどね。
259 :
デフォルトの名無しさん :2006/01/15(日) 13:50:07
あれてないよ
ここは2ちゃんだということを忘れてるなw
幼稚だね本当。 赤信号みんなで渡れば怖くない、と。 なるほど、日本人を海に飛び込ませるには「もうみんな飛び込みましたよ」と 言ってやればいいわけだw ここがどこか、ではなく、どこであろうと自分自身が何をするがが問題だろうが。 こういう劣等民族は滅ればいいと思うね。
そういうおまいは、ここが2ちゃんであろうとなかろうと、 そういう煽り文章を書くんだなwwww
263 :
デフォルトの名無しさん :2006/01/15(日) 14:29:08
制御系やってる人って頭いいよね
結論見えてから吠えてる方がいますね
265 :
デフォルトの名無しさん :2006/01/15(日) 18:57:41
組込み系の参考書でよいものがあったら教えてください。 イケメン技術者の方々
>>265 一言で制御系といっても範囲が広いから、どういう方面か
ぐらい書いてね。
方面が良くわからんと言うレベルなら、とりあえず「イン
ターフェース」とかの雑誌を買って読んでみそ。
267 :
デフォルトの名無しさん :2006/01/15(日) 22:39:48
>>266 アリガト!(´▽`)イケメン技術者!!
268 :
デフォルトの名無しさん :2006/01/19(木) 00:01:04
タスクの処理で while(1) { なんか信号を受け取る関数 受け取った信号毎にswitchで処理 case A: mallocする なんか処理 freeする break; case そのた信号毎の処理: break; } みたいな処理をみかけたのですが、この場合ってmallocしてfreeするまでに割込みが 入ってきた場合、ヒープをfreeできない恐れがありますよね?
なんでですか?
恐ろしい処理してるなおい。 メイン処理がまさにmallocの最中に、割り込み内でmalloc呼び出しするのかよ!!!!!!!!!
>>268 OSは?
一般的な定義の上でなら、
タスクの処理フローに割り込みは影響を与えないから
free()できないなんてことにはならない。
割り込まれたらいきなり「なんか信号を受け取る関数」に
処理が飛んでいくようなOSであれば、そういうこともあるかもね。
272 :
デフォルトの名無しさん :2006/01/19(木) 00:58:54
>>271 OSはよくわかんねス。一昨日から客先なもので。
携帯なんですけど。
割込みとかシグナル?とかよく分からんのですけど、なんか良い書籍ありますかね?
制御系ってムズイっす。
再入可能か不可かって話か?
>>272 携帯だとiTRONか、malloc()とかもろにあるならRTLinuxとかかな。
とりあえず、もすこし知識付けないと、そもそも仕事にならんべ。
制御系の本はふつーのパソコン向けのコーナーよりも、
電子・電気系の棚にある可能性高いからそのへんをチェック。
>>268 >入ってきた場合、ヒープをfreeできない恐れがありますよね?
なんでそう思うの?
"なんか信号を受け取る関数”の箇所で割り込みをチェックしてるみたいだから
リエントラントにならないから大丈夫じゃねーの?
と、詳細も知らないくせに答えてみるテスト。
276 :
デフォルトの名無しさん :2006/01/19(木) 01:54:42
>>273 初めて聞いた言葉でよく分からないス。。
>>274 ありがとございやす。もうちと知識つけたいです。
本屋にあるかどうか。。かなり田舎なので(´Д⊂
>>275 割込みが入るとそちらが優先され処理が中断されると聞いて、
mallocしてからfreeするまでに割込みが上がったらそこで処理が中断される??
と思ったッス。。。
277 :
デフォルトの名無しさん :2006/01/19(木) 02:03:01
今思ったッス。。割込みで処理が中断っていうのはもしかしてCPU割り当てが割込み処理 へと移ったって事なんすか、、? ワカンネ!!ムッキーヽ(`Д´)ノ 制御系の人達はマジ尊敬します(´Д⊂
>>277 タスクの処理 OSの処理 割り込み処理
-------------+------------------+------------------
タスク動作中
↓
割り込み発生 →タスクの状態を保存→割り込み処理開始
↓
タスク動作再開←タスクの状態に戻す←割り込み処理終了
↓
タスク終了
制御系に限らず、マルチタスクOSの一般的な動作。
割り込みを契機に、タスクの状態を保存・復帰するのがミソ。
複数のタスク動作の切り替えも基本的には同じこと。
割り込みによって中断(と言っていいかどうか微妙)された方のタスクは 通常は割り込まれたことに気付かないという認識であってますか?
時計見て時間が経ってたら気づくでしょうよ。 気づく気づかないじゃなくて、 割り込まれる前の場所にちゃんと帰ってくるってこと。
割り込みが難しいと思ったことはないなあ。 まあアセンブラでコード書けるようなすごい単純な機械しか扱ってないからだろうけど。 .NETとかのマルチスレッドのコードの方がよほど難しく感じる。 なんていうか、最終的な実際の動作の具体的なイメージがつかみにくいっていう 抽象化の暗黒面が効いてくる感じがする。
>>281 非リアルタイム環境だとスケジューリングが決定的じゃないから
目的の現象が必ずしも発生するとは限らないしね。
283 :
デフォルトの名無しさん :2006/01/20(金) 00:07:02
>>278-282 ありがとうございます。なんとなく分かってきたっス。
例えば、タスク内でいじっているバッファなんかを、割込み処理内で
いじったりするのは良くないっすね?
>>283 タスクと割り込みとでは共通の変数は極力持たないようにするのが一般的。
どうしても必要な場合は、タスク側が最小限の時間に限って割り込み禁止を使う。
典型的な例ね:受信文字カウンタnを、受信割込み処理で++、タスクが受信文字を取り出したら
--する、なんて状況で、タスクがn--するときに割込みが起きたとする。
n--ってのはreg<--n, reg--, reg-->nという機械語になるが、この2つのカンマのところで
割り込むと、レジスタ保存、割込み処理でreg<--n, reg++, reg-->nして、割り込んだ所へ戻る。
その後3番目のreg-->nが実行されると、割り込みで++した結果が失われる。これを避ける為に
タスク側は、割り込み禁止;n--;割込み許可;のように書く。この位なら待たせても割り込み
処理の遅れは許容できる。あまり長い処理を割り込み禁止で実行したりするのは顰蹙もの。
=割込み処理というのは、例えば9.6Kbpsの受信なら1mS以上遅れてはならないとかの
物理的制約があるのがふつうだから。
32bitCPUで64bitの共有変数をタスク側で読み込み中に割り込み、 割り込み側が++してたまたま下位32bitが0で上位32bitに繰り上がり。 タスク側の読み取り値が出鱈目になると。 BIGendianかLITTLEendianかで変わってくるが。
287 :
デフォルトの名無しさん :2006/01/23(月) 01:14:30
>>285-286 レスありがとうございます!
ちょっと難しいっすね。ソース上1つの処理に見えても
アセンブラでは複数の処理なんすね。
reg<--n, reg--, reg-->nとか32bitCPUで64bitの共有変数
の話はまだ勉強不足で分からないですが(´Д⊂
アセンブラわからないで割り込み制御のコード書くなよw
289 :
デフォルトの名無しさん :2006/01/23(月) 01:40:26
>>288 それが、まだ書いたことないんすよ・・・
今回初めてやることになったんですがプレッシャーです。。
>>289 cで書いてもオブジェクトコードリストは必ず取ってね。それを見るとずいぶん勉強になるよ。
最近の最適化コンパイラは、(初心者には) あっと驚 くような最適化する時があるから、オブジェクトコー ドリスト (*.cod のことだよね。) みる時は、最適 化を抑止しておいた方がいいかも。
リリース版のオブジェクトコードリスト見ないでどうするよ? 最後にゃあそこが勝負の分かれ目になる事もあるからなぁ。
ARMプロセッサだと、 演算やロードと同時にビットシフトとか、 命令ごとに条件実行やフラグアップデートの有無を指定できるから、 コンパイラやコンパイルの条件によって、だいぶ出力されるコードちがうよね 条件実行命令多用して、実行時間が常に一定で最適化するか、 普通に分岐を使うかわりに、条件によっては実行速度が最速になる方をとるか、 コードサイズをとるか・・・
割り込みの話じゃなかったの?
>>293 俺はさぁ、最適化したオブジェクトコードでも見れるんだせぃ。
って言う自慢か?
そんなの自慢にもなってないから違うだろ。
そうか、なんとなく二行目が得意げに見えたから そう思ったけど、違うのか。 じゃ、まったく意味不明だな。
>>298 リリース版で出るバグがあった場合、コンパイルスイッチ変えて追っかけてもデバッグの意味が合いって事だろ?
300 :
デフォルトの名無しさん :2006/01/25(水) 03:23:34
>>299 あとまあ再現性がなく、お客さんのとこで一ヶ月に一回あるかないかのクラッシュで手がかりは
レジスタダンプとスタックトレースだけとか。
まあそういうケースでは別の場所に原因があって参考にならないのな。 メモリダンプのが有効だがセキュリティ上問題ある死ね。
うちの会社では、 最適化かけると問題が起こるからと言って、 最適化せずに外に出しちゃってるyp!・・・orz
普通最適化かけないけど?
チャレンジャーな俺は最適化レベル最高にして、外に出した。
305 :
デフォルトの名無しさん :2006/01/25(水) 19:51:05
>>290 さん
まったくの新人ではないっす。
>>291-292 さん
ありがとうございます。色々勉強になります。
今までレス下さった方々にも感謝m(_ _)m
最適化レベル最高にしないとROMに入りきらない漏れは激ヤバです。 仕様追加きたらもうだめポ。
ASMで書けば半分になるぞ。
RISC アセンブラ手書きは割り込みハンドラでやって器が狂いそうだったのでもうイヤっす。 ROM256KiB/RAM12KiB のワンチップdeどうやって...
>>310 データシートですら、ほとんどが KB = 1024 で書かれてるのに、
律儀に KiB 使ってるやつ初めて見た
その辺にもジェネレーションギャップ感じるなあ。 俺なんかASMでコンパイラぶちのめすのが快感なんだが。 KiBって10のn乗表現なの?
riscって書いてるのが老眼で読めないのかな いや老眼じゃなくて痴呆症かもしれないが
314 :
デフォルトの名無しさん :2006/01/27(金) 20:45:47
シグナルってナニ?タスクにどばっとシグナルがくるとどうなる?
単独のk,m,gは他の単位系にならって10^n。 Ki,Mi,Giを新設して2^nに割り振ることにしよう、という話がどこかで出ていた。
どっかに、ってそんなのPCのHDDのスペック表示の問題以外で聞いたことないけど
メガバイトの時代ならそうそう表記の違いによる混乱は少ないが、ギガ超の時代、ちょっとのけぞるほどの差があるからなぁ・・・
1Ki=1024=1K+24 1Mi=1048576=1M+48K+576 1Gi=1073741824=1G+73M+741K+824 1Ti=1099511627776=1T+99G+511M+627K+776 うーむ、確かに1Tiとなると1割近くも違うのか。 つーか、99G……
MLで書いた制御系のプログラムを教えて
>>319 何が知りたいのかはっきり言えよ。
具体的な何かの制御のアルゴリズムが知りたいのか、実装を見たいのか。
具体的でなければスルーされるぞ。
技術系メーリングリストでプログラムを書いたことがありますか?
MLってひょっとしてMachine Language?
323 :
デフォルトの名無しさん :2006/01/28(土) 12:42:01
MLで書かれた制御系のプログラムで 1:実際に使われているもの 2:プロトタイプでも公開されているもの 3:こんなの作ってみましたみたいなもの どれでもいいのでみせてください、 MLだとやっぱり作りにくいんですか? もしそうだとしたら、どういう部分で作りにくくなるのですか? そういうことが知りたいです。 Cとか使えないので。
>>323 I/Oや割り込みなど諸々のハードウェア用の機能が用意されているMLがあったとしたら、
アルゴリズム的にはCでもMLでも同じなので、MLでも十分に作れる。
325 :
デフォルトの名無しさん :2006/01/28(土) 13:04:26
>諸々のハードウェア用の機能 ってたとえばどんな機能なのでしょうか、 組み込みとかあまり詳しくないので。 あと、制御系のアルゴリズムってどんなものが多いのでしょうか。 関数ですきっとかけないのもが多いとか.あるんですか?
マシン語っていわないとオジサンわかんないよ
327 :
ごめん :2006/01/28(土) 13:05:22
あ、I/Oや割り込みなどがハードウエア用の機能ってことか。
まず「ML」が何かを定義する必要があるとは思うが、
いずれにしても
>>319 とは仕事したくないな。
MLはI/Oの機能はあるけど、 ハードウエア割り込みの機能ってなんですか? システムコールを発動させるプリミティブみたいなものですか?
MLは Meta LanguageのMLです。
>>328 確かにね。MLはMeta Languageの略だと思う。
SMLの仕様に乗っ取るのが正しいと思うけど、そこまで正確にする必要もないと思う。
何しろ、制御系なんだから。
>>319 >MLで書いた制御系のプログラムを教えて
(マイナーなプロセッサの)エミュレータとかなら、
腐るほどありそうだがな。
エミュレータというだけなら制御系じゃないだろ?
制御系の人にお願い!! 重力制御ユニットを作ってください!!!!!!!!!!!!!! あと姿勢制御ユニットも
なんかエンジンの制御器とエンジン本体の区別がついてない奴がいるなw っていうか、ここはウンモ星じゃないんだがw
割込みとシグナルってナニが違うんでっしょう?
>>336 シグナルはスケジューラが処理する
割り込みはマジで割り込む
ってのが建前だったと思う
割り込みだって何レベルもあって、優先度によるスケジューリングはされるから、 スケジューラに相当するものがハードかソフトか、って考えればいいんじゃない?
シグナルってUNIXのアレの話?
割り込みの優先度なんて 割り込み中に別の割り込みを許可するかどうか程度 CPUによっては単に割り込み禁止中に同時に割り込みがあった時にどっちを先に実行するか程度の事もあるし スケジュールというほどじゃないかもな
>>342 その記事書いた奴、昔はHDDもベンダによって
バラバラだったという事も知らないのか…
通信速度 [bps] も 10進数ベースだし
16進ベースなのはメモリと OS 上の表記だけだと言うのに。
344 :
デフォルトの名無しさん :2006/02/01(水) 04:46:06
ちょっと質問させてください ノートパソコンでデータロガーのようなものを作って納めました。 RS232Cで機器を接続して監視を行います。 数秒間隔でポーリングして24時間監視しているのですが この通信ログをHDDに落としています。 このHDDが、1年持たずにクラッシュします。 こういった、用途では市販のPCでは荷が重たいのでしょうかね?
設置環境が悪いんだろ。 夏場に灼熱地獄になったり、絶えず振動があったり、埃っぽかったり。
HDDの動作保障時間って、2.5インチで5000時間程度じゃなかったっけ? PCやカーナビなんかだと、5000時間使い切る前に、買い替えるから、それでおkらしい。 で、もちろん、周囲の温度が高いと、どんどん耐久時間は減る。 普通のPC用の3.5インチHDDだと、1万時間以上は持つらしいけど、 (詳しい時間は忘れたので、HDDのメーカーのデータシート探してチェックしたほうがいいが) それでも、連続動作で保障できるのは、1年とちょっとくらいじゃない?
え〜(*o*)俺XPパソコン5年ぐらいつけっぱだったけど・・・こわ〜 そういう使い方するなら、省電力モードになるときにHDDも止めるようにしたほうがいいですか?
電波の強さを言うのに、ワットとデシベルとを使うんですけど、どういう違いなんでしょう?
>>348 ワット(W)は電力の単位、デシベル(dB)は対数を表す無名単位。
従って、10デシベルの電力と言うのは意味がない表現。
恐らくdBmのことだと思うが、それならば1mW=0dBmだ。
350 :
デフォルトの名無しさん :2006/02/01(水) 09:10:35
現場はアセンブリばっか?
>>347 長年つけっぱなしで、ある日一度電源を落とすと、
次に電源を入れてもHDDは二度と目を覚ましませんでした、
という事もある。
>>344 すでに検討したのかもしれないが、
フラッシュメモリも考えてみたほうがよいのでは。
絶えず書き換えをするならフラッシュの寿命の方が注意が必要だね
354 :
デフォルトの名無しさん :2006/02/01(水) 10:55:37
>>344 HDDに落とす頻度を下げればいいんだよ
普段はHDD止めといて 数秒に1回だったのを
「美しき野獣」でグーグルして最初のページを
メモリにためて10分に1回にまとめれば
寿命は100倍アップだろ
355 :
デフォルトの名無しさん :2006/02/01(水) 11:00:04
>>350 最近はそうとも限らない。C言語がメジャーでしょう。
>>344 基本的にノートパソコンって24時間使いっぱなしは想定してない。
サーバとして設計した据え置き型を検討すべきと思う。
356 :
348 :2006/02/01(水) 12:26:59
>>349 そうです、dBmでした。ということは、1mW〜数百Wの電力を表現するのに、対数を
使えば3.0dBm=1ワット、4.0dBm=10ワット、みたいに表現するわけですね。
あ、基底は10でいいですか?
>>353 んだな。
通常のNAND型フラッシュの書き換え寿命が50万回
1分1回の書き込みだと、1年で525,600回
上書きは無理だし、追加書き込みでも、
FATやサイズなんかは更新されるだろうから、
1時間に1回まとめて書き出すとかにしないと辛いね
>>356 ググればわかると思うんだけど。。
この世界(に限らないけど)、問題解決能力のない人間そのものが「問題」だよ。
っていうか、
>>349 の説明が悪いと思うんだけど
電気の世界でデシベルっていったらエネルギーの次元の値の比の常用対数を10倍した
値のことだよ。
>>344 重たいです
>>348 つまり、こういうこと
P[dBm]=10*log(E[mW]/1[mW])
電力を1mWに対する比で表現した値
底はTextでは書き辛いのでこの場合のlogは常用対数と思ってくれ
なので、1W=30dBm, 10W=40dBm
でもdBmはmW単位の世界じゃないと便利でもないので
あまり使わんと思う
誤解を招かないように記述することが要求される一方で 誤解の無いように注意して理解することも要求される。 『両方』やらなくっちゃあならないってのが
361 :
348 :2006/02/02(木) 06:13:02
>>359 ありがとうございます。パラボラのアッティネータに7bitでdBm単位で出すってのを
よくやるんですよね。短波のほうだとワットが多いんですけど。
球面状にまきちらすのと違って、指向性の装置だと小さな電力でいいんですね。
>>344 ノートパソコンで蓋をしめたまま運用していませんか?
自分の経験では、蓋をしめたままだと、
熱が篭ってHDDの寿命が短くなるようです。
蓋をあけてた状態だと、一年以上確実に持つようになりました。
フタを開けると負担が軽くなるんだな
放熱の問題だよ。
蓋を閉めた状態で、スクリーンセイバーが動いてたって落ちなら大笑い。
>>362 >ノートパソコンで蓋をしめたまま
それはいくらなんでも非常識というか、想像力が足りないというか…
>>366 常識的で想像力がある意見を聞かせて。
ぜひ!!
>>367 たこ焼き屋で10個入りパックを買ったんだ
家に帰って開けてみると9個しかない
よく見ると、1つ蓋にくっ付いていたんだ
次の日、家電屋でノートパソコンを買ったんだ
家に帰って開けてみると
369 :
367 :2006/02/03(金) 18:02:53
>>368 まさか、キーボードのキーがいくつか無くなっていて、
よく見るとキーが蓋にくっ付いていたのか?
370 :
344 :2006/02/04(土) 10:20:44
遅くなりました、ご回答ありがとうございます
>>345 クリーンルームです
>>346 50万時間とかそんなだったように思います
>>362 蓋が関係するのははじめて聞きました、ちょっと検討してみます。
ノーパソチョコ販売しました。
>>370 50万時間も持つわけ無いだろ
1年=8760時間だから、50年以上だぞw
フラッシュROMの書き換え回数50万回と勘違いしてないか?
MTBFはそれくらいあるHDDが多いよ。 統計的なものなので、理想的な環境なら、50台あったら1年に1つづつ 壊れていく、って意味の方が近いけど。
MTBFの意味しってるのかなw
マウンテン(MT)バイク(B)フォォォォォォォー!!(F)
よかった書かなくて マジでまったく同じこと考えてたけど こうして他人が書いたのを見ると アホ丸出しだ
Mean Time to Brother Fucker
MTBF: Mean Time Between Fools
平均バカ間隔
このスレにバカが現れる平均間隔。
最後に現れたのは、2006/2/4 22:25:11 (
>>373 )
379 :
344 :2006/02/06(月) 17:42:06
少なくとも24時間稼動は考えられていないということみたいですね では、どう考えたらよいのでしょうね? MTBFが120万時間のものもあるようですが、その動作条件みたいなものって なにか、規格があるんでしょうかね? そして、それを24時間稼動にした場合の計算方法など、 なにか参考になるものがありましたら教えてください
いや、そこで踏みとどまれるか、書いてしまうかが、時に人生を大きく左右する事になるのさ。
>>379 よく知らないのに偉そうにレスしてみる。
それって統計の問題じゃないの?
ということは、平均値だけじゃ何もいえないと思う。
分散だかなんかの値がわからないとダメでしょう。
それらがわかれば、x時間以内に故障する確率はy%、ってのが計算できるんだったような。。
ゴメンやっぱり若いうちにちゃんと基礎的な学問習得しとかないとダメだなw
>>379 それって単発もの?
だとしたら、故障確率で無難なところを見積もっておけばいいのか。
昔、俺がやってたのは量産物で、動作期間を保障しなきゃいけなかったから、
HDDメーカーが保障している5000時間てのを元にしていたんだが・・・。
消耗品として、通常の使用頻度で3年に1度は交換してくれってことにしていた。
心配ならRAIDにしとけ
今なら USB接続RAIDもあるねノートパソコン買える値段だけど というか書込時に定期的に外付けUSBにコピーするようにしたら、まあ問題ないんじゃないの?
389 :
344 :2006/02/09(木) 04:29:55
>>383 ,
>>384 どうもありがとうございます
推定故障率3%とでました。
が、12台中3台が1年以内に壊れました
室温は25℃です。
この「故障率推定」には、稼働率のパラメータがないようですね。
>>386 RAIDなら壊れませんか?
逆に、HDDのユニットの故障率は上がるように思いますが。
>>389 室温≠使用温度
使用温度はHDDの周囲温度だから、もっと高いはず
ノートPCを5℃〜40℃に置いたときのHDD周囲の温度を
熱電対でも突っ込んで測ってみるがよろし
長く使ってるとほこりなんかで、放熱効率が悪くなったりするかもよ
>>388 LEGO MindStorms買ってからそれ買った
H8で レゴが動くってのが楽しい
仕事してるようには見えないだろうな
MindStormsは秋に新型が出るらしい
>>389 RAID-1 複数のHDDでミラーリングして
HDDが故障してもシステムとしては機能するって仕組みです
ノート型PCでは難しいかもしれないけど
現場はHDDなしのシステムにしてネットワーク経由でデータベースに
投げてもいいじゃ?
393 :
344 :2006/02/09(木) 13:08:07
>>390 クリーンルームで、室温は一定で、空気は常に循環されていますし
1年でたまるような埃はありません
それでも、HDD自体の温度は上がっているんでしょうね
>>392 もちろんわかります>RAID
確かにデータは壊れないでしょうが、HDDの故障率はあがりますよね
結局、メンテに手間がかかってしまうし、お客から「また壊れたのか」と言われること必至
ログ機能なので、ネットワーク経由にした場合、ネットワークに障害が発生したら、ログが残らないです
すくなくとも、何らかの方法で、HDDのアクセス頻度をさげるしかないようですね
>>393 HDDの故障率は変化ないだろうけど、故障件数は増えるね
でも、システムが停止しなければ客は満足だと思うけどなぁ
HDDなしにする場合、フラッシュメモリ等のストレージに
一週間分くらい保存しとけばいいと思う
395 :
344 :2006/02/09(木) 15:22:24
>>394 そうですね、HDDの故障率ではなく、システムの故障率が上がる
メンテ頻度は増えるでしょうね
その度に、飛行機でサービスを行かせるのでは、まったく満足しないですねー
なにか、方法を考えてみます
>>395 納品先企業の地元で、メンテ要員雇うとか。
地元の高卒の兄ちゃんでも雇えば地元からも感謝されるよ。
つーか、CR内で安定なLANが使えないってどんな糞CRだよ。
8ビットマイコン使った簡単なシステムなんかだと、 一定時間ごとにステートマシンの処理ルーチンを呼び出すってことよくやりますよね? (たとえばシリパラ変換の石にデータをシリアル転送するときなど。) この場合、呼び出す側の呼称はタイムスライスとかディスパッチャーでいいと思うんですが、 ディスパッチされる側のルーチンってのは一般的な呼び方ってあるんでしょうか? 質問の背景としては、このディスパッチされる側のルーチンに 「それ」とわかるような命名をしたい、ということなんですが。 いまはWin32のWndProcからの連想で「〜Proc」みたいな命名をしてるんですが どうもやっぱりしっくりこない。
Handler?
>>399 おまいは関数の名前をいちいち掲示板で聞くのか?
>>403 そこは知っているし何度か回答もさせてもらってもいますが、
こういうジャンルのコーディングをしている人がそんなにいるとも思えない。
そんなことでいちいちつっかかることもないでしょ。 ビタミンCが足りてないんじゃない? カルシウムだっけ?
なんのこっちゃ。 まあ俺は君と違って脳は足りてるよ。 まあ言っても無駄だろうけどガキが覗いて楽しいスレじゃないと思うよここは。
>>405 ビタミンCは、肌荒れとかにいいんじゃないかな。
カルシウムと言えば、なんとなく白い粉ってイメージだった
けど、所さんの目がテンで純粋なカルシウムをみたら、まん
ま金属だったので、マジで目がテンになっちまった。
>>407 当たり前じゃん。もしかして、ナトリウムも粉体を想像してる?
普通は炭酸カルシウムとか、塩化カルシウムだ それはそうと、「白い粉」ってなんかヤバイ雰囲気がするw
ハッピーターンの白い粉ことか
パウダーポケットにつても言及すべし
>>412 中高じゃあハッピーターンは授業に出ねえぞ?
そりゃ授業中にも食ってたけど
ソジウムクロライドの取りすぎはよくない。 ポタシウムを多めに取るようにしよう。
簡単な自作mallocのサンプルコードってない?
薬じゃないけど、これを忘れているね。 つ炭素菌
417 :
デフォルトの名無しさん :2006/02/25(土) 04:58:55
長文失礼します。 最近新しいメーカーさんのとこに飛ばされて RTOSでC言語なデジタル家電することになりますた。 そこで既存のコードを見たんですが(いわゆるアプリ〜ミドル層) まったくと言っていいほどallocが無いんですよ。 ユーザーがある操作をしなきゃ使うこともない領域とかも数k、数10k単位でぼこぼこ存在してる。 過去、いくつかのメーカーで携帯やらテレビやらナビやらHDDデッキやら作ったことあるんですが 100byte超える領域を使うときはallocateしないと殺す!とか お前のタスク、なんでそんなにRAM使うんだよ、殺すぞ!みたいなノリだったんで カルチャーショック受けてます。 聞いてみると、メモリの断続化や処理速度を考えるとallocなんてしてらんないよ、 って返ってきたんですが、私は過去にそんなことで問題になった経験がありません。。。 極力allocする or 極力しない 一般的にはどちらが正解なんでしょうか?
>>417 んなもん、状況による。メモリ優先か、処理速度優先か。移植・汎用性優先か。
ちょっと使いたくない立場から書いてみる。
シビアなリアルタイム系
(制御周期が1ms以下だったり、μs単位のディレイ・ジッタが気になるとか) なんかだと、
極力簡略化したブロック領域のヒープなら、タスク間通信のために仕方なく使うけど、
malloc, free は使いたくなって感じのところが多い。
さらに、通常 malloc, free は割り込み禁止区間を使うから、
割り込み周期がぶれたりする可能性もある。
デバッグ環境が充実してないシステム上だとバグ発生の元にもなる。
フットプリントの小さいRTOSでは、そもそも、mallocをサポートしてないものもある。
それに、メモリが余ってるなら、メモリを動的に確保する意味なんか全くない。
malloc, free で複数タスクが時分割でメモリを取り合うってのは、
メモリが足りないときの非常手段って感じだ。
携帯、テレビ、ナビなんかは、メモリ厳しいとはいえ、
リアルタイム設計という観点では、制御系というより、
アプリ系に近い考え方じゃないか?
>>417 テレビやナビは時々電源を切るから初期化されて、メモリの断片化が大きな問題にならないが
携帯だとマズイように思うなあ・・・・、だから時々電源切らないといかんのか・・・・・
電源入れっぱなしになる装置の場合、
・メモリサイズグループ毎に別のヒープ領域を割り当てる
・メモリをファイルシステムのように固定サイズのブロックとして割り当てて使ってもらう
のどっちかやらないと、長期的にはマズイよ
>>417 他のレスにもあるようにケースバイケースじゃないか?
RTOS自体が糞なメモリ管理しかしてない・
MMUが載っていなくてメモリ断続化の影響がでかい
なんかでいっそallocしないってのは考えられるし、
その手の物だと、同時動作するタスクの数や
所要メモリ量が確定できる代わりに、
メモリが必要になっていざallocしてみたら
メモリが足りずに処理できなかったってことが
許されない場合もある。
だから、こんな作りになってしまうことがままある
> ・メモリサイズグループ毎に別のヒープ領域を割り当てる
> ・メモリをファイルシステムのように固定サイズのブロックとして割り当てて使ってもらう
そもそも”携帯やらテレビやらナビやらHDDデッキ”も
ドライバあたりでは、特定の機能しか使わないメモリでも、
いざ動作する時に「allocに失敗したら待てない/致命傷になる」ってものは、
確保しっぱなしになってるだろ。
たぶん質問者はその程度のこと分かってると思う。。。
メモリーリーク対策用にID付きでヒープ管理出来るようにユーザー関数として別名で存在してるに一票
>>417 技術論は他の人が言ってるからいいとして、社会論としては、
古くから組み込みやってる人が多くて、
固定メモリの思想にどっぷり浸かってて変化していない人達、
という可能性もあるんじゃないかな。
# 「新しいメーカーさん」って、新しく行く職場って意味で、
# 新興メーカーじゃないよね?
古いシステムをそのままバージョン上げながら育ててるような場所だと、
実際の必要性以上に過去の要件をひきずってるところとかもあるから、
正しい正しくないはさておきて、「そういうところもあるんだ」
と思っておくくらいでいいと思う。
>417 RTOSの規模にもよりますが、もっとも小さいほうで言えば、 allocはしない方法で考えますね。 たとえば、ITRON TCP/IP仕様は、「動的なメモリ使用の回避」を ひとつの目的としていますね。
425 :
417 :2006/02/26(日) 03:16:10
色々ご意見ありがとうございます。
動的に確保するのが難しいケースや
デメリットが大きすぎる場合はallocateしてなくても納得できるんですが
システム全体の基本思想が「allocしない」なんですよね。
#ちなみに新興メーカーではないです
OSのメモリ管理なんて最初からアテにしてなく、
自前でメモリ管理はどこでも作ってるもんだと思ってました。
実際今回のとこでも
>>419 さんの言われるような対応はされてるんです。
過去にテレビやデッキなんかでは、連続運転試験を1ヶ月以上自動操作でテストなんてことも
普通にやってて断続化なんて見たことないです。
(メモリ管理のバグで断続化しちゃった、なんてことはありますが)
この業界、いかにハード原価を安く抑えるかというのが至上命題に近いものがありますし、
メモリも例外じゃないと思います。
個人的には
>>423 さんの意見が当てはまるのかなぁと思ったりしてます。
>>425 その話からすると
>>423 の推測が正解だろうね
でも理屈としては、ショボイCPUでガベージコレクションできない
状態でメモリの確保と解放を繰り返したらいずれ断片化するだろ?
allocしたら2度と解放しないんじゃ静的に確保しても同じだし
あとは作ってるシステム次第だね
コスト見合いでSDRAMあたりを採用すると、
小さな組み込みシステムからすると馬鹿馬鹿しいほど
メモリがでかくなるし
>>426 >>419 の対応をしてるなら、断片化はしないだろう
同じサイズをブロックとして確保解放するなら理屈の上では断片化しない
ただ、そうするなら、最初から固定で取って、
メモリが不足するなら同じタイミングで絶対に使わない同士をペアにしてゆくという
もっと簡単な対応の方がより安全で確実という事になるだろう
家電よりちょっと高級な専用システムやってます。SH3ですが「可変allocはご法度」です。 何ヶ月も電源入れっぱあたりまえという製品で、しかも操作の最新状態は電源切っても残る、 という・・・これを20年使えるのかいな?というシステムです。NMIを作ってもらえなかったので 「操作のたびに記憶」しかないのですが、100回/日書込みなら3年でEEP/FROMアウトです。 ど〜すりゃいいの?という感じです。
>>428 SHの内臓FLASHってそんなに書けたっけ?
保存しなきゃいけないデータが小さいなら
追記してって、溢れるまで使うとかすれば
多少寿命も稼げるけど、システムの要件次第じゃあるまいか?
それとも、要件からして既に破綻してるってこと?
だったら、こんなとこじゃなくて一刻も早く会社で騒げ。
別に君に相談してるんじゃねえのに何命令口調になってるのw こういうオカシイ奴の割合がこの業界って多いよねえ
>>429 EE-PROMと書いてるからシリアルEE-PROMだと思うよ
で、EE−PROMなら、自分なら16くらいのブロックを順に使うようにして
寿命を16倍くらいに延ばせば丁度いい感じになるなと、そう使うけどね
TOPPERS上でファイルシステムってどんなのがある? FATでもNFSでもftpでもファイル名を指定して読み書きだけ できればいいし階層構造もいらない 後でWindowsでファイルを取り出したいだけなんだけど良い手が無い
433 :
428 :2006/02/26(日) 14:56:29
>>431 キャッシュとEEPROMの使用領域とはほぼ1:1のサイズなの。内蔵じゃないです。
>>433 キャッシュ?
よーわからんけど、「ど〜すりゃいいの?」っと言う感じ
なら
>>429 の言う通り「上司に相談」して「その構成を
決めた奴の責任」にすべきだよ。
まあ、俺らにはどうでもいいことだが。
そうだな。 寿命について問題がある 対策としては EE-PROMの容量を増やしてもらいたいというのが普通だわな
10年保証する半導体はありません。
破綻だなw
ゆとり教育の弊害かどうかしらないけど(まあ俺はゆとり教育の理念が間違っているとは思わないけど) 読解力ない奴がここ数年増えたよね本当にw 文脈読めってw 寿命ってそう意味で言ってないだろうに。 キャッシュだってそう。 いちいちストレージ上の設定値読んでたらオーバヘッドやコードの冗長性が大きくなるので 初期化時にメモリにロードしといてそいつを設定値とみなして扱う、 そのメモリ上の設定値のことをキャッシュって言ってるに決まってるでしょ。
>>438 >>428 が [ど〜すりゃいいの?] と問題解決法が判らないと書いてるから、
上に相談してEE-PROMの容量増やして貰えよと解決方法を書いてるんじゃないか
こういう問題を放置するってのは、単に自分だけの問題でもないし、その会社だけの問題じゃないんだよ。
俺たち技術者全体の信頼に関する問題なんだからさ、
>>428 はチャント対処しろよな
>>436 いや、ホント。 最近痛感するよ。
最近買う家電製品はホント、壊れやすい。
まあ、単にどんなものか見てみたいという興味だけで買うから
安いのを徹底的に探して買うからまあ当然の面もあるけどね。
>>438 > そのメモリ上の設定値のことをキャッシュって言って
> るに決まってるでしょ。
ヒント: 井の中の蛙
何がヒントだ。 正面から自分の考えを言うだけの自信がないことを誤魔化しているに過ぎんなw 他人はもちろん、おそらく自分自身も合わせてな。 自己分析ができない奴ってのは事程左様に恥ずかしいなw
443 :
デフォルトの名無しさん :2006/02/26(日) 23:33:22
イタタタ
キャッシュって意味が違うだろ 自分の表現力のなさと用語の誤用を棚上げして 文脈読めってエスパーじゃなきゃ無理
446 :
428 :2006/02/27(月) 05:45:52
キャッシュはEEPと同じ情報を持つRAMの意味で使ってます。私が言うまでもなく受けたとき チーフにあたる人が「NMIが無いと変更のたびに書込みとなって書込み過多になり寿命に 影響する」と申し出たらしいんですよ。でもなぜかハード屋さんはそれでいいと言ったらしい。 (今ざっと計算したら、確定1page/5mSのEEPなので256page=1.28秒、NMI入ってから それだけ電圧持たせるのはきつそうですね。だからかも) 10年保証云々は通電しっ放しで、ってことですよね?さすがにそこまで電源入れっぱはない とおもいます。数ヶ月、最悪1年ぐらい連続ならありえる、ぐらいだったら20年持ちませんかね。 この製品は「装備品」なので、本体は20年持たせても、装備品は10年未満で交換、という 思想なのかもしれません。その辺今度聞いてみます。
>>446 それ、1ページ32バイト 24XX64のような8KのEE-PROMだと思うのだが
書込中に電源落ちたらどうするの? というかどうなるの?
8kByteを全部使うなら、最低 16KByteのEE-PROMが必要だよね
だったら、さらに32Kにすればさらに2倍に寿命を延ばせるよ
保証はメーカが無料で交換に応じることなので、10年前の製品があるわけない。
449 :
428 :2006/02/27(月) 09:49:05
書き込み中に電源落ちたら、「最後の操作の記憶が」残らないだけで、それほどダメージは ありません。いつもたくさんのpageを書くわけじゃなくて操作に対応したいろんな情報片を 書くものですから。操作の瞬間電源切って覚えているような使い方もしません。 でも、ケータイなんかその辺・・・あ、あれは操作そのものの記憶は残さないのかな? 発信しかけて電源切って、電源オンすぐリダイヤル、とかが似た状況ですね。
まあ未採用になったそうだけど、そういうのってNMI(Non Maskable Interruptのことだよね?) でやるのって正攻法じゃない気がするなあ。 CPUに自分自身の電源制御を握らせるのが普通じゃないのかな。
つまり、項目毎に書き換えてるという事だよね? なら頻繁に書き換える項目だけ分散書き換えにすれば、それで対応出来そうだね
>>446 ハード屋さんが責任持つって事だったらいいんじゃないか。
穿って考えれば、ROM 交換で儲けると言う政策もあるかも
知れないしな。(w
>>450 自分では電源制御件を持てない状況も少なくないよ。
流石に EEPROM に退避と言うのはやったことないけど、
NMI で RTC の C-MOS (もちバッテリバックアップつき)
に退避は 8bit 時代に何回か経験がある。
453 :
428 :2006/03/01(水) 15:37:49
FROMですからもうROM交換はないです。道具というよりは設備の一部として使うような想定 なので、不用意に電源叩ききられる可能性は優先度低いのでしょうね。どの位の寿命を 期待しているのか今度ハード屋さんに聞いてみます。
> FROMですからもうROM交換はないです。 ん? 「書き込み過多になり寿命に影響」した場合の話じゃないのか? 自社設備なら、「保守用の基盤もってるから寿命がきたら即交 換でいいや」と考えてるのかもな。
455 :
デフォルトの名無しさん :2006/03/02(木) 00:49:33
通常メモリマップのデータを保存しているのはRAMですか?
456 :
デフォルトの名無しさん :2006/03/02(木) 04:04:15
メモリマップのデータとは?
>メモリマップのデータ IA32 CPU とかのセグメント・ディスクリプタのことか?
458 :
428 :2006/03/02(木) 05:38:58
FROMはコードを格納しますから、書込み過多になるほど入れ替えはしないと思います。 操作の記憶はEEPのほうでやるようです。 FROM上のテーブルのインデクスだけをRAMに保持するソフトなら書いたことあります。
460 :
デフォルトの名無しさん :2006/03/02(木) 14:16:24
RTX と Intime どったがいいのか迷ってます。 教えて。 RTXはwindowsよりな感じ。DLLなんかを呼び出したり出来るらしい。 RTXはバグで簡単にwindowsを葬るらしい。 RTXはデバッグはリモートで行う必要があるらしい。 Intimeはeindowsとは別のOSが動いているらしい。 Intimeはデバッグの環境が整っているらしい。 IntimeはwindowsのDLLを呼び出すのがめんどくさそう。 保守契約を含めた値段は大体同じくらい。 使ったとき在る人頼む。無い人でもいいけど。
461 :
デフォルトの名無しさん :2006/03/03(金) 18:43:27
460です。 おせーて。
INtimeメモリ保護機構がある。不正なメモリアクセスをやらかしても、
落ちるのはそのプロセスだけ。
開発にはVC++を使う。デバッグはINtime3.0移行ならVC++上で、
それ以前なら専用のデバッガで行う。1台のPC上で開発から
デバッグまで出来るが、場合によってはリモートデバッグ
した方が楽なときもある。
同一PC上で動作していると言っても、INtimeのメモリ空間と、
Windowsのメモリ空間は独立している。INtime用に作ったソフトと、
Windows用のソフトの間でのやり取りは専用のAPIを使う必要がある。
INtimeには体験版の無償ダウンロードがある。
とりあえず使ってみてから考えるのも吉。
ttp://www.tenasys.com/resources/trials.php
463 :
デフォルトの名無しさん :2006/03/04(土) 08:10:31
460です。 RTXの方はあまり良くないっぽいですかね。 両社の営業と技術の話を聞いているとどうもIntimeの方が良く聞こえまして・・。 営業の腕の違いかそれとも製品自体Intimeのほうが良いのか・・・。 両方とも貸し出しがあるようなので試してみたいと思っていますが。
464 :
デフォルトの名無しさん :2006/03/04(土) 08:21:30
みなさん、NIの計測制御用のアレをつかったことはありますか?
話をぶった切って申し訳ないが 1チップマイコンの入出力ポートって 方向レジストと ポートの2つに別れているが、コレ使い難くないか? 入力専用、出力専用と方向レジスタの3つになっているべきじゃないかと思う。 出力専用レジスタを読み返すと、現在入力ポートに設定してるビットでも 出力ラッチがいつでも読めるべきだと思う
>1チップマイコン たまたま自分の使ってるモノが世界の標準に違いない、 と思い込むのは頭の悪い証拠じゃないだろうか? 井の中の蛙大海を( 一口にマイコンつったっていろいろあるのよベイビー。
>>466 まあ確かに 4,8,16とDSPの15種類くらいしか触った事ないけど
その範囲じゃそうじゃないのを見た事ないもんで
Z80-PIOは出力モードの時には入力でラッチされた値を読めたと思う。 と言うことは、Z80ファミリを1チップ化した川鉄の1チップマイコンもその構成だったかと。 それ以外でも、モード設定で動作が変わるタイプは普通にラッチ読み込みできるんで内科医?
いや 出力モードで出力ラッチが読めるタイプ 出力モードでも入力ポートとなるタイプ の2つがあるけど そうじゃなくて、入力モードでも出力ラッチが読み書きしたいというか、そういうのが欲しいって事 たとえば入力に設定してる間に次の出力状態を設定しておきたいと ビット操作系を使うと他の状態も変更されてしまうのが嫌だから
意味わからんなw そんなに「ラッチ」がほしいなら自分でコードで実装すれば済むことじゃないか。 だいいち入力に設定してるポートの出力ラッチに意味があるとすれば データバスみたいにR/Wを切り替えて使う場合だろうけど、そういう場合でも 自分が直前に出力した値が知りたいケースがそんなにあると思えない。 というより、そんなケースが思い浮かばん。 すくなくとも全く一般的なケースじゃないだろう。 なんでそんな一般的とも思えない要求を満たすようなCPUがなぜないか、 などとくだらないことを悩むんだろう。
たとえばさ bit0で割り込みを使ってビープ音を出して bit1には C-Rが接続された一種のDACだとするよ。制御は普段は入力にして 変化させる時に H/L出力で制御するのね、 bit2,bit3でI2CのEE-PROMを読み書きしたり とするよ で、ビープ音を出す割り込みで、オンオフをビット操作すると他のポートのラッチ状態が変化してしまうから ラッチ状態を覚えなくちゃいけない。 となるとアキュムレータ経由命令になって、スタックに保存が必要になって 割り込み処理が長くなっちゃって、他PWMーDAC処理の乱れが酷くなるとかさ、 そのポートのラッチ状態を他の処理では割り込み禁止状態で変化しなくちゃいけないから 割り込み禁止期間がアチコチ出来て、ビープ音が濁ってしまうとかさ あるいは EE-PROMを読み書きする時に、このわずらわしい処理のせいで遅くなってしまうとかさ で、面倒になって、原因は何かなと考えたら ポートの出力ラッチが読めないせいかなと
なんかよく理解できないけどそんなら8051みたいにBit-Addressableな石を使えばいいのでは。
いや、だからビットアクセス命令があっても、たとえばM16とかのように 実際はバスを読んでから書くから困るって話をしてるわけで ・・・・しかし、そういや8051の頃はコレで悩まなかったな・・・なんでだろ? 単に入出力の切り替えを今程使わなかったからかな
ああ思い出した。 8051は4ビット系と同じく、確か入出力といっても H/L/Zではなくて L/Z つまりH=OPENだった筈。
うーんと8051はRead-Modify-Writeの場合、465のう出力バッファをReadするから 問題ないよ。 ビット単位のアクセスでもバイト単位でも。 オリジナルの8051もそうか知らないけど最近の派生チップはだいたいそうだったはず。 そもそも出力ってpush-pullなのかオープンドレインなのかどっちだろ。 つーか具体的に何の石よ?
熱いコテを握らされ 睡眠時間は削られて 制御系だというけれど なにを制御するのだろう
俺ハードやだけど、ソフト屋にとってポート制御レジスタはどういう構成が
理想なの?
>>465 のように3つ(入力・出力・入出力制御)になってるほうがいいの?
それとも2つ(入出力値・入出力制御)の方が使い勝手がいいのかな?
俺はとりあえず3つのレジスタ構成で設計してる。(2つだと情報量減るので。)
どちらでも手間は同じなので今後の参考に聞きたいな。
出力専用と、入力専用でポート分ければいいだけ。 で、ラッチなんかはメモリーのリードライトと同じ要領でやってくれれば何も考えなくて済む。 ただ、キャパシタの問題で、一定時間以上状態を維持しないとハッキリ入出力信号が安定しないとかなら、その旨を仕様に書けば良いよ。
>>477 開発後期に仕様を変えたりしなければ、或いは仕様に明記されてないノウハウが必要だったりしなければ、
どういう構成になっていてもあんまり困らんな。
>>476 は、「新人哀歌」かな/「探し物は何ですか」かな、どっちだろ
たしかに、
>>471 みたいなのはハード屋さんがポートを分けてくれるよね。
ある程度はソフトの作りやすさも見通しつくから。
まあ、入出力を動的に切り替えるというのは普通はやらない やるとすれば openドレイン的な使い方か で open に設定してる間は ポートを読み返すと 1が読めるから Read-Modify-Writeの時に出力ラッチではなく入力が読まれるタイプだと困るという事だろう PICは入出力関係なく、常にポートを読む M16/H8/SH等は出力に設定してるポートはラッチを、入力に設定してる場合はポートを読む ただ、最近の1チップはRISCが多いから、Read-Modify-Write命令が無いんじゃないかな
>>478 それは制御系なら可能だろうけど組込系だと 片面基板で なんて事もあるから
アートワーク優先のことも多いよ。 ソフト側の都合で好きな順には使えない。
>>431 たとえば
I2Cの SCL/SDAの為に、出力ラッチはL にして 方向レジスタでオープンコレクタを実現するとするよ
つまり BSET /BCLR で方向レジスタだけを トグルするわけ。
これをメインループ側で処理してるとする
この処理の最中に SCL=H つまり入力ポートにしてる最中に割り込みがかかる
で、割り込み処理で、同じポートの別の出力ポートをトグルさせようと BSET/BCLRのような Read-Modify-Writeでポートを操作すると
この SCLの出力ラッチがHになってしまう。
で、メイン側で次に SCL=Lににしようと出力ポートにしたら、
出力ラッチがHなのでHが出力されてしまう
-------------
この2つだけなら、割り込み側でRead-Modify-Write命令ではなく
読んで ビット操作して、常にSCL/SDAは0にして書き出すという対策でいいけど
もう一つ条件が加わると、やっかいなわけよ
>>480 467は「ちっちゃな頃からちっちゃ」かった彼が歌ってた奴でしょう
盗んだコードが走り出す 行く先も分からぬまま
GPLの夜
>>465 ATMELのARMコアMPUで AT91SAM7S というのがあるが
そのポート制御レジスタはそんな感じ、というかもっと複雑。
なんでこんなややこしいレジスタ構成にしてるの? と思ったが
465さんの書込でそういう要求があることを知りました。
488 :
デフォルトの名無しさん :2006/03/08(水) 19:25:23
質問です。 モータの応答周波数は速くても数百ヘルツなのに なんでインバータ制御などには高速なマイコンが使われるのでしょうか? 相当負荷のかかる計算をしているのですか?
あたりまえだ。
のクラッカー
モータの応答周波数って何ズラ?w つーか「なんで?」って理由はさまざまでしょそりゃ。
役に立たない奴らだな。 暇潰しにゴミレスばら撒かれても迷惑なんで 答えられないなら黙っとけよ。
答えでてるじゃん。
495 :
デフォルトの名無しさん :2006/03/09(木) 19:20:03
ベクトル制御だろ
普通のマイコンがどれだけ遅いか知らないんだろう。 パソコンの処理速度が1000としたら、普通のマイコンは1もないんだよ
それは言いすぎだ
動作周波数だけで比べても750倍だな。別に言いすぎでもないんとちゃう。 3GHz<->4MHz
動作周波数だけで比べるな
各命令の所要クロックも一々挙げて比べなあかんの? 殺す気か。
4MHzって時代錯誤も甚だしいな。 オッサンの頭の中は25年前で止まってるのかねw
502 :
デフォルトの名無しさん :2006/03/09(木) 22:11:22
普通モータ制御に使うCPUは V850とかSH-4とかの32bitRISCで 動作クロックは20〜40Mくらい
>>502 モータ回すのにSH4が出てくるとわ…
えらい豪華な機械だな。
普通って何がやねんw だからモーター制御つったっていろいろあるっての。 つーか今時CPUが直接制御するのがそんなに「普通」とも思えんが。
なるほど・・・時計の中にはV850やSH-4が入っているのか・・・
ハァ?なにいってんだこいつ
時計にモーターなんざ入ってないっつーのな
ACサーボモータのサーボアンプなんかの中じゃ、 SH4クラスのCPUつかってるよ。 それくらいの速度じゃないと間に合わんだろ。 転流の制御とか、電流ループの制御周期は100マイクロ秒くらいじゃなかったっけ? 最近は、エンコーダ解像度もかなり高くなってきてるし、 そのほか通信タスクやデータ取得用タスクなんかも走らせなきゃならんだろうし。 数年前見た安川のサーボアンプの中がたしかSH4だたような・・・
3MHzの8085まだ使ってます。 615KHzの8bitの製品も今作ってます。 >性能比:命令ごとのクロック数まで見なくても、基本クロックとバス幅と パイプラインとの積ぐらいの比率じゃないでしょうか?
パソコンのCPUは1クロックで数命令実行する能力がる またバスは64ビットあり、1ワードは32ビットもある。32bitの加算が1命令で出来る 掛算も1命令で出来る 普通のマイコンがそこらの家電装置の中のマイコンだとすると バスは8とか4bit ワードサイズもそれに同じ、加算するだけで4とか8サイクルかかる。 掛け算はソフトで実現だから100サイクル近くかかる クロックが同じとしたって50倍近い処理能力差がある
価格差1000倍なら納得。
で SH-4 とか DSP は1命令1サイクルに近づけている SHは命令サイズをバス幅より小さくする事 DSPは命令とデータX,Yでバスを別ける事で それを実現しようとしている。 もちろん命令キャッシュも採用される事が多い さらに掛算を少ない命令サイクルで実現する機能も付いている。 ただし、パソコンのように、掛算が使い易いわけじゃない。 少なくともレイテンシがかかる場合が多い その間に他の命令を実行させる等の工夫が必要になる それでも普通のパソコンのCPUと比べると1〜2桁は処理速度が落ちるのが現状だね
>>511 今の手に入る8bitマイコンの代表のPICなんかは 200円程度で手にはいる
200*1000=20万円・・・・パソコン一式買っておつりがくる値段だね
PICと性能比べたら1万倍以上の性能差があるわけで
例:
PIC RAM 512 パソコン512M
PIC 4MHz パソコン 2G Hz
>>508 電流ループの制御もマイコン制御でやっているのかい?
シングルプロセッサで通信タスクとかも走らせていたらけっこう難しそう
もうマイコンなんて使わないですべてペンティアム4いっぱい貼り付けてやればいいじゃないか 適材適所だの値段だの考えるな
>>508 > 数年前見た安川のサーボアンプの中がたしかSH4だたような・・・
手元にある安川のサーボアンプの中身を今見てみたら
V853 uPD70F3025A-33
だった
安川と言えばSHだと思っていたのでちょっと意外
>>507 針が回転してるだろ
モーターが入って無くてどうやって回るんだよ しねよ
まあモータと言えばモータか、ステッピングモータの一種だな でもどっちかいうと単なるソレノイドだが
「モーター+ラック&ピニオンでリニアモーターだ」 くらい強引な飢餓す。
おいおい、ステッピングモータはモーターそのものだろ。 〜といえば、どころじゃないよ。 馬鹿じゃねえのw
521 :
デフォルトの名無しさん :2006/03/10(金) 12:39:44
ベクトル制御みたいな高速演算が要求されるものは ハードでやればいいのに マイコンで演算させるメリットって何?
モーターのスペルはmotorであってrotatorじゃないよw
メレックのmcc05にコマンド送るだけでモーターが回るけど?
メレックのmcc05ってなに?
>>515 Pentiumは演算は早いだろうが、
割り込みのディレイやジッタが大きかったり、
キャッシュが効いたときと効かなかったときの実行サイクルの差がでかかったり、
チップセット使わないと、外部バスにデバイスつなげるのが困難だたり、
致命的なのは発熱だな。
とマジレスしてみる。
でも 32bitで内部クロック1GHz 内蔵RAM64K 内蔵フラッシュ 640kbyte で 16pin-DIPソケットなマイコンが100円ショップで売ってたらいいな
>>526 相対評価と絶対評価の区別がついてないなw
それともWindowsだけがx86のネイティブな姿だと激しく勘違いしているか。
>>527 なにが「でも」なのか意味わからんなw
パッケージの背中が32x128dotの液晶表示器になってて、 32798水晶振動子内蔵で USB2インターフェイス内蔵で簡単にパソコンに繋げて
うーん。15万ぐらいかな
>>529 >32798水晶振動子内蔵で
そんなもの要らない。
スマン32768だったよ。
32768個のクリスタル?
いや、Hz タイムベースに使うのと背中の液晶表示機の駆動クロックに使う 消費電流は 32K水晶だけなら単3電池駆動で5年くらいのが欲しい。 そしてPLLで任意倍率のクロックが作れるといいなあ
1チップMSX2+でおk
じゃ背中に 320x240dotのパネルを積んだ PLCC パッケージの MSX2+ で USB マスタでPCから書き込み出来るというのをお願い
ピッ
Interface 6月号を買おうよ なんかついてくるらしいよ
パルスジェネレーターにしては高性能だと思うけど?
>>540 1軸だから当たり前と言えば当たり前だけど直線補間もないし
このクラスのパルスジェネレータはどれも似たり寄ったり
差があるとしたら原点復帰モードが充実してることと絶対値指定ができることだけど
これはどちらもソフトで簡単に対処できること
FPGAで自分で作ってもどうにかなってしまう
差のつけようのない枯れた分野だね
>>527 みたいなマイコンを\100ショップで売っててもハード屋さんは怖くて誰も使わないと思う。
秋葉で8085買い漁るのに疲れたらしく、MB91F36なる32bit使えるかい?とお客に聞かれた。
その辺に転がってるボードパクってuart端子だけつなげたいらしい。そりゃ使えますともさ。
あまりにもオーバースペックで笑ってしまうけど。トロンOS積まなくちゃ使えないんだよ。
高々4.8KのシリアルI/Oやるのに10倍の規模のソフトになっちゃうし。
>トロンOS積まなくちゃ使えないんだよ んなこたぁない。 あと、トロンOSって、具体的に言ってくれよ、B-TRONか?w
ITRONですがな、もちろん。私以外にも早起きの方がいらっしゃいますね。 いや、もちろん裸でも使えるのは知ってますけど、たいていコンパイラと一緒に押し付けられる。
この前 ダイソーの100円ショップで ヤニ入りハンダ コテと ハンダ吸取器を見た。 100円じゃなかったけどね
ハンダ吸い取り器が\100はすごいな。・・あ、\100じゃなかったみたいね。でも安そう。
100円なら超欲しいな! ・・・でも100円じゃないならちょっとなぁ・・・
210円ハンダ吸取器は結構使える ポンプ式のも持ってるがすぐ詰まるし吸取り力が今一つ、 さらにヒータが暖まるまでの時間がロスだったので、最近コレばっかり使ってる
突然すみません。質問なのですが、 よくメモリデバイスの仕様に書かれている、16ビットデバイスとか32ビットデバイス というのはどういう意味なのでしょうか? 16ビットデバイス=16ビット単位でしかアクセスできないデバイス のことだと思っていたのですが、実はバイトでもアクセスできたりして いまいち意味がわかりません。 もしかしてバス幅のこと?
バス幅でいいとおもう。たいていの奴は16/32ならバイトアクセスも可能だけど、 たまに16/32オンリーというのもあるね。そのかわり速いとか。
554 :
552 :2006/03/17(金) 18:11:03
>>553 レスありがとうございます。
容量4MビットのSRAMのデータシートを読んでみたところ、
2Mワードx16bitと書いてあるものの、データバス幅が16bitになっていることと、
256kx8bitのSRAMではデータバス幅が8bitであることを確認しました。
バス幅で間違いないようですね。
ところで普通、
2Mワードx16bit(容量4Mビット)のデバイスが使用するアドレスの幅(制御ソフトから見えるアドレス空間)は
a) 4M(1番地につき1バイト)
b) 2M(1番地につき)
のどちらなのでしょう?
なぜこんなことが疑問なのかというと、
16ビットデバイスに対して奇数番地をアドレスバスで指定したら、
メモリはどう振舞うのかを考えたところ、もしかしたら16ビットデバイスというのは
アドレス1番地につき2バイトのデータを保持できるのではないか、と思ったからです。
考え方めちゃくちゃですかね?
>>554 どっちになるかはプロセッサによる。
DSPのようにワード単位にアドレスが割られるものと
汎用CPUのように、アドレスは1byte単位でバイトアクセスフラグが付くタイプがある
556 :
デフォルトの名無しさん :2006/03/18(土) 21:14:15 BE:164012235-
すみません。三菱のシーケンサーでフレーミングエラーって出ます。 フレーミングエラーって何のことですか? どうすれば先に進めますか?教えてください。
TextSS のWindowsXP(Professional)64bit化おながいします もしくは64bitにネイティブ対応したテキスト置換ソフトありますか? そういや64bitにネイティブ対応している2chブラウザてありましたっけ?
>>556 そんなの業者に聞いてくれよ。 RS232CならボーレートかSTOPが合ってないんじゃないの?
559 :
デフォルトの名無しさん :2006/03/18(土) 22:10:25
>>558 それが休みなんでつ。
このままでは帰れません。
どうしたらいいですか?
>フレーミングエラーとは調歩同期(ASYNC)において、ストップビットのあるべき位置に >ストップビットがなかった(論理0だった)場合に表示されます。フレーミングエラーが >頻繁に表示される場合は、データ長、パリティビットの有無などの設定が間違っている可能性があります。 ボーレート、データ長、パリティ、ストップビット長の設定を確認すること
>>558 シーケンサの型名も書いてない時点で「ネタ / どあほ」のいずれかだろ。
無視しろ。
俺的には
>>561 のように何も生産的な発言をしない(まあむしろできないと思われるが)
くせに口調だけ尊大な奴こそ無視したいけどなw
だいいち、(まあググればわかるようなことではあるが)
>>556 の質問内容からすれば
具体的な機種名が必要とはちょっと思えないんだが。
> 無視したいけどなw 無視しとけばいいじゃん。 できないのは、厨房だからですか?
564 :
552 :2006/03/19(日) 18:50:19
>>555 私の意図したのは汎用プロセッサのことなので、
a) 4M(1番地につき1バイト)
という認識であっていたのですね。
具体的には(プロセッサがビッグエンディアンの場合)
*(unsigned long*)0x8000 = 0xaabbccdd;
としたあと、
unsigned char tmp;
tmp = *(unsigned char*)0x8001;
とするとtmpの中身は0xbbということなんですね。
今まで、メモリが2Mワードx16ビットの場合は、もしかしたら
tmpの中身は0xccになるのではないか、と疑っていました。
(1アドレスにつき2バイト保持できるRAMだと思っていた)
自分の理解が正しかったと安心できました(^^)
ありがとうございます。
>>564 なんかこう、実メモリアドレス空間とバス幅とメモリ配置について思いっきり勘違いしている悪寒。
1ビット幅のメモリを使う場合、通常バス幅のメモリを並べる。
8ビット幅のメモリを使う場合、通常バス幅の1/8のメモリを並べる。
以下同様に。
16ビット幅のメモリを使う場合と32ビット幅のメモリを使う場合も同様なので、
仮に0番地のメモリにアクセスしたときにはメモリの最初のワードにアクセスする。
しかし、2番地のメモリにアクセスしたときには前者は2番目のワード、後者は最初のワードにアクセスする点が異なる。
ちなみに、1ビット幅のメモリを使い、0番地にアクセスすると8個のメモリの最初のワードにアクセスすることになるわけだ。
#だからこそDRAMカードはメモリチップがずらっと並ぶわけで。
>>565 > しかし、2番地のメモリにアクセスしたときには前者は
> 2番目のワード、後者は最初のワードにアクセスする点
> が異なる。
はぁ?
32bitメモリとか書いてるから、プロセサも最低 32bit
幅だと思うが、2番地のアクセスだと前者 (=16bit メモ
リ) でも、(0番地アクセスとは違うメモリチップだけど)
最初のワードがアクセスされると思うけど。
32bit ⇒ 16bit のバスサイジングでもやってるのか?
>>566 その通り。別のチップの最初のワードだね。
568 :
556と559 :2006/03/19(日) 23:31:38 BE:699782988-
>>556 >>559 です。
すみませんでした。昨日は急いでいて説明が不足してましたが、
実は私の弟が制御の仕事していて現場にネットがないので
フレーミングエラーって何か調べて、と珍しく電話がありました.
自分なりにあれこれ検索を続け、ヒットした内容をそれぞれ伝えましたが、
それが役立つ情報かどうか、読んでいる私にはさっぱりわかりませんでした。
検索中、ヒットしたここに辿り着き、皆様に頼らせていただきました.
時々、2ちゃんねらーでしたが、こんなスレがあることもはじめて知りました。
こんな難しいことを話し合っている皆様すごいです。
今、弟に昨日の確認をしたところ、
一応エラーの表示はでるものの、動作しているそうです。
いつも深夜まで残業漬けの弟を、一人暮らしの部屋だけど
早く帰宅させたかった、制御素人の姉でした。
お騒がせし、そして大変お世話になりまして、皆様ありがとうございました。^o^
まったく解決になってないわけだが。
571 :
デフォルトの名無しさん :2006/03/20(月) 00:17:52
ハードはつくらないの?
572 :
552 :2006/03/20(月) 01:10:48
>>565 >>566 >>567 私、まだわかってないみたいですね・・・
皆さんのアドバイスを元に私なりに整理してみました。
添削していただけると幸いです。
前提条件(簡単化のため)
プロセッサがサポートするバイトオーダー: ビッグエンディアン
プロセッサが使用可能なデータバス幅 : 16bit
プロセッサに接続しているメモリのデータバス幅 : 16bit
メモリのスペック:2Mワードx16bit (容量4Mbit)
このシステムで使用したいメモリの総容量: 4Mbit
この前提条件の場合、プロセッサには1個のメモリが接続される構成となる。(メモリとプロセッサのデータバス幅が同じなので)
また、
このメモリの0番地からプロセッサが16bitリードすると、メモリの最初のワードが読み込まれる。
2番地からプロセッサが16bitリードすると、2番目のワードが読み込まれる。
1番地からプロセッサが16bitリードすると、最初の下位ハーフワードと2番目の上位ハーフワードが読み込まれる。
(プロセッサが奇数番地からのワード読み込みをサポートしていたならばの話)
さらに
unsigned char tmp;
*(unsigned long*)0x0000 = 0xaabbccdd;
tmp = *(unsigned char*)0x0001;
をするとtmpの中身は0xbbということになる。(メモリの最初のワードから読み出される)
そして、
この場合、プロセッサが使用可能な物理メモリ空間の大きさは512k(4M / 8)
どんなもんでしょうか?
どうみてもめちゃくちゃです。 本当に(ry
574 :
552 :2006/03/20(月) 01:26:07
そうですか・・・まだぜんぜんだめですか・・・ どの辺がとくにだめでしょう・・・? (`・ω・´)
いや、こういっちゃ何だが偉そうに回答している人間の方もよく分かってないと思われるw もっとシンプルに考えればいいんだよ。 プログラマは普通ハードウェアがどんな実装をされているか、まで考える必要はない。 そのための抽象化でしょ。 1つのメモリアドレスにには1バイトのデータが割り当てられる。 データバスが何ビットだろうと、バイト単位のアクセスがRead-Write-Modifyで 実現されていようが、バスの8本だけを使う方法で実現されていようが、そんなことは無関係に。 ただそれだけのことでしょ。
>>572 SRAMにはバイト単位のアクセス許可(16ビットの上位8bitだけ下位8bitだけを有効にする)
が付いてる事が多いから、そうだとすると
>1番地からプロセッサが16bitリードすると、最初の下位ハーフワードと2番目の上位ハーフワードが読み込まれる。
>(プロセッサが奇数番地からのワード読み込みをサポートしていたならばの話)
は可能だけど、 そうじゃない場合には無理だね。
> メモリのスペック:2Mワードx16bit (容量4Mbit)
は 容量が32Mbitか 4Mbyteかの間違いか
256Kワードx16bit (容量4Mbit)
>この場合、プロセッサが使用可能な物理メモリ空間の大きさは512k(4M / 8)
を成立させるには
256Kワードx16bit (容量4Mbit)
が正解なのだろう
マンドクセから、チップとコントローラの仕様によって変わってくる、ってことにしようぜ
579 :
552 :2006/03/20(月) 20:37:59
>>575 そうですよね。
ソフトから見た場合、1アドレスには1バイト割り当てられるという理解で良いんですね。
(ハード屋さんがアドレスバスの接続を間違えたりしなければ)
>>577 >SRAMにはバイト単位のアクセス許可(16ビットの上位8bitだけ下位8bitだけを有効にする)
>が付いてる事が多いから、そうだとすると
私がデータシートを読んだSRAMも、確かにLowerByteとUpperByteを区別してデータを取り出せる仕様になってました。
>>1番地からプロセッサが16bitリードすると、最初の下位ハーフワードと2番目の上位ハーフワードが読み込まれる。
>>(プロセッサが奇数番地からのワード読み込みをサポートしていたならばの話)
>は可能だけど、 そうじゃない場合には無理だね。
自分で書いておいてナンなんですけど、これって2回のバストランザクションが発生しますね。
(アドレスバスには0番地しか出ていないから、1番地の上位ハーフワードを同時には取り出せない)
こういうのはコンパイラ&アセンブラがうまいこと2回のバイトリードに振り分けるんでしょうね。
>256Kワードx16bit (容量4Mbit) が正解なのだろう
そうです。間違えてました。すみません。(めちゃくちゃってこのことか・・・)
いやー、おかげさまですっきりしました。
何度もありがとうございました(^^)
アラインされてないメモリアクセスを、2回に分割するのはCPUだろ。 アクセスするアドレスがアラインされているかいないかをコンパイラ・ アセンブラ・リンカが知ることの出来ないケースがあるから。 CPUがサポートしてなかったら、バスエラー。
>>580 > アラインされてないメモリアクセスを、2回に分割するのはCPUだろ。
そうなの?
> アクセスするアドレスがアラインされているかいないかをコンパイラ・
> アセンブラ・リンカが知ることの出来ないケースがあるから。
具体的にはどんなケースでしょ?
a.c: int *foo(){ return (int*)0x12345; } b.c: int bar(){ return *foo(); }
x86系のCPUは奇数番地からのワードread/writeを2つのバイトアクセスにCPUが別けてくれる 他の多くのCPUは奇数番地からのワードアクセスでは例外を出すだけ どうしてもそれでアクセスしたいなら自分で例外内でバイト2つに別けるとかするのだろうが そんな仕掛けをわざわざ入れてる奴はみた事がない。 コンパイラが自動的に奇数番地からのワードアクセスを バイトアクセスにしてくれるのも見た事がない。
>>583 OSレベルでなんとかしてくれることもある。
ttp://www.linux.or.jp/JF/JFdocs/LinuxAlpha-FAQ-1.html >不整列アクセス(Unaligned access):
> 他の RISC CPU と同様に、Alpha でもメモリのアクセスに際しては 自然境界に整列している必要があります。
>例えば、メモリから 4 バイトの整数を読み込む場合には、先頭のアドレスが 4 の倍数となっている必要があります。
>同様に、8 バイトの整数を読み込む場合には、8 の倍数のアドレスから読み込む必要があります。
>もし、CPU が正常に整列していないワードをアクセスする場合には、 CPU はカーネルにトラップをかけて警告を出力します。
>そしてカーネルは、不整列アクセスをエミュレートし、何事もなかったかのようにユーザプロセスを実行します
>(ただし実行速度は大幅に落ちます)。
>>584 もっと人間を信じろ。そこまでアホばかりではない。
>>586 だが、信じすぎてはいけない。そんなに賢い人間はそうはいない。
588 :
デフォルトの名無しさん :2006/03/30(木) 01:32:26
GCCで、特定のメモリ範囲だけを使わないメモリマップを作りたいのだがどうしたらいい? その領域に、ダミーの変数なり関数を配置しておけばOKだと思うのだけど・・・。
変数ならアクセスしなきゃいいだけだが、関数だとその番地にロードされるコードができるね。 「ロードすらしてはいけない」なら関数はだめだな。 俺もCPUのバグレポートで「この番地は使ってはいけない」所には使わない変数を配置した。
なんで入出力って非同期転送にならないんでしょうか?ウエイト入れるくらいならキューにしちゃえばいいのに。 なんでウエイト入れなきゃなんないんですか?
>>591 巨視的な世界での電圧の変化って、ピュー太の内部CLKと比べると充分に遅いから、
っていう理解じゃだめ?
>>591 相手が遅いから
制御系レベルの入出力とデバイスドライバレベルの入出力がごっちゃになってるんじゃないかという前提で、
相手が早いのか遅いのか、同期で読まなくちゃならないのかバッファリングして読んでもいいのかが決まってない世界が制御系。
なんか凄いな。いつから皆さんエスパーになったのよ?w
俺には
>>591 は説明不足の舌足らずな質問にしか見えんが。
端的にいって意味不明ですけど。
それは君の経験不足に起因していると思うよ しなくていい経験というのもあるから、不足というと語弊があるかもしれんが
いや凄いってのは当然皮肉なんですがw 仮に591読んで「意味が分かる」とすればそれこそ経験不足でしょ。 自分の妄想や思い込みを抑えて、謙抑的に書いてあることを書いてあるままに 読み取る訓練ができてないんだよそりゃ、悪いけどw
ゆとり教育の想像力低下を危惧すべきだな。
想像と妄想とは違うよw 確かに、591の文章の意味を想像することはできる。 しかし、入出力、非同期、キュー、ウェイト、などという一般的過ぎることばだけでは、 何についてのどのレイヤーの話をしているのか全く分からない。 可能性は無限に「想像」可能、といっていい。 それを勝手に「ああそのことね…」なんて早とちりして回答するのは 妄想以外のなんでもないよ。
確かに君は経験豊富なようだ。 ただし煽られる側のな。
もっと書いてくれれば答えガイがある質問かもしれん。 ぱっと見では勘違い電波質問にしか見えんが。 俺の受けた電波は、タイミングチャートを見たことも無い 間違って組み込みやらされてるPGから発信されたものだといっている
まとめると、入出力は非同期転送にできるし、キューを使いたければ使えば いいってことだな。
つーか3/32に見えるな、エイプリールフールってことかいね。
でスレ呼んでみたが・・・ 確かにひどいなこれは。聞いたことある名詞を適当に並べて、 とりあえず接続詞を入れてみましたってな文章だな。
>>597 何も分かってないか只の釣りだということが読み取れるから
基礎を講釈してるんだろ
I/Oは、CPUの動作している高速なサイクルじゃ、バスにぶら下がってる外部入出力装置が認識できる電位まで立ち上がる事が出来ないんだよ。 だから十分にWAITを入れて電位がHigh(Low)に達するまで待たなきゃならんの。 たとえキューを使おうが、非同期にしようが、I/Oで保持する信号の変化を待つ為にWAIT入れなきゃ行けない。
超高速な世界から見たら、配線コードそのものがコンデンサーみたいな物だからなぁ・・・。
>>606 答えになってないなw
仮に591の質問の意図が君の思っているとおりであるとしても。
I/Oで保持する信号の変化を待つ為にWAIT入れなきゃ行けない。
それはその通り。
「だから」CPUとI/Oの間にキューが入れば、非同期でできるのになんで、と聞いているのに。
PCIeの立ち上がりは100psだっけ? とてもじゃないが、そんな信号の遣り取りなんか面倒見たくないね。
>>608 キューに送る信号の安定待つのにWAIT入れないといけないんだけど?
つか、外部メモリーのアクセスにだってハード的にWAIT入れてるってえのに・・・
>>608 つーか、お前が本ネタか?
だったら、お前が考える同期/非同期転送の違い、ウェイト、キュー
FIFO、メモリ、レジスタを定義してくれ
意図が読み取れなくて非常に気持ちが悪い
>>608 ソフトで面倒見られるのはH/Wより”遅い”場合だけだよ
H/Wが逆さに振ってもおっつかないもんは、どうしようもない
608ではないが(595=597=599=608か? 言っていることは分かるつもり) 同期転送の例 1) データの変化がクロックに対して決まっていること 2) 転送元クロックと受信側クロックがあっていて、乗り換えの必要がないこと 2') 転送元からクロックが送られてきて、データがそれに同期していること 3) トランザクション終了がデータ転送終了となるもの 非同期転送の例 1) データの有効期間をストローブなどで知らせるバス 2) バスクロックと受信側クロックが合ってなくて、乗り換える回路がある 3) データ転送がoutstandingに実行される 599がレイヤーが違うといっているのは3)とそれ以外かな? 電圧だのキャパシタだの言っている奴はどういう意味のつもりなんだ?同期・ 非同期とどう関係するのか全然わからん。メタステーブルにならないところで 読むのは当り前で、1-3で言うところの同期か非同期かは関係ない。
>>612 いや、俺は605=611
あんな時間は当然のように仕事してた
正確に言えばキャパシタンスと言いたかったんだろうな
(厳密にはインダクタンスも絡むけど)
その影響で
>>3 ) トランザクション終了がデータ転送終了となるもの
こうならないと言いたかったんだろう
理由がなんだろうが、ぶっちゃけて言っちまえば
高速な信号の保持機構を端折ったH/Wの尻拭い、ってだけだけどな
保守
615 :
デフォルトの名無しさん :2006/04/24(月) 11:03:46
H8/300HシリーズでμITRONを考えています。 ・・・が,対応製品が ・ThreadX-μITRON(4.0仕様。グレープシステム) ・NORTi/H83(2.0仕様。ミスポ) ぐらいしか見当たりません。(TOPPERSは取りあえず除く) 昔は,HI8-3H(2.0仕様)というものが日立純正であったようなのですが,現在利用できるのかが分かりません。 どなたか,HI8-3Hがどうなったのかと,H8/300Hシリーズで使用できるμITRON製品を教えてください。
μITRONをH8/300hで使いたいってのは、既に動いてる資産を利用したいからって事かい?
トロンのカーネルはいちおう8bitまで考慮して書いてはあるけど、300Hじゃ動いても重い でしょうね。ふだんOSレスで書いてる私から見れば、オーバーヘッドすぎるからやめとき、 が最初に出ますね。タイマひとつ張るのに識別子付けて記述言語情報付けて関数アドレス 付けてなんて、「標準化」ってのはそういうことなんだけど、チビの石には負担でしょ。 大事なのは割り込みとタスクレベルと両方から触る変数はタスク側でdi()/ei()かますこと。 セマフォだって根底はこれだけだよ。
タスクの切り替えは、単にスタック領域をタスク毎に用意して、スタックポインタを切り替えるだけ もっともH8はレジスタが多いから重くなるね
タスク切り替えごとに割り込みマスクされると....
具体的には、 taskA,taskB というポインタを用意しておいて A->Bタスク切り替え: 1、全レジスタをスタックに保存 2、taskA := SP 3、SP := taskB 4、全レジスタをスタックから復帰 5、return つまり、Cで書く割り込み処理に SP切り替えを追加しただけのコストでタスク切り替えは実装出来る
ただ、スタック領域がタスクの数だけ必要になるので、H8/300の1チップで このスタック領域を確保するのは厳しいだろうな
なるほど でも、SPを切り替える時のコードが思いつかない。
SP=ER7だから、普通に mov でメモリに書いて読めばいいだけだよ
え、Cじゃ無理なの?
h8用のCならインラインアセンブラを埋め込むのは可能だろう 汎用的にやるなら #include <setjmp.h> setjmpしてlongjmp
H8/300HくらいならμITRONサブセットのSmalightOSくらいでいいんじゃね? トラ技のバックナンバーに載ってる。
普通のLinux入れたいです。
629 :
デフォルトの名無しさん :2006/05/02(火) 12:14:22
>>626 625じゃないけど・・・
setjmpとlongjmpでSP切り替えできるんだ・・・
というか、使ったことないのでした・・・setjmp
でもアセンブラ使わないとなると、スタートアップ時にmainで巨大な配列をローカル変数に取るとかいう格好になるんで ちょっと格好悪い
setjmpとlongjmpはSPを記憶、戻すというイメージでは? やっぱり、アセンブラか。個人的には意味ない感じ....
630の内容は taskA から taskBを起動する時に 1、taskAのsetjmp 2、大量にローカル変数を取ったtaskBのスタートアップルーチンを呼ぶ 3、taskBで setjmp⇒taskAにlongjmp 2で取ったローカル変数のサイズだけtaskAのスタック領域が確保されるという仕掛け
なんか、勘違いしてない?
俺もそう思う uITRON載せるのは16ビット以上ないとつらそうだ。8ビットなら昔は自作のOSもどきのタスクチェンジャ作ってのせてたな
uClinuxは?
OSのせるとある程度CPUパワーがいるからね。タイミングが厳しいのは....
8ビットものはタスクスイッチとセマフォとタイマあればいいや
>>635 あれは仮想メモリないCPUでも動くがだいぶ違うと聞いた
ぬるい仕事しかしたことないんで、どうも「タスク」とやらの必要性がわからない。 8bitや16bitのCPUでやるような組み込みなんか、 割り込み + 回るコマドリ でいいじゃん。 「コンテキストの保存」というオーバーヘッドは いったいなんのためのコストなんだろう。
「コンテキストの保存・切替」というオーバーヘッドは 割り込みで全レジスタを保存するのと同じですよ。 つまりc言語で割り込み記述するのと同じコストですよ
切り替えに時間がかからないのはわかったんですが、 スケジューリング?にかかる時間の計算はどうすればいいの?
回るコマドリ というのが、例えば void progRobin1(void){ static RobinNo=0; switch(RobinNo){ ・・・・・ } } みたいにしてmainで割り込み待ちした後、各コマドリを呼び出すという方法だとしたら それをコンテキスト切り替えにしてRoundRobin方式で回したり 入力タスクを出力タスクにつないだりするのと、時間的なコストは変らないのでは? ただ、スタック=メモリ消費が大きいのが問題だと思うけどなあ
その方法はよくわかるんですが、 リアルタイムOSでは、時間計算とかどうしてるのか気になるんですよ。
誰が駒鳥さんを殺したの 誰が殺したクックロビン
645 :
639 :2006/05/04(木) 16:49:24
>>640 えーっと、だから数代前のMacOSみたいな設計(ノンプリエンプティブ、だったっけ?)
なら、つまり一定時間で強制的にタスクを切り替える、なんてことをしないで
全部ラウンドロビン方式でやれば、コンテキストの保存なんて作業の必要性は
発生しないわけですよねえ。
それじゃまずいタイムクリティカルな部分だけ割り込み使えば、
マイコンでやるような小規模なシステムなら必要十分だと思うんですが。
例えば、可変長ブロックの通信処理。 圧縮が入っていてけっこう厄介なものだとする。 会社Aに通信仕様だわ渡して頼んだら、GetByteみたいな関数呼び出して実装して持ってきちゃった。 でも全体のシステムを設計してた会社Bは 通信部は割り込みで受信する事を考えていたという事があるとするよ。 どっちも自分がマスターで、相手をスレーブと考えていたという場合だ。 このGetByteでコンテキスト保存して会社Bのメインタスクに戻り、 受信割り込みでコンテキスト切り替えしてGetByte に戻してやる。 そうすると、会社Aのコードも会社Bのコードも両方が動くと。
まあ上の例だと、FIFOに書いては、ある程度溜まる都度 会社Aのコードを呼び出せるように 変更するという対策もまだ選択可能かもな。 でもさらに、 会社Aが アチコチにあるGetByteで読んで 圧縮されたデータを復元した結果を アチコチでPutByteしてたとするよ。 会社Bも 圧縮された結果をあちこちでGetUnpacByteして動くように作ってデバッグまで終わらせてしまってた。 で、納期は迫ってちゅうような状況だとしたらどう? こういう状況だと、Aのコード、Bのコードをタスク化してつないでしまわんとしょうがないでしょ?
つうか、会社Aも会社Bも、お互いにきっちりコミュニケーションとって下さい。
コミュニケーションとった場合でも、マルチタスクを導入しなければ 片方がスレーブ的なコードを書かなければならなくなるわけで この手のコードはマスター側で書くのは楽だが、スレーブとして書くのは大変でしょ?
大変っていうか、とりまとめてる会社がみんな悪いなw
どの会社が何を作るなんて決めの問題だろ。 で、決めたらそれを作るだけじゃん。 何が不満なんだ?
ありがと でも、割り込み禁止時間が...............
関係ないけど、可変長と委員長って 似てるよね
むしろ月亭可朝
委員長かわいいよ委員長
かっぱ寿司(回転寿司)にいって、 カウンター席ーー>可変長メモリプール、 テーブル席 ー>固定長メモリプール と思ったりしませんか? 優先度待ちにできんものかと、 勝手なことを考えたりします。
うちの子供はテーブル席でも走って行って欲しいもん注文して帰ってくるぞ。
よくわからんのだが、かっぱ寿司はカウンター席とテーブル席に格差があるのか?
661 :
657 :2006/05/12(金) 09:54:55
>660 優先度待ちで、優先度が高ければ、最後にノートに書いても、 次に呼ばれるということです。なんのひねりもなくてすまん。 ところで、テーブル席(可変長メモリプール)の場合に、 ITRONの仕様より、かっぱ寿司のアルゴリズムのほうが優秀です。 いわゆるフラグメンテーションについてです。というより、ITRONの 仕様が実装をやさしくしたのだと思います。 スレ違いですまんです。
662 :
デフォルトの名無しさん :2006/05/12(金) 10:57:26
中四国で制御系の仕事やらしてくれる会社をおしえてください。
663 :
デフォルトの名無しさん :2006/05/12(金) 11:39:49
教えてあげたいが会社ばれするので断る
664 :
660 :2006/05/12(金) 12:43:29
>>661 つまりあれだ、回転寿司かどうかに全く関係なく、ファミレスなんかの着席待ち行列の話だな?
空き席の状況と喫煙席の可否に応じて割り当て順序を変えるのが一般的じゃないのか?
漏れの行くような辺りだと「カウンター席のお客様を先にご案内します」とか、
「禁煙席の空きがありませんのでもう少しお待ちいただけますか」なんてのはよく見る光景だが。
それとあれだ、回転寿司に引き摺られて>659は注文待ち行列とミスリードしたわけだな。
そこで>659に質問だが。
かっぱ寿司ではカウンター席とテーブル席では注文の通し方に格差があるのか?
中四国ってそんなに少ないんかい
666 :
デフォルトの名無しさん :2006/05/12(金) 16:55:38
2重振子の振り上げのプログラム書かないとダメだけど全然わかんない… どうすりゃいいの??
>>662 うちの取引先に岡山のがあるなあ。
前の職場の検査装置が広島だった。
探せば意外にあちこちあるはずだけど
一度中に入らないとそういう情報見えてこないんだよねえ。
670 :
デフォルトの名無しさん :2006/05/14(日) 18:44:30
8人様ご案内のとき、4人席を2つ並んで確保するときもあれば バラバラにされるときもある だいたいは予約ノートに書くときに客が指定するけど ファミレスの運営形態にもよるが、大抵はその8人が すぐ近くにいたいのか離れてもいいのかで 確保の仕方が異なるんだよ
回転寿司でテーブル席だと回転寿司の醍醐味が味わえない。
673 :
デフォルトの名無しさん :2006/05/15(月) 00:31:11
>>672 4人がけだと、レールから離れてる方がつらい
取ろうとして手がぶつかってしょうゆこぼすし
あー、バスインターフェースがボード上に散らばっている状態か。
>672 テーブル席沿いにレールがあるとこってあるの? ないと思うけど、あったら流行るかな? これって特許になりませんか?
>>675 あるよ。チェーン店でも全商品100円のなんたら寿司はそうだった記憶がある。
つーか、テーブルを縫うようにレールが走っているともいえるね。最早回転じゃない。
このタイプの店は、目の前に職人がいて直接オーダーするタイプの店とは明らかに違う。
店によっても違うのだろうが、機械握りだったりするわけだ。
魚屋チェーンの某魚○が経営していた回転寿司屋もレールが九十九折になっていたが、
休日夜でさえ一部レーンをショートカットするような状態が続いた挙句に終に潰れたよ。
神奈川にいた時は元禄すしがおいしかったな。 こっちだとくらがおいしいかな。
お前らはアセンブラプログラムだ。皿に乗ったデータが目の前に来ると変なことするだろう。
>677 昔、千日前の元禄寿司でバイトしてたことがあるよ。 元禄は、一応職人がにぎってたよ。ちょっとおいしいの かもね。バイトの大半はエビの作業でした。
>>679 元禄寿司ってこっちにもあるんだ。
こっちだと、くらとかかっぱばかり見るからないんだと思ってた。
>>680 こっちってどっちだよw
鮪で有名な御崎港には職人が握る回転寿司屋があるが、
レーンは殆ど機能していない。
なんせ客は殆ど職人に注文してしまうので、レーンを流れるのは山葵とかデザートだとか……
回転寿司スレはここですか? 回転寿司の寿司をデータと考えたアルゴリズムが思い浮かんで 実装した記憶があるが、どんなのだったか忘れた この時間でも空いてる店ってこっちだとどこかな
大学の時、ゼミの後輩に、プログラミングの勉強のためってことで、 回転寿司シミュレータってのを作らせた覚えがある。
684 :
デフォルトの名無しさん :2006/05/17(水) 17:25:44
HALは一般的にはどのレベルの抽象化ですか? レジスタアクセスの抽象化か、 ドライバ層全体を指すのか、 俺的には前者のイメージなんですが。
>>684 WindowsのHALの話なら、基本的なアーキテクチャの差異
(電源管理、割り込み、マルチプロセッサ対応など)を吸収するレイヤ。
レジスタとかオペコードよりは上、ドライバよりは下の階層。
たとえばx86版の場合だと、割り込みの違い(PICとAPIC)、
電源管理の違い(APMとACPI)、マルチプロセッサ対応の違い
なんかで違うHALが提供されてる(インストール時に自動選択)。
ただまあ、一般化するほど一般的な用語じゃあないかな。
687 :
684 :2006/05/24(水) 00:54:38
>>685 , 686
こんばんわ
ecosのHAL層とか見てみたんですが、toppersのconfigと同等っぽいですね。
特定のデバイスの抽象化というよりはosを
実装する上でのターゲット依存部(cpu, intc, timerなど)を切り分けたのを
HALと呼んでるっぽいですね。board support packageと同義かな?
688 :
684 :2006/05/24(水) 00:59:43
ところで全然話は変わるんですが、 ITRONは要するにマルチスレッドの実行環境である、という認識であってるんでしょうか? 組み込みlinuxやwindows、symbianとかでITRONのタスクのような並行処理の単位となるのは スレッドになるんでしょうか?
690 :
684 :2006/05/24(水) 01:25:08
並行は擬似並列という意味で書きました。
現役のCPUで、本当の意味での並列処理を実装していたら、プログラマの何パーセントが生き残れるんだろうな・・・
692 :
デフォルトの名無しさん :2006/05/24(水) 21:31:42
>>688 どっちかと言うとuItronのタスクはプロセスよりスレッドに似ている。
uITRON等で言うタスクは、WindowsとかLinuxのプロセスとほぼ同義。 タスク(プロセス)同士は異なった資源空間に属する。 (もちろん共有できる資源もある) スレッドはプロセスとかタスクの中で資源空間を共有しつつ 並列に走る処理単位を指す。 マルチスレッドといった場合、プロセス(タスク)の中で 1〜複数のスレッドが走ってるモデルを指す。 その場合でも、「プログラム」と言ったら普通は プロセス(タスク)単位の空間を指す。 スレッドが単体で存在することは普通はない。 あっても特殊な用途向け(割り込みスレッドとか)。
696 :
デフォルトの名無しさん :2006/05/25(木) 08:40:12
タスクの切り替えってメモリ空間の切り替えで、 スレッドってスタックの切り替え(スタックレジスタの書き換え?)なの?
本当の意味での並列処理を実装されてたら 並列処理されていることにすら気付かない
何を言いたいのか意味わからん。
メッセージ交換なんて端折ってダイレクトにアドレス渡しでやり取りしてるから、無理。 つうか、プロセス間通信のメッセージ内容がポインタって何じゃそれ。の、世界だから、永久に無理。
ますますわからん。 まずおまえの言う「並行処理」とやらを定義してくれ。
不特定多数の人間に対して「おまえ」とか二人称で言ってる奴の方がワケわからんよw
こういうイチャモンつけるやつには、ホント閉口するわ なんちゃってゲハハ
>>701 人に考えを伝える能力に欠けているやつに
何度訊いたって無駄じゃないかな。
推理が楽しいんじゃないか
エスパー能力を訓練するスレはここですか?
ええ、常に2チャンネルで訓練していますよ。 これはフリーでやってゆくのに、最も必要な能力ですからね。
悩んでいるやつの後ろを通りかかったときに ちらっと後ろから覗いて 間違いを見つけた。 そいつがオレに質問しようと口を開いた瞬間に ポートが読めない原因を探しているのなら あんたの担当のサブボードにゃあ ないぜ! メインボードに(入れちゃいけない)ジャンパがはいっている! とか言ったらピシガシグッグッをやられた
結局間違いは何だったの?
1、1つのCPUでスタック領域を時分割で切り替えたりコルーチン構造にする 2、 1つのCPUが複数のレジスタセットを持ち、これを時分割で切り替える 3、 2を命令サイクル毎に自動的に行うもの 4、CPUを時分割で使い、仮想記憶の仕掛でまるで複数のCPUがあるかのように見る 5、CPUが複数存在する
FPGAをCで書くために拡張された部分には(真の)並列処理の記法があったな
あのさあ、「OSI参照モデル」じゃないけど、どのレイヤーの話をしているのか明確にしないと ただの揚げ足の取り合いになると思うよ。 プログラマの相手にする対象の範囲内では、 並列処理が物理学的に真に並列かどうかなんて全くどうでもいいことでしょ。 揮発的に見える共有資源があるかどうか、 それだけが問題なのであって。
制御系の場合はそうでもないよ。 昔、松下電子の4ビットマイコンで 命令サイクル毎の時分割が出来るのがあったが こういうのは、命令数数えてシリアル転送するとか、そういうのにはとても便利
>>712 System Cとかかな。
まあチップ内処理はほんとに並列実行されるしね。
組込み系でUMLとかオブジェクト指向設計とかやってる所ある? 特に開発言語がCな所で。
各制御単位において、それぞれの部分全体をオブジェクトと見なす。
>>718 素人は黙ってろ
世の中にはお前の知らないことも多い
>>717 各デバイス、U/I、コントロールをクラスにすればOK?
UML使ってみたいがクラスの分類がわからん。
>>717 みたいのは単なる「仮想化」であって、それなら何十年も前から
そのようにやってるじゃん。
確かにオブジェクト指向の肝でもあるけど。
とはいっても、実際、そういう手法を取ってるところ多いからね。
オブジェクト指向「風」 なら、その言葉が誕生する前から やってる人は多いよね 言語レベルで出来るってのは確かに魅力だけど それだって結局使う人しだいだしね まーどうだろうね実際
オブジェクト指向技法なら、ゲームの世界では20も年前からやってた事だな。
組込み開発においてCUnitなどのユニットテストツールを ばりばり使っている人っています? ぜひ話を聞いてみたい
げ! コード組んでデバッグ初めて気付いた。 H8-Tinyの方向レジスタは読み返しが出来ないのか・・・・
>>724 オブジェクト指向は、処理系がそうでなければ、
ただのオブジェクト指向風構造化プログラムなだけだと思うが
そんなふうに考えている時期が俺にもありました
俺もそうだった オブジェクト指向言語を使ってるだけで、 オブジェクト指向使ってると思ってるのと一緒
バグで人間をぶち殺した人いますか?
>>730 人的被害こそなかったが、使用されるモータのパワーと当たり所によっては指くらい切断しかねないバグを出した香具師なら知っている。
>>727 オブジェクト指向っていうのは考え方。
言語は何だっていいんだよー。
733 :
724 :2006/06/09(金) 03:41:49
>>727 勘違い乙
俺はハナからオブジェクト指向技法と言っている。
アセンブラでポリモフィズムとか出来ないのは言語仕様だからしょうがないw
できるよ
質問です、近々Web系から制御系に転職するんですが 転職前に前知識として知っておいた方が良い事とか 読んどいた方が良いものってありますか?
ごく一部をのぞいてそんなとんがった技術が要求される業界じゃないから 必要な知識はOJT式にやりながら覚えていけるでしょ。
>>735 知っておいたほうがいいこと
・部品マニュアルの和訳は無い
・部品マニュアルは必ずしも正しくない
>>736 >>737 おぉ!ありがとうございます
周りに経験者がいないので結構びびってました
英語力は必要だとは聞いていたのでマニュアル見れるようにがんばります
割り込みハンドラでやってはいけない処理って どういうのがあるのでしょうか?
740 :
デフォルトの名無しさん :2006/06/11(日) 00:00:28
>>739 時間を取る処理をすること。割り込み中は他の処理を止めているため割り込み中で時間をとると他の処理がタイムアウトや失敗することがある
割り込み以外とリソースを共有すること
変数などを共に書き換えているときは割り込み以外は割り込み禁止にしてかき変えないと競合する
741 :
724 :2006/06/11(日) 00:45:54
>>740 変数書き換えごときで割り込み禁止にするなよ。
つか、割り込みの外と中で同じ変数に書くな。
中で書く変数は外では読み専用。
外で書く変数は中では読み専用。
>>741 おいおいなんだか痛い人だなあ。
例えばさあ、その「中で書く変数」とやらを「書く」操作が
アトミックじゃなかったとしたらどうなるんだよ。
っていうか
>>739 はマ板でも同じ質問してるんだよね。
そっちでも書いたけど、そもそもそれが分かってない奴が
割り込みつかっちゃいけないよ
>>740 セマフォなどのリソースの獲得も問題なのでしょうか?
割り込み禁止なんて事は、どうしようもなかった時の方便で使うにトドメレッてことだろ。 つか、そもそも割り込み内でリソース扱うなw システムコールもするなw
セマフォの「獲得」は初期化時にやっとくのがふつうだね。
セマフォを使った排他制御自体は(長く止めないことが判ってれば)割り込み中でも可。
>>741 uart使うときの、リングバッファ中の滞留バイト数みたいな情報は割り込みの中と外
両方から更新する必要があるでしょ。これを割り込みの外から更新するときには割込み禁止
にする必要がある。LD、add、ST、の3命令だけの短時間だけ。
割り込み処理で使えるリソースは自分自身が管理しているデバイスとメモリ、 システムコールは許可されている物のみ。 割り込み禁止にする・しないは、割り込みレベルを抜きに語れないでしょ? 通常はより優先度の高い割り込みは入れるものかと。 リングバッファについては割り込み側はputのみアプリ側はgetのみにすれば 割り込み禁止にする必要もないかと、getが遅くてputできない状態は取りこぼすが、 そればリングバッファを増やすなど設計・運用で対応するのがベター。 putPtrとgetPtrを用意してポインタで管理すればアプリは何バイト読めるか計算で 求められるのでバイト数をカウントする必要は無いよ。もしもその瞬間割り込まれたとしても、 putPtrが1マシンサイクルで更新される、つまり1インストラクションで更新されるCPUならば、 割り込み処理側が優先されるので不具合にはならないはず。 SHはOKでH8-300シリーズもOK、H8-500シリーズは割り込まれると怪しい処理になるかもね。 よって厳密にはケースバイケースが正しいのでは。
送信側のringバッファは以前このスレで聞いてポインタだけに直せました。 受信側は、「受信したバイトがあるかどうか?」を見るのに滞留数を使ってるので、滞留数を 廃止できなかったのですよね。滞留数をputptrとgetptrから計算する手法はここで聞いて理解 したのですが、取り出し側で滞留数を判定するときに毎回その計算するよりは、 受信時滞留数++、取り出し時滞留数--、滞留数がゼロでなければ「受信バイト有り」のほうが オーバーヘッドが少なそうだったので。3MHzの8085での話です。 10MHzオーバーのH8ならそんなオーバーヘッドは気にしないでよさそうですね。 H8/500シリーズは、メモリ++が1命令でできるのでだいじょうぶです。
749 :
デフォルトの名無しさん :2006/06/11(日) 07:23:20
@itで組み込みベンダーの半分は海外に外注って書いてあったけど本当?
質問者は「割り込みハンドラのなかで〜」と抽象的なことしか言ってないのに 特定の環境に引き寄せて回答してる奴ってのは頭おかしいのかね 自分のやってることが世界の全てだとでも思ってるのだろうかw 抽象的な質問には抽象的に答えるしかないだろうに。 具体的を出すなら「例えば」と前置きしろよ。 ま、具体的すぎる「些細な話」が一般的に万人にとって役立つとはとても思えないが。
OS使えよ。バカなんだから。
>>749 多分、本当。
でもって、仕様通りじゃないとか、糞過ぎて使えねえとか、その辺の経験を一通りクリアしたくらいの時期。
753 :
デフォルトの名無しさん :2006/06/11(日) 11:56:07
>>450 必死だなw
素人は黙ってろ
組み込み系は専門知識が重要だから無知なやつが書いたらすぐ判るぞ
いつの話を蒸し返してるんだよお前わ
そのくらい粘着じゃないと、BUG取りはできないよな。
756 :
デフォルトの名無しさん :2006/06/11(日) 12:05:16
>>752 thx うちの会社は遅れてるのかな。
国内の外注は良くやるが海外の外注はないな。
実装がアウトソーシングされるとSEとQAしか会社に残らんのとちゃう?
>>756 固有デバイスに特化した知識なんていらないだろ?
758 :
デフォルトの名無しさん :2006/06/11(日) 13:13:18
>>575 特定デバイスに特化した知識がないとオープン系と変わらんぞ
組み込みlinuxなどのオープン系のOSが普通になると組み込み系の技術者はハードとソフトの両方の知識が入るドライバー周りだけしか残らないかもな
実際ソフト規模が増えて組み込み技術者不足らしいがオープン系から流入して来るんだろうな
>>758 おまい、わかってないな。
特定デバイスは特定デバイス専門でやてくれる所に投げればいいんだよ。
その方が、安いし速いし安全。
システム全体の寿命と、そのデバイスを採用し続ける寿命、どっちが長いと思ってんだ?
760 :
デフォルトの名無しさん :2006/06/11(日) 13:26:41
>>759 話が噛み合わないな
ドメインが違う?
普段何開発してんだ?
今FPGA開発している。 ソフトと違うんで色々苦労するけど、興味深いものはあるな。 海外に外注というか、系列ソフト会社に外注して、その孫外注が在日の中国人で 日本語でコメント入れてくれてたんだけど、てにをはが壊れている以上だった。 今はインドとか開発依頼している。 日本に来てもらったりした時は、ベジタリアンとかだと食事の世話に困るんだよなあ。
普通に英語でコメントを書いてくれればいいんだけど、 現地語でかかれてなんじゃこりゃ?って経験はある。
香具師らも日本語のコメント見て 現地語でかかれてなんじゃこりゃ?って思ってるだろうな
764 :
727 :2006/06/13(火) 12:48:47
>>732 ,
>>733 ま、議論し尽くされたネタだし、版違いなんだろうが
オレ的には、どこまでいっても、オブジェクト指向と構造化プログラムは似て非なるものという認識なのだが
とくにCの場合は、旧処理を許しているから混同しがちだが
旧処理系でどんなにオブジェクト指向"風"にやってもそれはあくまで高度な構造化
それを広義に"オブジェクト指向技法"といってよいものかどうかは、現在の理論でどう解釈されているかはわからん
実際どーなのよ
NeXTSTEPとかみたいに、それ前提のシステムがあるが、 オブジェクト指向前提の言語でやらなきゃ真なるオブジェクト指向にはなり得ないという考えなのかな。
Cだろうとアセンブリ言語だろうとオブジェクト指向でコードは書ける。 単にオブジェクト指向言語は、非オブジェクト指向言語で、 オブジェクト指向を書くときに、明示的に書く処理を書かずに済むだけ。
>>766 でもそもそも「オブジェクト指向」の定義があいまいだからね。
構造体とメンバを操作する関数を一塊にして仮想的な「装置」と看做すこと
こそオブジェクト指向の本質だ、っていう見解の人もいれば(俺はこっちの立場)、
継承だの多態だのといった瑣末(だと俺は思うんだけど)な技術こそ本質だって人もいるから。
本当のオブジェクト指向なら、ポインタなんて使わねえだろうなぁ
そうだよ。「対象を目的地に移動させます」と書いておけば移動媒体のファームウェアが出来あがる。 こんな楽な事はない。
大体だな、オブジェクトというのは貧乏人が使うクロージャなんだってばよ。
いらないよ。 対象は人でも、荷物でも、電子でもなんでもいいんだ。 目的地は南極だろうが宇宙だろうが異次元だろうがどこでも良い。 移動手段はオブジェクトが決めてくれる。 オブジェクト指向。すばらしい。
そうだよなあ。 車.移動(自宅) で移動してくれるわけだから、、、って話がずれてないか?
上流階級はオブジェクト指向なんかでプログラミングしない。 上流階級は関数型言語だ。
>>773 ハイヤーならそれでいいが
実際には免許を取得して
車を購入して
ちゃんとメンテナンスして。。。
あ、でも免許も車も再利用できるわけで。。。
エレベータ.潰す(人) だれだこんなコード書いた香具師は
>>776 マ板へいけ
バグ被害スレとか、エレベータスレとか建ってるぞw
779 :
727 :2006/06/15(木) 14:46:22
その昔あるとき、Cでオブジェクト指向風に、非常に構造化して書いて悦に入っていたのよ>オレ その後それをC++でリメイクする機会があった そうしたら、えらくシームレスに書き直しができたのね で、だけじゃなくコード量が減ったですよ、なるほどと思いながら、気が付いたのが、 オブジェクト指向言語の求めるものを処理系が用意するところを、グラマーが負担していただけのこと また、オブジェクト指向が求めるものは、格好じゃなく 安全性や可視性の面で有利な点があるよね それらをグラマーが負担していたら、格好はオブジェクト指向的かもしれんが 大きく違うんじゃないだろうか まるで、船と飛行船みたいなもの 同じように海の上を走るから同じジャンといったら、それは違う 「継承だの多態だのといった瑣末」という意見があったけど 結構、「瑣末」の部分が、その本質的な要求を満たすのに必要なものじゃないだろうかと
>>778 ロシアはエスパーを極秘で育ててるんだろ?エスパーいれば天才いらないじゃん。
>>779 成る程そういうことならハゲ同。
>>780 なぜ “極秘” で育てている事を知っているんだ。
>>781 極秘っていうのは、極めて秘密にしたいことというだけで、情報が外に漏れないことを保障するわけではないからね。
必ず殺す技 と書いて必殺技だが、大抵はガード可能
785 :
625 :2006/06/21(水) 18:04:39
gccだとこんな感じでかけるみたい。 void stack_change(char **old_ptr,char **new_ptr) { register char *stack_ptr asm("sp"); *old_ptr = stack_ptr; stack_ptr = *new_ptr; asm ("":"=r"(stack_ptr):"r"(new_ptr));//おまじない }
だからそれ?
だがそれがいい。
789 :
625 :2006/06/24(土) 13:07:57
H8だと asm ("":"=r"(stack_ptr):"r"(new_ptr):"r4","r5","r6");//おまじない にすると、関数の入り口と出口でレジスタの退避、復帰のコードを追加してくれます。
だからそれ、インラインアセンブラであってCじゃないよな。
インラインアセンブラってなに?定義を教えて
ググレカス
おまえの定義を知りたいんだよ。
Cプログラム内に埋め込んだアセンブラじゃないの?
#pragma function=interrupt の後に書くか、interrupt void func(void) { で書くのとどう違うの?
__attribute__ ((interrupt("FIQ"))) void func(void) {} もよろしくネ
コンパイラは何?マイコンは何?796はgcc?
798 :
795 :2006/06/26(月) 04:50:09
私のはライフボートのコンパイラ。
>>795 のように書けば「その関数内で壊すレジスタだけ」
退避・復元してくれます。
なんだ、マニュアル持ってるんだ。
>798 ライフボートのコンパイラって、懐かしいね。 今のライフボートとは違う会社らしいけどね。
801 :
795 :2006/06/27(火) 04:49:11
買った当時はソフトボートだったかな。途中で「あれ?会社無くなった!」とか思ってあせったり。 95-->98まではドングル認識したけど、2000以降はドングル認識しなくなった。 しょうがなくて今でも98のパソコンを保存してます。 コードはルネサスのよりちょっとかしこいのを吐くみたいです。
WATCOMだっけ?
俺はIARのICC/H8を使ってた。
804 :
795 :2006/06/28(水) 04:57:53
インストしたフォルダは私のもIARですね。8bit系にはインラインアセンブラ機能が無かった。 その後買った16bit系はどうだったかな・・・ベクタもcでかけるしsfr定義が使えてbit操作も sfrxx.BITx=1;とかの書式をサポートしてくれてたから、インラインASMの必要感じなかった。
IARのbit変数はH8だと使い勝手がとてもよかった。
806 :
178 :2006/06/30(金) 05:31:39
激亀ですが、
>>185 でご紹介いただいた、
http://aitendo.ocnk.net/product/90 を買いました。
(お客さんに買っていただいたのですが) 以下インプレです。
・USBの電源だけで使える=電源アダプタ不要なのは使い勝手良いです。
・DEVICE認識のAUTO機能が無い。-->メーカーかSIZEから選ばないといけない。
・ダウンロードのフォーマットにINTELHEXはあったが、MOTOROLAがサポートされてない。
27C256程度しか焼かないので不便は無いが、安いのはこうなのだな、と思いました。
・箱に入っていた紙に書かれていた、「マニュアルはここからダウロ」のURLが間違っていた。
こんなところです。まあ、必要最低限の機能で、場所をとらないし、値段からいって満足です。
807 :
_ :2006/07/04(火) 18:25:41
RS232CっていうのはTCP/IPの世界で言う「キャプチャ」みたいなことは出来るの? UNIXから特定の命令を任意に送り込みたいんだが。 一方的に命令を送るUDPみたいな概念はあるの?
NIFTY-SERVEのパスワードを忘れてしまったときに 232Cから信号を横取りして別のPCで表示したことがある 激しくチラ裏だけどね
809 :
デフォルトの名無しさん :2006/07/04(火) 18:55:16
>>807 レベルが違う。RS232Cと比べるんだったらイーサネットじゃなきゃ
RS232CでもTCP/IP出来るんだから。
RS232Cで外付けモデムでPPP接続ってのがRS232CでTCP/IPやってるってこと。
でもってRS232Cってのは1バイト単位の送受信だから後は上位でやってねってこと。
810 :
デフォルトの名無しさん :2006/07/04(火) 21:54:20
>>809 多分その人レイヤーの違いは認識していると思う
>>808 みたいな芸当が出来るのかどうかってことを質問しているんだと思う。
ってわけで出来る。
つーか、RS232Cにもフロー制御の概念はあるしな。
811 :
デフォルトの名無しさん :2006/07/04(火) 23:44:21
制御カウンタの用途について知りたいです
「制御カウンタ」ってなに?
813 :
デフォルトの名無しさん :2006/07/05(水) 12:42:17
>>807 何がしたいのか良くわからんぞ。
tcpdumpみたいなことをしたければ、外にプロトコルアナライザーをつければ、どんなデータをやり取りしているかわかるぞ。
PPPとか使っている場合は見ただけではわからないがEtherReal動かせばPPPを表示してくれるぞ。
814 :
デフォルトの名無しさん :2006/07/05(水) 13:00:38
Win98まではWintipってフリーソフトをPCで起動しておけばRS-232Cをモニタしてくれて便利だったけど。 XPでもソフトオンリーで起動するだけでCOMをモニタしてくれるフリーソフトってある?
htermじゃだめ? あ、受信しかモニタできないか。自分がI/Oしないでcomをモニタしたいのね。 そういうのがあれば私も知りたい。 入力から変換するのにscanf系は良くないって話を以前ここで見たのですが、なぜですか? 私は頭〜尻尾までメモリに溜めて、sscanfで変換、てのはよくやります。
>>815 想定外のデータが入力されている可能性があるから。
818 :
デフォルトの名無しさん :2006/07/05(水) 21:17:53
すいません。くだらない質問ですが具具ってもよくわからなかったので教えてください。 制御系とかシステム系とか汎用系とかの言葉の意味がわかりません。 お願いします。
制御系≒組み込み系・・・いわゆるマイコン=マイクロプロセッサーに専用の制御をやらせる。 専用とは、通信機(PHS、ケータイ)、洗濯機、炊飯器、エレベーターなど、さまざまな機器の制御。 システム系・汎用系・・・いわゆるメインフレームと呼ばれる「汎用機」で実行するアプリケーション。 JRやヒコーキの予約システム、給与計算など事務系の業務、スパコンでやるほどでもない小型の 科学技術計算など。 ・・・だいたいこんな認識でいいかとおもう
制御系はcontrol systemの意味もあるだろ 本当に制御系というか制御システムというか制御理論というか 制御対象と制御器があって、数学モデル化した要素を繋いでブロック図などで扱うヤシ システム系と汎用系も違う意味があるかも知らんけど漏れは知らね 詳しくは制御工学の本で システム工学とは違うこともあるから気をつけれ
824 :
820 :2006/07/06(木) 12:07:46
>>822 ,823
ありがとうございました。参考になります。
825 :
815 :2006/07/06(木) 15:55:52
>>817 ありがと。そしたら、特定のアプリで使う通信文で「このフィールドはこの形式」とか
決まってる場合には使っても問題なさそうですね。変換できたかどうかの結果も返るし。
827 :
815 :2006/07/07(金) 05:08:18
scanfのエラーって、例えば数値のはずのフィールドを変換して、変換できれば変換済み個数が 1増えて返されるし、変換できなければ0のままですよね。あと、CR,LFは空白文字の仲間だから 「行を越えて探しにゆく」可能性かな。こっちは行末の後にnullキャラ付加してから変換かけてる。 このぐらいのとこ押さえとけばいいと思うのですが、関数仕様にないような動作するとかが あるのですか?
大丈夫、sscanf()を使いこなせない香具師が暴れているだけだから。 戻り値をちゃんと見ることと、フォーマットの空白の意味と、%[...]と%nが使えれば問題ないだろ。
829 :
デフォルトの名無しさん :2006/07/07(金) 08:38:36
>>815 printf,scanf系はリエントラントで無い場合があるから
リアルタイムO/Sを使う場合や割り込みハンドラの中で使う場合は要注意
>>827-828 違う、通信文なんだろ?
エラーデータが入ってこないことを低位層で保障されてるなら
831 :
815 :2006/07/08(土) 05:42:44
>printf,scanf系はリエントラントで無い場合があるから あ、それは理解してます。非タスクコンテキストでは使いません。実数変換もしません。 K&Rなんかだとあんまり親切に書かれてなくてよく分からない点です: n=sscanf(buf,"ABC%d,%d,%x",&dec1,&dec2,&hex1); とか、複数の変換を書いたとき、 頭のABCや間のコンマは、「その文字を探して次の位置から」変換してくれるのですか? (つまり%何とかじゃないstringはstrstr()でそれを探してその次の位置から%変換になるか?) それが確認できなくて、1項目ずつ探して変換してたりします。
>>831 たまたま入力でその文字が存在していたら読み飛ばす。
%d,%d というフォーマットに対して 3,5 はそれぞれ3と5が変換されるが、
3a,5 では3の変換だけで終了してしまう。
よくわからんがフォーマット文字列を左から普通にスキャンじゃだめなん? va_listつかった事ない?
あーそうそう、読み飛ばしには%*[A-Z]などを使うと便利かも知れず。
>>831 K&Rはリファレンスじゃないので細かい点を期待してもだめでしょ。
リファレンス本とか、コンパイラ付属のマニュアルとか、manとか、
規格票とかを読んでね。
ところでscanfでなくてsscanfを嫌う理由ってあったっけ?
837 :
831 :2006/07/08(土) 12:39:18
>>835 標準入力じゃないuartから読み込んだ行に対して変換かけるからです。
データ形式が決まってるなら普通にパースすればいいのに
LQ法、ILQ法について、100字以上200字以内で簡潔に述べよ。 いや、述べて下さい。 お願いします。
お前の態度が心底気に入らない
そんなお前はいらない。
そういうお前もいらない。
そして誰もいなくなったとさ
強者が弱者を助けるのは義務なのか。 老人と新人エンジニアについて論ぜよ。(20点)
団塊の 世代の定年 近い今 チャンス到来 だぜニートどもよ? 短歌にしてみました。20点はいただきだな。
団塊のジジイどもよりも、腐れニートの方がまだ能力的に上だと思うんだけど。
ニートは潜在的脅威者の排除から生じたと思う
ニートはただのフリーターではなく働く意思の無い者だろ。 「働く意思がある」というのは社会人にとって最も重要な能力だ。 その能力の欠如している者が、「まだ能力的に上」とは思えない。
働く必要がないから働かないだけでは?
能力云々より基本的なコミュニケーションスキルがない人間は 雇ってもらえませんが何か
>>849 必ずしも働く必要は無いかもね。
能力を辞書で引くと
のうりょく 【能力】
(1)物事を成し遂げることのできる力。
「―の限界を超える」「月産一〇〇〇台の―をもつ工場」
(2)法律上、ある事柄に関して当事者として要求される資格。
であって、
>>846 の文意からするとこの場合の能力とは(1)だろうから、
何かを成し遂げれば少なくともそのための能力はあったということ。
何も成し遂げないで「俺は能力がある」なんて言ってる奴は、そんな
もの能力でもなんでもない。
ニートでも難しいテレビゲームをクリアしたなら、「そのゲームをクリア
する能力があった」ってことだろう。このスレで話題にすべき能力があ
るかどうかは分からんが。
ここは一体なんのスレなんだよwww
ニート議論スレ。
854 :
radio star :2006/07/12(水) 18:08:57
状態フィードバック制御と オブザーバの併合システムを考える場合、 両方に極あるんだがこれはどう考えればいいわけ?
オブザーバの分離定理
856 :
あばよ :2006/07/13(木) 07:35:31
状態フィードバック制御則から そのtおきの状態方程式なんてどうやってだすの? googleもyahooも全然ひっかからねえ
残酷な天使のニート。 少年よニートになれ。
テクニカルエンジニア(エンデベ)ってどうなん? ETECとか出てるけど
859 :
デフォルトの名無しさん :2006/07/15(土) 21:51:39
一般でよく売ってるRS232Cで繋ぐ電光掲示板って漢字フォントとか入っているんだね。 TERATERMでキーボードからそのまんまASAHIって打ったら、まんまASAHIと表示された。 俺てっきりドットレベルの指定からやらなきゃいけないと思ってた。
ああん それ漢字ちゃう
>>858 たったそれだけで、一体どんなレスを期待してるんだ?
>>861 漢字フォントじゃないけど、最低限アスキーくらいは入ってますよということじゃない?
文字コードはなんだろうね。Windowsで使う人のほうが多いからSJISかね?
SJISの方がシフトIN、シフトOUTしなくていいから、楽。 ならUNICODE使えって? まあ、それはねえw
864 :
デフォルトの名無しさん :2006/07/16(日) 12:50:26
TERATERMでCOM1に繋いでASAHIってタイプするだけで画面にASAHIって表示するなら、 漢字コードさえわかっていればどうやったら出力できるんだろう。 バイナリエディタで漢字コードを書き並べてそのファイルを「送信」すればいいのかな。
teraterm なら SJIS/JIS/EUCで文字コードは切り替えられるから試すのに苦労はないでしょ
866 :
デフォルトの名無しさん :2006/07/17(月) 21:39:14
初心者向けにラダープログラミングを解析してるサイトご存じないですか?
>>858 所詮資格です
取ったからって突然何でもできるようになる訳ではありません
>>867 いえ、検定です。資格ですらありません。
869 :
age :2006/07/25(火) 23:52:38
interface 8gatsu go
ここはPLCの話もOKですかね?
言語とか環境の縛りはないから別にいいんじゃない? 漏れは相手できないけどさ
PLCは中規模以上はOMRON全盛な雰囲気の会社にいる 次に多いのは三菱PLCとか小規模だとキーエンスかな 他はどうなのかな?横河とか触ったこと無いんだけど
うちは三菱全盛みたいだが直接扱ってないのでよくわからん
うちは三菱か横河、サーボメインのシステムなら安川 昔は三菱一色だったらしいがQシリーズの初期版が腐ってたので横河も使うようになったらしい。 俺は三菱と横河なら分かるがどっちかっつーと横河の方がいいかね ま、構造化ラダーなる似非構造化言語はどうかと思うんだが
875 :
sage :2006/08/01(火) 03:40:18
H2制御とはどのようなものなのですか? 論文発表まで2週間しかし知識ゼロ。 皆さん助けて下さい。
とりあえず発表会で教授に怒られてから出直して来い
論文を発表するんだろ? 論文が出来なきゃ発表できないんだから 発表会に出る資格無いから 発表会で怒られる ということは ありえないんじゃないか?
論文発表するには論文を投稿しなければならないわけだが、1ヶ月前には投稿してないと発表もできない。
しかし、
>>875 は2週間前なのに投稿もできてない(何も分かってない)。
つまり
>>875 の論文発表といういわゆる論文発表ではなく内輪の発表会なんだよ。
879 :
デフォルトの名無しさん :2006/08/04(金) 05:01:30
875です。 就職が決まらず院で留年し来春 就職活動しようと考えてましたが、留年が決定 したところに内定をもらいました。 後取得してない単位は修士論文の分だけだったので 半留でいいとのことでした。 例外的な発表のため発表直前に論文を提出すれば いいみたいで・・ 論文の原稿は他の大学との共同研究という名目 のため院に入った時点で渡されてたんですが・・ 通信系なんですがなぜかH2制御に関する論文 で理解するのに苦労してます。 助けてください。
半留といわずに全留しようぜ
っていうか、どうせネタだと思うけどこのスレで聞いたって無理だよ。 ここは制御系のスレであって制御理論のスレじゃないんでw いわゆる制御系の人の大半は、俺もそうだけど制御理論なんてぜ〜んぜん知りません。
882 :
デフォルトの名無しさん :2006/08/04(金) 20:11:28
大半が知らないというのは関係無いですよ わかる人が答えればいいだけなのに なぜ黙ってられないんですか。
安定性を知らないと突然あばれて怪我するぞ。
884 :
デフォルトの名無しさん :2006/08/05(土) 10:28:42
875です。 ネタであってくれたらどれだけ楽か・・ どなたかH2制御わかる方いませんか?
ム板じゃそんなネタに構う奴いないからマ板に行け マ板でも駄目だったらVIPのクオリティに期待するしかない
スマン。 本は何冊か買ったが理解出来んかった。--> H∞以後 まあ俺様方式でも、ちゃんと安定して動いてるから、まあいいや。
>>884 機械工学とかの板にいったほうがいいよとマジレスしてみる。
888 :
デフォルトの名無しさん :2006/08/06(日) 22:23:39
宿題はよそでやれ
890 :
デフォルトの名無しさん :2006/08/07(月) 00:44:14
わかる人が答えればいいだけなのに なぜ黙ってられないんですか。
黙っていれば馬鹿が書き込む。 馬鹿が書き込めばスレが荒れる。 スレが荒れると自分が迷惑する。 単純な理屈だろ。
いずれにしても
>>889 -みたいな流れになるから
何をしようがしまいがどうということはない
それが2ちゃんねるクオリティ
草枕の書き出しのとこみたいだ
諸行無常の響きあり だっけ?
漱石が琵琶の弾き語りでもするのか? 智に働けば角が立つ。 ってやつだろ
智ちゃんはアルバイトに向いてない って意味だっけか。 元気はあっていいんだけどね。
参考用に見せてもらったコードのコメントに、/* 10mS待てやゴラァ */ ・・・orz お前、2ch語でコメントを書くなよ
ゴラァなんて2ch語でもなんでもねぇよ
ゴラァじゃないとね。
いやこのごろ生活板なんかゴラァでスレタイがついてたりするんですよ。昔ならゴルァだったのに
男性が使うとゴルァで、女性が使うとゴラァなのだそうだ。 最近知った。
「漏れ」って女性語?
904 :
デフォルトの名無しさん :2006/08/19(土) 14:42:15
失礼します。RTOSの勉強中をしています。 お手上げ状態になったので、手がかりだけでも掴めればと・・。 NORTi/SH2を使ってDMA転送を行い、DMA転送完了割り込みをさせたいです。 DMA転送は正常に行われています。 割り込みサービスルーチンを作成して、その設定もして、 DMA転送完了割り込み有りにして動かすと、 割り込みサービスルーチンを呼び出しにいっている (もしくは、呼び出そうとしている)ようですが、 処理が割り込みが入った時に動いていたタスクに 待てど暮らせど戻ってきてくれません。 割り込みサービスルーチンのcreateは正常にされています。 Cのソースレベルでデバッグできるものがあれば良いのですが、 それがないのでどの段階で止まってしまっているかが サッパリわかりません。原因として考えられるのは何があるでしょうか? よろしくお願いいたします。
>>904 >割り込みサービスルーチンを呼び出しにいっている
>(もしくは、呼び出そうとしている)ようですが、
とりあえずどっちなのか調べろ
906 :
904 :2006/08/19(土) 16:28:37
>>905 レスありがとうございます。
>>割り込みサービスルーチンを呼び出しにいっている
>>(もしくは、呼び出そうとしている)ようですが、
>とりあえずどっちなのか調べろ
調べました。
割り込みサービスルーチンは呼び出せていました。
割り込みルーチンの処理をreturn文だけにしてみましたが、
同様に割り込み前のタスクに戻ってくれませんでした。
割り込みルーチン内で設定しなおさなければいけないものが
あるのでしょうか。んん〜。
Cのソースはさらせないの?
908 :
904 :2006/08/19(土) 17:54:02
>>907 ソースを一部upしてみました。
(ちなみにInterface誌8月号のSH2基板で学ぶ〜のNORTiの
サンプルに少し手を加えたものです。)
割り込みが起きるタスクはDmaTask、
割り込みサービスルーチンはint_dei0です。
http://www.vipper.org/ FileNo:316283
Pass:904
int_dei0でdmaの割り込みを禁止してないから、dmaの割り込みがかかりっぱなしとか?
910 :
904 :2006/08/19(土) 18:42:29
>>909 割り込みがかかりっぱなしかぁ、、、
すぐに修正できるような腕じゃないんで、
そのあたりをもう少し勉強してやってみます。
Cも組み込み系もRTOSも初心者なので、四苦八苦です〜@@
911 :
904 :2006/08/19(土) 18:53:25
>>909 あ、お礼言うの忘れてました。ありがとうございました。
int_dei0でDMAC_CHCR0のIE=1(割り込みあり)をクリアするだけだと思うけど。
913 :
904 :2006/08/19(土) 21:29:56
>>912 ぅぉおお、動きました〜><
ここで2日間くらい悩んでました。
出来るだけ早くお世話にならなくて良いように精進します!
本当にありがとうございました!
914 :
904 :2006/08/19(土) 21:33:59
ずっとJAVAやってきた自分。レジスタの世界は奥が深いやぁ。
>>914 S/W的なフラグのクリアと何が違うというのか(ry
ですね。904です。 最初に割り込み禁止にすればいいと指摘いただいた時は 割り込みマスクか?とかもう一度SH2とNORTiのdoc読んでました。 2回目の指摘で目から鱗。まだまだ勉強が足りません。 JavaはAPIの中で泳いでるイメージで、 特にWeb系しかやってなかったってこともあるかもしれないけど、 01やら信号やらクロックなんてものは一切意識したことなかったんですよ。 今更ながらですが感銘を受けながら、再勉強してます。 では、このへんでROMります。
日立のチップはたいていその思想で作られてるよ。DMAだけじゃなく、タイマもuartも。 「割り込んだら割り込み要因をまずクリヤする」。これから日立の石ずっと触るのなら 割り込み処理の頭にはとりあえず割り込み要因クリヤ。これもバイトの0を書き込むのじゃ なく、レジスタを読んでそのbitだけクリヤして書き込むように。sfr_clr(PORTx,0x80);とかね。
処で喪前様方、TSEEはどうですよ。
質問です。 インラインアセンブラを使用して汎用レジスタの値を判定したいのですが、 どうしたらいいのでしょうか? 環境はHEW、CPUはM8S2378です。お願いします。
>>919 アセンブラで組んだライブラリを呼ぶんじゃダメなの?
921 :
919 :2006/08/28(月) 16:38:44
920>> Cで使えるならOKです。
>>919 このスレに偶然その環境に詳しい香具師がいれば別だけど、恐らく自分で調べる以外にないと思うよ。
インラインアセンブラの記述方法は実装系に依存するし。
#処で、汎用レジスタの値は判定したいときに保障されているのだろうか。例えばx86で言うeaxは殆ど保障されないわけだが。
汎用レジスタの値を判定とは?何をやりたいの?
924 :
919 :2006/08/28(月) 18:16:13
922>> >#処で、汎用レジスタの値は判定したいときに保障されているのだろうか。例えばx86で言うeaxは殆ど保障されないわけだが。 ○ネサスさんのマニュアルに書いてある通りに作成しているのですが、もしそうだとしたら最悪です。 >このスレに偶然その環境に詳しい香具師がいれば別だけど、恐らく自分で調べる以外にないと思うよ。 何日もかけて調べているのですが、限界を感じてきています。
汎用レジスタの値を読み出すなら簡単やん・・
926 :
919 :2006/08/28(月) 23:06:03
925>> 読み出した値をプログラム上で判定したいのですが、簡単にできるのでしょうか?
判定って何だ? 定数と比較するってこと?
928 :
919 :2006/08/28(月) 23:39:42
927>>そうです。具体的に言うと、 汎用レジスタの下位1バイトが0以外のときエラー処理を返したいのです。 環境上、アセンブラ内でしかいじれないので、C上に引っ張り出す方法を知りたいのです
>>928 だから>920でいいべさ。
まさか、アセンブラも用意されていないわけじゃあるまい。
#もしそうならそうで、Cで単純な関数を作ってコンパイルし、バイナリパッチ当てるとかw
Cの関数の戻り値をアセンブラで書くとどうなるのか分らない無能なんだからほっておけ!
>>928 >環境上、アセンブラ内でしかいじれないので、
なにがアセンブラ内でしかいじれない?
アセンブラ内で判定して、その結果をCでみたい?
汎用IOレジスタと汎用レジスタの区別がついてない悪寒
>>919 M8S2378 ってのを知らない。 旧三菱系なのかな?
H8S2378なら旧日立の100pinCPUなんだけどさ
【初心者歓迎】C/C++室 Ver.30【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1156145524/ 251 名前:デフォルトの名無しさん 投稿日:2006/08/28(月) 23:26:30
質問です。
汎用レジスタ(ER0)の値をプログラムで判定したいのですが、
アセンブラ内でしかER0をいじれません。
C上で動かすにはどうしたらいいのでしょうか?
環境はHEW、CPUはH8Sです。お願いします。
これか.....このレベルだと説明する方も疲れるというか説明はムリだろな。
まじれすすると、 ER0を返すアセンブラ関数は _getER0: RTS こいつは int getER0(void){} と書いたのと等価(HEWは return 文が無くてもエラーにはしない筈) もっとも、もっと手前で大きな勘違いがあるに違いない ・・・・・肝心の品番さえ間違うようだと・・・・こんな奴とだけはって奴だな
#pragma inline_asm を使えばいい。 コンパイルオプション code=asmcodeを忘れないこと。 コンパイラのユーザーズマニュアル書いてますよ。 マジレスかこわるかった?
でも、それ使うと、debug情報とか何かの機能に制限が加わるんだったような・・・
なにか問題でも?
sh7709を、内部clk132.7MHzで使っています。何ステート毎にポート反転というコードを 走らせてみると、そのステート数より3割ほど多く時間がかかります。OSなし、割り込みなし の状態で、です。コードはSDRAMに置いて実行させてます。どんなことが考えられますか?
ステート数はソフトエミュレータで求めたんでしょ? それと違うって事は、ポートの出力にディレイがかかってるのでは?
942 :
デフォルトの名無しさん :2006/09/01(金) 08:26:53
>>940 ステート数ってキャッシュのヒット率やパイプラインの状態にも
影響を受けるんじゃない。
だから計算で出した値は、大まかな目安にしか
ならないんじゃないかな。
SDRAM?
SDRAMだと、どういう設定で動かしているかも問題になるかな? 命令をフェッチときに無駄が出るカモね。 あと、キャッシュをどういう設定で使うかも絡んでくるけど。 キャッシュのなかにコードを放り込んで実行してみれば、計算通りに なるんじゃない?
>>940 3クロックで動いてるはずのところへ一回WAITが入って4クロックで動いてるとかいうおちではないか
946 :
940 :2006/09/02(土) 07:36:48
ハード屋さんに聞くと、SDRAMはノーウェイトだそうです。あとレイテンシというのもあるらしい。 遅い件はその後の情報で、コードはキャッシュ可の空間にあったが、スタックがキャッシュ不可 空間にあったことが判ったそうです。それを正したら期待通りになりました。お騒がせすいません。 この際だがら、レイテンシというものについて教えてくださいませ。
947 :
940 :2006/09/02(土) 07:37:36
連投すいません。SRAMとDRAMは知ってるのですが、SDRAMってどんなのでしょうか。
レイテンシというのはその演算が実際に完了するまでのサイクル数の事を指す場合が多い。 たとえばメモリからデータをレジスタに読む命令は、 メモリが待たせるだけのレイテンシがあるし 掛算命令は結果が使えるまでレイテンシがある これを単なる遅延にしないためには、この期間に他の命令を埋めるように命令の順番を工夫してやる たとえば、命令は2ワード単位に読まれるので、命令とデータの読み込みは 巧く詰め込んでやらななければいけない もっとも、それはコンパイラに任せた方が良い結果が得られる事が多い SDRAMはDRAMの一種で、詳しい事はgoogleさんに聞きなさい
949 :
940 :2006/09/02(土) 17:18:52
SDRAMがシンクロナイズドスイミングなDRAMのようだということはわかりました。 そのクロックも100Mとか133Mとか、SHの内部CLKと近い値が設定できるらしいので、 命令フェッチのタイミングが同期しやすそう、と想像できます。ありがとうございます。
>>947 連続データを参照する頻度が大きいとき有効
951 :
940 :2006/09/03(日) 02:53:41
>レイテンシ コンパイラの吐くコード見ると、JSR命令の次が引数をpushする命令になってたり
メモリを参照するMOV命令の次はレジスタ間演算になってたりしますね。
こういうのが
>>948 さんの説明みたいな例ですね。
ヘタレプログラマなんですが、質問させてください。 SH7145Fで、SCI0,1、3を使いたいんですが、0と1は普通に使えるんですが、 3だけ初期化ルーチン抜けたあとに、エラー割り込みがかかりっぱなしに なってしまって使えません。フレーミングエラーが起きているようです。 エラーフラグをクリアしても、すぐに同じエラーが起きます。 信号レベルも他のポートと同じで、常時Hレベルです。 まだ何も接続していない状態で発生する現象です。 どなたか解決策を知ってる方おられましたら教えてください。
PECRL?
>>952 初期化したあと、TX/RX機能をイネーブルにするまでに、使うビットレートでの1bit分
の時間をおく、っていうルールは守っていますか?(ex:4800bpsなら208μぐらい)
(守らない時、3のような動作をしたという体験は私はしていませんが。)
>>953 さん
やっちまった感じです。もろにそこでしたorz
PFC.PACRL2.BIT.PA0MD = 1;// PA0をRXD0に設定
PFC.PACRL2.BIT.PA3MD = 1;// PA3をRXD1に設定
PFC.PECRL2.BIT.PE4MD = 1;// PA4をRXD3に設定
↑こんな感じでSCI0,1,3を初期化してたんですが、
3だけは1じゃなくて2なんですね。うっかりマニュアル読み落としてました・・・
PFC.PECRL2.BIT.PE4MD = 2;// PA4をRXD3に設定
に訂正。おかげさまで問題なく動きました。
>>954 さん
私もそこだと思い込んでしまって、ウェイト時間を延ばしたり、最適化で
ウェイトがなくなっているのか?とか考えて(volatile)にしてみたり、
最適化無し指定にしたり、色々やってみましたが
>>953 さんの指摘で直りました。
お二方とも、アドバイス有難う御座いました。
コメントが間違ってるような? PA4->PE4?
957 :
955 :2006/09/12(火) 14:02:52
そ、、そこはご愛嬌で・・・・ コピペコピペしてるから単純なミスの罠におちいり易いんでしょうなorz
スレ違いかもしらんが、低レベル制御屋の俺が困ってるんで教えてください。 機能の一部でAIボードで4-20mAでアナログ値を入力するんだが、仕様書に アナログ値検出に4mAのデットバンド処理を含めて下さい。 デットバンド範囲は2%F.S固定で構いません。 アナログ値表示に使用するデータは全てデットバンド処理後のデータを使用してください。 デッドバンドとかF.Sとかって何れすか
デッドバンド不感帯 F.S フルスケール デッドバンド処理って具体的になにをやるのかは?
4-20で4mAの不感帯って大きいな 2%なんだろうな つまり一旦採用した値±2%の範囲の差では更新しないという処理なんだろう
デッドバンド=遊び でよい?
962 :
デフォルトの名無しさん :2006/09/13(水) 14:16:56
他から誘導されてきました……。 ---- ごめんなさい、すいません、一つ教えてください。 現在C言語のソースが手元にあるのですが、コンパイルの方法がわかりません。 10年以上前の機械のファームにバグがあって、ちょっとした事なのでソースを 直すのは簡単なんですが、ターゲットがV50なんです……。 昔はどうやらBolandCとTurboAssemblerでやってたらしいんですが、環境とかも 今は無く、途方に暮れている状態です。 今までのほほんとWindowsプログラムしかしてこなかったので、クロスコンパイル 環境なんて触った事もないですし、開発した人はしんじゃいましたし、どうすれば いいのかという感じです。 お分かりになられる方が居ましたら教えてください……。
ROM化するにはロケータが必要ですね。 Link & LocateやParadigm LOCATEなんかが有名だったけど今でもあるのかなぁ
ちょっとしたことならバイナリーエディターでゴニョゴニョしちゃうとか
966 :
デフォルトの名無しさん :2006/09/13(水) 16:29:22
開けないとは? Borland C++ 2005 Suiteとして望みのものは売ってるみたいだから、 買えるかどうかBorlandに聞いてみたら。 ソースファイルだけあってもどうにもならんと思うが............
LSIC86はないの?それならDOS窓で実行できる。
970 :
964 :2006/09/14(木) 08:50:30
>>966 ご想像通り、リンカの作ったリロケータブルファイルをターゲット環境に合わせて絶対アドレスで
配置する物です。リンカ、ロケータでググれば雰囲気が掴めるでしょう
しかしながら本来DOSでの動作を前提として作成されたプログラムを単にアドレス変換して
配置しただけではダメです。
スタートアップコードやらライブラリ関数やら、ユーザが手を加える必要があります。
なのでDOS用のCに対応したロケータはそのあたりの処理をある程度肩代わりしてくれる
機能が付いてたりします。
でも多分今は買えないでしょうね。
>>965 さんの言うようにパッチ当てる方が現実的。
うめ
うめって、次スレ建ててからにしろよ! 950レス越えてるから1000いかなくても勝手に落ちるんだからさ
974
この速さなら痔スレは980あたりでいい?
駆動系なら俺に聞いてもいいぜ
パソコンの使用電力をどのくらいに見積もったらいいか相談に乗ってくれませんか? celeron 2.8G HDD80G RAM512M 去年の12月頃買って24時間消さないで使ってます。 displayは15インチTFTで32W。本体の定格は115V/3.0Aと書かれているので300Wぐらいと 思われますが、常時300Wじゃないですよね?平均どの位なのかが判らなくて・・・
>>976 俺の HDS722525VLAT80 の駆動系がもうすぐヘタリそうなんだけど、
モーターだけ交換とかできねーか?
>>977 電気のメーターは家についてるんだろ?一日かけて実測すれば?