This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] LP-AM263P:无入口点的 CCS 项目。

Guru**** 2202770 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1403658/lp-am263p-ccs-project-without-entry-point

器件型号:LP-AM263P

工具与软件:

你好。

我需要在 CCS 中创建工程、其中包含一些函数/数据、应该通过固定地址从其他工程中调用。 在其他 MCU/IDE 中、我曾使用链接器脚本将这些函数/数据放置到定义的内存区域和编译的工程中、而没有用于创建 elf/hex 文件的启动文件选项、该文件稍后可以刷写到 ROM 中。

在尝试使用 CCS 执行相同任务时、我已经使用 TI Clang v3.2.2编译器创建了空的 CCS 工程(不使用 SDK、因为我不需要初始化 MCU 并使用该工程中的任何外设)、并遇到了以下问题:

1.我无法从构建中排除标准开始文件和入口点。   为此、我在 GCC 链接器中使用选项"-nostartfiles"选项、但对 TI Clang 没有任何类似之处。

2.如何排序连接器/编译器以避免在优化期间从输出中排除某些函数/数据? 这是必需的、因为我 不想在此工程中使用入口点、编译器会"优化"所有内容、因此我需要手动定义"入口点"(工程中不能有入口点、只有数据才应放置在特定地址)。 我在 GCC 链接器脚本中使用了保留字、但   CCS/TI Clang 的链接器命令文件无法识别此字。

