ARM7アセンブリを使用して簡単なプログラムを作成しようとしていますが、単純なデータでメモリ領域を初期化できません。 はここに例ARM7アセンブリメモリ領域が初期化されていません
AREA RESET, CODE, READWRITE
ENTRY
LDR r0, =SortArray ;load start address
LDR r1, =SortArrayEnd ; load end address
STR r15, [r0]
LDR r4, [r0]
SUB r2, r2, #1 ; r2 contains (LENGTH-1)
MOV r6, #0 ; r6 sum set to 0
STOP B STOP
LTORG
AREA my_data, DATA, READWRITE
ALIGN
SortArray
DCD 1,5,20,32,13,66,3,5,23,64,112,66,22
SortArrayEnd
END
あるこのないロード0x40000000
へr0
レジスタポイントでのデバッグモードSortArray
でメモリ内のデータ、および0x40000034
にSortArrayEnd
ポイントが、そこにあるデータなし
Memory map for data in separate area
んしかし、あなたは気づいたかもしれませんが、メモリにデータを格納する命令があります。 STR r15, [r0]
これは完全に動作するデータが格納されています。
次の例は動作しますが、わかりましたが、私はコード領域内にデータを置き、READWRITE
としましたが、これはおそらく悪い考えです。しかしこの場合、私は自分のデータをメモリに見ることができます。ここで
AREA RESET, CODE, READWRITE
SortArray
DCD 1,5,20,32,13,66,3,5,23,64,112,66,22
SortArrayEnd
ENTRY
LDR r0, =SortArray ;load start address
LDR r1, =SortArrayEnd ; load end address
STR r15, [r0]
LDR r4, [r0]
SUB r2, r2, #1 ; r2 contains (LENGTH-1)
MOV r6, #0 ; r6 sum set to 0
STOP B STOP
LTORG
END
は、問題を見つけるために助けてください、それは0x00000000
Memory Map WIth Data placed in code Area
から始まり、私のメモリマップである、私が間違っているかを把握しようとして数日を過ごしてきました。
私はuVision 4
を使用しています。デバイスはLCP2148
です。
はどのようにしてターゲットにこのコードを取得している - あなたは、生のバイナリを構築し、それを点滅、またはちょうどデバッガを介してメモリに直接オブジェクト・ファイルをロードしていますか?前者の場合、必要なセクション再配置を実行するための適切なスタートアップコードとリンクしていますか? – Notlikethat
私はデバッガでこれを実行しようとしていますが、今はこのコードをデバイスにアップロードする必要はありません。今はデバッガだけで動作する必要があります。 – gzbuaapzroyn