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.

[参考译文] TMS320F28021:如何使用#pragma 从 RAM 中选择要运行的代码的一部分?

Guru**** 2519770 points
Other Parts Discussed in Thread: TMS320F28021, CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/987380/tms320f28021-how-do-i-select-a-part-of-the-code-to-run-from-ram-using-pragma

器件型号:TMS320F28021
Thread 中讨论的其他器件: controlSUITE

我已经为 TMS320F28021开发了一个程序。 为了提高执行速度、我希望从 RAM 运行部分代码。 我已经使用以下语句包含了从 RAM 运行的主程序:

#pragma CODE_SECTION (HF_1KVA_CURRENT_STEP、"ramfuncs")

但我的主代码的大小非常高。 在构建程序时出现以下错误:

****项目 HF_1KVA_CURRENT 的配置调试构建****

"C:\\ti\\ccs1010\\ccs\\utils\bin\\gmake"-k all

编译文件:"e:/Frontline/HF_UPS/1KVA/CHECK123_Current/HF_1KVA_Current_ert_rtw/HF_1KVA_Current.c
调用:C2000编译器
"C:/PROGRA~3/MATLAB/supPOR~1/R20A/3P778C~1.ins/TIC200~1.ins/ti-CGT-C2000_18.12.2.LTS/bin/cl2000"-include_path="C/PROGRAM_3/MATLAB/supp~~~~1.ins/excl20ines="-"/C20ines"/content/ines"/content/r /Frontline/HF_UPS/1KVA/CHECK123_Current 路径:"/Ct20ines"/content/trines"/content/trines"/content/trines"/content/r /ProgramData/MATLAB/SupportPackages/R2020b/toolbox/target/supportpackages/tic2000_base/crl 路径:-content/r 20ines"/content/trab/ines"/content/trab-content/trab-content/trines"/content/content/trab/content/content/content/trab/ines="-content/trab/content/trab/content/content/content/content/content/content/content/cn/content/cn/content/cn/content/cn/content/cn/content/cn/content/cn/content/cn/content/cn/content/cn/content/cn/content/cn/content/cn/content/cn/content/cn/content/cn/content/cn/content/cn/content//ProgramData/MATLAB/SupportPackages/R2020b/toolbox/target/shared/externalmode_demon/include /ti/controlSUITE/device_support/f2802x/v230 /ti/controlSUITE/device_support/f2802x/v230/f2802x_headers/include /ti/controlSUITE/device_support/f2802x/v230/f2802x_common/include /ProgramData/MATLAB/SupportPackages/R2020b/toolbox/shared/supportpackages/tic2000/inc /ProgramData/MATLAB/SupportPackages/R2020b/toolbox/shared/supportpackages/tic2000/src /ProgramData/MATLAB/SupportPackages/R2020b/toolbox/target/supportpackages/tic2000/inc /ProgramData/MATLAB/SupportPackages/R2020b/toolbox/target/supportpackages/tic2000/src /Frontline/HF_UPS/1KVA/CHECK123_Current/slprj/ert/_sharedutils /Frontline/HF_UPS/1KVA/CHECK123_Current/HF_1KVA_Current_ert_rtw define=HAVESTDIO --define=model_has_divel_loaded_SFNCS=0 --define=classic_interface=0 --define=TID01EQ=0 --define=tdefine=dLMFCN=0 --define=r=prer=prer=prend_for_model=0-define=-define=f=f=-m=-specify_r=-mce_target=n=-specify_for_target=-specify_=-cy=f=degr=-m=n=-specify_for_target=f=-specify_for_target=-specify_ag=f=-specify_for_target=f=-ce_target=-specify_ag=-for_target=d=-specify_ag=-for_target=d=-for_target=-for_id=r=f=-for_target=-specify_for_id=r=-for_target=-for_target=d=-specify_for_target=-for_ HF_1KVA_Current.de silicon_version=28 -i -O2 -v28 -ml -DF28021 -dboot_find_flash=1 -preproc_with_compile -preproc_dependency="hf_1kva_currence.d_ray""E:/Frontline/HF_UPS/1KVA/CHECK123_Current/HF_1KVA_Current_ert_rtw/HF_1KVA_Current.c
完工:"e:/Frontline/HF_UPS/1KVA/CHECK123_Current/HF_1KVA_Current_ert_rtw/HF_1KVA_Current.c