3、编译后、我看不到任何*。appimage 文件要加载到闪存中、只有*。out 和*。hex (我已启用它)、但没有关于如何在 Launchpad 开发板上将这些文件类型加载到闪存中的说明。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Ivan

    Unknown 说:

    请查找不包括入口点函数的详细信息: https://software-dl.ti.com/codegen/docs/tiarmclang/rel3_0_0_STS/compiler_manual/program_loading_and_running/run-time-initialization-slau1316977.html?highlight=startup#ram-model-vs-rom-model

    Unknown 说:
    2. 在优化期间如何排序连接器/编译器以不从输出中排除某些函数/数据? 这是必需的、因为我 不想在此工程中使用入口点、编译器会"优化"所有内容、因此我需要手动定义"入口点"(工程中不能有入口点、只有数据才应放置在特定地址)。 我在 GCC 链接器脚本中使用了保留字、但   CCS/TI Clang 的链接器命令文件无法识别该字。[/QUOT]

    我将在下周早些时候介绍有关这方面的更多详细信息。

    Unknown 说:
    3. 编译后、我没有看到任何*。appimage 文件要加载到闪存中、只有*。out 和*。hex (我已启用它)、但没有关于如何在 Launchpad 开发板上将这些文件类型加载到闪存中的说明。[/QUOT]

    请观看此视频、了解应用程序映像创建过程: AM263Px MCU+ SDK:引导工具

    [/quote]
    [/quote]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="500225" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1403658/lp-am263p-ccs-project-without-entry-point/5374709 #5374709"]
    . 我无法从编译中排除标准开始文件和入口点。   为此、我在 GCC 链接器中使用选项"-nostartfiles"选项、但对 TI Clang 没有任何类似之处。

    请查找不包括入口点函数的详细信息: https://software-dl.ti.com/codegen/docs/tiarmclang/rel3_0_0_STS/compiler_manual/program_loading_and_running/run-time-initialization-slau1316977.html?highlight=startup#ram-model-vs-rom-model

    [报价]

    很抱歉、我在提供的文档中找不到问题的答案。 RAM 和 ROM 模型都提供了一些用于初始化应用程序的例程(在运行时或加载时)、在本例中应避免这种情况。 我只需要在没有"主要"函数的情况下编译应用程序、 并使用不同的运行和加载地址的引导例程、然后将其加载到闪存中。 所有数据初始化和对 RAM 的应对都将由自己的自定义应用程序完成。

    我发现链接器设置中的设置选项'--relocated'和 RAM 或 ROM 模型都不允许我删除'main'函数,但在这种情况下,编译器包含所有函数(其中一些可以优化掉  ),我在.map 文件中的符号地址都从0x0000xxxx 开始,尽管段运行和加载地址是正确的(符号地址匹配段地址,如果编译没有'--relocated'选项)。
    在生成的 .hex 文件中、所有数据/文本都放置在 运行地址而不是加载地址中、我认为这是错误的、因为此文件实际上应该加载到 SoC 中。


    从.map 文件:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    SECTION ALLOCATION MAP
    output attributes/
    section page origin length input sections
    -------- ---- ---------- ---------- ----------------
    .text 0 60100070 00000074 RUN ADDR = 70040070
    60100070 00000014 platform_library.o (.text.convert_float_to_long)
    60100084 0000000c --HOLE-- [fill = 0]
    60100090 00000014 platform_library.o (.text.convert_float_to_ulong)
    601000a4 0000000c --HOLE-- [fill = 0]
    601000b0 00000014 platform_library.o (.text.convert_long_to_float)
    601000c4 0000000c --HOLE-- [fill = 0]
    601000d0 00000014 platform_library.o (.text.convert_ulong_to_float)
    .config_table
    * 0 60100000 00000070 RUN ADDR = 70040000
    60100000 00000070 config_table.o (.config_table)
    GLOBAL SYMBOLS: SORTED BY Symbol Address
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    从.cmd 文件:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SECTIONS
    {
    .text : run = OCRAM, load = FLASH, align = 8
    .data : run = OCRAM, load = FLASH, align = 8
    .rodata : run = OCRAM, load = FLASH, align = 8
    .bss : > OCRAM, align = 8
    .config_table : run = OCRAM, load = FLASH, align = 8
    }
    MEMORY
    {
    SBL : ORIGIN = 0x70000000 , LENGTH = 0x40000
    OCRAM : ORIGIN = 0x70040000 , LENGTH = 0x40000
    FLASH : ORIGIN = 0x60100000 , LENGTH = 0x80000
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    从.hex 文件:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $A70040000,
    00 00 00 00 00 00 00 02 38 D1 B7 17 00 00 00 06 00 00 02 00 00 00 00 0A
    00 00 02 10 00 00 10 00 00 01 00 04 3B 03 12 6F 00 00 00 32 00 00 00 00
    00 00 00 50 00 00 00 32 00 01 70 00 00 00 00 02 3A 83 12 6F 00 00 00 06
    00 00 01 00 00 00 00 09 00 00 01 10 FF FF FF FF 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    EE 30 0A 41 EE 80 0A 20 EE BD 0A C0 EE 10 0A 10 E1 2F FF 1E 00 00 00 00
    00 00 00 00 00 00 00 00 EE 30 0A 41 EE 80 0A 20 EE BC 0A C0 EE 10 0A 10
    E1 2F FF 1E 00 00 00 00 00 00 00 00 00 00 00 00 EE 01 0A 10 EE B8 1A C1
    EE 21 0A 00 EE 30 0A 20 E1 2F FF 1E 00 00 00 00 00 00 00 00 00 00 00 00
    EE 01 0A 10 EE B8 1A 41 EE 21 0A 00 EE 30 0A 20 E1 2F FF 1E
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="500225" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1403658/lp-am263p-ccs-project-without-entry-point/5374709 #5374709"]
    3、编译后、我看不到任何*。appimage 文件要加载到闪存中、只有*。out 和*。hex (我已启用它)、但没有关于如何在 Launchpad 开发板上将这些文件类型加载到闪存中的说明。

    请观看此视频、了解应用程序映像创建过程: AM263Px MCU+ SDK:引导工具

    [报价]

    本文档描述了多核映像或 RPRC 文件创建过程、但这不是我的目标。 对不起误解。

    我需要将一些经过编译的*。out (或*。hex)文件(包含一些数据和/或代码)加载到 Launchpad 开发板上的闪存中。 此代码/数据不应由 SBL 运行、而是由通过 SDK 创建的"标准"应用程序读取/复制(并按地址运行、但不在本主题范围内)、该应用程序已生成*。appimage 和*。rprc 文件。

    简而言之:如何将*。out 或*。hex 文件(采用 Intel 或其他格式)加载到 LM-AM263P 上的闪存中?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    伊凡、您好!

    请允许我在某个时候获取此信息、因为这不是 SDK 产品中提供的内容、所以我会尽量多问一些问题、但其中一些问题对我来说非常陌生。 我会尽量在8月30日之前回来 同时、您能告诉我这里的用例是什么吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    有关第三个问题、请查看 makefile_ccs_bootimage_gen  文件。 它负责生成引导映像的过程、该映像将由 ROM>加载

    文件路径:mcu_plus_sdk\examples\drivers\boot\sbl_ospi\am243x-evm\r5fss0-0_nortos\ti-arm-clang\ Makefile_ccs_bootimage_gen

    我将尝试获取有关 Q1和 Q2的更多信息

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    当然、这不是关于 SDK 的问题、而是关于编译器/链接器和 ROM 闪存工具的问题。

    用例:用于飞行控制计算机的简单中间件软件。 它应运行由双方作为单独项目开发的应用程序、这些应用程序应作为单独的二进制文件编译并加载到 ROM 中。 当然、这些工程不应具有任何 MCU 初始化和标准启动代码、应用程序的入口点是定制的、因此不使用"主"函数。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="500225" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1403658/lp-am263p-ccs-project-without-entry-point/5378348 #5378348"]

    有关第三个问题、请查看 makefile_ccs_bootimage_gen  文件。 它负责生成引导映像的过程、该映像将由 ROM>加载

    文件路径:mcu_plus_sdk\examples\drivers\boot\sbl_ospi\am243x-evm\r5fss0-0_nortos\ti-arm-clang\ Makefile_ccs_bootimage_gen

    [报价]

    谢谢、非常有帮助。

    我已经创建了映像、并使用偏移0xA0000将其加载到闪存中。 但现在我看到、加载的映像包含经过编译的数据/代码、还包含大量信息、对我来说是无用的、而且很难找到实际的数据/代码起始地址。

    如何避免添加额外信息?

    以下是已编译的.hex 文件:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $A70060000,
    00 00 00 00 00 00 00 02 38 D1 B7 17 00 00 00 06 00 00 02 00 00 00 00 0A
    00 00 02 10 00 00 10 00 00 01 00 04 3B 03 12 6F 00 00 00 32 00 00 00 00
    00 00 00 50 00 00 00 32 00 01 70 00 00 00 00 02 3A 83 12 6F 00 00 00 06
    00 00 01 00 00 00 00 09 00 00 01 10 FF FF FF FF 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    EE 30 0A 41 EE 80 0A 20 EE BD 0A C0 EE 10 0A 10 E1 2F FF 1E 00 00 00 00
    00 00 00 00 00 00 00 00 EE 30 0A 41 EE 80 0A 20 EE BC 0A C0 EE 10 0A 10
    E1 2F FF 1E 00 00 00 00 00 00 00 00 00 00 00 00 EE 01 0A 10 EE B8 1A C1
    EE 21 0A 00 EE 30 0A 20 E1 2F FF 1E 00 00 00 00 00 00 00 00 00 00 00 00
    EE 01 0A 10 EE B8 1A 41 EE 21 0A 00 EE 30 0A 20 E1 2F FF 1E
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


    这里是闪存部分(我的实际数据/代码从地址0x600A06C8开始)

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    0x600A0000 C4068230 AC048230 010203A0 26140202 6C9AAA01 EDE8F90D 4E8289BC B6F4D5EE 302E56FB 2A09060D F7864886 0D01010D 81300005 300B3197 55030609 02130604 0B315355 03060930 0C080455
    0x600A004C 31435302 060F3011 07045503 654E080C 6F592077 21316B72 03061F30 0C0A0455 78655418 49207361 7274736E 6E656D75 2C2E7374 636E4920 3013312E 55030611 0A0C0B04 41544953 4D204152
    0x600A0098 0F315543 03060D30 0C030455 626C4106 31747265 061D301F 48862A09 010DF786 10160109 65626C41 67407472 69742E74 6D6F632E 0D171E30 38303432 38313732 32303334 320D175A 32393034
    0x600A00E4 34383136 5A323033 31978130 0609300B 06045503 53550213 09300B31 04550306 53020C08 30113143 5503060F 080C0704 2077654E 6B726F59 1F302131 04550306 54180C0A 73617865 736E4920
    0x600A0130 6D757274 73746E65 49202C2E 312E636E 06113013 0B045503 49530A0C 41524154 55434D20 0D300F31 04550306 41060C03 7265626C 301F3174 2A09061D F7864886 0109010D 6C411016 74726562
    0x600A017C 2E746740 632E6974 82306D6F 0D302202 862A0906 0DF78648 05010101 02820300 8230000F 82020A02 C2000102 A50A8209 FA72202F 84E7932B F6735A11 3F93D3EB A3FD96BE CFC39D7F FF3F8127
    0x600A01C8 AE14BA02 2CFC86D8 A8EF2EDF 22005A93 04DF19FD 1C39B70A D368703E 9329E6A7 ADD0173A D9CEA0EB 49A828A3 4C9CBAED FA39A9D3 8A32E51B AD393690 0BB218FF 5DC26CC2 7280DDB6 D5764F67
    0x600A0214 F8E05362 9C455B86 BECFDFA3 9A16AE0C 3B4C6352 FB1A3F17 FDF505D7 BF1A4534 477EDE62 1CA30776 79F336D2 BAFFD1BF 60ABB48B D1A91DB5 35EF348C CEDB1B75 24BE79AE F07A9935 002BBC16
    0x600A0260 33AF60C9 424ED118 FF02EFFF 8BAA6783 A4F096B9 149E6FA4 07DBEBCA C45CCBF9 018384AC C1204730 F0A019C2 071085D2 C32FBC3C 00156431 DD72C4E9 6B56E788 7AC3A2F8 FA12507E 069C88F4
    0x600A02AC 16A97566 7AF303BE CF3C4ECE B7784F78 8A95FE5A 3D3DE349 33EC38BE CAF1AF9D 023CF1EF D25BC707 75A50579 8D85AFE3 2E539C56 FA6B88F5 02F130DF 478C73A3 409B5EE5 5611E3A2 E1948808
    0x600A02F8 6D971275 960D2D1E 97D27EE6 0545B9DE D43113C8 CB374407 20A31945 67910D95 A828F840 F9709880 ED4BC81B 7B30FF0C 30EE47A6 465A38D6 60C11C1E 12D1CD3B 6DD59B79 D0F581CB 5543EB96
    0x600A0344 41538BF5 056BE032 1F12AE0F 3696AED8 335398F7 8C0B23F9 DC1E7AD4 3726A357 8D8FA4DD A2038D58 C51081A2 A59393FB 75F61E05 48CEBE17 C30E6DCC E1D354A7 FA23E624 D86D3A65 A4E0F434
    0x600A0390 48798C34 23AEAA73 45906371 92BDDEE9 13548B5B 022B0A51 01000103 040182A3 00018230 03060C30 04131D55 01033005 2230FF01 062B0906 82010401 04010126 02133015 01020101 00010210
    0x600A03DC 00700404 02020020 5C30E400 062B0906 82010401 04020126 064D304F 48866009 04036501 40040302 6457A8BE 58F185A4 FF0FF82E D8267917 2AE9C4BB FA6AE87E 767203D6 13140DFD 61333C04
    0x600A0428 D81B99EC BC85A3F3 37E227E3 9870CD03 C11B929B 75F47563 03720EEE 09061230 0401062B 01268201 30050403 01010203 09065A30 0401062B 01268201 304D0408 0040044B 00000000 00000000
    0x600A0474 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 02000000 01020101 00010200 09060D30 8648862A 01010DF7
    0x600A04C0 0300050D 00010282 73C4766A 44EC8A1C E461F7E7 E1B40762 B57C62E8 2E6695F3 83BA21C3 36C4109E C5F413A6 FD9FA103 8EB62748 1AFA7C03 F1E4BBF3 69B647AD A7D4AACC B9F9A000 21A5E542
    0x600A050C 29556881 E6E7846E 4F7D472F 61D65B7F 3C9051DF 33A5FFB1 2F607C9C 2687D5AE 21C10DEC AEE3665E 6C72F8B0 98DF4A5C 60CAC7A0 100D7F5F 5E0FF10B BB76AD08 7C5830F3 15A8B4F6 DF70C956
    0x600A0558 165754F0 1EC27235 8D6736DE 51C6F3E5 6FEE55A2 B4939C8F 5AFA801F C11260EC 715AA1D2 35B06917 BEEEBF35 D782E011 A5A8FC3E 0511592D 8C9C33D1 8904D4E9 2C47F7BB 2B412A19 86DEAE6D
    0x600A05A4 50A128D9 1BC23224 6AAA34FE 4BA9E161 940CE2D8 73AE6A20 5C00F2C5 472F17BF F174BF0A BC8C6D61 C56EB42B D9D6D710 A334F204 D30C380E 6CFE1EEB 15B41BCC 9452EFD5 CE987AAB 5546EA69
    0x600A05F0 84C83C61 013C3A8B BB1F393F 38AA0623 D887A3BF 1A14A04A 372DDED5 BF62A281 59C45526 8E46F720 5BAD71C3 DABD67AA BC5D2083 4FBFC233 9679405C 3B9132BF 62EC462D C3239744 675C36DB
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    下面是行 makefile、它会构建映像:

    Fullscreen
    1
    2
    $(OBJCOPY) --strip-all -O binary $(PROFILE)/$(OUTNAME).out $(BOOTIMAGE_BIN_NAME)
    $(BOOTIMAGE_CERT_GEN_CMD) --image-bin $(BOOTIMAGE_BIN_NAME) --core R5 --swrv 1 --loadaddr $(SBL_RUN_ADDRESS) --sign-key $(BOOTIMAGE_CERT_KEY) --out-image $(BOOTIMAGE_NAME) --debug DBG_SOC_DEFAULT
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


    下面是 UART flashloaded *。cfg 文件中的行:

    Fullscreen
    1
    --file=../../test1/Debug/test1.tiimage --operation=flash --flash-offset=0xA0000
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    1.我无法从构建中排除标准开始文件和入口点。   为此、我在 GCC 链接器中使用选项"-nostartfiles"选项、但对 TI Clang 没有任何类似之处。

    2.如何排序连接器/编译器以避免在优化期间从输出中排除某些函数/数据? 这是必需的、因为我 不想在此工程中使用入口点、编译器会"优化"所有内容、因此我需要手动定义"入口点"(工程中不能有入口点、只有数据才应放置在特定地址)。 我在 GCC 链接器脚本中使用了保留字、但   CCS/TI Clang 的链接器命令文件无法识别此字。

    [报价]

    你好,伊凡,如果我正确理解这一点 ,你建立了程序的一部分,然后编程到闪存。  我们将其称为第一个构建部分 A。程序的其余部分将在以后构建。  调用此命令后构建 B 部分。 A 部分和 B 部分之间的连接不是符号、而是您需要提前选择的硬编码地址。 我的理解是否正确?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="500225" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1403658/lp-am263p-ccs-project-without-entry-point/5382478 #5382478"]

    1.我无法从构建中排除标准开始文件和入口点。   为此、我在 GCC 链接器中使用选项"-nostartfiles"选项、但对 TI Clang 没有任何类似之处。

    2.如何排序连接器/编译器以避免在优化期间从输出中排除某些函数/数据? 这是必需的、因为我 不想在此工程中使用入口点、编译器会"优化"所有内容、因此我需要手动定义"入口点"(工程中不能有入口点、只有数据才应放置在特定地址)。 我在 GCC 链接器脚本中使用了保留字、但   CCS/TI Clang 的链接器命令文件无法识别此字。

    你好,伊凡,如果我正确理解这一点 ,你建立了程序的一部分,然后编程到闪存。  我们将其称为第一个构建部分 A。程序的其余部分将在以后构建。  调用此命令后构建 B 部分。 A 部分和 B 部分之间的连接不是符号、而是您需要提前选择的硬编码地址。 我的理解是否正确?

    [报价]

    总的来说是的、是这样。

    只有地址并不是完全硬编码、而是作为'C 部分'工程加载到闪存的地址、这实际上是硬编码(通过放置到链接器脚本中的专用存储器部分)。 但在本示波器上、我们可以将它们视为硬编码。

    但关于这些问题,请阅读我对'--relocatable '选项的回答。 我有一些结果、现在有更多特定问题。 THERA 是上面的一些代码示例。

    我发现链接器设置中的设置选项'--relocated'和 RAM 或 ROM 模型都不允许我删除'main'函数,但在这种情况下,编译器包含所有函数(其中一些可以优化掉  ),我在.map 文件中的符号地址都从0x0000xxxx 开始,尽管段运行和加载地址是正确的(符号地址匹配段地址,如果编译没有'--relocated'选项)。
    在生成的 .hex 文件中、所有数据/文本都放置在 运行地址而不是加载地址中、我认为这是错误的、因为此文件实际上应该加载到 SoC 中。

    [报价]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Ivan

    与我们的编译器专家确认后 、我们不支持这种组织和构建代码的方法。 我在这里的建议是根据编译器当前支持来组织和构建代码。  A 部分未编程到闪存中。  它组织为目标文件库。  B 部分将元件 A 库添加到其链接中。  A 部分和 B 部分之间的连接通过符号实现。  在创建最终可执行文件后、将其编程到闪存中。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在此处的建议是根据编译器当前支持情况组织和构建代码。  A 部分未编程到闪存中。  它组织为目标文件库。  B 部分将元件 A 库添加到其链接中。  A 部分和 B 部分之间的连接通过符号实现。  创建最终的可执行文件后、将其编程到闪存中。[/QUOT]

    此解决方案在我们的项目中是不可接受的、因为在实际用例中、'Part B'是在我们提供带有已闪存的'Part A'的硬件解决方案后由双方公司开发的。 因此、'B 部分'应该被编译/闪存(使用定制加载程序、这将是'A 部分'的一部分)为独立项目、这个项目可在不对'A 部分'进行任何改变的情况下被改变或更新。

    我建议只是忘记洞图片,至少现在。 您能否回答有关'--relocatable '选项的问题而不考虑整个项目? 我可以创建相关主题以使其更容易、因为这个主题会变得有点杂乱。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    伊凡,你好!  

    能否创建一个与可重定位问题相关的新线程、并提及与编译器标志相关的详细信息、以便直接联系到我们的编译器专家? 它会干净得多。