、NANDフラッシュとNORフラッシュの違いはここに起動モードでのARM9であると言うことは何も、1を持っていない事実:以来でも自分の別のアドレスとデータラインを持っている直接プログラムを実行することができます。しかし、NANDアドレスデータを公開、あなたはCPUを起動したとき4KBのデータがSRAMを実行する前に、4KBのプログラムよりも大きいために、我々はプログラムの実装を完了する方法を検討しなければならないので、それは、時間がかかりますか?プログラムは、前に実行を継続するためにコピーすることで、SDRAMで4キロバイト4キロバイトしようとしているの後、チップcypresのusb3014を使用し、核ARM9が、彼は、SRAMの512キロバイトのプロジェクトを持っていますし、スレッドXのリアルタイム動作を介してパッケージを使用してシステムは、一般的に512キロバイト十分、それにspi_flashを追加し、バックの対象を回します!以下のコードを見てください:
.S
.text 。グローバル_startの _start: LDRのSP、 = 4096 に配置されたスタック@ DOG WATCHオフBL disable_watch_dog @ memsetup SDRAMのBLの@初期 のBL @初期化nand_initフラッシュNAND NANDフラッシュ4096 1024バイトのアドレスコードで、@(main.cのコンパイルを開始SDRAMに)得られた @nand_read_ll関数三つのパラメータ取る: のLDR R0 = 0x30000000 @を1つのターゲットアドレス= 0x30000000 、開始SDRAMアドレスである MOV R1、#4096 @2ソースアドレス= 4096 main.cのコードは4096 NANDフラッシュの開始時に存在し、接続時間は、アドレス MOV R2、#2048 @ 。3。コピー長さ= 2048 main.cのこの実験のために(バイト)、その十分である BL nand_read @呼び出しC関数nand_read、類似の異なるモデル LDR SPは、 = 0x34000000 @スタック設定 LDR LRを、 = halt_loop @リターンアドレスセット;一方はサブルーチン復帰アドレスを保存するために使用され、例外は、LRを発生秒であります値はPC 4マイナス(又はマイナス2)の例外に等しい値に格納されているときにエラー発生を続行する前に、対応する位置に異常値LRに応じて様々なモードに戻すことができます。 PC LDR、 = メイン@bのBL命令と命令が前後32M、PC割り当てジャンプするために本明細書で使用される方法の範囲ジャンプすることができ halt_loopを: Bのhalt_loop
.lds(リンカスクリプト)
{SECTIONS firtst 0x00000000の:{head.o init.o nand.o} // これら3つの文書アドレスが0で実行し、得られた画像ファイルは、アドレス0オフセットさ SECOND 0x30000000 AT(:4096){main.oを} // 生成された画像ファイルも相殺され、ファイルのアドレスは0x30000000である4096番地を実行 }