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.

[参考译文] TMS470MF06607:加载 FlashEABI 示例代码时出现问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1085704/tms470mf06607-issues-loading-the-flasheabi-example-code

部件号:TMS470MF06607
“线程:HALCOGEN”中讨论的其它部件

您好,

目前正在使用具有板载 XDS100V2仿真器探头的 TMS 470评估套件。

我可以使用 HALCOGEN 创建项目 shell,但无法加载 FlashEABI_Flash 示例代码,下面是我的过程:

首先从.pjt 文件导入项目:

  

在这种情况下,我尝试使用'FlashEABI_Flash.pjt:

按照“TMS470/570平台 F035闪存 API 参考”中的说明进行操作
Guide v1.09'使用以下配置设置(我已尝试所有三个库):

当我尝试调试代码时,我会看到以下错误列表:  

来自 boot.asm 文件:

《美国国家安全与发展报告》,《国家安全与发展报告》,第2
;*启动 v2.17 *
;*版权所有(c) 1996-2001德州仪器(TI)公司*
《美国国家安全与发展报告》,《国家安全与发展报告》,第2

《国际环境与发展》,《环境与发展》,《环境与发展报告》
;* boot.asm
;*
;*这是 TMS470 C++程序的初始启动例程。
;*必须将其与所有 C++程序链接并加载。
;*
;*本模块执行以下操作:
;* 1)分配堆栈并初始化堆栈指针
;*2)执行自动初始化
;* 3)调用文件范围构建的初始化例程
;* 4)调用函数主程序以启动 C++程序
;* 5)调用标准的退出例程
;*
;*本模块定义了以下全局符号:
;* 1)__stack 栈存储器区域
;*2)_c_int00引导例程
;*
《国际环境与发展》,《环境与发展》,《环境与发展报告》
《国际环境与发展》,《环境与发展》,《环境与发展报告》
;* 32位状态引导例程*
《国际环境与发展》,《环境与发展》,《环境与发展报告》

全局__stack
;*******************************
;*定义用户模式堆栈(默认大小为512)
;*******************************
_stack:.usect ".stack",0,4

全局_c_int00
全局_StackFIQ_PV
全局_StackIRQ_PV
全局_StackSV_PV
全局_StackABT_PV
全局_StackUDEF_PV
全局_StackUSER_PV
全局_pexit
Fiq _SP_Add .word _StackFIQ _PV;FIQ Stack 指针初始化值
IRQ_SP_Add .word _StackIRQ_PV;IRQ 堆栈指针初始化值
Svc_SP_Add .word _StackSVC_PV;IRQ 堆栈指针初始化值
abt_SP_Add .word _StackABT_PV;ABT 堆栈指针初始化值
UDEF_SP_Add .word _StackUDEF_PV;UNDEF 堆栈指针初始化值
user_sp_add .word _StackUSER_PV;用户/系统堆栈指针初始化值
;*******************************
;*函数 DEF:_c_int00
;*******************************
_c_int00:

.mmsg "CPSR 接收 位已更改-未来的 CPU 架构可能无法兼容”

;**********---------------------------------------------------------------------------
;*初始化 FIQ 模式堆栈指针
;**********---------------------------------------------------------------------------
MOV r0,#0;
MOV R1,#0;
MOV R2,#0;
MOV R3,0;
MOV R4,#0;
MOV R5,#0;
MOV R6,#0;
MOV r7,#0;
MOV R8,0;
MOV R9,#0;
MOV R10,#0;
MOV r11,#0;
MOV R12,#0;
MOV r0,#0x11;FIQ 模式= 10001
MSR CPSR,r0
LDR R13,FIQ_SP_ADD

;**********---------------------------------------------------------------------------
;*初始化主管模式堆栈指针
;**********---------------------------------------------------------------------------
MOV r0,#0x13;SVC 模式=10011
MSR CPSR,r0
LDR R13,SVC_SP_ADD

;**********---------------------------------------------------------------------------
;*初始化中止模式堆栈指针
;**********---------------------------------------------------------------------------
MOV r0,#0x17;ABT 模式=10111
MSR CPSR,r0
LDR R13,ABT_SP_ADD

;**********---------------------------------------------------------------------------
;*初始化 IRQ 模式堆栈指针
;**********---------------------------------------------------------------------------
MOV r0,#0x12;IRQ 模式=10010
MSR CPSR,r0
LDR R13,IRQ_SP_ADD

