元のアドレス:クリックしてリンクを開きます
ARMアーキテクチャの2番目の部分は、主にCPUのメモリインターフェイスとARM起動プロセスを理解します。
メモリマップ
S5PV210はCortex-A8アーキテクチャに属しており、32ビットアドレスラインと32ビットデータラインを備えているため、CPUのアドレス空間は4Gですが、統合アドレス指定を使用しているため、周辺機器がアドレス空間の一部を占めています。メモリの実際のアドレス空間は4G未満になり、この4Gアドレス空間の割り当てはメモリマッピングまたはアドレスマッピングです。次の図は、ユーザーマニュアルからのS5PV210のメモリマッピング分布
です。メモリ分布の説明:
- iROM:内部ROM、内部読み取り専用メモリ、SOCに統合されたROM
- iRAM:内部RAM、内部ランダム読み取り/書き込みメモリ、SOC内のRAMに統合
- DRAM:ダイナミックRAM
- SRAM:スタティックRAM
- ONENAND / NAND:ONENANDは、Samsungによって発明されたNANDフラッシュの変形であり、一部のアクセス特性を改善します。
- SFR:特殊機能レジスタ
iROMセグメントのメモリ分散図を見てください
。iROMはコードの格納に使用され、iRAMはデータの格納に使用されるため、iROMとiRAMは、ハーバード構造を反映したNotAvailableで区切られています。区別がセキュアエリアと非セキュアエリアであることを確認してください。
外部メモリインターフェース
メモリ分類
メモリ:DRAM、SRAM、DDRなどのプログラム操作スペースに使用される内部メモリ
外部メモリ:ハードディスク、フラッシュ、NAND、iNAND、ONENAND、Uディスク、SDカード、SSD、光ディスクなどのストレージに使用されるROM等
メモリアクセス方法
メモリは直接アクセスする必要があるため、アドレスバスとデータバスを直接接続してアクセスします。ランダムアクセス速度が速いという利点がありますが、バスビット数が多く、アクセススペースがユーザーマニュアルから、DRAM0とDRAM1を合計するとS5PV210のメモリアドレス空間は1.5Gであることがわかります。
外部メモリはアドレスバスを介して直接接続およびアクセスされるのではなく、外部メモリインターフェイスを介して接続されます。 S5PV210の外部メモリアドレス空間セグメントは次のとおりです:0xB000_0000〜0xBFFF_FFFFのONENAND / NAND領域は、外部メモリインターフェイスを介してデータストレージ容量を拡張できますが、速度はそれほど速くありませんアクセスには数サイクルかかり、タイミングはより複雑です。
一般的に使用される外部ストレージ
- NorFlash:バスでアクセスでき、CPUのアドレス空間に接続でき、メモリでアクセスできます。S5PV210は、NorFlashの一部をSROMC_BANK領域に接続して、メモリバスアクセスを実現できます(ネットワークカードも接続できます)。このSROMC_BANKエリアに)アクセスするには、デスクトップのBIOSは実際にはNorFlashの一部です。CPUがNorFlashからアクセスする場合は、次のようにSROMC_BANKエリアにアクセスする必要があります。
- NandFlash:バス経由ではアクセスできません。タイミングシーケンスを介してアクセスするには、コマンドインターフェイスを使用する必要があります。iROM領域はNANDフラッシュの起動に使用されます。SLCプロセスとMLCプロセスに分かれています。
- SLC:容量が小さく、価格が高く、タイミングが簡単で、アクセスが簡単で、安定性が高い
- MLC:容量が大きくなる可能性があり、価格が低く、不良ブロックやビットフリップが発生しやすく、ECC検証が必要であり、アクセスがより複雑になります。
- eMMC / iNand / moviNand:どちらもeMMCに属しており、iNANDはSanDiskが製造したeMMC、moviNandはSamsungが製造したeMMCです。
- oneNand:SamsungのNand標準
- SD / TF / MMCカード:どちらもSDカードシリーズに属しています
- eSSD:SSDソリッドステートドライブの組み込みMLCに属するNandFlash
- SATA / IDE / SCSIハードディスク:機械的アクセス、低速
S5PV210スタート
羊
- SRAM:スタティックメモリ、小容量、高価格、ソフトウェアの初期化は不要、電源投入直後に使用可能
- DRAM:大容量で低価格、これは当社の一般的なDDRであり、電源投入直後には使用できず、ソフトウェアの初期化が必要です
外部記憶装置
NorFlash:小容量、高価格、バス経由で直接アクセス可能、電源投入後すぐに読み取ることができ、一般にスタートアップメディアとして使用
NandFlash:大容量、低価格、バスからアクセスできない、必要電源投入後にソフトウェアによって初期化され、タイミングインターフェイスを使用してアクセスできます
組み込みシステムの起動
組み込みブートメディア:外部NandFlash +外部DRAM +組み込みSRAM(iRAM)
S5PV210:210の内蔵96KB iRAM(SRAM)、および64K iROM(NorFlash)、起動プロセスは次のとおりです。
- CPUの電源を入れた後、iROMからプリセットコード(BL0)を読み取ります。アドレスは0xD000_0000〜0xD000_FFFFで、このコードは実行されます。
- 命令キャッシュ、ヒープ、スタック、ブロックデバイスコピー機能(外部スタートアップモードの読み取り)、PLLおよびシステム内部クロックを初期化し、ウォッチドッグをオフにし、BL1(16K)をiRAMにコピーして、BL1チェックサム、安全スタートアップ関連セットをチェックし、BL1にジャンプします。実行する
- このコードは工場出荷前に設定されているため、当面はNandFlashとDRAMを初期化できず、ハードウェアジャンパーで設定したブートモードを判断し、対応する外部メモリからiRAMにブートローダーを読み取りますが、一般的なブートコードは両方ともiRAMの96K容量を超えています。Samsungのソリューションは、起動コードを2つの部分に分割し、それらを順番に読み取ることです。
- BL1(構成可能、最大16K):iRAMはこのコードを実行してFlashを初期化し、BL2をiRAMに読み込みます
- BL2(残りの80Kスペースを占有):DRAMを初期化し、OSをDRAMに読み込み、OSを起動します
- 起動方法は、次の図に従って確認できます。
- 起動フローチャートは次のようになります。
-
- ウェイクアップステータス:ステータスのリセット、ディープスリープまたはディープストップ
- OMピン:DIPスイッチ
- 次の図に示すように、最初の起動が失敗した場合、2番目の起動が実行され、2番目の起動はSDカードのチャネル2を経由します。
- SDカードチャンネル2が起動に失敗した場合、UART起動を実行します。
- UARTが起動に失敗すると、USB起動を実行します。
- それらがすべて失敗した場合、完全な起動は失敗します
開発ボードの起動モードの選択
起動モードは、OMピンを介して設定することも、構成ピンを介して設定することもできます。具体的な設定を図に示します。図
に従って設定します。
ARMアーキテクチャと動作モード
- ARMは32ビットアーキテクチャを使用しています
- バイト:8ビット
- ハーフワード:16ビット(2バイト)
- ワード:32ビット(4バイト)
- ほとんどのARMは3つの命令セットを提供します
- ARM命令セット(32ビット)
- サム命令セット(16ビット)
- Thumb2命令セット(16&32ビット)
- Jazelle Coreは、JavaByteCodeのサポートも提供します
- 7つの動作モード
- ユーザー:非特権モード、ほとんどのタスクはこのモードで実行されます
- FIQ:高速割り込みモード。優先度の高い割り込みが生成されるとこのモードになります。
- IRQ:割り込みモード。通常の割り込みが生成されたらこのモードに入ります
- SUPERVISOR:リセットまたはソフト割り込み命令が実行されたときにこのモードに入ります
- ABORT:アクセスが異常な場合にこのモードに入ります
- UNDEF:未定義の命令が実行されるとこのモードに入ります
- システム:システムモード、カーネルはこのモードで実行され、USERモードと同じレジスタを使用します
- USERが通常モードであることを除いて、他のすべては特権モードです。
- SYSTEMを除くすべての特権モードは異常モードです
- モードは、CPSRレジスタを書き込むことによってアクティブに切り替えることができます。または、CPUによって自動的に切り替えることができます。
- さまざまなモードでのアクセス許可とアクセス可能なレジスタが異なります
ARM内部汎用レジスタ
ARM CPU内には17個の基本的な汎用レジスタがあり、動作モードに応じて37個のレジスタとして定義できます。各レジスタは32ビットです。他のデバイスのSFRと比較すると、より複雑です。汎用レジスタパススルーレジスタ。名前によるアクセス:
各モードで最大18個のレジスタを表示できます。他のレジスタは同じ名前ですが、これらはすべてこのモードの特殊レジスタであり、現在のモードでは表示できません。
たとえば、USERモードのr13(sp)とr14(lr)は繰り返されず、ユーザーモード専用のレジスタです。これら2つのレジスタは、モードを切り替えるときに重複の問題を考慮する必要はありません。すべてのモードのレジスタについて、次の図を参照してください。
CPSRプログラムステータスレジスタ
このレジスタには合計32ビットがあります
-0〜4はモードビットであり、プロセッサの7つのモードの1つを示します
-5はプロセッサの状態を切り替えるTビット、0はARM状態、1はサム状態です
-6〜7はそれぞれI、F割り込み無効ビット、I = 1、IRQは禁止、F = 1、FIQは禁止
-8〜23未定義
-24はJビット、Jazelleステータスを処理、J = 1、Jazelleをサポート、ARM 5TE / Jアーキテクチャのみをサポート-25〜26
未定義
-27はQビットであり、飽和状態を示します。Q= 1、飽和、ARM 5TE / Jアーキテクチャのみをサポートします-28〜31
はV、C、Z、 N条件ビット:
-V = 1:ALV操作のオーバーフローを示します
-C = 1:ALV操作のキャリーフラグがオーバーフローした
ことを示します-Z = 1:ALV操作が0を取得した
ことを示します-N = 1:を示しますALV操作の結果がマイナスであること
PCプログラムステータスレジスタ
- プログラムポインタと呼ばれ、PCがポイントし、CPUが実行する命令を示します。
- たとえば、プログラムがジャンプすると、ターゲットアドレスがPCに配置されます。
- CPU全体に対して1台のPCしかありません
ARM例外処理方法
異常な
例外とは、プログラムの実行中に発生する通常の作業以外のプロセスを指します。例外は、実行中の作業を中断します。例外処理が完了した後、元の作業を続行するために戻ることが望まれます。中断も異常の一種。7で動作するモードのUSERとSYSTEM以外の動作モードは、例外を処理するために使用されます。
例外ベクトルテーブル
- 例外ベクトルテーブルは、CPUが例外を処理するための手段です。すべてのCPUには、ハードウェア設計の範囲に属する例外ベクトルテーブルがあります。
- 例外が発生すると、CPUが自動的に動作し、PCは例外ベクトル(例外処理アドレス)にジャンプして例外を処理します。これには、一連の補助アクションが伴う場合があります。
- 例外ベクトルテーブルは、例外を処理するためにハードウェアとソフトウェアによって提供されるサポートです。
ARM例外処理メカニズム
- 例外が発生した場合、ARMCoreには以下が必要です。
- CPSRをSPSR_ <対応するモード>にコピーします
- 適切なCPSRを設定する
- プロセッサの状態を変更してARM状態にします
- プロセッサモードを変更して、対応する例外モードに入ります
- 割り込み禁止ビットを設定して、割り込みへの応答を禁止し、例外処理が中断されないようにします。
- リターンアドレスをLR_ <対応モード>に保存します
- PCを対応する異常ベクトルに設定します
- 例外が戻ったとき、ARMCoreは
- SPSRからCPSRを復元します_ <対応するモード>
- LR_ <対応するモード>からPCを回復します
- 上記の操作はARM状態で実行されます
- 一部の例外はCPUによって自動的に処理され、一部はプログラマーによる手動操作が必要です。CPUが提供する例外ベクトルテーブルは通常、第1レベルのベクトルテーブルです。複数の割り込みをサポートするために、一部のCPUは第2レベルも提供します。 vector。Table、処理方法は第1レベルのvectortableに似ています。