打印

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

[复制链接]
2863|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huttu|  楼主 | 2007-11-26 16:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ST, CD, LCD, ui, BUG
我遇到了一个很奇怪的问题,把数组定义到程序空间,在程序中使用指针不能指向程序空间的数组名,下面是具体的问题描述,请达人帮忙指导一下

数组是这样定义:
static const Uint16 C1A[] ={
0x1022,0x06C00,0x080FC,0x004F4,0x004FE,0x004F8,0x000FE,0x00000, 
0x0000,0x00000,0x00000,0x00000,0x00000,0x00000,0x00000,0x00000,
0x0000,0x2030,0x0AC63,0x02010,0x0FC84,0x08484,0x0FE82,0x0C282,0x00000, 
}; 
在CMD文件中.const段是这么定义,.const后面的定义没有理解,暂没使用:
    .const:        load = PROG PAGE 0    /*run = SARAM PAGE 1     
               { 
             __const_run = .;
             *(.c_mark)
             *(.const)
             __const_length = . - __const_run;
           } /*Global and static const variables that are explicitly */
 
使用blkMvP2D作为程序空间往数据空间传送数据函数,原形声明如下:
extern Uint16  blkMvD2P( Uint16 *data_src, Uint16 size, Uint16 *pgm_dest );

指针定义如下:
 Uint16 mLcdBuf[256],*pData = mLcdBuf,*pStr;            
// mLcdBuf为开辟内存空间作为显示缓存,pData指向缓存首址,pStr指向程序空间的数组首址。

第一种尝试,使用数组名作为参数传递给函数: 
  //blkMvP2D(C1A,24,pData+18);   //
错误如下:
[lcd.c] "C:\CCStudio_v3.1\C2400\cgtools\bin\dspcl" -g -q -fr"E:/dspProgram/huituc/Debug" -d"_DEBUG" -v2xx -@"Debug.lkf" "lcd.c"
[lcd.c]
"lcd.c", line 236: [E146] pointer argument disagrees with prototype
 
Compile Complete,
  1 Errors, 0 Warnings, 0 Remarks.

第二种尝试,重新定义一个指针,先把数组地址传递给指针
    pStr = C1A;
仅这一句参与编译就出现以下错误
[lcd.c] "C:\CCStudio_v3.1\C2400\cgtools\bin\dspcl" -g -q -fr"E:/dspProgram/huituc/Debug" -d"_DEBUG" -v2xx -@"Debug.lkf" "lcd.c"
[lcd.c]
"lcd.c", line 235: [E124] operands of '=' point to different types
 
Compile Complete,
  1 Errors, 0 Warnings, 0 Remarks.

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

52

主题

100

帖子

0

粉丝