2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

【根底】ファームウェア喫茶室【ベクタ】

1 :名無しさん@お腹いっぱい。:04/01/12 11:40 ID:pEEU7MEi
農場?牧場?(゚ ‥ ゚)モ〜〜〜ゥ
BIOS等ブートプログラム、からドライバ、カーネル等のOSの話題等。
モニタ、エミュレータ、デバッガの話もOK。


2 :名無しさん@お腹いっぱい。:04/01/12 11:44 ID:wsiZsBik
軽やかに2ゲット

類似スレッドがいっぱいあるけど、大丈夫?

3 :名無しさん@お腹いっぱい。:04/01/12 11:48 ID:pEEU7MEi
>>2
組み込み機器等に関するハードと切り離せないソフトウェア(ミドルウェアも)のスレが少ないので・・・。

4 : ◆ro/FPGA/X2 :04/01/12 11:51 ID:dW9l32px
どうせアゲ進行に反発してだんまりになるんだろ?このスレも。 >>1

5 :名無しさん@お腹いっぱい。:04/01/12 11:55 ID:pEEU7MEi
>>4
暗躍(w)してくれて、盛り上がってもイイ(゚∀゚)!と思います。

6 :名無しさん@お腹いっぱい。:04/01/12 12:07 ID:pEEU7MEi
↓このリンク先は、題目とは関係なく、根の部分も述べられているので参考にでも見てみてください。
http://www.asahi-net.or.jp/~WR7S-NKMR/BeOS/Documents/BeOS_Driver.htm


7 :名無しさん@お腹いっぱい。:04/01/16 22:27 ID:NnO1uJ9/
↑見てみたよ。割り込みベクタ・ベースアドレス→PIC内のICW2で計算した値(PICID+IR値)=割り込みベクタ→ベクタに相応するCPUの該当アドレスでJUMP命令→0000:0000〜02ffまでの実際に処理する割り込みハンドラルーチンで良いかな。
で、実際この割り込みハンドラ見てみたよ。
C:\>debug
-u 0000:0000 0020
0000:0000 CC INT 3
0000:0001 00FF ADD BH,BH
0000:0003 0400 ADD AL,00
0000:0005 0000 ADD [BX+SI],AL
0000:0007 00C3 ADD BL,AL
0000:0009 E200 LOOP 000B
0000:000B F0 LOCK
0000:000C 2F DAS
0000:000D 0470 ADD AL,70
0000:000F 002F ADD [BX],CH
0000:0011 0470 ADD AL,70
0000:0013 0054FF ADD [SI-01],DL
0000:0016 00F0 ADD AL,DH
0000:0018 50 PUSH AX
0000:0019 95 XCHG BP,AX
0000:001A 00F0 ADD AL,DH
0000:001C 53 PUSH BX
0000:001D FF00 INC WORD PTR [BX+SI]
0000:001F F0 LOCK
0000:0020 0000 ADD [BX+SI],AL

-q
C:\>EXIT
C:\>EXIT
オフセットアドレス0000〜0020までだけど、こんななってた。どのベクタの処理か分からないけどLOCKで区切られてるね。

8 :名無しさん@お腹いっぱい。:04/01/17 00:06 ID:SbBVyq5A
>>7
どこでそういう知識を身に着けたか、
ものすご〜く気になるのは漏れだけかな?


9 :名無しさん@お腹いっぱい。:04/01/18 02:58 ID:vBYca36G
いや、私も激しく気になる

10 :名無しさん@お腹いっぱい。:04/01/18 11:12 ID:aYD7f2Cq
>>7


