搜索
bottom↓
回复: 3

芯唐n3292 一个比较BC的问题,关于内存映射

[复制链接]

出0入0汤圆

发表于 2014-2-10 18:13:33 | 显示全部楼层 |阅读模式
看了缥缈九哥的笔记里边
N32905的物理寻址空间:
IBR:         0xFFFF_0000 - 0xFFFF_FFFF
保留:        0xFF00_2000 - 0xFFFE_FFFF
SRAM:        0xFF00_0000 - 0xFF00_1FFF
保留:        0xC000_0000 - 0xFEFF_FFFF
APB:        0xB800_0000 - 0xBFFF_FFFF
AHB:        0xB000_0000 - 0xB7FF_FFFF
SSDRAM:        0x8000_0000 - 0xAFFF_FFFF        (SDRAM的影射空间)
保留:        0x4000_0000 - 0x7FFF_FFFF
SDRAM:        0x0000_0000 - 0x3FFF_FFFF
我现在刚在熟悉N3292,里边例程有有一个变量WriteBuffer,定义完是放在SDRAM  ?之后pSrc = (UINT8 *)((UINT32)WriteBuffer | 0x80000000);  是放到(SDRAM的影射空间)?非常不解,希望有知道的大侠解释一下。
程序如下
//#define DBG_PRINTF        printf
__align(4096)  UINT8 WriteBuffer[TEST_SIZE];
__align(4096)   UINT8 ReadBuffer[TEST_SIZE];


int main()
{
        WB_UART_T uart;
        UINT32 u32ExtFreq;
        unsigned char *pSrc, *pDst;
        int volatile i;
        BOOL bLoop = TRUE;
        UINT8 u8Item;
/*
        sysSetSystemClock(eSYS_UPLL,         //E_SYS_SRC_CLK eSrcClk,
                                                240000000,                //UINT32 u32PllKHz,
                                                240000000);                //UINT32 u32SysKHz,                                                                       
        sysSetCPUClock(240000000);
        sysSetAPBClock(48000000);
*/
        u32ExtFreq = sysGetExternalClock();            /* Hz unit */       
        uart.uart_no = WB_UART_1;
        uart.uiFreq = u32ExtFreq;
        uart.uiBaudrate = 115200;
        uart.uiDataBits = WB_DATA_BITS_8;
        uart.uiStopBits = WB_STOP_BITS_1;
        uart.uiParity = WB_PARITY_NONE;
        uart.uiRxTriggerLevel = LEVEL_1_BYTE;
        sysInitializeUART(&uart);       

        DBG_PRINTF("SpiFlash Test...\n");

        pSrc = (UINT8 *)((UINT32)WriteBuffer | 0x80000000);
        pDst = (UINT8 *)((UINT32)ReadBuffer | 0x80000000);       

        for (i=0; i<TEST_SIZE; i++)
                *(pSrc+i) = i & 0xff;

        spiFlashInit();

        spiFlashEraseAll();

        while(bLoop)
        {
                sysprintf("\nPlease Select Test Item\n");
                sysprintf(" 1 : Read/Write Test\n");
                sysprintf(" 2 : Qude Read/Write Test with Winbond W25Q256FV\n");
                sysprintf(" 3 : Exit\n>");

                u8Item = sysGetChar();

                switch(u8Item)
                {
                        case '1':       
                                DBG_PRINTF("\tErase SpiFlash Block 0\n");
                                spiFlashEraseBlock(0, 1);
                               
                                DBG_PRINTF("\tWrite SpiFlash\n");
                                spiFlashWrite(0, TEST_SIZE, pSrc);

                                memset(pDst, 0, TEST_SIZE);

                                DBG_PRINTF("\tRead and Compare SpiFlash\n");
                                spiFlashRead(0, TEST_SIZE, pDst);

                                for (i=0; i<TEST_SIZE; i++)
                                {
                                        if (*(pSrc+i) != *(pDst+i))
                                        {
                                                DBG_PRINTF("error!! Src[%d] = 0x%X, Dst[%d] = 0x%X\n", i, *(pSrc+i), i, *(pDst+i));
                                                break;
                                        }
                                }
                                       
                                break;

                        case '2':       
                                DBG_PRINTF("\tErase SpiFlash Block 0\n");
                                spiFlashEraseBlock(0, 1);
                               
                                DBG_PRINTF("\tWrite SpiFlash\n");
                                spiFlashQuadWrite(0, TEST_SIZE, pSrc);

                                memset(pDst, 0, TEST_SIZE);

                                DBG_PRINTF("\tRead and Compare SpiFlash\n");
                                spiFlashFastReadQuad(0, TEST_SIZE, pDst);

                                for (i=0; i<TEST_SIZE; i++)
                                {
                                        if (*(pSrc+i) != *(pDst+i))
                                        {
                                                DBG_PRINTF("error!! Src[%d] = 0x%X, Dst[%d] = 0x%X\n", i, *(pSrc+i), i, *(pDst+i));
                                                break;
                                        }
                                }
                                       
                                break;

                        case '3':       

                                bLoop = FALSE;
                                break;

                        default:
                                        sysprintf("Write Item\n");
                                        break;
                }                       
                               
        }

        DBG_PRINTF("finish SPI test\n");
        return 0;
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入4汤圆

发表于 2014-2-10 18:29:23 | 显示全部楼层
真是妹子么?

出0入0汤圆

发表于 2014-2-10 18:45:15 | 显示全部楼层
看起来好厉害啊

出0入0汤圆

 楼主| 发表于 2014-2-10 19:11:43 | 显示全部楼层
女人搞技术挺奇怪?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-3 02:42

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表