关于2407程序空间访问问题,涉及到.const段定义

[复制链接]
 楼主| huttu 发表于 2007-11-26 16:42 | 显示全部楼层 |阅读模式
ST, CD, LCD, ui, BUG
我遇到了一个很奇怪的问题,把数组定义到程序空间,在程序中使用指针不能指向程序空间的数组名,下面是具体的问题描述,请达人帮忙指导一下<br /><br />数组是这样定义:<br />static&nbsp;const&nbsp;Uint16&nbsp;C1A[]&nbsp;={<br />0x1022,0x06C00,0x080FC,0x004F4,0x004FE,0x004F8,0x000FE,0x00000,&nbsp;<br />0x0000,0x00000,0x00000,0x00000,0x00000,0x00000,0x00000,0x00000,<br />0x0000,0x2030,0x0AC63,0x02010,0x0FC84,0x08484,0x0FE82,0x0C282,0x00000,&nbsp;<br />};&nbsp;<br />在CMD文件中.const段是这么定义,.const后面的定义没有理解,暂没使用:<br />&nbsp;&nbsp;&nbsp;&nbsp;.const:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;load&nbsp;=&nbsp;PROG&nbsp;PAGE&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;/*run&nbsp;=&nbsp;SARAM&nbsp;PAGE&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&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;__const_run&nbsp;=&nbsp;.;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(.c_mark)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(.const)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__const_length&nbsp;=&nbsp;.&nbsp;-&nbsp;__const_run;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;/*Global&nbsp;and&nbsp;static&nbsp;const&nbsp;variables&nbsp;that&nbsp;are&nbsp;explicitly&nbsp;*/<br />&nbsp;<br />使用blkMvP2D作为程序空间往数据空间传送数据函数,原形声明如下:<br />extern&nbsp;Uint16&nbsp;&nbsp;blkMvD2P(&nbsp;Uint16&nbsp;*data_src,&nbsp;Uint16&nbsp;size,&nbsp;Uint16&nbsp;*pgm_dest&nbsp;);<br /><br />指针定义如下:<br />&nbsp;Uint16&nbsp;mLcdBuf[256],*pData&nbsp;=&nbsp;mLcdBuf,*pStr;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />//&nbsp;mLcdBuf为开辟内存空间作为显示缓存,pData指向缓存首址,pStr指向程序空间的数组首址。<br /><br />第一种尝试,使用数组名作为参数传递给函数:&nbsp;<br />&nbsp;&nbsp;//blkMvP2D(C1A,24,pData+18);&nbsp;&nbsp;&nbsp;//<br />错误如下:<br />[lcd.c]&nbsp;&quot;C:\CCStudio_v3.1\C2400\cgtools\bin\dspcl&quot;&nbsp;-g&nbsp;-q&nbsp;-fr&quot;E:/dspProgram/huituc/Debug&quot;&nbsp;-d&quot;_DEBUG&quot;&nbsp;-v2xx&nbsp;-@&quot;Debug.lkf&quot;&nbsp;&quot;lcd.c&quot;<br />[lcd.c]<br />&quot;lcd.c&quot;,&nbsp;line&nbsp;236:&nbsp;[E146]&nbsp;pointer&nbsp;argument&nbsp;disagrees&nbsp;with&nbsp;prototype<br />&nbsp;<br />Compile&nbsp;Complete,<br />&nbsp;&nbsp;1&nbsp;Errors,&nbsp;0&nbsp;Warnings,&nbsp;0&nbsp;Remarks.<br /><br />第二种尝试,重新定义一个指针,先把数组地址传递给指针<br />&nbsp;&nbsp;&nbsp;&nbsp;pStr&nbsp;=&nbsp;C1A;<br />仅这一句参与编译就出现以下错误<br />[lcd.c]&nbsp;&quot;C:\CCStudio_v3.1\C2400\cgtools\bin\dspcl&quot;&nbsp;-g&nbsp;-q&nbsp;-fr&quot;E:/dspProgram/huituc/Debug&quot;&nbsp;-d&quot;_DEBUG&quot;&nbsp;-v2xx&nbsp;-@&quot;Debug.lkf&quot;&nbsp;&quot;lcd.c&quot;<br />[lcd.c]<br />&quot;lcd.c&quot;,&nbsp;line&nbsp;235:&nbsp;[E124]&nbsp;operands&nbsp;of&nbsp;'='&nbsp;point&nbsp;to&nbsp;different&nbsp;types<br />&nbsp;<br />Compile&nbsp;Complete,<br />&nbsp;&nbsp;1&nbsp;Errors,&nbsp;0&nbsp;Warnings,&nbsp;0&nbsp;Remarks.<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

102

主题

150

帖子

0

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