找不到分区的地址空间 3

公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

我正在使用 TriCore Eclipse IDE v6.2r1 在 Aurix TC27x 上开发我的软件。

编译进展顺利,但是在链接时,我遇到了以下错误:lt
" c E157: 找不到 " .zdata.appctrl._999001_led_Count (2) 部分的地址空间 3 我不明白这个错误来自哪里?""



变量声明/定义的实现方式如下:
 stati c uint8 Led_Count = 0;static
uint8 Led_Mode = 0;
(如果我删除这个变量,那么即使它没有初始化,另一个变量也会发生同样的错误)我的

lsl 文件定义了带有通配符的部分 inregionblock_0_dsp r_core0

an_shuping_0-1694070709292.png

an_shuping_1-1694070767563.png

 

 

0 点赞
8 回复数
Translation_Bot
Community Manager
Community Manager
Community Manager

@User13836 你能帮忙吗? 不胜感激!

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

此链接器错误表示使用的链接器 LSL 文件存在问题。 错误消息描述如下:

E157:找不到分区<段的地址

(sectionid>)


每个分区都有关联的地址空间,但找不到该部分的地址空间 
< >它有空格 id s

 

可能你确实定义了自己的导数,而不是使用 TriCore 工具安装中包含的现有 LSL 文件,而且这个自定义创建的衍生定义文件确实包含有关核心/space_id_offset 定义的错误。 如果不知道你正在使用的 LSL 文件的内容,就无法找到根本原因。 如果您可能不会在此论坛中披露此文件, CAN 请考虑通过电子邮件地址 support@tasking.com 联系 TASK 工具支持,以便仅与支持人员共享文件以供调查。

最诚挚的问候,

Ulrich Kloidt 任务工具支持

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

lsl 文件已发送到您的邮箱,请查看,谢谢!

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

非常感谢您分享 LSL 文件。 链接器错误的原因是 LSL 文件中的错误。 它没有定义近乎可寻址 (abs18) 的空间,因此也没有定义所有近段(以.z 开头) 无法放置。 您应该就此问题与 LSL 文件的供应商联系。

一种缓解措施是确保您的应用程序不使用任何近乎可寻址的数据。 这是通过添加 C 编译器选项-N0 来实现的。 此外,你不能在数据定义中使用 __near 限定符,因为这会迫使编译器创建一个几乎可以访问的部分。

另一种方法是自己将 abs18 空间定义添加到 LSL 文件中。 我给你发送了你的 LSL 文件的修改版。 这包括如下所示的附加内容。

 

架构 TC
{
endianness
{
little;
}

空间线性
{
id = 1;
mau = 8;
map (src_offset=0x00000000, dest_offset=0x00000000, size=4G, dest=bus:fpi_bus);
}

//英国加法起始
空间 abs18
{
id = 3;
mau = 8;
map (src_offset=0x00000000, dest_offset=0x00000000, size=16k, dest=space:linear);
map (src_offset=0x10000000, dest_offset=0x10000000, size=16k, dest=space:linear);
map (src_offset=0x20000000, dest_offset=0x20000000, size=16k, dest=space:linear);
map (src_offset=0x30000000, dest_offset=0x30000000, size=16k, dest=space:linear);
map (src_offset=0x40000000, dest_offset=0x40000000, size=16k, dest=space:linear);
map (src_offset=0x50000000, dest_offset=0x50000000, size=16k, dest=space:linear);
map (src_offset=0x60000000, dest_offset=0x60000000, size=16k, dest=space:linear);
map (src_offset=0x70000000, dest_offset=0x70000000, size=16k, dest=space:linear);
map (src_offset=0x80000000, dest_offset=0x80000000, size=16k, dest=space:linear);
map (src_offset=0x90000000, dest_offset=0x90000000, size=16k, dest=space:linear);
map (src_offset=0xa0000000, dest_offset=0xa0000000, size=16k, dest=space:linear);
map (src_offset=0xb0000000, dest_offset=0xb0000000, size=16k, dest=space:linear);
map (src_offset=0xc0000000, dest_offset=0xc0000000, size=16k, dest=space:linear);
map (src_offset=0xd0000000, dest_offset=0xd0000000, size=16k, dest=space:linear);
map (src_offset=0xe0000000, dest_offset=0xe0000000, size=16k, dest=space:linear);
map (src_offset=0xf0000000, dest_offset=0xf0000000, size=16k, dest=space:linear);
}
//UK 加法结束

bus fpi_
{
mau = 8;
width = 32;
}
bus}

亲切的问候,

乌尔里希·克洛伊特

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

非常感谢你的回答,我的问题已经解决了! 但是在我的任务中出现了以下编译问题。 错误变量未包含在我的程序中,因为我在任务分配中没有使用启动程序。 我想知道为什么会提示这些变量

an_shuping_0-1694159165116.png

 

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

你似乎使用的是 TASKING Eclipse 环境,默认情况下,当创建新项目时,会将所有内核的启动代码添加到 C 中。 CAN 如果 cstart.c,cstart_tc1.c,cstart_tc2.c 等源文件是您的应用程序源代码的一部分。 如果是这样,如果您不想使用 TASK 启动代码, CAN 删除它们。

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

当我创建项目时,我没有添加启动代码,也没有 cstart.c 还有程序中的其他文件,我不知道为什么会提示这个错误,或者我会把项目代码发给你看看?

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

您好,我上次偷偷解决了问题,但是有新的问题,如下图所示, CAN 合并我的lsl文件并帮我再看一遍,好吗?

an_shuping_0-1694657133254.png

 

 

 

0 点赞