TI中文支持网
TI专业的中文技术问题搜集分享网站

TDA4VM: ti-cgt-armllvm_3.2.0.LTS编译器不识别部分汇编指令

Part Number:TDA4VM

ti-cgt-armllvm_3.2.0.LTS这个编译器在编译asm文件时,经常不识别一些指令,如下图,有两种错误,一个是if后面需要写绝对表达式,因为这两个宏没有定义,然后就报错了。还有一个是不能识别下面的类似.thumbfunc,.armfunc等指令。

源码如下:

   .if  __TI_ARM_V7M__ | __TI_ARM_V6M0__
        .thumbfunc _c_int00
        .thumbfunc _resetvectors
        .thumbfunc HF
   .else
        .armfunc _c_int00
        .armfunc _resetvectors
        .armfunc HF
   .endif

报错如下:

Targets\sdk\MainIsland\pdk_jacinto_08_05_00_36\packages\ti\csl\arch\r5\src\startup\boot.asm:55:9: error: expected absolute expression

   .if  __TI_ARM_V7M__ | __TI_ARM_V6M0__

        ^

Targets\sdk\MainIsland\pdk_jacinto_08_05_00_36\packages\ti\csl\arch\r5\src\startup\boot.asm:56:2: error: unknown directive

        .thumbfunc _c_int00

        ^

Targets\sdk\MainIsland\pdk_jacinto_08_05_00_36\packages\ti\csl\arch\r5\src\startup\boot.asm:57:2: error: unknown directive

        .thumbfunc _resetvectors

        ^

Targets\sdk\MainIsland\pdk_jacinto_08_05_00_36\packages\ti\csl\arch\r5\src\startup\boot.asm:58:2: error: unknown directive

        .thumbfunc HF

        ^

Targets\sdk\MainIsland\pdk_jacinto_08_05_00_36\packages\ti\csl\arch\r5\src\startup\boot.asm:60:2: error: unknown directive

        .armfunc _c_int00

        ^
Shine:

yinchuan xu 说:一个是if后面需要写绝对表达式

这个是要求的,请看下面的.if伪指令。.if absolute expressionhttps://www.ti2k.com/wp-content/uploads/ti2k/DeyiSupport_DSP_control_directives.html

yinchuan xu 说:还有一个是不能识别下面的类似.thumbfunc,.armfunc等指令。

请尝试使用.thumb_func,.armfunc不支持,请看下面user guide里的list4.1. List of GNU-Syntax Arm Assembly Directiveshttps://software-dl.ti.com/codegen/docs/tiarmclang/rel3_2_0_LTS/gnu_syntax_arm_asm_language/gnu_arm_directives/alphabetical_directive_directory.html

,

yinchuan xu:

Shine 说:这个是要求的,请看下面的.if伪指令。.if absolute expressionhttps://www.ti2k.com/wp-content/uploads/ti2k/DeyiSupport_DSP_control_directives.html

我理解绝对表达式是没问题的,但是像我上述例子中,两个宏未定义,应该识别为0即可,然后调用else的逻辑代码,但此处报的错却是不能识别这样的表达式

Shine 说:请尝试使用.thumb_func,.armfunc不支持,请看下面user guide里的list4.1. List of GNU-Syntax Arm Assembly Directiveshttps://software-dl.ti.com/codegen/docs/tiarmclang/rel3_2_0_LTS/gnu_syntax_arm_asm_language/gnu_arm_directives/alphabetical_directive_directory.html

此处是这几种指令都不识别,包括.thumb_func

综上:因为我编译的是SDK包中提供的MCAL Drv里的文件,所以这个应该是能正常适配编译器的才对。而我现在编译报错,是不是需要添加什么识别汇编asm文件的配置选项?

,

Shine:

我咨询了e2e工程师,下面是他的回复。您的汇编是用老版本的armcl写的,建议用较新的基于LLVM/Clang的TI Arm compiler>。This is assembly code written to be built with the assembler from the older TI proprietary Arm compiler, often called by its short name armcl.  To understand how to use it with the newer LLVM/Clang based TI Arm compiler, please see the Migrating Assembly Language Source Code part of the tiarmclang online manual.https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1320527/tda4vm-ti-cgt-armllvm_3-2-0-lts

,

yinchuan xu:

好的,汇编的问题我了解了。

那就是我之前提到的,最新的SDK9.1的包是需要用ti-cgt-armllvm_3.2.0.LTS这个编译器编的,但是包里提供的MCAL源文件却都是 armcl 编译器格式写的,所以想请问一下是否有ti-cgt-armllvm_3.2.0.LTS这个编译器对应的MCAL汇编文件示例?

,

Shine:

已跟进,请关注帖子的回复。

,

Shine:

请看下面e2e工程师的回复。MCAL应该是用 ti-cgt-armllvm_3.2.0.LTS写的。

I believe MCAL source files provided are written for ti-cgt-armllvm_3.2.0.LTS .

You can look for "What's new" section in below URL

https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/09_01_00_06/exports/docs/mcusw/mcusw_release_notes.html

,

yinchuan xu:

首先,这个文件跟SDK8.0中是一样的,但8.0中用的是armcl编译器,armcl也能编并且不会报错。

其次,如果这个文件本身没有问题,是不是ti-cgt-armllvm_3.2.0.LTS这个编译器需要开启一些commond指令,类似于下面

        COMPILER_FLAGS          = '-g \
                                   -mthumb -marm \
                                   -mcpu=cortex-r5 \
                                   -O0 \
                                   -munaligned-access \
                                   -mlittle-endian \
                                   -c '

,

Shine:

抱歉,e2e网站今天不能访问了,等修复了再更进您的问题。

,

Shine:

已跟进,请关注帖子的回复。

,

Shine:

麻烦回复一下下面工程师的问题。

Few things i didn't get here ,

Are the MCAL drivers showing compilation errors while building ?

or

Any errors while building examples ?

Please ask customer to state their problem a bit more clear.

,

yinchuan xu:

不好意思回复晚了,休年假刚复工。

MCAL 驱动在编译时,正常的.c 和 .h文件不报错,是启动代码中的.asm文件报错,报的具体错误就是我上面问题里描述的。

,

Shine:

没事,已跟进!请关注帖子的回复。

,

yinchuan xu:

你好,我尝试在CCS中编译SDK中提供的boot.asm(改成boot.s也一样)文件,发现也是不能编译,会报跟我上面描述的一模一样的问题。

想请问一下,有ti-cgt-armllvm_3.2.0.LTS这个编译器编译汇编文件的demo吗?

,

Shine:

已跟进!请关注帖子的回复。

,

Shine:

请看下面工程师的回复。他需要咨询其他工程师i,要晚点回复。

sorry for the delay.

The boot.asm file used in PDK has been used in MCAL as well. so i am trying to get more info from the team and expert was not available last week.Allow me some more time to get the info.

,

Shine:

请把下面的代码去掉再试试。

Remove the below in source code and check once.

 .if  __TI_ARM_V7M__ | __TI_ARM_V6M0__
        .thumbfunc _c_int00
        .thumbfunc _resetvectors
        .thumbfunc HF
   .else
        .armfunc _c_int00
        .armfunc _resetvectors
        .armfunc HF
   .endif

赞(0)
未经允许不得转载:TI中文支持网 » TDA4VM: ti-cgt-armllvm_3.2.0.LTS编译器不识别部分汇编指令
分享到: 更多 (0)