构建目标:"HF_1KVA_CURRENT_OUT"
调用:C2000链接器
"C:/PROGRA~3/MATLAB/supPOR~1/R20A/3P778C~1.ins/TIC200~1.ins/ti-cgt-C2000-18.12.2.LTS/bin/CLPM2000 - define=h=c2000_define=define=center=0=define=define=define=0-define=center=define=define=define=0-define=center=define=center=0=center=center=define=define=define=define=center=center=0=cy=center=define=define=define=center=define preproc_dependency=HF_1KVA_Current.out --preproc_with_compile --large_memory_model --silicon_version=28 -i -O2 -ml -DF28021 -dboot_from_flash=1 -z --warn_SECTIONS -i":/proglab/v1.dtrab/compne-se-de-t.1rbs-rbs-rbs-rbs-rbs-rbs-r20g.pr-rbs-rbs-rbs-rbs-rbs-rg.rbs-rbs-rbs-rbs-rbs-rbs-rbs-rg.1rg.1rg.pr-rg.rbs-rg.rbs-rbs-rbs-rbs-rbs-rbs-rbs-rbs-rg.1rg.1rg.pr-rg.1rf.rg.rg.rbs-rg.1rf.rf.rf.rbs-rg.rf~~~~~~~~ 优先级-mHF_1KVA_CURRENT_MAP -o "HF_1KVA_CURRENT_OUT""./DSP28xx_SciUtil.obj ""/f2802x_GlobalSchedulableDefs.mB.""/hf_1KVA_CURRENT_OBJ""./f2802x_obj "/f2802x_board./f2802x_rts_div./f2802x_rts"/trintr./f2802x_rts"/f28mw.tr.tr.tr.tr./f28m.tr.s/mw.tr.tr.tr./f2802x_rts_rts_rts"/f28m./tr.tr./f28m.trb./f28m.trb.s/m.trb./f28m.tr.tr.tr./f28m.tr.s/m.s/g.tr.s/g.tr.tr.tr.tr.tr.tr.tr.tr.tr.tr.s/f2802x_rts_rts_rts_rts./ProgramData/MATLAB/SupportPackages/R2020b/toolbox/target/supportpackages/tic2000/src/c28021.cmd /ProgramData/MATLAB/SupportPackages/R2020b/toolbox/target/supportpackages/tic2000/src/c2802xPeripherals.cmd /ProgramData/MATLAB/SupportPackages/R2020b/toolbox/shared/supportpackages/tic2000/rtlib/IQmath.lib /Frontline/HF_UPS/1KVA/CHECK123_Current/slprj/ert/_sharedutils/rtwshared.lib

"C:/ProgramData/MATLAB/SupportPackages/R2020b/toolbox/target/supportpackages/tic2000/src/c28021.cmd "、第44行:错误:
程序将不能放入可用的内存中。 使用运行放置
"ramfuncs"大小0xfb4 PAGE 0的对齐/分块失败。
可用存储器范围:
PRAML0大小:0xc00未使用:0xc00最大空洞:0xc00
错误:链接期间遇到错误;未生成"HF_1KVA_CURRENT_OUT.OUT"

>>编译失败
Makefile:158:目标'HF_1KVA_CURRENT_OUT.OUT'的配方失败
Gmake:***[HF_1KVA_CURRENT]错误1.
gmake:目标"全部"不会由于错误而重新生成。

****构建完成****

是否有方法在 RAM 中包含主函数的一部分?

提前感谢!

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

    感谢您访问 E2E 论坛。  在这种情况下、您需要将主函数分解为一些较小的子函数、以便可以将部分分配给 RAM 而不是整个.main。  从您最初的帖子中、我认为您了解#pragma 的工作原理、但这里有一个链接、其中显示了一个示例、该示例仅将某些 ISR 例程放置在 RAM 中、而不是将所有主例程放置在 RAM 中。

    https://dev.ti.com/tirex/explore/node?node=AADnELSTJ.J0QApZ9YJglg__gYkahfz__LATEST

    最棒的
    Matthew