还没搞明白flash映射的地址,程序全部下载到内存。reset之后,什么都没了
努力楼
12楼
第一个稍微有那么点样子的DSP程序,相当于一个Hello world:
一小段汇编:
.title "ex.asm"
.mmregs
STACK .usect "STACK",10H
.bss x,1
.def start
.data
table: .word -7
.text
start STM #0,SWWSR //这里是程序入口,跟CMD文件对应
STM #STACK+10H,SP
STM #x,AR1
MVPD table,*AR1
LD *AR1,A
BC end,AGT
ABS A
STL A,@x
end: B end
.end
外加一段CMD进行内存分配:
Debug\ex.obj //要进行连接的OBJ文件
-o Debug\ex.out //生成的目标文件
-m Debug\ex.map //map文件
-e start //程序入口
MEMORY
{
PAGE 0:
EPROM:org = 0E00H,len = 100H
PAGE 1:
SPRAM:org = 0060H,len = 20H
DARAM:org = 0080H,len = 100H
}
SECTIONS
{
.text :>EPROM PAGE0
.data :>EPROM PAGE0
.bss :>SPRAM PAGE1
STACK :>DARAM PAGE1
}
程序实验了几个简单的指令,体验了CMD文件的写法。
几行汇编是抄的,伪指令还没搞明白。有待进一步理解
这段小程序在链接的时候还有三个Warning如下:
<Linking>
>> D:\dspPRJ\ex42\ex42.cmd, line 19: warning:
multiple definitions of SECTION named 'PAGE0'
>> D:\dspPRJ\ex42\ex42.cmd, line 21: warning:
multiple definitions of SECTION named 'PAGE1'
>> warning: entry point other than _c_int00 specified
第三个倒好理解,因为程序的入口点c_int00我没有定义。我定义了start作为程序的入口
前两个warning,说是SECTIONS段里边重复定义了PAGE0和PAGE1.我哪里重复定义了啊?
一小段汇编:
.title "ex.asm"
.mmregs
STACK .usect "STACK",10H
.bss x,1
.def start
.data
table: .word -7
.text
start STM #0,SWWSR //这里是程序入口,跟CMD文件对应
STM #STACK+10H,SP
STM #x,AR1
MVPD table,*AR1
LD *AR1,A
BC end,AGT
ABS A
STL A,@x
end: B end
.end
外加一段CMD进行内存分配:
Debug\ex.obj //要进行连接的OBJ文件
-o Debug\ex.out //生成的目标文件
-m Debug\ex.map //map文件
-e start //程序入口
MEMORY
{
PAGE 0:
EPROM:org = 0E00H,len = 100H
PAGE 1:
SPRAM:org = 0060H,len = 20H
DARAM:org = 0080H,len = 100H
}
SECTIONS
{
.text :>EPROM PAGE0
.data :>EPROM PAGE0
.bss :>SPRAM PAGE1
STACK :>DARAM PAGE1
}
程序实验了几个简单的指令,体验了CMD文件的写法。
几行汇编是抄的,伪指令还没搞明白。有待进一步理解
这段小程序在链接的时候还有三个Warning如下:
<Linking>
>> D:\dspPRJ\ex42\ex42.cmd, line 19: warning:
multiple definitions of SECTION named 'PAGE0'
>> D:\dspPRJ\ex42\ex42.cmd, line 21: warning:
multiple definitions of SECTION named 'PAGE1'
>> warning: entry point other than _c_int00 specified
第三个倒好理解,因为程序的入口点c_int00我没有定义。我定义了start作为程序的入口
前两个warning,说是SECTIONS段里边重复定义了PAGE0和PAGE1.我哪里重复定义了啊?
13楼
搞明白了:
SECTIONS
{
.text :>EPROM PAGE0
.data :>EPROM PAGE0
.bss :>SPRAM PAGE1
STACK :>DARAM PAGE1
}
改写成:
SECTIONS
{
.text :>EPROM PAGE 0
.data :>EPROM PAGE 0
.bss :>SPRAM PAGE 1
STACK :>DARAM PAGE 1
}
中间有个空格,疏忽啊。。。。。
下载,运行,没问题了。
至于那个c_int00警告暂时先不管了。
SECTIONS
{
.text :>EPROM PAGE0
.data :>EPROM PAGE0
.bss :>SPRAM PAGE1
STACK :>DARAM PAGE1
}
改写成:
SECTIONS
{
.text :>EPROM PAGE 0
.data :>EPROM PAGE 0
.bss :>SPRAM PAGE 1
STACK :>DARAM PAGE 1
}
中间有个空格,疏忽啊。。。。。
下载,运行,没问题了。
至于那个c_int00警告暂时先不管了。
14楼
一段循环程序结构的代码:
求a[i]*x[i](i=1,2,3,4)中的最大值,程序是照着问老王要的那个书敲进来的。
添加了几句注释:
.title "ex43.asm"
.mmregs
STACK .usect "STACK",10H ;引号中的STACK是段名,对应CMD文件中的一个段
.bss a,4 ;定义一个数组
.bss x,4 ;第二个数组
.def start ;定义一个可被别的模块找到的符号,作为程序入口
.data ;开始放入数据
table .word 1,2,9,4 ;数据修改了一下,主要看能不能跳转
.word 5,6,9,8
.text ;数据定义完毕,开始程序代码
start: STM #0,SWWSR
STM #STACK+10H,SP ;堆栈指针
STM #a,AR1
RPT #7 ;重复7次?放入4个word类型数据?
MVPD table,*AR1+
STM #a,AR1
STM #x,AR2
STM #2,AR3
LD *AR1+,T
MPY *AR2+,A
loop1: LD *AR1+,T ;这里做循环玩
MPY *AR2+,B
MAX A
BANZ loop1,*AR3-
end: B end
.end ;程序结束
CMD文件:
Debug\ex43.obj
-o Debug\ex43.out
-m Debug\ex43.map
-e start ;程序入口
MEMORY
{
PAGE 0:
EPROM:org = 0E00H,len = 100H
PAGE 1:
SPRAM:org = 0060H,len = 20H
DARAM:org = 0080H,len = 100H
}
SECTIONS
{
.text :>EPROM PAGE 0
.data :>EPROM PAGE 0
.bss :>SPRAM PAGE 1
STACK :>DARAM PAGE 1
}
工程代码如下,CCS3.3打开
ex43.rar
再次感谢老王的书。。。。。。。。。。。
求a[i]*x[i](i=1,2,3,4)中的最大值,程序是照着问老王要的那个书敲进来的。
添加了几句注释:
.title "ex43.asm"
.mmregs
STACK .usect "STACK",10H ;引号中的STACK是段名,对应CMD文件中的一个段
.bss a,4 ;定义一个数组
.bss x,4 ;第二个数组
.def start ;定义一个可被别的模块找到的符号,作为程序入口
.data ;开始放入数据
table .word 1,2,9,4 ;数据修改了一下,主要看能不能跳转
.word 5,6,9,8
.text ;数据定义完毕,开始程序代码
start: STM #0,SWWSR
STM #STACK+10H,SP ;堆栈指针
STM #a,AR1
RPT #7 ;重复7次?放入4个word类型数据?
MVPD table,*AR1+
STM #a,AR1
STM #x,AR2
STM #2,AR3
LD *AR1+,T
MPY *AR2+,A
loop1: LD *AR1+,T ;这里做循环玩
MPY *AR2+,B
MAX A
BANZ loop1,*AR3-
end: B end
.end ;程序结束
CMD文件:
Debug\ex43.obj
-o Debug\ex43.out
-m Debug\ex43.map
-e start ;程序入口
MEMORY
{
PAGE 0:
EPROM:org = 0E00H,len = 100H
PAGE 1:
SPRAM:org = 0060H,len = 20H
DARAM:org = 0080H,len = 100H
}
SECTIONS
{
.text :>EPROM PAGE 0
.data :>EPROM PAGE 0
.bss :>SPRAM PAGE 1
STACK :>DARAM PAGE 1
}
工程代码如下,CCS3.3打开
ex43.rar
再次感谢老王的书。。。。。。。。。。。
回复
| 有奖活动 | |
|---|---|
| 2026年“我要开发板活动”第三季,开始了! | |
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
我要赚赏金打赏帖 |
|
|---|---|
| 【FreeRtos】第一个任务的启动过程被打赏¥21元 | |
| 【分享开发笔记,赚取电动螺丝刀】FPB-RA6E2开发板的WDT功能测试被打赏¥22元 | |
| 关于cmakelist特性presets的使用被打赏¥20元 | |
| 【分享开发笔记,赚取电动螺丝刀】M5STACK系列屏幕质量测试程序,竟然有块亮斑?被打赏¥20元 | |
| 【分享开发笔记,赚取电动螺丝刀】快速搭建瑞萨FPB-RA6E2开发板开发环境被打赏¥14元 | |
| 【分享开发笔记,赚取电动螺丝刀】在音频测试中顺序的调整可改变功效被打赏¥18元 | |
| 【分享开发笔记,赚取电动螺丝刀】点阵显示模块及其应用-----献给新年的小礼物被打赏¥22元 | |
| 基于地奇星开发板的数码管模块显示技术被打赏¥23元 | |
| 【分享开发笔记,赚取电动螺丝刀】摇杆模块控制实现LED贪吃蛇游戏被打赏¥33元 | |
| window下生成compilecommands.json的的方法被打赏¥22元 | |
我要赚赏金
