我的DSP之路-3月份学习记录

[复制链接]
2292|0
 楼主| GUOXUEKUN 发表于 2008-6-26 13:21 | 显示全部楼层 |阅读模式
<br />2008-2-15<br />1.程序存储空间 数据存储空间 I/O地址空间<br />与Flash&nbsp;&nbsp;&nbsp;DARAM&nbsp;&nbsp;&nbsp;SARAM&nbsp;&nbsp;&nbsp;的区别。<br /><br />不同的存储空间用不同的总线读写。<br />Flash&nbsp;&nbsp;&nbsp;DARAM&nbsp;&nbsp;&nbsp;SARAM是物理上的存储器,而映射是把这些存储器做为某个存储空间的实际的存储单元。<br />空间是概念上的,存储器是物理上的。<br /><br />LF240X有544字的DARAM B0、B1、B2,映射为数据存储空间,当CNF=1时,B0为程序存储空间。2K字的SARAM可以通过软件配置为数据存储空间或程序存储空间。FLASH则为永久的程序存储模块。<br /><br />程序存储空间是〔B0、〕FLASH、外部存储器(LF2406没有)。<br />数据存储空间是〔B0、〕B1、B2、SARAM、外设寄存器。<br /><br />2.什么是I/O地址空间?I/O地址空间的外部扩展空间与程序或数据存储空间的外部存储器又有什么区别?<br />I/O空间用IN&nbsp;&nbsp;OUT指令访问。I/O空间访问有程序存储器和数据存储器访问两种。可以由IS信号高低来区分。访问外部并行I/O端口与访问程序、数据存储器复用相同的地址、数据总线。<br /><br />2008-2-26<br />上电时DP值不定,所以所有的程序都要初始化DP。<br /><br /><br />2008-2-26<br />外部符号:在一个模块中定义,而在另一个模块中引用的符号。<br />.def&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在当前模块中定义,并可在别的模块中引用的符号。相当于C中的定义全局变量。<br />.ref&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在当前模块中引用,但在别的模块中定义的符号。相当于C中的声明外部变量。<br />.global&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可以是以上的随便一种。即如果符号未被定义,则定义符号,并可以别的模块中引<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用。如果符号已经定义,则在当前模块中引用。<br /><br /><br />2008-2-26<br />常用的汇编伪指令<br />.end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;汇编程序结束<br />.include&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;包括一个已编了的汇编程序,一般为.H的头文件<br />.copy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;包括一个已编了的汇编程序,一般为.ASM的汇编文件<br />.title&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;打印一个文件标题,一般紧跟其后为用双引号引起来的源程序名<br />.int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用来设置一个或多个16位无符号整型常数&nbsp;.int&nbsp;&nbsp;&nbsp;&nbsp;value[,…,valuen]&nbsp;&nbsp;<br />.word&nbsp;&nbsp;value[,…,valuen]<br />.set&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;赋给符号一个常数。DATA&nbsp;&nbsp;.set&nbsp;&nbsp;0001b<br /><br />.def&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />.ref&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />.global&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />.bss&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />.data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />.sect&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />.usect&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />.text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />.asect&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />条件汇编:<br />.if<br />.elseif<br />.else<br />.endif<br /><br />.loop表达式表示要按照表达式所指定的次数进行重复汇编的代码块。<br />.break表达式为假继续重复汇编,为真时,直接跳到.endloop后面的代码。<br />.endloop表示可重复代码块的结束。<br />这三条条件汇编伪指令有什么用处?<br /><br /><br />2008-2-27<br />在.gel文件里有GEL_WatchAdd(&quot;*0x70A8,x&quot;,&quot;RESULT0&quot;);<br />还是否要建个头文件,RESULT0&nbsp;.set&nbsp;&nbsp;70A8H来定义寄存器地址?<br />.gel文件起什么作用?<br /><br />2008-2-27<br />编译项目时,出再没有源文件,删除工程里的源文件再添加,还是出现同样的错误。<br /><br />打开Build&nbsp;Options-&gtCompiler-&gtFiles&nbsp;里的Obj&nbsp;Directory有文件路径,删除后,错误消失。<br /><br />2008-2-27<br />关于.end是要在每个汇编文件的结尾?如果没有写的话也不会出错,为什么?<br /><br />2008-2-27<br />宏定义<br />Macname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.macro[parameter1][,parameter2][…]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Model&nbsp;statements<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[.mexit]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.endm<br />相当于C的:#define&nbsp;Macname&nbsp;(&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameter1,&nbsp;parameter2,…)&nbsp;&nbsp;&nbsp;Model&nbsp;statements<br />Macname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:宏名,前32位有效。<br />.macro:宏定义伪指令<br />Parameter:宏定义的参数<br />Model&nbsp;statements:宏程序语句<br />.mexit:跳到.endm伪指令语句<br />.endm:终止宏定义<br />例如:<br />SBIT0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.macro&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DMA,&nbsp;MASK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;Clear&nbsp;bit&nbsp;Macro<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LACC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DMA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#(0FFFFh-MASK)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SACL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DMA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.endm<br /><br />宏调用:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SBIT0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X,Y<br /><br />2008-2-27<br />编译连接都通过,为什么生成的.out文件无法下载,提示0x0地址数据确认错误。<br />查看Disassembly,8000h前面的数据全为FF,8000h~87ffh即SARAM区里有程序PRG_inti,8800H后的数据全和87FFH里的数据相同。<br />(是否因为没有外部存储器,所以一往下拉,87FFH后面的数据就和87FFH里的数据一样。但从最后面向上翻,数据又都成了0FFFFH)<br />.map文件又正确。<br />8000h~87ffh里的程序是否是用来清除、擦除、烧写FLASH用的?其只要打开CSS就存在。<br />刚打开,8800H后面不存在地址,这是LF2406A芯片。<br />转载请注明出自DSP交流网&nbsp;DSP学习第一论坛&nbsp;DSP技术应用与推广平台&nbsp;DSP开发服务平台&nbsp;http://www.hellodsp.com/bbs/,本贴地址:http://www.hellodsp.com/bbs/viewthread.php?tid=2954<br />转载请注明出自DSP交流网&nbsp;DSP学习第一论坛&nbsp;DSP技术应用与推广平台&nbsp;DSP开发服务平台&nbsp;http://www.hellodsp.com/bbs/,本贴地址:http://www.hellodsp.com/bbs/viewthread.php?tid=6876<br /><br /><br /><br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

53

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部