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.

[参考译文] Compiler/CCStudio-Sitara:在特定部分重新分配C++函数

Guru**** 2555630 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/587208/compiler-ccstudio-sitara-c-function-reallocated-in-specific-section

部件号:CCStudio-Sitara
“Thread:SysBIOS”中讨论的其它部件

工具/软件:TI C/C++编译器

您好,

我的配置如下:

- Sitara ARM3359
—Code Composer Studio版本CCS 7.1 .0.0.0014万
-SYS/BIOS 6.45 .0.20 实时操作系统
- XDC工具3.31。00.24
-编译器GNU v 4.9 3 (Linaro)
-NDK 2.24 .3.35
SysBIOS SDK 2.1 .1.2
软件Texas Instrument ecat应用程序,带bakoff path v 5.11

我的代码是用C++语言编写的。

我创建了两个部分(secure数据和secure代码置于 0x83f0.017万地址),以强制链接器将频谱代码和数据放在频谱段中。

我有一个c++对象:M_SAFETY,我使用以下属性在secure数据部分中分配它(数据):

  • SafetyBlock m_safety __attribute__(section("secure_data"));

我可以在映射文件中看到效果:

secure_code    0x830f0万     0x170
               0x83f0万               。 =对齐(0x4)
 *(安全代码*)
 secure代码   0x83f0万     0x128 .safetyCpp.o
....

 *(secure数据*)
 secure数据   0x8300.017万  0x625b8 .SafetyCpp.o
               0x8300.017万              m_safety
               0x8.3万c78               m_ci

 

我的问题:是否可以在本节中映射一个c++对象函数?

例如,在secure_code部分只执行以下代码中的Lonely InitParam()函数:

 

Safety.h
类安全块

   公开:
      SafetyBlock(void);
      虚拟~安全块();

      void InitializeRef (void); //在标准地址中执行它(0x800万)
      bool InitParam(void);   //我要在secure代码部分执行它(0x8300万)
}
----------------------------------

Safety.cpp

安全块:安全块(void)

}

安全块:~安全块()

}

Void安全块:InitializeRef (void)

 ....

}

//初始化参数
布尔安全块::InitParam(void)//   我要在secure代码部分执行它(0x8300万)

...

}

----------------------------------

是否有人知道secure代码部分强制执行InitParam的语法?

谢谢。

JM

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

    很抱歉,我发现现在没问题:

    在safety.h文件中,我在函数末尾添加了:

          布尔初始参数(void)__attribute__(section("secure_code"));

    “R é sult:

    此致,

    JM

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

    正确。  section属性可应用于变量和函数。

    谢谢,此致,

    -George

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

    好的George,

    因此,我找不到分配堆栈系统的方法。

    在SYS/BIOS/运行时窗口中,可以输入堆部分(用于放置系统堆的部分):

    cfg.script:

    bios.heapSection ="secure数据";

    映射文件中的区域

    *(secure数据*)

    secue_data 0x83f0.434万 0x7d00 D:\projects\Pilotage\6_Products\CNumDsp2015\src\AxisDriver\AM335x_release\configPkg\package\cfg\AM335x_app_pa8fg.oa8fg

    0x83f0.434万 ti_SysBIOS_States_HeapMem_Instance_State_0_buf__A

    但堆栈没有任何功能,是否可能?

    JM

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

    好的,我发现,使用平台编辑器可以做到:

    再见

    JM