;**********---------------------------------------------------------------------------
;*初始化未定义的模式堆栈指针
;**********---------------------------------------------------------------------------
MOV r0,#0x1B;UDEF 模式= 11011
MSR CPSR,r0
LDR R13,UDEF_SP_ADD

;**********---------------------------------------------------------------------------
;*初始化系统/用户模式堆栈指针
;**********---------------------------------------------------------------------------
MOV r0,#0xDF;系统模式= 11011111
MSR CPSR,r0;IRQ,FIQ 解掩码需要主要完成。
LDR R13,user_SP_ADD
;;*;-----
;*设置为用户模式
;;*;-----
;R0女士,CPSR
;BIC r0,r0,#0x1F;清除模式
;ORR r0,r0,#0x10;设置用户模式
;MSR CPSR,r0

;;*;-----
;*初始化用户模式堆栈
;;*;-----
; ldr sp,c_stack
; LDR r0,c_stack_size
;添加 sp,sp,r0

;**********---------------------------------------------------------------------------
;*初始化设备(系统,内存映射等)
;**********---------------------------------------------------------------------------
BL 初始化

BL _主

;**********---------------------------------------------------------------------------
;*如果应用程序没有呼叫退出,请呼叫退出(1)
;**********---------------------------------------------------------------------------
MOV R0,#1
; BL _exit
_pexit B _pexit

;**********---------------------------------------------------------------------------
;*完成,LfOOP 永远
;**********---------------------------------------------------------------------------
L1:B L1


《国际环境与发展》,《环境与发展》,《环境与发展
;*进程初始化表。
;*
;*该表由以下格式的一系列记录组成:
;*
;*.word <数据长度(字节)>
;*.word <要初始化的变量地址>
;*.word <data>
;*
;*初始化表以零长度记录终止。
;*
《国际环境与发展》,《环境与发展》,《环境与发展

tbl_addr:.set r0
VAR_addr:.set r1.
长度:.set r2.
数据:.set r3.

自动初始化:
b rec_chk

;**********---------------------------------------------------------------------------
;*处理初始化记录
;**********---------------------------------------------------------------------------
记录:LDR var_addr,[tbL_addr],#4;

;**********---------------------------------------------------------------------------
;*复制初始化数据
;**********---------------------------------------------------------------------------
TST var_addr,#3;查看目标是否已对齐
bNE _Bcopy;如果不是,请复制字节
subs length,length,#4;如果 length <= 3,也可以
bMI _bcont;复制字节

wcopy:LDR 数据,[tbL_addr],#4;
STR 数据,[var_addr],#4;复制数据字
subs length,length,#4;
bpl wcopy;
bcont:增加长度,长度,#4;
BEQ (续);

_bcopy:LDRB 数据,[tbL_addr],#1;
STRB 数据,[var_addr],#1;复制数据的字节
subs length,length,#1;
BNE bcopy;

_cont:ands length,tbL_addr,#0x3;确保地址
RSBNE 长度,长度,#0x4;为单词对齐
ADDNE tbL_addr,tbL_addr,长度;

REC_CHK:LDR 长度,[tbL_addr],#4;下一步处理
CMP 长度,#0;如果长度为,请记录
BNE 记录;非零

MOV PC,LR


;*******************************
此模块使用的;*常量
;*******************************
c_stack .long __stack
c_stack_size .long __stack_size


;**************************************
;*未定义的引用*
;**************************************
全局 IND_CALL
全局_exit
全局_main
全局初始化
全局__stack_size

结束

我的直觉是一个简单的配置更改或编译器问题(尝试了最新版本以及 API 文档中引用的5.1.6)。

我确信你可以告诉我——我是嵌入式系统世界中的新手! 我会一直插上电源,并期待收到任何反馈!

最佳

克里斯

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

    您好,Chris,

     很抱歉,我对 TMS470M 的了解有限。 您在哪里找到 了 FlashEABI_Flash 示例。 查看 TMS470Mx 的壁龛生成器,下面仅提供了一些示例。 如果加载程序时遇到问题,您是否可以先尝试加载这些已知示例? 如果正确加载这些示例,则可以更轻松地隔离问题并加载其它不随壁龛生成程序一起提供的程序。