“线程: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)。
我确信你可以告诉我——我是嵌入式系统世界中的新手! 我会一直插上电源,并期待收到任何反馈!
最佳
克里斯