我们的项目有一个客户引导加载程序。
*闪存被分区以支持引导加载程序和应用程序。
引导加载程序从0xE000开始。 引导加载程序和闪存矢量是固定的、
--应用程序从0x8000开始
*在 RAM 中创建一个矢量表,闪存矢量表指向 RAM 矢量表。
--这样,引导加载程序和应用程序可以覆盖 RAM 矢量表,以适应每个可执行文件的要求( ISR 处理程序)。
*当引导加载程序完成加载或验证应用程序后,它将跳至0x8000以运行应用程序
--应用程序的链接程序命令文件包含此项以将应用程序的开头放在0x8000
.boot > 0x8000
{
-l rts*.lib (.text)
}
*我遇到的问题是应用矢量表被放置在地址0x8000处。
这意味着从引导加载程序跳转到0x8000时正在运行 ISR 向量,这是不好的。
--期望是将应用程序的可执行文件开头放在0x8000。
这是一个传统的代码,在一些较旧的产品中工作。 这可能是从 CCS7.x/16.9.2LTS 移至 CCS11.2/21.6.0LTS 的赝像。
*我发现链接器命令文件的相关文档很差
———我看了底漆@:
software-dl.ti.com/.../sdto_cgt_Linker-Command-File-Primer.html
--我也有 SLAU132Y–"MSP430 Optimizing C/C++ Compiler v21.6.0.STS"
以下是文档中未涉及的一些问题:
#什么是-l (如上所示)?
#初级读本页显示了使用--library=Sinewave_lib.lib (.text)的示例。
+何时使用双破折号?
+双短划线语法选项列表(例如--libary )在哪里?
+单字符语法选项(如-l )的列表在哪里?
+ My Example 显示了 rts*。lib<boot_special.obj 初级读本显示了 Sinewave_lib.lib。
%这里的要求是什么?
%.lib 格式是否与.obj 相同?
+其中列出了可安装在 ?
%我的示例具有 boot_special.obj。 这是内在的东西吗? 如何查找这些内容的列表?
%我发现了有关 boot_special.obj 的此内容。 无帮助。 这是什么?
$ e2e.ti.com/.../how-to-force-the-msp430-start-address-in-ccsv6
$另来自 SLAA685、第30页(这种格式与文档中的格式似乎不同)
:: rts430x_lc_rd_eabi.lib : boot_special.obj
::(.text:_isr:_c_int00_noargs_noexit)
:::: isr_trap.obj
::(.text:_isr:__TI_isr_trap)
*您能否提供所有链接器命令文件选项、标志、语法、缩写等的完整列表和说明?
*那么,我如何使应用程序在0x8000正确启动?