请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F28062 工具/软件:Code Composer Studio
你好,我又来了:)
我有一个 F28062。 我写了2个程序。 第一个是 FLASHA 中的自定义引导加载程序和 FLASHB - FLASHE 中的主应用程序。
我通过控制套件中的 f28069_flash_kernel 示例刷写了自定义引导加载程序(具有适用于 f28062的正确配置)。 自定义引导加载程序启用了 CSM。 使用新的自定义引导加载程序、我可以将新的主应用程序刷写到 FLASHB-FLASHE 中。 这正常工作。
但 RAM 引导加载程序不再工作。 我无法使用 ROM 引导加载程序加载修改后的 f28069_flash_kernel。
现在、我可以更新主应用程序、但不再更新引导加载程序。 我认为问题是、ROM 引导加载程序尝试将部分 RAM 引导加载程序置于安全的 RAM 中、但失败了...
这是问题吗?
以下是我的链接器文件:
MEMORY
{
PAGE 0:
/* BEGIN 用于“引导至 SARAM"引导加载程序模式*/
BEGIN :origin = 0x000000,length = 0x000002
RAMM0 :origin = 0x000050,length = 0x0003B0
RAML0_L3:origin = 0x008000,length = 0x002000// RAML0-3组合在一起,大小为.text */
reset :origin = 0x3FFFC0,length = 0x000002
FPUTABLES:origin = 0x3FD860,length = 0x0006A0//引导 ROM 中的 FPU 表*/
IQTABLES:origin = 0x3FDF00,length = 0x000B50 /*引导 ROM 中的 IQMath 表*/
IQTABLES2:origin = 0x3FEA50,length = 0x00008C /*引导 ROM 中的 IQ Math 表*/
IQTABLES3:origin = 0x3FEADC,length = 0x0000AA/*引导 ROM 中的 IQ Math 表*/
BootROM:origin = 0x3FF3B0,length = 0x000C10
page 1:
boot_RSVD:origin = 0x000002,length = 0x00004E // M0的一部分,引导 ROM 将此用于栈*/
RAMM1 :origin = 0x000400、length = 0x000400 /*片上 RAM 块 M1 */
RAML4 :origin = 0x00A000、length = 0x002000 /*片上 RAM 块 L4 */
RAML5 :origin = 0x00C000、length = 0x002000 /*片上 RAM 块 L5 */
USB_RAM :origin = 0x040000、length = 0x000800 /* USB RAM*/
}
SECTIONS
{
/*设置"引导至 SARAM"模式:
codestart 段(可在 DSP28_CodeStartBranch.asm 中找到)
将执行重定向到用户代码的开始。 */
codestart :>开始, PAGE = 0
ramfuncs :> RAMM0, PAGE = 0.text
:> RAML0_L3,page = 0
.InitBoot :> RAML0_L3,page = 0.cinit
:> RAMM0, PAGE = 0.Pinit
:> RAMM0, PAGE = 0.switch
:> RAMM0, PAGE = 0.reset
:>重置, PAGE = 0、TYPE = DSECT /*未使用、*/
.stack :> RAMM1, PAGE = 1.ebss
:> RAML5, PAGE = 1.econst
:> RAML5, PAGE = 1
.esysmem :> RAML5, PAGE = 1
IQmath :> RAML0_L3,page = 0
IQmathTables :> IQTABLES,PAGE = 0,TYPE =空载
//分配 FPU 数学区域:*/
FPUmathTables:> FPUTABLES,PAGE = 0,TYPE =空载
DMARAML5:> RAML5, PAGE = 1
/*如果调用 IQNexp()或 IQexp(),请取消注释以下段
库中的函数、以便利用
引导 ROM 中的相关 IQ Math 表(这可以节省空间和引导 ROM
1个等待状态)。 如果此部分未注释、则为 IQmathTables2
将被加载到其他存储器(SARAM、闪存等)中并将采用
上行空间、但0等待状态是可能的。
//
/*
IQmathTables2:> IQTABLES2,page = 0,type = NoLoad
{
IQMath.lib (IQmathTablesRam)
}
*/
/*如果调用 IQNasin()或 IQasin(),请取消注释以下部分
库中的函数、以便利用
引导 ROM 中的相关 IQ Math 表(这可以节省空间和引导 ROM
1个等待状态)。 如果此部分未注释、则为 IQmathTables2
将被加载到其他存储器(SARAM、闪存等)中并将采用
上行空间、但0等待状态是可能的。
//
/*
IQmathTables3:> IQTABLES3,page = 0,type = NoLoad
{
IQMath.lib (IQmathTablesRam)
}
*/
}
谢谢