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.
工具/软件:Code Composer Studio
您好!
我的项目在 OMAP-L138的 C674x 侧运行 NDK,输出文件始终约为300KB。
最近我向其添加了 http 服务器支持。 输出文件非常大! 现在大约为26MB!
我没有对 linker.cmd 文件进行任何更改或添加任何内容。
我认为这是具有.far 段的内容。 出于某种原因、我不知道为什么、它在 .far 段中插入填充大小为0x17e4bae 且填充了"A"的填充。
以下是% ofd6x - obj_display=none、sections MyApp.out 的输出
目标文件:MyApp.out 段信息 ID 名称 加载 addr run addr 大小对齐 alloc ---- ------ ---- ------ ---- 1 $build.attributes 0x00000000 0x00000000 0x24 1 N 2 .stack 0xc17e4bb0 0xc17e4bb0 0x100000 8年 3.bss 0xc1938e00 0xc1938e00 0x2cc 8年 4 .cinit 0xc1935a40 0xc1935a40 0x2e24 8年 5.Pinit 0x00000000 0x00000000 0x0 1 N 6.数据 0xC0000000 0xC0000000 0x0 1年 7 .sysmem 0x00000000 0x00000000 0x0 1 N 8 .args 0xC0000000 0xC0000000 0x0 4 N 9 xdc.meta 0xC0000000 0xC0000000 0xe7 8 N 10 .text:_c_int00 0x80010000 0x80010000 0xe0 32 Y 11 .debug_info 0x00000000 0x00000000 0xf2c2a 1 N 12 .debug_frame 0x00000000 0x00000000 0x44e9 1 N 13 .debug_line 0x00000000 0x00000000 0x14596 1 N 14 .text 0xc18e4bc0 0xc18e4bc0 0x47120 32 Y 15 .const.1 0xc18e4bb0 0xc18e4bb0 0x10 4年 16 .const.2 0xc192bce0 0xc192bce0 0x9d5e 8年 17.switch 0xc1938864 0xc1938864 0x37c 4年 18 .far 0xC0000000 0xC0000000 0x17e4bae 128 Y 19 .cio 0xc19390cc 0xc19390cc 0x120 4年 20 .vecs 0xc1938c00 0xc1938c00 0x200 1024 Y 21 .debug_Abbrev 0x00000000 0x00000000 0xC3e 1 N
在% ofd6x -x -g MyApp.out 的输出中、.far 段填充了大约3、000万"A"
.far 0x12 0xC0000000 0xC0000000 0x17e4bae 0x0 0x0 0x1. 0x80 对 0x15fce4 0x0 0x0 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
CCS 5.3
CGT 7.4.1
XDC 3.24.5.48
SYS/BIOS 6.34.2.18
NDK 2.21.0.32
有什么建议吗?
[引用 user="Aidin Haddadi"]它在 .far 段中插入填充大小为0x17e4bae 的填充值
您在 OFD XML 文件中看到的不是实际的二进制值、而是这些二进制值的 MIME base64编码。 字符 A 表示二进制值0。 因此、.far 段会用值0填充大量字节。
far 段未初始化。 但在您的情况下、它会被初始化并填充为0。 通常情况下、这是因为一个目标文件中名为.far 的某些输入段已初始化。 我们需要找出哪个目标文件提供这个已初始化的.far 段。
请将您的地图文件附加到下一个帖子。 因此论坛将接受它、添加文件扩展名.txt。
谢谢、此致、
乔治
你(们)好
非常感谢您的快速回复。 far 段中的每一行都有[fill = 0]。
输出段.far 中的所有输入段都显示[fill = 0],除了这个...
c179cb80 0001b706 webpage.obj (.far:NDK_OBJMEM)
文件 webpage.c (或可能是 webpage.cpp)中的输入段已初始化。 请检查它并找出发生这种情况的原因。
这个初始化的输入段是导致.far 输出段被初始化的部分、这意味着它中所有其他未初始化的输入段都用0填充。
谢谢、此致、
乔治
在 NDK http 服务器添加到项目中的 webdirect.c 文件中、有包含 Web 数据和 DATA_SECTION 指令的头文件:
#pragma DATA_SECTION (默认值、".far:NDK_OBJMEM"); #include #pragma DATA_SECTION (LOGOBAR、".far:NDK_OBJMEM"); #include
我删除了
#pragma DATA_SECTION
行和.out 文件大小恢复为正常范围。 到目前为止、该应用还可以在目标上正常工作。
这些是 NDK 样片。 为什么会发生这种情况?
更新:
我的应用程序只能在目标上的调试模式下正常工作。 当我使用 ASIgen 创建.bin 并将其刷写到 SPI 闪存中时、某些功能将无法正常工作。
你(们)好
[引用 USER="Sahin Okur)]要说明,您的应用程序在通过 JTAG 加载时工作正常,但在从 SPI 闪存引导时不工作吗? [/报价]
是的、这正是我的意思。
[报价用户="Sahin Okur"]您能否创建一个包含 AISgen 配置和引导设置详细信息的新线程?
好的、我会的。
但是这些#pragma 会对应用程序做什么?