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.

[参考译文] TMS570LC4357:具有安全诊断库的引导加载程序链接器

Guru**** 2421420 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1329892/tms570lc4357-bootloader-linker-with-safety-diagnostic-library

器件型号:TMS570LC4357

您好!

我正在开发引导加载程序和基于 SAFERTOS 的应用程序。 我的应用程序是工作与所有的外设与 booloader ,现在我已经实现了安全诊断库,没有引导加载程序代码是工作的 ,对于引导加载程序,当我正在做更改链接器,它不工作.

1.引导加载程序链接器文件  

VECTORS (X):origin=0x00000000 length=0x00000020 vfill = 0xffffffff
FLASH0 (RX):origin=0x00000020 length=0x001FFFE0 vfill = 0xffffffff
FLASH1 (RX):origin=0x00200000 length=0x00200000 vfill = 0xffffffff
SRAM (rwx):origin=0x08002000 length=0x0002D000
堆栈(RW):origin=0x08000000 length=0x00002000

引导加载程序调用


复位入口
b _c_int00
解除引用
b #0x1ffff8
svcEntry
b #0x1ffff8
预取入口
b #0x1ffff8
数据输入
b #0x1ffff8
反向中断
LDR PC、[PC,#-0x1b0]
LDR PC、[PC,#-0x1b0]

2.具有 bootloadrer 链接器的应用  

VECTORS (X):origin=0x00200000 length=0x00000080 vfill = 0xffffffff
KERN_FUNC (RX):origin=0x00200080 length=0x0000ff80 vfill = 0xffffffff
FLASH0 (RX):origin=0x00210000 length=0x001D0000 vfill = 0xffffffff
//FLASH1 (RX):origin=0x00200000 length=0x00200000 vfill = 0xffffffff //用于优化引导加载程序
堆栈(RW):origin=0x08000000 length=0x00001800
KERN_DATA (RW):origin=0x08001800 length=0x00000800
RAM (RW):origin=0x08002000 length=0x0007E000

3个具有安全诊断功能的应用链接器

VECTORS (X):origin=0x00000000 length=0x00000080 vfill = 0xffffffff
KERN_FUNC (RX):origin=0x00000080 length=0x0000ff80 vfill = 0xffffffff
FLASH0 (RX):origin=0x00010000 length=0x001F0000 vfill = 0xffffffff
FLASH1 (RX):origin=0x00200000 length=0x00200000 vfill = 0xffffffff
堆栈(RW):origin=0x08000000 length=0x00003000
kern_data (rw): origin=0x08003000 length=0x00002000
RAM (RW):origin=0x08005000 length=0x0007B000

4. 适用于引导加载程序连接器且具有安全诊断功能的应用

VECTORS (X):origin=0x00200000 length=0x00000080 vfill = 0xffffffff
KERN_FUNC (RX):origin=0x00200080 length=0x0000ff80 vfill = 0xffffffff
FLASH0 (RX):origin=0x00210000 length=0x001D0000 vfill = 0xffffffff
//FLASH1 (RX):origin=0x00200000 length=0x00200000 vfill = 0xffffffff //用于优化引导加载程序
堆栈(RW):origin=0x08000000 length=0x00003000
kern_data (rw): origin=0x08003000 length=0x00002000
RAM (RW):origin=0x08005000 length=0x0007B000

引导加载程序 和应用程序的前两个组合正在工作。 但是、我试图在设置安全诊断库时 启用中断 I s 在第一行调用、它进入该错误

在地址"0x4"处中断、没有可用的调试信息、或在程序代码之外。

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

    尊敬的 Praveen Kumar:

    我已开始处理此问题、并将尽快为您提供我的更新。

    --
    谢谢。此致、
    Jagadish。

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

    尊敬的 Praveen Kumar:

    您可以尝试进一步增加堆栈并再次对其进行测试吗?

    Unknown 说:
    协议栈(rw): origin=0x08000000 length=0x00003000

    如果可能、尝试将栈大小设置为0x00006000长度?

    --
    谢谢。此致、
    Jagadish。

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

    好的,我会尝试,让你知道

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

    嗨,jagadish,我 尝试过这个,但也遇到了同样的问题

    我将附加代码的内存分配

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

    尊敬的 Praveen Kumar:

    您是否有可能出于调试目的共享整个项目?

    甚至您也可以发送私人消息? 或者有任何最简单的项目有问题吗?

    --
    谢谢。此致、
    Jagadish。

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

    你好,jagadish,好的 ,我告诉你的意思是, 当我禁用配置文件数据 行时,你可以帮助我解决安全诊断中使用的连接器的这 一设置。代码不运行这是从和示例代码的安全库  

    .intvecs palign (32)、start (lnkStartFlashAddress)、start (lnkKernelFuncStartAddr)
    fill =0xffffffff{}>向量


    .kernel_function end( lnkKernelFuncEndAddr ):
    {
    *(内核函数)
    }> KERN_FUNC

    unpriv_flash palign (32),end( lnkEndFlashAddress ):
    {
    *(.text)
    *(.const)
    }> FLASH0

    .cinit align (32):{}> FLASH0
    .pinit align (32):{}> FLASH0

    stack_data start( lnkKernelDataStartAddr ):{}> stacks
    kernel_data end( lnkKernelDataEndAddr ):{}> kern_data
    .bss :{}> RAM
    .data :{}> RAM
    .sysmem:{}> RAM
    Log_data:> RAM //log
    PROFILE_DATA:> RAM //配置文件

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

    您好 Praveen:

    对迟交的答复表示歉意。

    为什么您不为配置文件区域分配一些特定的长度、如下所示

    只需尝试为 profile_data 和 log_data 分配一些长度、然后验证。

    --
    谢谢。此致、
    Jagadish。

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

    你好,jagadish,

    当我的代码从0x00000开始时、 该配置文件数据链接器设置可以正常工作、但它无法与引导加载程序一同工作、其中 u 更改状态地址0x0020000  

    您能否为我提供与引导加载程序配合使用的任何安全诊断示例代码(基于裸机/ FRRE RTOS)

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

    尊敬的 Praveen Kumar:

    您能否为我提供使用引导加载程序的任何安全诊断示例代码(基于 BareMetal/frre RTOS)

    我甚至咨询了我的高级同事、遗憾的是、我们没有任何此方面的示例代码。

    --

    谢谢。此致、
    Jagadish。