- 1 名前:デフォルトの名無しさん [2005/09/06(火) 17:13:46 ]
- まったり逝きましょう。
ハード寄りの話も大歓迎です。 道具話も楽しくやれるならやってくらさい。 この世界は処理系依存はあたりまえだから、処理系明記するのを忘れないでね! 過去ログ 制御系なら俺に聞いてもいいぜ(7) pc8.2ch.net/test/read.cgi/tech/1109102528/ 制御系なら俺に聞いてもいいぜ(6) fun.kz/test/read.cgi/tech/1099574832/ (新タイプミラー) 制御系なら俺に聞いてもいいぜ(5) fun.kz/test/read.cgi/tech/1079102543/ (新タイプミラー) 制御系なら俺に聞いてもいいぞ(4) pc5.2ch.net/test/read.cgi/tech/1068869894/ (行方不明) 制御系なら俺に聞いてもいいぞ(3) pc2.2ch.net/tech/kako/1059/10594/1059488975.html 制御系なら俺に聞いてもいいぞ(2) pc2.2ch.net/tech/kako/1038/10380/1038094914.html 制御系なら、俺に聞け! pc3.2ch.net/tech/kako/1002/10021/1002176627.html 関連過去ログ ●●●くみこの組み込み相談室●●● pc3.2ch.net/tech/kako/988/988084737.html
- 554 名前:552 mailto:sage [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バイトのデータを保持できるのではないか、と思ったからです。 考え方めちゃくちゃですかね?
- 555 名前:デフォルトの名無しさん mailto:sage [2006/03/17(金) 18:29:58 ]
- >>554
どっちになるかはプロセッサによる。 DSPのようにワード単位にアドレスが割られるものと 汎用CPUのように、アドレスは1byte単位でバイトアクセスフラグが付くタイプがある
- 556 名前:デフォルトの名無しさん [2006/03/18(土) 21:14:15 BE:164012235- ]
- すみません。三菱のシーケンサーでフレーミングエラーって出ます。
フレーミングエラーって何のことですか? どうすれば先に進めますか?教えてください。
- 557 名前:http://www.vector.co.jp/soft/win95/util/se072729.html mailto:http://msdn2.microsoft.com/ja-jp/library/h2k70f3s.aspx [2006/03/18(土) 21:39:25 ]
- TextSS のWindowsXP(Professional)64bit化おながいします
もしくは64bitにネイティブ対応したテキスト置換ソフトありますか? そういや64bitにネイティブ対応している2chブラウザてありましたっけ?
- 558 名前:デフォルトの名無しさん mailto:sage [2006/03/18(土) 21:41:57 ]
- >>556
そんなの業者に聞いてくれよ。 RS232CならボーレートかSTOPが合ってないんじゃないの?
- 559 名前:デフォルトの名無しさん [2006/03/18(土) 22:10:25 ]
- >>558
それが休みなんでつ。 このままでは帰れません。 どうしたらいいですか?
- 560 名前:デフォルトの名無しさん mailto:sage [2006/03/18(土) 22:17:12 ]
- >フレーミングエラーとは調歩同期(ASYNC)において、ストップビットのあるべき位置に
>ストップビットがなかった(論理0だった)場合に表示されます。フレーミングエラーが >頻繁に表示される場合は、データ長、パリティビットの有無などの設定が間違っている可能性があります。 ボーレート、データ長、パリティ、ストップビット長の設定を確認すること
- 561 名前:デフォルトの名無しさん mailto:sage [2006/03/19(日) 13:25:14 ]
- >>558
シーケンサの型名も書いてない時点で「ネタ / どあほ」のいずれかだろ。 無視しろ。
- 562 名前:デフォルトの名無しさん mailto:sage [2006/03/19(日) 13:50:32 ]
- 俺的には>>561のように何も生産的な発言をしない(まあむしろできないと思われるが)
くせに口調だけ尊大な奴こそ無視したいけどなw だいいち、(まあググればわかるようなことではあるが)>>556の質問内容からすれば 具体的な機種名が必要とはちょっと思えないんだが。
- 563 名前:オレモナ〜 mailto:sage [2006/03/19(日) 14:08:28 ]
- > 無視したいけどなw
無視しとけばいいじゃん。 できないのは、厨房だからですか?
- 564 名前:552 mailto:sage [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だと思っていた) 自分の理解が正しかったと安心できました(^^) ありがとうございます。
- 565 名前:デフォルトの名無しさん mailto:sage [2006/03/19(日) 19:04:13 ]
- >>564
なんかこう、実メモリアドレス空間とバス幅とメモリ配置について思いっきり勘違いしている悪寒。 1ビット幅のメモリを使う場合、通常バス幅のメモリを並べる。 8ビット幅のメモリを使う場合、通常バス幅の1/8のメモリを並べる。 以下同様に。 16ビット幅のメモリを使う場合と32ビット幅のメモリを使う場合も同様なので、 仮に0番地のメモリにアクセスしたときにはメモリの最初のワードにアクセスする。 しかし、2番地のメモリにアクセスしたときには前者は2番目のワード、後者は最初のワードにアクセスする点が異なる。 ちなみに、1ビット幅のメモリを使い、0番地にアクセスすると8個のメモリの最初のワードにアクセスすることになるわけだ。 #だからこそDRAMカードはメモリチップがずらっと並ぶわけで。
- 566 名前:オレモナ〜 mailto:sage [2006/03/19(日) 23:01:33 ]
- >>565
> しかし、2番地のメモリにアクセスしたときには前者は > 2番目のワード、後者は最初のワードにアクセスする点 > が異なる。 はぁ? 32bitメモリとか書いてるから、プロセサも最低 32bit 幅だと思うが、2番地のアクセスだと前者 (=16bit メモ リ) でも、(0番地アクセスとは違うメモリチップだけど) 最初のワードがアクセスされると思うけど。 32bit ⇒ 16bit のバスサイジングでもやってるのか?
- 567 名前:デフォルトの名無しさん mailto:sage [2006/03/19(日) 23:18:36 ]
- >>566
その通り。別のチップの最初のワードだね。
- 568 名前:556と559 [2006/03/19(日) 23:31:38 BE:699782988- ]
- >>556
>>559 です。 すみませんでした。昨日は急いでいて説明が不足してましたが、 実は私の弟が制御の仕事していて現場にネットがないので フレーミングエラーって何か調べて、と珍しく電話がありました. 自分なりにあれこれ検索を続け、ヒットした内容をそれぞれ伝えましたが、 それが役立つ情報かどうか、読んでいる私にはさっぱりわかりませんでした。 検索中、ヒットしたここに辿り着き、皆様に頼らせていただきました. 時々、2ちゃんねらーでしたが、こんなスレがあることもはじめて知りました。 こんな難しいことを話し合っている皆様すごいです。 今、弟に昨日の確認をしたところ、 一応エラーの表示はでるものの、動作しているそうです。 いつも深夜まで残業漬けの弟を、一人暮らしの部屋だけど 早く帰宅させたかった、制御素人の姉でした。 お騒がせし、そして大変お世話になりまして、皆様ありがとうございました。^o^
- 569 名前:デフォルトの名無しさん mailto:sage [2006/03/19(日) 23:35:54 ]
- まったく解決になってないわけだが。
- 570 名前:デフォルトの名無しさん mailto:sage [2006/03/19(日) 23:54:41 ]
- >>562
> 何も生産的な発言をしない まさに、>>562 の発言がそうなわけだが w
- 571 名前:デフォルトの名無しさん [2006/03/20(月) 00:17:52 ]
- ハードはつくらないの?
- 572 名前:552 mailto:sage [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) どんなもんでしょうか?
- 573 名前:デフォルトの名無しさん mailto:sage [2006/03/20(月) 01:15:28 ]
- どうみてもめちゃくちゃです。
本当に(ry
- 574 名前:552 mailto:sage [2006/03/20(月) 01:26:07 ]
- そうですか・・・まだぜんぜんだめですか・・・
どの辺がとくにだめでしょう・・・? (`・ω・´)
- 575 名前:デフォルトの名無しさん mailto:sage [2006/03/20(月) 01:46:19 ]
- いや、こういっちゃ何だが偉そうに回答している人間の方もよく分かってないと思われるw
もっとシンプルに考えればいいんだよ。 プログラマは普通ハードウェアがどんな実装をされているか、まで考える必要はない。 そのための抽象化でしょ。 1つのメモリアドレスにには1バイトのデータが割り当てられる。 データバスが何ビットだろうと、バイト単位のアクセスがRead-Write-Modifyで 実現されていようが、バスの8本だけを使う方法で実現されていようが、そんなことは無関係に。 ただそれだけのことでしょ。
- 576 名前:デフォルトの名無しさん mailto:sage [2006/03/20(月) 02:01:35 ]
- >>575
よくわかってないだろお前
- 577 名前:デフォルトの名無しさん mailto:sage [2006/03/20(月) 07:34:41 ]
- >>572
SRAMにはバイト単位のアクセス許可(16ビットの上位8bitだけ下位8bitだけを有効にする) が付いてる事が多いから、そうだとすると >1番地からプロセッサが16bitリードすると、最初の下位ハーフワードと2番目の上位ハーフワードが読み込まれる。 >(プロセッサが奇数番地からのワード読み込みをサポートしていたならばの話) は可能だけど、 そうじゃない場合には無理だね。 > メモリのスペック:2Mワードx16bit (容量4Mbit) は 容量が32Mbitか 4Mbyteかの間違いか 256Kワードx16bit (容量4Mbit) >この場合、プロセッサが使用可能な物理メモリ空間の大きさは512k(4M / 8) を成立させるには 256Kワードx16bit (容量4Mbit) が正解なのだろう
- 578 名前:デフォルトの名無しさん mailto:sage [2006/03/20(月) 08:21:08 ]
- マンドクセから、チップとコントローラの仕様によって変わってくる、ってことにしようぜ
- 579 名前:552 mailto:sage [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) が正解なのだろう そうです。間違えてました。すみません。(めちゃくちゃってこのことか・・・) いやー、おかげさまですっきりしました。 何度もありがとうございました(^^)
- 580 名前:デフォルトの名無しさん mailto:sage [2006/03/20(月) 21:19:28 ]
- アラインされてないメモリアクセスを、2回に分割するのはCPUだろ。
アクセスするアドレスがアラインされているかいないかをコンパイラ・ アセンブラ・リンカが知ることの出来ないケースがあるから。 CPUがサポートしてなかったら、バスエラー。
- 581 名前:デフォルトの名無しさん mailto:sage [2006/03/20(月) 21:30:36 ]
- >>580
> アラインされてないメモリアクセスを、2回に分割するのはCPUだろ。 そうなの? > アクセスするアドレスがアラインされているかいないかをコンパイラ・ > アセンブラ・リンカが知ることの出来ないケースがあるから。 具体的にはどんなケースでしょ?
- 582 名前:デフォルトの名無しさん mailto:sage [2006/03/20(月) 21:43:52 ]
- a.c: int *foo(){ return (int*)0x12345; }
b.c: int bar(){ return *foo(); }
- 583 名前:デフォルトの名無しさん mailto:sage [2006/03/20(月) 21:44:29 ]
- x86系のCPUは奇数番地からのワードread/writeを2つのバイトアクセスにCPUが別けてくれる
他の多くのCPUは奇数番地からのワードアクセスでは例外を出すだけ どうしてもそれでアクセスしたいなら自分で例外内でバイト2つに別けるとかするのだろうが そんな仕掛けをわざわざ入れてる奴はみた事がない。 コンパイラが自動的に奇数番地からのワードアクセスを バイトアクセスにしてくれるのも見た事がない。
- 584 名前:デフォルトの名無しさん mailto:sage [2006/03/20(月) 22:09:45 ]
- このスレのレベルだと、>>582 が >>581 の答えとわ
かってない奴が多そうな予感。
- 585 名前:デフォルトの名無しさん mailto:sage [2006/03/20(月) 22:10:37 ]
- >>583
OSレベルでなんとかしてくれることもある。 ttp://www.linux.or.jp/JF/JFdocs/LinuxAlpha-FAQ-1.html >不整列アクセス(Unaligned access): > 他の RISC CPU と同様に、Alpha でもメモリのアクセスに際しては 自然境界に整列している必要があります。 >例えば、メモリから 4 バイトの整数を読み込む場合には、先頭のアドレスが 4 の倍数となっている必要があります。 >同様に、8 バイトの整数を読み込む場合には、8 の倍数のアドレスから読み込む必要があります。 >もし、CPU が正常に整列していないワードをアクセスする場合には、 CPU はカーネルにトラップをかけて警告を出力します。 >そしてカーネルは、不整列アクセスをエミュレートし、何事もなかったかのようにユーザプロセスを実行します >(ただし実行速度は大幅に落ちます)。
- 586 名前:デフォルトの名無しさん mailto:sage [2006/03/25(土) 16:14:39 ]
- >>584
もっと人間を信じろ。そこまでアホばかりではない。
- 587 名前:デフォルトの名無しさん mailto:sage [2006/03/25(土) 17:04:45 ]
- >>586
だが、信じすぎてはいけない。そんなに賢い人間はそうはいない。
- 588 名前:デフォルトの名無しさん [2006/03/30(木) 01:32:26 ]
- GCCで、特定のメモリ範囲だけを使わないメモリマップを作りたいのだがどうしたらいい?
その領域に、ダミーの変数なり関数を配置しておけばOKだと思うのだけど・・・。
- 589 名前:デフォルトの名無しさん mailto:sage [2006/03/30(木) 01:45:59 ]
- >>588
つLDスクリプト
- 590 名前:デフォルトの名無しさん mailto:sage [2006/03/30(木) 04:11:11 ]
- 変数ならアクセスしなきゃいいだけだが、関数だとその番地にロードされるコードができるね。
「ロードすらしてはいけない」なら関数はだめだな。 俺もCPUのバグレポートで「この番地は使ってはいけない」所には使わない変数を配置した。
- 591 名前:デフォルトの名無しさん mailto:sage [2006/03/30(木) 22:09:01 ]
- なんで入出力って非同期転送にならないんでしょうか?ウエイト入れるくらいならキューにしちゃえばいいのに。
なんでウエイト入れなきゃなんないんですか?
- 592 名前:デフォルトの名無しさん mailto:sage [2006/03/31(金) 00:49:53 ]
- >>591
ヒント:キャパシタ
- 593 名前:デフォルトの名無しさん mailto:sage [2006/03/31(金) 06:04:12 ]
- >>591 巨視的な世界での電圧の変化って、ピュー太の内部CLKと比べると充分に遅いから、
っていう理解じゃだめ?
- 594 名前:デフォルトの名無しさん mailto:sage [2006/03/31(金) 13:31:53 ]
- >>591
相手が遅いから 制御系レベルの入出力とデバイスドライバレベルの入出力がごっちゃになってるんじゃないかという前提で、 相手が早いのか遅いのか、同期で読まなくちゃならないのかバッファリングして読んでもいいのかが決まってない世界が制御系。
- 595 名前:デフォルトの名無しさん mailto:sage [2006/03/31(金) 20:07:49 ]
- なんか凄いな。いつから皆さんエスパーになったのよ?w
俺には>>591は説明不足の舌足らずな質問にしか見えんが。 端的にいって意味不明ですけど。
- 596 名前:デフォルトの名無しさん mailto:sage [2006/03/31(金) 20:30:48 ]
- それは君の経験不足に起因していると思うよ
しなくていい経験というのもあるから、不足というと語弊があるかもしれんが
- 597 名前:デフォルトの名無しさん mailto:sage [2006/03/31(金) 20:44:34 ]
- いや凄いってのは当然皮肉なんですがw
仮に591読んで「意味が分かる」とすればそれこそ経験不足でしょ。 自分の妄想や思い込みを抑えて、謙抑的に書いてあることを書いてあるままに 読み取る訓練ができてないんだよそりゃ、悪いけどw
- 598 名前:デフォルトの名無しさん mailto:sage [2006/03/31(金) 20:58:22 ]
- ゆとり教育の想像力低下を危惧すべきだな。
- 599 名前:デフォルトの名無しさん mailto:sage [2006/03/31(金) 21:23:18 ]
- 想像と妄想とは違うよw
確かに、591の文章の意味を想像することはできる。 しかし、入出力、非同期、キュー、ウェイト、などという一般的過ぎることばだけでは、 何についてのどのレイヤーの話をしているのか全く分からない。 可能性は無限に「想像」可能、といっていい。 それを勝手に「ああそのことね…」なんて早とちりして回答するのは 妄想以外のなんでもないよ。
- 600 名前:デフォルトの名無しさん mailto:sage [2006/03/31(金) 21:36:52 ]
- 確かに君は経験豊富なようだ。
ただし煽られる側のな。
- 601 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 00:05:18 ]
- もっと書いてくれれば答えガイがある質問かもしれん。
ぱっと見では勘違い電波質問にしか見えんが。 俺の受けた電波は、タイミングチャートを見たことも無い 間違って組み込みやらされてるPGから発信されたものだといっている
- 602 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 00:05:29 ]
- まとめると、入出力は非同期転送にできるし、キューを使いたければ使えば
いいってことだな。
- 603 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 01:09:12 ]
- つーか3/32に見えるな、エイプリールフールってことかいね。
- 604 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 01:17:49 ]
- でスレ呼んでみたが・・・
確かにひどいなこれは。聞いたことある名詞を適当に並べて、 とりあえず接続詞を入れてみましたってな文章だな。
- 605 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 01:32:23 ]
- >>597
何も分かってないか只の釣りだということが読み取れるから 基礎を講釈してるんだろ
- 606 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 01:37:34 ]
- I/Oは、CPUの動作している高速なサイクルじゃ、バスにぶら下がってる外部入出力装置が認識できる電位まで立ち上がる事が出来ないんだよ。
だから十分にWAITを入れて電位がHigh(Low)に達するまで待たなきゃならんの。 たとえキューを使おうが、非同期にしようが、I/Oで保持する信号の変化を待つ為にWAIT入れなきゃ行けない。
- 607 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 01:39:55 ]
- 超高速な世界から見たら、配線コードそのものがコンデンサーみたいな物だからなぁ・・・。
- 608 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 01:46:49 ]
- >>606
答えになってないなw 仮に591の質問の意図が君の思っているとおりであるとしても。 I/Oで保持する信号の変化を待つ為にWAIT入れなきゃ行けない。 それはその通り。 「だから」CPUとI/Oの間にキューが入れば、非同期でできるのになんで、と聞いているのに。
- 609 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 01:52:57 ]
- PCIeの立ち上がりは100psだっけ?
とてもじゃないが、そんな信号の遣り取りなんか面倒見たくないね。
- 610 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 02:05:27 ]
- >>608
キューに送る信号の安定待つのにWAIT入れないといけないんだけど? つか、外部メモリーのアクセスにだってハード的にWAIT入れてるってえのに・・・
- 611 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 02:16:14 ]
- >>608
つーか、お前が本ネタか? だったら、お前が考える同期/非同期転送の違い、ウェイト、キュー FIFO、メモリ、レジスタを定義してくれ 意図が読み取れなくて非常に気持ちが悪い >>608 ソフトで面倒見られるのはH/Wより”遅い”場合だけだよ H/Wが逆さに振ってもおっつかないもんは、どうしようもない
- 612 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 09:06:26 ]
- 608ではないが(595=597=599=608か? 言っていることは分かるつもり)
同期転送の例 1) データの変化がクロックに対して決まっていること 2) 転送元クロックと受信側クロックがあっていて、乗り換えの必要がないこと 2') 転送元からクロックが送られてきて、データがそれに同期していること 3) トランザクション終了がデータ転送終了となるもの 非同期転送の例 1) データの有効期間をストローブなどで知らせるバス 2) バスクロックと受信側クロックが合ってなくて、乗り換える回路がある 3) データ転送がoutstandingに実行される 599がレイヤーが違うといっているのは3)とそれ以外かな? 電圧だのキャパシタだの言っている奴はどういう意味のつもりなんだ?同期・ 非同期とどう関係するのか全然わからん。メタステーブルにならないところで 読むのは当り前で、1-3で言うところの同期か非同期かは関係ない。
- 613 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 09:35:50 ]
- >>612
いや、俺は605=611 あんな時間は当然のように仕事してた 正確に言えばキャパシタンスと言いたかったんだろうな (厳密にはインダクタンスも絡むけど) その影響で >>3) トランザクション終了がデータ転送終了となるもの こうならないと言いたかったんだろう 理由がなんだろうが、ぶっちゃけて言っちまえば 高速な信号の保持機構を端折ったH/Wの尻拭い、ってだけだけどな
- 614 名前:デフォルトの名無しさん mailto:sage [2006/04/24(月) 06:28:01 ]
- 保守
- 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製品を教えてください。
- 616 名前:デフォルトの名無しさん mailto:sage [2006/04/24(月) 14:00:16 ]
- μITRONをH8/300hで使いたいってのは、既に動いてる資産を利用したいからって事かい?
- 617 名前:デフォルトの名無しさん mailto:sage [2006/04/24(月) 17:20:42 ]
- SuperHファミリ用リアルタイムOS [HI7750/4]
ttp://japan.renesas.com/fmwk.jsp?cnt=hi7750_4_tools_product_landing.jsp&fp=/products/tools/os/itron/hi7750_4/&site=i >HI7750/4は、μITRON4.0 仕様に準拠したSuperHファミリマイコン用の >リアルタイム・マルチタスク OS です。 H8用はないっぽい
- 618 名前:デフォルトの名無しさん mailto:sage [2006/04/26(水) 06:22:25 ]
- トロンのカーネルはいちおう8bitまで考慮して書いてはあるけど、300Hじゃ動いても重い
でしょうね。ふだんOSレスで書いてる私から見れば、オーバーヘッドすぎるからやめとき、 が最初に出ますね。タイマひとつ張るのに識別子付けて記述言語情報付けて関数アドレス 付けてなんて、「標準化」ってのはそういうことなんだけど、チビの石には負担でしょ。 大事なのは割り込みとタスクレベルと両方から触る変数はタスク側でdi()/ei()かますこと。 セマフォだって根底はこれだけだよ。
- 619 名前:デフォルトの名無しさん mailto:sage [2006/04/26(水) 06:54:59 ]
- タスクの切り替えは、単にスタック領域をタスク毎に用意して、スタックポインタを切り替えるだけ
もっともH8はレジスタが多いから重くなるね
- 620 名前:デフォルトの名無しさん mailto:sage [2006/04/26(水) 07:21:46 ]
- タスク切り替えごとに割り込みマスクされると....
- 621 名前:デフォルトの名無しさん mailto:sage [2006/04/26(水) 07:30:54 ]
- 具体的には、 taskA,taskB というポインタを用意しておいて
A->Bタスク切り替え: 1、全レジスタをスタックに保存 2、taskA := SP 3、SP := taskB 4、全レジスタをスタックから復帰 5、return つまり、Cで書く割り込み処理に SP切り替えを追加しただけのコストでタスク切り替えは実装出来る
- 622 名前:デフォルトの名無しさん mailto:sage [2006/04/26(水) 07:32:30 ]
- ただ、スタック領域がタスクの数だけ必要になるので、H8/300の1チップで
このスタック領域を確保するのは厳しいだろうな
- 623 名前:デフォルトの名無しさん mailto:sage [2006/04/26(水) 07:43:15 ]
- なるほど
でも、SPを切り替える時のコードが思いつかない。
- 624 名前:デフォルトの名無しさん mailto:sage [2006/04/26(水) 07:57:06 ]
- SP=ER7だから、普通に mov でメモリに書いて読めばいいだけだよ
- 625 名前:デフォルトの名無しさん mailto:sage [2006/04/26(水) 08:02:44 ]
- え、Cじゃ無理なの?
- 626 名前:デフォルトの名無しさん mailto:sage [2006/04/26(水) 08:17:47 ]
- h8用のCならインラインアセンブラを埋め込むのは可能だろう
汎用的にやるなら #include <setjmp.h> setjmpしてlongjmp
- 627 名前:デフォルトの名無しさん mailto:sage [2006/04/26(水) 15:16:50 ]
- H8/300HくらいならμITRONサブセットのSmalightOSくらいでいいんじゃね?
トラ技のバックナンバーに載ってる。
- 628 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 17:37:55 ]
- 普通のLinux入れたいです。
- 629 名前:デフォルトの名無しさん [2006/05/02(火) 12:14:22 ]
- >>626
625じゃないけど・・・ setjmpとlongjmpでSP切り替えできるんだ・・・ というか、使ったことないのでした・・・setjmp
- 630 名前:デフォルトの名無しさん mailto:sage [2006/05/02(火) 12:32:50 ]
- でもアセンブラ使わないとなると、スタートアップ時にmainで巨大な配列をローカル変数に取るとかいう格好になるんで
ちょっと格好悪い
- 631 名前:デフォルトの名無しさん mailto:sage [2006/05/02(火) 13:34:19 ]
- setjmpとlongjmpはSPを記憶、戻すというイメージでは?
やっぱり、アセンブラか。個人的には意味ない感じ....
- 632 名前:デフォルトの名無しさん mailto:sage [2006/05/02(火) 14:36:23 ]
- 630の内容は taskA から taskBを起動する時に
1、taskAのsetjmp 2、大量にローカル変数を取ったtaskBのスタートアップルーチンを呼ぶ 3、taskBで setjmp⇒taskAにlongjmp 2で取ったローカル変数のサイズだけtaskAのスタック領域が確保されるという仕掛け
- 633 名前:デフォルトの名無しさん mailto:sage [2006/05/02(火) 16:02:59 ]
- なんか、勘違いしてない?
- 634 名前:デフォルトの名無しさん mailto:sage [2006/05/03(水) 19:33:49 ]
- 俺もそう思う
uITRON載せるのは16ビット以上ないとつらそうだ。8ビットなら昔は自作のOSもどきのタスクチェンジャ作ってのせてたな
- 635 名前:デフォルトの名無しさん mailto:sage [2006/05/03(水) 20:00:03 ]
- uClinuxは?
- 636 名前:デフォルトの名無しさん mailto:sage [2006/05/03(水) 20:22:24 ]
- OSのせるとある程度CPUパワーがいるからね。タイミングが厳しいのは....
- 637 名前:デフォルトの名無しさん mailto:sage [2006/05/03(水) 22:19:45 ]
- 8ビットものはタスクスイッチとセマフォとタイマあればいいや
- 638 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 00:14:59 ]
- >>635 あれは仮想メモリないCPUでも動くがだいぶ違うと聞いた
- 639 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 10:17:59 ]
- ぬるい仕事しかしたことないんで、どうも「タスク」とやらの必要性がわからない。
8bitや16bitのCPUでやるような組み込みなんか、 割り込み + 回るコマドリ でいいじゃん。 「コンテキストの保存」というオーバーヘッドは いったいなんのためのコストなんだろう。
- 640 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 10:28:22 ]
- 「コンテキストの保存・切替」というオーバーヘッドは 割り込みで全レジスタを保存するのと同じですよ。
つまりc言語で割り込み記述するのと同じコストですよ
- 641 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 12:22:17 ]
- 切り替えに時間がかからないのはわかったんですが、
スケジューリング?にかかる時間の計算はどうすればいいの?
- 642 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 12:40:49 ]
- 回るコマドリ というのが、例えば
void progRobin1(void){ static RobinNo=0; switch(RobinNo){ ・・・・・ } } みたいにしてmainで割り込み待ちした後、各コマドリを呼び出すという方法だとしたら それをコンテキスト切り替えにしてRoundRobin方式で回したり 入力タスクを出力タスクにつないだりするのと、時間的なコストは変らないのでは? ただ、スタック=メモリ消費が大きいのが問題だと思うけどなあ
- 643 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 12:50:42 ]
- その方法はよくわかるんですが、
リアルタイムOSでは、時間計算とかどうしてるのか気になるんですよ。
- 644 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 16:07:15 ]
- 誰が駒鳥さんを殺したの
誰が殺したクックロビン
- 645 名前:639 mailto:sage [2006/05/04(木) 16:49:24 ]
- >>640
えーっと、だから数代前のMacOSみたいな設計(ノンプリエンプティブ、だったっけ?) なら、つまり一定時間で強制的にタスクを切り替える、なんてことをしないで 全部ラウンドロビン方式でやれば、コンテキストの保存なんて作業の必要性は 発生しないわけですよねえ。 それじゃまずいタイムクリティカルな部分だけ割り込み使えば、 マイコンでやるような小規模なシステムなら必要十分だと思うんですが。
- 646 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 18:31:35 ]
- 例えば、可変長ブロックの通信処理。
圧縮が入っていてけっこう厄介なものだとする。 会社Aに通信仕様だわ渡して頼んだら、GetByteみたいな関数呼び出して実装して持ってきちゃった。 でも全体のシステムを設計してた会社Bは 通信部は割り込みで受信する事を考えていたという事があるとするよ。 どっちも自分がマスターで、相手をスレーブと考えていたという場合だ。 このGetByteでコンテキスト保存して会社Bのメインタスクに戻り、 受信割り込みでコンテキスト切り替えしてGetByte に戻してやる。 そうすると、会社Aのコードも会社Bのコードも両方が動くと。
- 647 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 18:46:40 ]
- まあ上の例だと、FIFOに書いては、ある程度溜まる都度 会社Aのコードを呼び出せるように
変更するという対策もまだ選択可能かもな。 でもさらに、 会社Aが アチコチにあるGetByteで読んで 圧縮されたデータを復元した結果を アチコチでPutByteしてたとするよ。 会社Bも 圧縮された結果をあちこちでGetUnpacByteして動くように作ってデバッグまで終わらせてしまってた。 で、納期は迫ってちゅうような状況だとしたらどう? こういう状況だと、Aのコード、Bのコードをタスク化してつないでしまわんとしょうがないでしょ?
- 648 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 21:07:23 ]
- つうか、会社Aも会社Bも、お互いにきっちりコミュニケーションとって下さい。
- 649 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 00:08:54 ]
- コミュニケーションとった場合でも、マルチタスクを導入しなければ
片方がスレーブ的なコードを書かなければならなくなるわけで この手のコードはマスター側で書くのは楽だが、スレーブとして書くのは大変でしょ?
- 650 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 00:46:28 ]
- 大変っていうか、とりまとめてる会社がみんな悪いなw
- 651 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 16:23:28 ]
- どの会社が何を作るなんて決めの問題だろ。
で、決めたらそれを作るだけじゃん。 何が不満なんだ?
- 652 名前:デフォルトの名無しさん mailto:sage [2006/05/07(日) 07:59:59 ]
- >643
スケジューラの時間が書いているよ。 documentation.renesas.com/jpn/products/tool/rjj10j0134_mr30_r.pdf このITRONの実装では、こうなるということで、実装によって 算出方法は変わりますが
- 653 名前:デフォルトの名無しさん mailto:sage [2006/05/07(日) 08:18:54 ]
- ありがと
でも、割り込み禁止時間が...............
- 654 名前:デフォルトの名無しさん mailto:sage [2006/05/07(日) 23:00:44 ]
- 関係ないけど、可変長と委員長って 似てるよね
|

|