求助!!!44box存储空间的使用

[复制链接]
2920|2
 楼主| xcy8011 发表于 2007-5-24 10:46 | 显示全部楼层 |阅读模式
我想使用nCS4的空间,即从0x08000000到0x0a000000这部分空间,数据为16位
做了如下初始化:rPCONB=0x7Cf。
我发送数据的子程序如下:
void data_out(int set_db)
{    
    unsigned int *LCDADD;
    LCDADD = (unsigned int*)0x080000ff;
    LCD_RS_H;    
    *LCDADD = set_db;
}
问题如下:
1,用以上设置在ads上可以编译通过,但在axd没办法运行下去。
2,如果发送数据的子程序改为如下:
void data_out(int set_db)
{    
    unsigned char *LCDADD;
    LCDADD = (unsigned char*)0x080000ff;
    LCD_RS_H;    
    *LCDADD = set_db;
}
编译通过并可以在axd运行,但是只能送16位数据的低八位。
请问这是什么原因?怎样解决呢?
djyos 发表于 2007-5-24 17:40 | 显示全部楼层

数据对齐问题

    访问16位数据时,需要偶对齐地址,访问int型数据时,需要4字节对齐地址,否则将产生data abort异常,这就是你上一个函数不能运行的原因。
    对于下一个函数,char型数据可以使用任意地址,所以能运行,但80000ff不是一个合法的16位地址,当然只能送8位数据了。
 楼主| xcy8011 发表于 2007-5-26 18:33 | 显示全部楼层

谢谢指点

谢谢指点
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

24

帖子

0

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