我的app项目本来是好的。底层代码是由hcl生成。
由于要做bootload,app 代码放到 0x8000 以后的地方,需要修改项目的sys_link.cmd文件,
将:
VECTORS (X) : origin=0x00000000 length=0x00000020
FLASH0 (RX) : origin=0x000008020 length=0x0005FEE0
修改成
VECTORS (X) : origin=0x000000800 length=0x00000020
FLASH0 (RX) : origin=0x0000020 length =0x00057FE0
发现项目无法debug。最终调试发现启动的时候,程序卡在starpup.c文件的 void _c_int00(void) 函数中。
系统的驱动代码是用HCG产生的。sys_link.cmd文件也是HCG产生的。后期手动修改的。
而我手动建立的小工程(未使用hcg),完全没有问题,可以debug。也可以通过bootload下载并正确运行
请问
1、使用了hcg生成代码的工程,在修改sys_link.cmd需要注意什么?
2、使用HCG,是否可以配置flah从而决定sys_link.cmd(我在该配置软件中未找到配置选项)
3、是否有其它的方向!!!
Susan Yang:
请问您现在使用的芯片具体型号是什么?若是可以的话,请给出完整的sys_link.cmd文件
不过我的电脑由于限制,暂时没有成功安装HCG,所以会在汇总您的信息后,将问题发给同事来测试一下
,
wei peng:
您好:
单片机的具体型号是:TMS5700432BPZQQ1sys_link.cmd为HCG生成,下面斜体部分是原始的文件内容(由于文件类型受限制。无法作为附件传输)
/*—————————————————————————-*/
/* sys_link.cmd */
/* */
/*
* Copyright (C) 2009-2016 Texas Instruments Incorporated – www.ti.com
*
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the
* distribution.
*
* Neither the name of Texas Instruments Incorporated nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*//* */
/*—————————————————————————-*/
/* USER CODE BEGIN (0) */
/* USER CODE END *//*—————————————————————————-*/
/* Linker Settings */–retain="*(.intvecs)"
/* USER CODE BEGIN (1) */
/* USER CODE END *//*—————————————————————————-*/
/* Memory Map */MEMORY
{
VECTORS (X) : origin=0x00000000 length=0x00000020
FLASH0 (RX) : origin=0x00000020 length=0x0005FFE0
STACKS (RW) : origin=0x08000000 length=0x00001500
RAM (RW) : origin=0x08001500 length=0x00006b00/* USER CODE BEGIN (2) */
/* USER CODE END */
}/* USER CODE BEGIN (3) */
/* USER CODE END *//*—————————————————————————-*/
/* Section Configuration */SECTIONS
{
.intvecs : {} > VECTORS
.text : {} > FLASH0
.const : {} > FLASH0
.cinit : {} > FLASH0
.pinit : {} > FLASH0
.bss : {} > RAM
.data : {} > RAM
.sysmem : {} > RAM/* USER CODE BEGIN (4) */
/* USER CODE END */
}/* USER CODE BEGIN (5) */
/* USER CODE END *//*—————————————————————————-*/
/* Misc *//* USER CODE BEGIN (6) */
/* USER CODE END */
/*—————————————————————————-*/我的操作是将第57和58行的:
VECTORS (X) : origin=0x00000000 length=0x00000020
FLASH0 (RX) : origin=0x00000020 length=0x0005FFE0修改成:
VECTORS (X) : origin=0x00008000 length=0x00000020
FLASH0 (RX) : origin=0x00008020 length=0x00057FE0其它未做修改。修改后可以生成bin文件,但无法调试。会卡死在startup.c的的
void _c_int00(void)函数中。以上, 是本次回复的全部内容,如有细节描述不清楚,请及时联系我加以补充。
期待您的回复。谢谢!
,
wei peng:
能不能快点啊,三天了还没回复。
,
Susan Yang:
抱歉,我的电脑刚刚成功安装HCG,我会在确认后给您回复
,
Susan Yang:
若是可以话,请您私信一下您的整个工程文件,谢谢
另外在E2E上有相关的讨论,您也可以先参考一下
e2e.ti.com/…/ccs-launchxl2-tms57012-after-distributing-flash-for-bootloader-test-i-am-not-able-to-use-interrupt-in-application-code
,
Susan Yang:
我在E2E上请教了相关的专家,您可以看一下相关的回复
e2e.ti.com/…/3655655
1. You can use CCS to load the application to x08000, then debug the application.
2. No, the HAL doesn't change the linker cmd file.
,
wei peng:
您好
如何配置到0x8000呢?未找到配置的地方!
,
wei peng:
我当前做法,是在debug后,点击 view disassembly,
然后再 0x8000的位置点击:move to line。
然后开始调试。
一样会卡死!
,
Susan Yang:
链接回复:
请在链接器cmd文件中更改.intvecs的地址,如下
应用程序位于0x10020,intvecs位于0x10020
更改后,该中断将被加载到0x00,但是所有其他代码将被定位到以0x10020开头的地址。
,
wei peng:
感谢您的回复:
可是我没看懂,请直接说吧,我应该怎么改。
是将 .intvecs 修改成 0x8000吗?
如下:
SECTIONS
{
.intvecs : 0x8000
}
,
Susan Yang:
根据描述 他修改的是 VECTORS 的起始地址