11 :名無しさん@お腹いっぱい。:04/01/18 11:24 ID:iYSg+cU7
>>8
その言い回しを、今後漏れの実生活で使用させていただきたく、ご了承をお願いしたい所存です(w

12 :名無しさん@お腹いっぱい。:04/01/18 11:47 ID:7YWGupT3
オマイラさん。↓
0000:00C1 9A49FFFF1A CALL 1AFF:FF49
何か知らないけど40bit命令ですよ。
16bit、32bitバスでどうやってアクするんですか?

13 :名無しさん@お腹いっぱい。:04/01/18 12:28 ID:7YWGupT3
オマイラさん、追加です。IRQ/アドレス対応のベクタテーブルを探していたら、
偶然システムBIOS領域でHDDからOSのIPLをメモリに落とすらしきルーチンを見つけましたよ。
-u 000e:0018 0038
000E:0018 4C DEC SP
000E:0019 4C DEC SP
000E:001A FFFF ??? DI
000E:001C 4C DEC SP
000E:001D 4C DEC SP
000E:001E FFFF ??? DI
000E:0020 06 PUSH ES
000E:0021 09F2 OR DX,SI
000E:0023 E971E6 JMP E697
000E:0026 00F0 ADD AL,DH
000E:0028 65 DB 65
000E:0029 F0 LOCK
000E:002A 00F0 ADD AL,DH
000E:002C 4B DEC BX
000E:002D 5C POP SP
000E:002E 00C0 ADD AL,AL
000E:0030 141A ADC AL,1A
000E:0032 00F0 ADD AL,DH
000E:0034 141A ADC AL,1A
000E:0036 00F0 ADD AL,DH
000E:0038 141A ADC AL,1A
-

14 :名無しさん@お腹いっぱい。:04/01/18 13:53 ID:7YWGupT3
↑ただのBIOSがおこなうハードウェアチェックシーケンスとチップセットのレジスタ設定の一環かもしれない・・・。

15 :名無しさん@お腹いっぱい。:04/01/19 11:28 ID:ShqRbBEi
今月のWinPCのPC-ラボのBIOS解説記事で、
x86はリセットされるとFFFFF0から始まる16バイトの空間のプログラムを実行する。ただし16バイトしかないので通常ジャンプ命令を書いてある。
というトンチキな解説がありました。
1年くらい前に同じネタの記事があったけど、その作者はちゃんとジャンプベクタのことを知っているライターだったのに、劣悪コピーってもの芸がないなあ。

16 :名無しさん@お腹いっぱい。:04/01/19 13:37 ID:85ivYylo
000F:FFFF0はおそらくメインメモリ、もしくは、C-MOSRAM空間だね。
C-MOSRAMはデータだけ書いてあって、システムBIOSが読み込むから、命令は書いてない。
CPUは最初、プログラムカウンタに0をセット、そこからどうなるか・・・。
頂いてきたものだけど↓
http://www.ieice.org/jpn/books/kaishikiji/199910/h111007.html
もし、この演算の結果が最初は0で、物理アドレス0000:0000hなら
自分のPCだと、INT 3で始まってるよ。INT 3の割り込みハンドラルーチンに入り、そこから他の場所に飛んでゆくんじゃないかな。


17 :名無しさん@お腹いっぱい。:04/01/19 13:39 ID:85ivYylo
↑訂正
×000F:FFFF0
○00FF:FFF0

18 :名無しさん@お腹いっぱい。:04/01/19 15:09 ID:UrFiRJHF
どう突っ込んだらいいのか…


19 :名無しさん@お腹いっぱい。:04/01/19 15:20 ID:njTMShjC
>>18
セグメントがずれてハマルことってあるよね。

20 :名無しさん@お腹いっぱい。:04/01/19 16:35 ID:ShqRbBEi
>>16
通常、AT互換機では、リセット直後のF:0000にはBIOSROMが64KB分アロケートされ、F:FFF0-F:FFFFにジャンプベクタが書き込まれている。
2バイトか4バイトかは、出先なので不明ですがRESET:NMIのベクタが並んでいるはずです。

これはリセット時にバスをすべてhigh(リアルモードではF:FFFF)のアドレスが出力されるためでしょう。
アドレスのアライメントによってF:FFFE−FFFFにかかれているリセットベクタをROM(というかデータはROMのチップイネーブルが
有効であればすでにバス上にあるわけで)から読み出し、そのアドレスをバスに取り込みPC(プログラムカウンタ)に放り込み実行する
形になっています。

FF:FFF0ではなく、F:FFF0でした。すまそー♪


21 :名無しさん@お腹いっぱい。:04/01/19 17:15 ID:85ivYylo
>>20さんに言われたところを逆アセ掛けてみました。
C:\>debug
-u 000f:fff0 ffff
000F:FFF0 2E CS:
000F:FFF1 9C PUSHF
000F:FFF2 06 PUSH ES
000F:FFF3 90 NOP
000F:FFF4 8AD8 MOV BL,AL
000F:FFF6 2E CS:
000F:FFF7 F687520080 TEST BYTE PTR [BX+0052],80
000F:FFFC 7506 JNZ 0004
000F:FFFE 5B POP BX
000F:FFFF 2E CS:
000F:0000 4C DEC SP
-q

C:\>exit

000f:fff0〜ffffでやったのにffffの次の0000まで、でるなぁ。

22 :名無しさん@お腹いっぱい。:04/01/19 17:22 ID:85ivYylo
ついでに、「F:0000にはBIOSROMが64KB分アロケート」部分。
-u 000e:fff0
000E:FFF0 53 PUSH BX
000E:FFF1 BBC700 MOV BX,00C7
000E:FFF4 E987FD JMP FD7E
000E:FFF7 9C PUSHF
000E:FFF8 0E PUSH CS
000E:FFF9 2E CS:
000E:FFFA FF363A07 PUSH [073A]
000E:FFFE 2E CS:
000E:FFFF FF4C4C DEC WORD PTR [SI+4C]
-u 000f:0000 0010
000F:0000 4C DEC SP
000F:0001 4C DEC SP
000F:0002 FFFF ??? DI
000F:0004 4C DEC SP
000F:0005 4C DEC SP
000F:0006 FFFF ??? DI
000F:0008 4C DEC SP
000F:0009 4C DEC SP
000F:000A FFFF ??? DI
000F:000C 4C DEC SP
000F:000D 4C DEC SP
000F:000E FFFF ??? DI
000F:0010 06 PUSH ES
-

23 :名無しさん@お腹いっぱい。:04/01/19 19:15 ID:bCsniI7k
いいかげん勘弁してくれ。
と言いつつ Windows の DOS 窓で見えるメモリってなんなのかよく分からない。

24 :名無しさん@お腹いっぱい。:04/01/19 19:58 ID:85ivYylo
0000:0000〜0000:02FF BIOS割り込みルーチン
0000:0300〜0000:03FF BIOSスタック領域
0000:0400〜0000:04FF BIOSデータ領域
0000:0500〜0009:FFFF コンベンショナルメモリ残
000A:0000〜000B:FFFF ビデオメモリ
000C:0000〜000C:7FFF ビデオBIOSROM
000C:8000〜000D:FFFF 拡張BIOS
000E:0000〜000F:FFFF システムBIOS
0010:0000〜00FF:FFFF メインメモリ・PCI・ISA
0100:0000〜FFFF:FFFF メインメモリ

でしょ。I/O空間の0000〜FFFFの16bitアドレスはIN、OUT命令などでアクセスでしょ。(コントロール信号がI/Oアクセス指示へ変わる)

25 :名無しさん@お腹いっぱい。:04/01/19 20:13 ID:UrFiRJHF
>>24
一つ聞きたいが、そのアドレスの表記は
セグメント:オフセット
でいいの?


26 :名無しさん@お腹いっぱい。:04/01/19 20:18 ID:85ivYylo
>>25
YEY!SIR!

27 :名無しさん@お腹いっぱい。:04/01/19 20:26 ID:UrFiRJHF
>>23
95系は生DOS状態の時のコピー
ハードがらみの所はドライバが抑えていたような気もする。

NT系はWOWの作った仮想環境だったっけ?

>>26
さいですか…


28 :名無しさん@お腹いっぱい。:04/01/19 20:51 ID:85ivYylo
/*
INT命令でも外部割込みでも来たときは、次に実行すべきプログラムカウンタの値
と現在の割り込みレジスタをスタックに入れておいて、
割り込み中、割り込みレジスタにはベクタ番号が入って、で、割り込みから戻ろうとするときにスタックを読む。
で、割り込みレジスタのベクタ値を見て、ベクタテーブルのアドレスを指定し、そのベクタテーブルアドレスから割り込みサービスルーチンアドレスに飛ばす。
*/
で良いんでしょ。で、もしあっているとして、ジャンプベクタの最初の動作
「割り込みレジスタのベクタ値を見て、ベクタテーブルのアドレスを指定」
をどこで行っているか、というか、割り込みによりスタックにレジスタを退避させて↑を行うサブルーチンというか、が今一分からないんだよな。

29 :名無しさん@お腹いっぱい。:04/01/19 20:54 ID:85ivYylo
↑要は割り込み命令が来た段階で最初に飛ぶアドレスというかサブルーチンの場所が分からない。
というか、これもアドレス計算してんのかな。

30 :名無しさん@お腹いっぱい。:04/01/19 22:26 ID:UrFiRJHF
>>27
ちゃうがな。
NT系で仮想環境提供するのはNTVDMの仕事だ。

ちょっと離れてたらすっかり忘れてしまってますよ。


31 :名無しさん@お腹いっぱい。:04/01/20 09:13 ID:WrtHlV3z
>>24
BIOSが128KBになったのはAT互換機の世界になってからだと思う。
でさ、WindowsのDOS窓(プロテクトモード:仮想86モード)で一生懸命逆汗しても、"リアルモード”のマッピングされたデータは見られない罠。
3.3とか4.01とか5/Vでも6.2でもいいけどpure-DOSのEMSとかHIMEMとか使っていない8086互換環境からじゃないと見られないよ。

32 :名無しさん@お腹いっぱい。:04/01/20 23:53 ID:UtZX8cPt
>>31
>BIOSが128KBになったのはAT互換機の世界になってからだと思う。
うみ。XTまでは64Kだったような気がする。

>でさ、WindowsのDOS窓(プロテクトモード:仮想86モード)で一生懸命逆汗しても、"リアルモード”のマッピングされたデータは見られない罠。
>3.3とか4.01とか5/Vでも6.2でもいいけどpure-DOSのEMSとかHIMEMとか使っていない8086互換環境からじゃないと見られないよ。
まあ問題になるとすればemm386入れた時だろう。
もっとも互換性のために同じものが見えるようになっているので、まず問題は無いと思うが。

つーかうるさいこと言ったら、0E0000H以降のBIOSもROMじゃねーだろとかいうことになるわけで。


33 :名無しさん@お腹いっぱい。:04/01/23 16:04 ID:OmcGfvdX
外部INT、INT命令、例外命令が来たとき、最初に飛ぶ番地はそれぞれどこ?

34 :名無しさん@お腹いっぱい。:04/01/23 17:19 ID:Rdq0wzYr
>>33
IDTに書いてある。


35 :名無しさん@お腹いっぱい。:04/01/23 17:25 ID:OmcGfvdX
>>34
ありがと。
聞きたかったのは、その割り込み分岐テーブルを読み込もうとする最初のルーチンのアドレスなんだけど、分かるかな・・・?

36 :名無しさん@お腹いっぱい。:04/01/23 21:07 ID:y01btBL6
ベクタ番号*4H番地に書いてある

37 :名無しさん@お腹いっぱい。:04/01/23 21:10 ID:OmcGfvdX
>>36
ありがとう。早速、自分のPCで逆アセアプリ使って調べてみます。

38 :名無しさん@お腹いっぱい。:04/01/23 21:22 ID:y01btBL6
>>37
ごめん、違う

39 :名無しさん@お腹いっぱい。:04/01/23 21:32 ID:OmcGfvdX
>>38
え、うそ〜〜〜ん。
改めて、どこだか分かりますか?

40 :名無しさん@お腹いっぱい。:04/01/23 21:48 ID:y01btBL6
リアルモードとプロテクトモードの違いは分かりますよね?
ちょっといま酔ってるもので…

41 :名無しさん@お腹いっぱい。:04/01/23 22:07 ID:OmcGfvdX
>>40
リアルモード、プロテクトモード、仮想86モードで、外部割込・内部割込・例外が来たとき、この初っぱなに飛ぶアドレスがそれぞれ変わるのですか?
調べてみましたが分からないです。

42 :名無しさん@お腹いっぱい。:04/01/23 22:48 ID:Rdq0wzYr
何の疑問も持たずにx86で答えてたけど、SHくさい書き方なのでちと引っかかった。
x86でいいみたいだな。

>>41
だからしょっぱなに飛ぶアドレスはIDTから引いてくるようになってる。
割り込み発生時のCPUの動作調べれ。
RISCじゃねーからCPUの中でいろいろやってくれる。


43 :名無しさん@お腹いっぱい。:04/01/23 23:03 ID:OmcGfvdX
サンクス!!!
>CPUの中でいろいろやってくれる。
なるほど、ハード割込・ソフト割込・例外が掛かった直後、IDTへベクタを参照しにいくのはBIOSでやってる訳じゃなくて、CPU内ハードでステート組んであるってことのようですね。
で、ハードがIDTからそのベクタを取ってきて、ベクタをモトに実際処理する割り込みハンドラにジャンプベクタすると。
と謂うことは、
割り込み終了後の戻り番地と割り込みフラグレジスタのスタックへの退避は、これもハードがIDT見に行く前にやらなきゃいけないですね。

酔い宵のご気分のとこ、ありがとうございました。

44 :774ワット発電中さん:04/03/13 15:20 ID:ROXG3+qn
おまいら
付け焼刃の知識で
解説面白すぎる

iAPX86


45 :774ワット発電中さん:04/03/15 20:33 ID:6TNIEZpK
>>44
他のスレにもあるでよ。
笑いに飢えているなら読んで見るとよろし。


46 :774ワット発電中さん:04/03/20 01:17 ID:WQri1R4q
春厨のシーズンなので
どれがネタでどれがマジなのか判定に困るなw

47 :774ワット発電中さん:04/03/20 01:19 ID:WQri1R4q
と思ったら大半のカキコは1月かYO!

48 :774ワット発電中さん:04/03/20 01:22 ID:WQri1R4q
よく見たら大半のカキコは1月か。うーむ・・・

49 :774ワット発電中さん:04/03/20 01:25 ID:WQri1R4q
連投してしまった。スマソ

50 :774ワット発電中さん:04/08/29 17:17 ID:zuqGo0Q2
このスレ生きてる?


51 :774ワット発電中さん:04/09/06 11:54 ID:5h02bBRO
TEST

52 :774ワット発電中さん:04/09/08 18:33 ID:TRg0xWAx
RESET

53 :774ワット発電中さん:04/09/13 19:29:14 ID:dGK0PrLz
fa-developer MLの「わんこ」をどうにかしてくれ!!

54 :774ワット発電中さん:04/09/15 17:07:52 ID:xlZm0NG0
>>53
あれ、分裂症の一種じゃないか?


55 :774ワット発電中さん:04/10/01 01:54:43 ID:GPjsXiJD
安いマイコンでも、一気にCで記述して動作確認するなら、
周辺回路からのデータもとりながら動作するICEが欲しいとおもた。


uartデバッグやオシロデバッグ、LEDデバッグなんて仕事じゃねーよ。
非効率。

56 :774ワット発電中さん:04/10/16 14:06:26 ID:i/M7ECqd

ヘタレ底辺プログラマ

57 :774ワット発電中さん:05/02/24 00:57:20 ID:R8HktL1N
ICEがなかなか信用できないのが辛いところなんだよなぁ。


58 :774ワット発電中さん:05/03/19 04:02:13 ID:feqFlrVR
盛り下がりまくってますがage.
組み込みとかファームやりたいんだけどやっぱり中堅所が狙い目ですか。大手行くと管理ばっかりだっていうし。
アドバイスよろ〜。

59 :774ワット発電中さん:05/03/19 17:16:30 ID:CzdRKC3Q
うちの会社
人不足
やる気の有る
即戦力きぼん


60 :774ワット発電中さん:2006/03/01(水) 15:52:14 ID:Quy+fDvR
中山きんにくんです


61 :774ワット発電中さん:2006/03/01(水) 15:54:26 ID:1Uis10kL
ども、安田でございます

62 :774ワット発電中さん:2006/03/01(水) 15:55:20 ID:1Uis10kL
やべ、ageちった。。

63 :774ワット発電中さん:2006/03/01(水) 15:56:28 ID:Quy+fDvR
sageろ

64 :774ワット発電中さん:2006/03/05(日) 19:59:33 ID:D3VWfFKi
皆当然アセンブリだよな。


65 :774ワット発電中さん:2006/04/03(月) 02:12:24 ID:0LD3vrRq
>>59
うちにもよこせ
愛に満ちたやる気のある即戦力を!!!

66 :774ワット発電中さん:2006/04/26(水) 02:49:59 ID:+WAt6O7n
みなさん ここらでBKP C0FE へ JMP !

67 :774ワット発電中さん:2006/06/03(土) 19:24:22 ID:5Xn0AT1X
41歳になります。
H8、AVRなどの経験があります。
μITRON (HOS V4)使えます。
こんな私に仕事ありますか?

68 :774ワット発電中さん:2006/06/03(土) 20:01:58 ID:q6LQLtVT
サービス残業200時間できるなら捨てるほど
仕事がありますよ >>67

69 :774ワット発電中さん:2006/06/03(土) 20:05:56 ID:IawgPq3i
捨てるほどってより
カラダ壊して捨てられるパターンですねw

70 :774ワット発電中さん:2006/06/03(土) 22:57:23 ID:zH7Z1Qsv
下請けに負担を与えて飯を食っている丸投げ屋が多いからね。

71 :774ワット発電中さん:2006/11/07(火) 14:30:15 ID:elBJNUEm
あげ

19 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)