芯片是STM32F103VC,编译器为Keil4,目前在开发远程升级时遇到一个问题:
下面是我们项目编译出的hex文件最后面几行数据,
:10DFF000000000000000000000000000CD0BE01257
:10E00000012492FA2D0102030404300906070809CD
:10E0100002040608ACA24A041E291A01FF01E30209
:10E020005DFF141A620412094DF6FF1B63083C16CB
:10E030001791085A1708111373C012051AFA854A66
:10E04000C1085A01085A21085A28085A31085A4169
:10E0500008114AD2085A63105A69084B14C2085A68
:10E0600064104A67083C013D95705B013E085A3FC9
:10E07000085A40085A41085A44085A45085A46085E
:10E080004A4708012249232392F013F00333200268
:10E09000180AB96701080568010820145AF2141A11
:10E0A00019101A43041A21145AF4141A4D101A752F
:10E0B000041A22145AF6141AA3101ACF041A24149C
:10E0C0001AF81432061ADB101AE704016000000087
:04000005080041317D
:00000001FF
蓝色CD0BE012 是通过这行代码 const uint32_t app_endxx_id __at (0x0801dffcu) = 0x12E00BCDul;
指定在这个地址的32位数据,目的是为了标记程序的结尾,但是编出来发现最后面还有一段数据,
不论我app_endxx_id 的地址改到哪里,这段数据用永远都在最后,跟在app_endxx_id后面,
而且这段数据在.map文件中也没有描述, 下面是.map文件的一段内容,仅描述到 0x0801dffc,
是app_endxx_id 地址。
0x0801ac90 0x00000088 Data RO 1031 .constdata uds_support.o
0x0801ad18 0x00000100 Data RO 1102 .constdata os_core.o
0x0801ae18 0x0000005e Data RO 1243 .constdata os_dbg.o
0x0801ae76 0x0000002e Data RO 1032 .conststring uds_support.o
0x0801aea4 0x00000020 Data RO 1460 Region$$Table anon$$obj.o
0x0801aec4 0x00003138 PAD
0x0801dffc 0x00000004 Data RO 12 .ARM.__AT_0x0801DFFC main.o
Execution Region RW_IRAM1 (Base: 0x20000000, Size: 0x00006cc0, Max: 0x0000c000, ABSOLUTE, COMPRESSED[0x000000cc])
Base Addr Size Type Attr Idx E Section Name Object
0x20000000 0x00000023 Data RW 14 .data main.o
0x20000023 0x00000001 PAD
有没有懂的大哥帮忙解答一下,
hex的最后一段数据是什么内容?为什么会永远跟在app_endxx_id 后面?为什么.map文件没有描述?
|