打印
[嵌入式linux]

请教:为何在下面程序中,两处所用的类型不同?

[复制链接]
840|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
以下是2440 mmu的部分程序
/*
*关开门狗
*/
#define WTCON (*(volatile unsigned long *)0x53000000)
void dis_wtd(void)
{
        WTCON = 0;       
}
/*
*将前4K代码复制到SDRAM
*/
#define mem_ctl_base 0x48000000
void memset(void)
{
        unsigned long const mem_cfg_val[] = {
                                                                                0x22011110,
                                                                                0x00000700,
                                                                                0x00000700,
                                                                                0x00000700,
                                                                                0x00000700,
                                                                                0x00000700,
                                                                                0x00000700,
                                                                                0x00018005,
                                                                                0x00018005,
                                                                                0x008c07a3,
                                                                                0x000000b1,
                                                                                0x00000030,
                                                                                0x00000030,
                                                                                };
        unsigned char i;
        volatile unsigned long *p = (volatile unsigned long *)mem_ctl_base;
        for(i=0; i<13; i++)
        {
                p = mem_cfg_val;
        }
}

void copy_to_sdram(void)
{
        unsigned int *pdwsrc = (unsigned int *)2048;
        unsigned int *pdwdest = (unsigned int *)0x30004000;
        while(pdwsrc < (unsigned int *)4096)
        {
                *pdwdest = *pdwsrc;
                pdwdest++;
                pdwsrc++;
        }
}

我想问一下为何程序中,两处用的数据类型为何不同?必须这么用吗?
volatile unsigned long *p = (volatile unsigned long *)mem_ctl_base;
而后面的程序则是unsigned int *pdwsrc = (unsigned int *)2048;
        unsigned int *pdwdest = (unsigned int *)0x30004000;
我是新手,希望各位前辈能够指点一下,谢谢了!

相关帖子

沙发
狂奔的蜗牛哥|  楼主 | 2015-3-15 13:26 | 只看该作者
:dizzy:坐等各位前辈的回答

使用特权

评论回复
板凳
狂奔的蜗牛哥|  楼主 | 2015-3-15 14:04 | 只看该作者

使用特权

评论回复
地板
mazhao141| | 2015-3-18 12:02 | 只看该作者
如果只是回答你这个问题的话,long型数据要求至少是32位。int数据则是CPU的自然长度。声明数组,并将指针指向这个数组的话。偏移时会按照数组宽度偏移。~~但是题外话 for循环里p=mem_cfg_val;这玩意循环执行是什么意思啊?

使用特权

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

本版积分规则

15

主题

86

帖子

3

粉丝