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.

[参考译文] RM57L843:SafeTI诊断程序库2.4 中的堆栈大小.........0

Guru**** 2539500 points
Other Parts Discussed in Thread: RM57L843, HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1095718/rm57l843-stack-size-in-safeti-diagnostic-library-2-4-0

部件号:RM57L843
主题中讨论的其他部件: HALCOGEN

您好,

我的客户使用RM57Lx和SafeTI诊断库。
在链接程序命令文件中:  
\SafeTI诊断库\NOS.0\buil\RM57L843_NOS\SL_RM57L843_NOS_LINK_CMD 2.4
堆栈大小似乎配置为每个2048字节。

    .STACK_DATA_svc     : {. += 2048;} > STACKS, RUN_START(StackModeSVC)
    .STACK_DATA_fiq     : {. += 2048;} > STACKS, RUN_START(StackModeFIQ)
    .STACK_DATA_irq     : {. += 2048;} > STACKS, RUN_START(StackModeIRQ)
    .STACK_DATA_abt     : {. += 2048;} > STACKS, RUN_START(StackModeABT)
    .STACK_DATA_und     : {. += 2048;} > STACKS, RUN_START(StackModeUND)
    .STACK_DATA_sys     : {. += 2048;} > STACKS, RUN_START(StackModeSYS)


另一方面,头文件:
\SafeTI诊断库2.4 \Safety_library\include\sl_config.h
堆栈大小似乎各为1024字节。
#define STACK_SIZE_MODE_SVC 1024u   /**< Stack size for SVC mode */
#define STACK_SIZE_MODE_FIQ 1024u   /**< Stack size for FIQ mode */
#define STACK_SIZE_MODE_IRQ 1024u   /**< Stack size for IRQ mode */
#define STACK_SIZE_MODE_ABT 1024u   /**< Stack size for ABT mode */
#define STACK_SIZE_MODE_UND 1024u   /**< Stack size for UND mode */
#define STACK_SIZE_MODE_SYS 1024u   /**< Stack size for SYS mode */


这是否有问题? 如果是,应修改哪一项?

谢谢,此致,
佐治一郎

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

    你好 ,Koichiro-san,

    这是软件错误。 它们应该是2048。 正确的选项应为:

    #define stack_size_mode_SVC 2048u /**< SVC模式的堆栈大小*/
    #define stack_size_mode_fiq 2048u /**< FIQ模式的堆栈大小*/
    #define stack_size_mode_IRQ 2048u /**< IRQ模式的堆栈大小*/
    #define stack_size_mode_ABT 2048u /**< ABT模式的堆栈大小*/
    #define stack_size_mode_und 2048u /**< und模式的堆栈大小*/
    #define stack_size_mode_SYS 2048u /**< SYS mod*/的堆栈大小

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

    QJ:您好!

    我明白了。 客户将在SL_CONFIG.h中修复这些问题
    顺便说一句,如果错误未得到修复,会发生什么情况?

    谢谢,此致,
    佐治一郎  

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

    QJ:您好!

    客户还有堆栈配置的其他问题。
    正如我们所讨论的,安全库配置SVC,FIQ,IRQ,ABT,UND和SYS。 共6个叠块。
    另一方面,HalCoGen没有SYS堆栈,但它有USR堆栈。 共6个叠块。
    根据ARM R5 TRM,有7种操作模式:USR,SVC,FIQ,IRQ, ABT,UND和SYS。 共计7.

    使用RM57L的正确配置是什么?

    谢谢,此致,
    佐治一郎

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

    QJ:您好!

    客户还发现*。map文件与*。cmd文件中配置的文件不对应。
    在*.cmd文件中定义的.stack_data_xxx顺序如下。
    Svc => Fiq => IRQ => abt => und => sys.(Svc => Fiq => IRQ => abt => und => sys.

    *.cmd文件  

        .STACK_DATA_svc     : {. += 2048;} > STACKS, RUN_START(StackModeSVC)
        .STACK_DATA_fiq     : {. += 2048;} > STACKS, RUN_START(StackModeFIQ)
        .STACK_DATA_irq     : {. += 2048;} > STACKS, RUN_START(StackModeIRQ)
        .STACK_DATA_abt     : {. += 2048;} > STACKS, RUN_START(StackModeABT)
        .STACK_DATA_und     : {. += 2048;} > STACKS, RUN_START(StackModeUND)
        .STACK_DATA_sys     : {. += 2048;} > STACKS, RUN_START(StackModeSYS)
    


    但*。map文件按以下顺序显示。
    ABT => Fiq => IRQ => svc => sys => und.(ABT => Fiq => IRQ => Svc => sys => und

    *.map文件
    .STACK_DATA_abt
    *          0    08020000    00000800     UNINITIALIZED
                      08020000    00000800     --HOLE--
    
    .STACK_DATA_fiq
    *          0    08020800    00000800     UNINITIALIZED
                      08020800    00000800     --HOLE--
    
    .STACK_DATA_irq
    *          0    08021000    00000800     UNINITIALIZED
                      08021000    00000800     --HOLE--
    
    .STACK_DATA_svc
    *          0    08021800    00000800     UNINITIALIZED
                      08021800    00000800     --HOLE--
    
    .STACK_DATA_sys
    *          0    08022000    00000800     UNINITIALIZED
                      08022000    00000800     --HOLE--
    
    .STACK_DATA_und
    *          0    08022800    00000800     UNINITIALIZED
                      08022800    00000800     --HOLE--
    
    08020000  StackModeABT
    08020800  StackModeFIQ
    08021000  StackModeIRQ
    08021800  StackModeSVC
    08022000  StackModeSYS
    08022800  StackModeUND
    


    是什么原因造成了这种错位?

    谢谢,此致,
    佐治一郎

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

    你好 ,Koichiro-san,

    run_start地址由链接程序生成。 地址可能与链接程序cmd文件中的语句顺序不一致。

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

    QJ:您好!

    地址406.7506万地址可能406.7506万可能不会按顺序排列在语句中[/cmd]。

    您的意思是地址不匹配根本不是问题吗?

    您是否还能回答以下问题?

    我们406.1859万我们讨论406.1859万讨论了IRQ,ABT,ABQ,ABQ,ABQ,ABT和ABQ,ABQ,ABQ,ABQ,ABQ,ABQ,ABT和ABQ的配置。 共6个叠块。
    另一方面,HalCoGen没有SYS堆栈,但它有USR堆栈。 共6个叠块。
    根据ARM R5 TRM,有7种操作模式:USR,SVC,FIQ,IRQ, ABT,UND和SYS。 共计7.

    使用RM57L的正确配置是什么?[/QUOT]

    谢谢,此致,
    佐治一郎

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

    sys和usr使用相同的堆栈空间。

    您407.3866万您的意思不是不是所有地址不匹配?[/报价]

    没问题。