【質問】アドレス・バス幅とメモリアドレスの長さ / データ・バスについて

170 views
Skip to first unread message

willow bronze

unread,
Apr 25, 2021, 8:12:54 AM4/25/21
to KOZOS友の会
はじめまして。
石谷と申します。
初心者です。

組み込みOSに興味を持ち、『組み込みOS自作入門』の第2章を学習中なのですが、
2点疑問があり、どうしても頭から離れなくなってしまったので、質問させてください。

【質問】
1. H8 3069Fのマイコンのデータシートを見ると、アドレス・バスの幅が20であることが読み取れます。これに対し、DRAMのアドレス番地は24bitあるように見えます。
自分の認識では、アドレス・バスの幅から、20bitまでのアドレスにしかアクセスできないと考えているのですが、認識が誤っているでしょうか。
もし、誤っていない場合は、どうやってメモリへのアクセスを実現しているのか、
もし、誤っている場合は、どのように認識が誤っているのかをご教授いただけますと幸いです。

2. 第2章では、アドレス・バスのによるDRAM、レジスタなどへのアクセスが分かりやすく記載されていましたが、データ・バスのDRAM、レジスタへのアクセスの記載が見当たらず、よく分かりませんでした。
データバスは、各DRAM、レジスタに対し、データのやり取りで必要な分、バスがアサインされているという認識でよろしいでしょうか。
(例えば、シリアル・コントローラのレジスタは8bitなど)

willow bronze

unread,
Apr 25, 2021, 10:10:43 PM4/25/21
to KOZOS友の会
申し訳ございません。
上記の質問の内、1. については、自己解決しました。
アドレス・バスがピン配置図のPx/Axのものだけだと思い込んでいました。
H8 3069Fのデータシートを見ると、アドレス・バスの幅はシステムコントロールレジスタの設定によって変わるので、
24bitのアドレスへのアクセスを問題なく実施できるのですね。

2021年4月25日日曜日 21:12:54 UTC+9 willow bronze:

willow bronze

unread,
Apr 25, 2021, 10:15:24 PM4/25/21
to KOZOS友の会
何度も申し訳ございません。
上記、訂正させてください。

訂正:
システムコントロールレジスタの設定で変わる
各動作モードによって変わる
2021年4月26日月曜日 11:10:43 UTC+9 willow bronze:

willow bronze

unread,
Apr 26, 2021, 5:04:58 AM4/26/21
to KOZOS友の会
坂井様

迅速なご回答ありがとうございます!
非常に丁寧な説明で、即座に理解が出来ました。
自分の理解があっているようでホッとしました。
以降の章も楽しみながら読ませていただきます!

また、質問がある場合、お問い合わせさせていただくかもしれません。
その際は、お手数をおかけし申し訳ございませんが、よろしくお願いいたします。

2021年4月26日(月) 17:42 SAKAI Hiroaki <ko...@kozos.jp>:

石谷さん

組込みOS自作入門の筆者の坂井です.

先ほど,MLのほうにリプライしましたが,FromアドレスにCcするのを忘れたので,
そちらにも転送しておきます.


On 04/26 17:41, SAKAI Hiroaki wrote:
> 石谷さん
>
> 組込みOS自作入門の筆者の坂井です.
> まずは,書籍を活用していただいているようで,ありがとうございます.

