intel hex records type 03 または 05 は iHex プログラムで何をしていますか?
レコード タイプ03: 開始セグメント アドレス80x86プロセッサの 場合、CS:IP レジスタの初期内容を指定します。アドレス フィールドは 0000、バイト カウントは 04、最初の 2 バイトは CS 値、後の 2 バイトは IP 値です。
レコード タイプ05: 開始線形アドレスアドレス フィールドは 0000 (未使用) で、バイト カウントは 04 です。4 つのデータ バイトは、 80386 以降のCPU の EIP レジスタにロードされる 32 ビット値を表します。
これらはARMプログラムにとって意味がありますか?
組み込み ARM をプログラムするために .hex を生成すると、エンディングは次のようになります。
:10851400B4040020BC040020BC040020C4040020D7
:10852400C4040020CC040020CC040020D404002087
:10853400D4040020DC040020DC040020E404002037
:10854400E4040020EC040020EC040020F4040020E7
:10855400F4040020FC040020FC040020FFFFFFFFC3
:048564000000020011
:040000 05 08002910B6
:00000001FF
このレコードを無視するようにプログラミング アプリを編集しましたが、ちょうど今日、同僚が、彼のコンパイラが最後から 2 番目の行で03タイプのレコードを生成し、MPU のプログラミングを妨げていると報告しました。
objcopy がこれらのレコードを作成するのはなぜですか? それをやめさせることはできますか?
関連する Makefile 行:
FORMAT = ihex
OBJCOPY = arm-elf-objcopy
%.hex: %.elf
@echo
@echo $(MSG_FLASH) $@
$(OBJCOPY) -O $(FORMAT) $< $@