你好:
我首先新建了一个工程,在工程里添加了三个文件,分别为:link.cmd ,boot.asm ,main.asm。link.cmd 里的内容如下:
–entry.point=RESET_RST
MEMORY
{
CEO: o=0X80000000 l=0x10000000
L2SRAM:o=0X00800000 l=0x0000fc00
}
SECTIONS
{
.myboot > L2SRAM
.my program >L2SRAM
.cinit >L2SRAM
.pinit >L2SRAM
.text >L2SRAM
.stack >L2SRAM
.bss >L2SRAM
.const >L2SRAM
.date >L2SRAM
.far >L2SRAM
.swith>L2SRAM
.sysmem >L2SRAM
.stack >L2SRAM
.tables >L2SRAM
.cio >L2SRAM
}
boot.asm 的内容如下:
.sect ".myboot"
.ref start
.global RESET_RST
RESET_RST:
MVKL .S2 start ,B3
MVKH .S2 start ,B3
B .S2 B3 ;跳转的main
NOP
NOP
…(多个NOP)
RESV1:(多个NOP)
RESV2:(多个NOP)
……….:
INT15:(多个NOP)
mian.asm 的内容如下:
.sect ".myprogram"
.global start
start:
…….(给A0~A15,B0~B15写0)
MVC TSR ,B0
OR B0,0x00000001,B0
MVC B0,TSR ;给TSR.GIE 写1
MVC.S2 CSR,B9
OR.S2 B9,0X00000001,B9
MVC.S2 B9,CSR ; 给CSR.GIE 写1
MVKL 0X00000203,B1
MVC B1,IER ;使能9号中断
MVKL 0X00000200,B1
MVC B1,ISR ;设置9号中断
NOP 2 ;这里应该开始跳转到IST
MVC IFR,B4
NOP 5
所有程序都在这里,可以成功生成.out 文件,当我选择 C6678 Device Funtional simulator ,little Endian ,加载.out 文件时,可以正常跳转到9号中断,但当我选择Blackhawk xds560v2-USB mezzanine emulator 时,连接上C6678板子,加载.out文件时,则始终不能跳转到9号中断,不知道为什么?TSR.INT 位始终为0,如能指点一二,不甚感激!
Andy Yin:
您好,
汇编好强,赞一个!
请问为什么要这样写代码呢,而不直接基于CSL写C代码进行开发呢?
C66x集成了大量高效指令,直接使用C写代码就可以了,同时可以屏蔽掉上面相关中断寄存器的直接控制。
smitch jasom:
回复 Andy Yin:
你好,
谢谢你的答复,我想,我的程序应该没有问题,因为选择C6678 Device Funtional simulator ,little Endian ,加载.out 文件时,可以正常跳转到9号中断。是不是,和C6678L板子的启动模式有关系,还是板子哪个地方有开关需要打开,才能响应中断?我查看了如下TSR.GIE,CSR.GIE, IER ,ISR, IFR ,都已经被正常设置了,就是CPU不能响应相关的中断,再麻烦高手你一下,帮我看看,跟硬件板子的设置,有没有关系?
Andy Yin:
回复 smitch jasom:
您好,
请确认在EVM板上调试时,是否选择了相应的gel文件运行。谢谢
smitch jasom:
回复 Andy Yin:
谢谢你,问题已解决,总算可以好好过元旦了,还有一个小问题,CCS5中为什么没有显示REP这个寄存器?但是资料中明明有啊?用MVC B4,REP也不报编译错误,可CCSV5中为什么找不到这个寄存器,我想查看它各位的值,该怎么查看呢?
Andy Yin:
回复 smitch jasom:
您好,
请问问题是怎么解决的,分享一下,谢谢