>
>
> On 04/26 11:15, willow bronze wrote:
> > 何度も申し訳ございません。
> > 上記、訂正させてください。
> >
> > 訂正:
> > システムコントロールレジスタの設定で変わる
> > →
> > 各動作モードによって変わる
> > 2021年4月26日月曜日 11:10:43 UTC+9 willow bronze:
> >
> > > 申し訳ございません。
> > > 上記の質問の内、1. については、自己解決しました。
> > > アドレス・バスがピン配置図のPx/Axのものだけだと思い込んでいました。
> > > H8 3069Fのデータシートを見ると、アドレス・バスの幅はシステムコントロールレジスタの設定によって変わるので、
> > > 24bitのアドレスへのアクセスを問題なく実施できるのですね。
>
>
> はいそうです.上記,訂正のとおりです.
> CPUの動作モードによってアドレスバスのピンが切り替わり,
> 24bitアドレスへのアクセスが可能になります.
>
> ちょっとデータシートが手元に無いのでうろおぼえなのですが,
> モード5とかモード7とか,そんなのがあったような気がします.
>
> CPUの動作モードは,H8/3069Fマイコンボードのディップスイッチで切り替わります.
> CPUの物理ピンの動作モードの設定になるので,CPUが起動してからソフトウエア的に
> 設定変更することはできず,起動時の配線で,起動時に決定されるようになって
> います.で,マイコンボード上では,その配線をディップスイッチで設定できる
> ようになっています.

>
>
> > > 2021年4月25日日曜日 21:12:54 UTC+9 willow bronze:
> > >
> > >> はじめまして。
> > >> 石谷と申します。
> > >> 初心者です。
> > >>
> > >> 組み込みOSに興味を持ち、『組み込みOS自作入門』の第2章を学習中なのですが、
> > >> 2点疑問があり、どうしても頭から離れなくなってしまったので、質問させてください。
> > >>
> > >> 【質問】
> > >> 1. H8
> > >> 3069Fのマイコンのデータシートを見ると、アドレス・バスの幅が20であることが読み取れます。これに対し、DRAMのアドレス番地は24bitあるように見えます。
> > >> 自分の認識では、アドレス・バスの幅から、20bitまでのアドレスにしかアクセスできないと考えているのですが、認識が誤っているでしょうか。
> > >> もし、誤っていない場合は、どうやってメモリへのアクセスを実現しているのか、
> > >> もし、誤っている場合は、どのように認識が誤っているのかをご教授いただけますと幸いです。
> > >>
> > >> 2.
> > >> 第2章では、アドレス・バスのによるDRAM、レジスタなどへのアクセスが分かりやすく記載されていましたが、データ・バスのDRAM、レジスタへのアクセスの記載が見当たらず、よく分かりませんでした。
> > >> データバスは、各DRAM、レジスタに対し、データのやり取りで必要な分、バスがアサインされているという認識でよろしいでしょうか。
> > >> (例えば、シリアル・コントローラのレジスタは8bitなど)
>
> はい,そう考えていいかと思います.
> まず図中では,データバスは省略されています.
> データバスは各DRAMやコントローラのレジスタに,必要な本数だけ配線されていて,
> 全モジュール(各DRAMやコントローラ)がデータを受信できますが,
> チップセレクト信号によって指定されたモジュールのみが反応して動作する,
> と考えていただければいいかと思います.
>
> またデータバスが接続されるのは,レジスタの幅のみでOKですので,
> 例えばシリアル・コントローラには32ビットのデータバスの下位8ビットしか
> 接続されていなくて,8bitアクセスしかできない,といったこともあり得ます.
>
> この場合,CPU側からすれば,プログラム上ではCPUは8bit(1バイト)アクセスの
> 命令を持っていますので,その命令を使ってアクセスすればいいことになります.
> さらにC言語上で言うならば,char型を使ってアクセスすればいいことになります.
> int型(32ビット)でアクセスした場合は,下位8bitだけが有効で,上位24ビットは
> 無視されることになると思います.
>
>
> > --
> > このメールは Google グループのグループ「KOZOS友の会」の登録者に送られています。
> > このグループから退会し、グループからのメールの配信を停止するには kozos_tomonok...@googlegroups.com にメールを送信してください。
> > このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msgid/kozos_tomonokai/5810cab8-eea8-498c-aeac-1277d0b71cffn%40googlegroups.com にアクセスしてください。
>
>
> --
> 坂井 弘亮
ko...@kozos.jp
http://kozos.jp

--
坂井 弘亮
ko...@kozos.jp
http://kozos.jp

2021年4月26日月曜日 11:15:24 UTC+9 willow bronze:
Reply all
Reply to author
Forward
0 new messages