硬件准备

ADSP-21489EVB:ADI 21489处理器的开发板
AD-HP530ICE:ADI DSP专用仿真器
USBi:ADI SigmaDSP和SHARC DSP的图形化编程调试器

软件准备:

Visual DSP++
CCES
SigmaStudio

硬件链接示意图


硬件设计原理图

通过对 SDRAM 写入测试数据,读出校验,判断 SDRAM 内存的工作情况。

将 SDRAM 自检工程拖到 VDSP 中,编译,运行。

运行代码,等代码跑完后,可以从内存数据窗口中看到写入的数据。

输入一个地址:0x200000,数据如下:

程序源码

#include <cdef21489.h>
#include <def21489.h>
#define SDRAM_START 0x0200000 // start address of SDRAM
#define SDRAM_SIZE 0x00800000 // size of SDRAM in 32-bit words. (i.e. 4M x 32)
#define SDMODIFY (BIT_17)
void InitPLL(void)
{
int n;
*pPMCTL = (PLLM16|PLLD4|DIVEN);
n = *pPMCTL;
n |= PLLBP;
n ^= DIVEN;
*pPMCTL = n;

for(n = 0; n < 10000; n++ )
{asm("nop;");
}*pPMCTL ^= PLLBP;

}

void InitSDRAM(void)
{
int nValue = 0;
*pSYSCTL |= MSEN;
// Mapping Bank 0 to SDRAM
*pEPCTL |= B0SD;
*pEPCTL &= (~(B1SD|B2SD|B3SD));

*pSDRRC = 0x4D8;
*pSDRRC|= SDROPT | BIT_17; // Enabling SDRAM read optimization// Setting the Modify to 1// Programming SDRAM control register
*pSDCTL = (SDCL3|SDTRAS7|SDTRP3|SDCAW9|SDPSS|SDTWR2|SDTRCD3|SDRAW13|X16DE);

}

main(void)
{
int bPassed = 0;

InitPLL();
InitSDRAM();
bPassed = TEST_SDRAM();

}

//
// int TEST_SDRAM(void)
//
// PURPOSE: Test the SDRAM
//
int TEST_SDRAM(void)
{
volatile unsigned int *pDst;
int nIndex = 0;
int bError = 1; // returning 1 indicates a pass, anything else is a fail
int n;
// write incrementing values to each SDRAM location
for(nIndex = 0, pDst = (unsigned int *)SDRAM_START; pDst < (unsigned int *)(SDRAM_START + SDRAM_SIZE); pDst++, nIndex++ )
{
*pDst = nIndex;
}
// verify incrementing values
for(nIndex = 0, pDst = (unsigned int *)SDRAM_START; pDst < (unsigned int *)(SDRAM_START + SDRAM_SIZE); pDst++, nIndex++ )
{
if( nIndex != *pDst )
{
bError = 0;
break;
}
}

for(nIndex = 0x12345678, pDst = (unsigned int *)SDRAM_START; pDst < (unsigned int *)(SDRAM_START + SDRAM_SIZE); pDst++ )
{*pDst = nIndex;
}for(nIndex = 0x12345678, pDst = (unsigned int *)SDRAM_START; pDst < (unsigned int *)(SDRAM_START + SDRAM_SIZE); pDst++ )
{if( nIndex != *pDst ){bError = 0;break;}
}for(nIndex = 0x87654321, pDst = (unsigned int *)SDRAM_START; pDst < (unsigned int *)(SDRAM_START + SDRAM_SIZE); pDst++ )
{*pDst = nIndex;
}for(nIndex = 0x87654321, pDst = (unsigned int *)SDRAM_START; pDst < (unsigned int *)(SDRAM_START + SDRAM_SIZE); pDst++ )
{if( nIndex != *pDst ){bError = 0;break;}
}for(nIndex = 0x01234567, pDst = (unsigned int *)SDRAM_START; pDst < (unsigned int *)(SDRAM_START + SDRAM_SIZE); pDst++ )
{*pDst = nIndex;
}for(nIndex = 0x01234567, pDst = (unsigned int *)SDRAM_START; pDst < (unsigned int *)(SDRAM_START + SDRAM_SIZE); pDst++ )
{if( nIndex != *pDst ){bError = 0;break;}
}for(nIndex = 0x76543210, pDst = (unsigned int *)SDRAM_START; pDst < (unsigned int *)(SDRAM_START + SDRAM_SIZE); pDst++ )
{*pDst = nIndex;
}for(nIndex = 0x76543210, pDst = (unsigned int *)SDRAM_START; pDst < (unsigned int *)(SDRAM_START + SDRAM_SIZE); pDst++ )
{if( nIndex != *pDst ){bError = 0;break;}
}// butterfly test.  Write incrementing values to beginging and end of SDRAM
volatile unsigned int *pStart = (volatile unsigned int *)SDRAM_START;
volatile unsigned int *pEnd = (volatile unsigned int *)(SDRAM_START + SDRAM_SIZE)-1;for(nIndex = 0; nIndex < (SDRAM_SIZE/2); nIndex++ )
{*pStart = nIndex;*pEnd = (SDRAM_SIZE - nIndex);pStart++;pEnd--;
}// verify butterfly test values
pStart = (volatile unsigned int *)SDRAM_START;
pEnd = (volatile unsigned int *)(SDRAM_START + SDRAM_SIZE)-1;for(nIndex = 0; nIndex < (SDRAM_SIZE/2); nIndex++ )
{if( nIndex != *pStart ){bError = 0;break;}if( (SDRAM_SIZE - nIndex) != *pEnd ){bError = 0;break;}pStart++;pEnd--;
}return bError;

}

ADSP-21489的开发详解:VDSP+自己编程写代码开发(5-SDRAM 内存的硬件设计和软件例程)(含源代码)相关推荐

  1. ADSP-21489的开发详解:VDSP+自己编程写代码开发(1-如何来做21489和21479的开发?简单说两句)

    编者的话 经常有人问,21479 和 21489 这一类的 ADI SHARC DSP 到底应该怎么开发?我需要哪些硬件,板子用什么,仿真器用什么,会用到哪些软件?既然有这么多的问题,我索性就做一款 ...

  2. ADSP-21489的开发详解:VDSP+自己编程写代码开发(3-可能出现的故障和解决办法)

    硬件准备 ADSP-21489EVB:ADI 21489处理器的开发板 AD-HP530ICE:ADI DSP专用仿真器 USBi:ADI SigmaDSP和SHARC DSP的图形化编程调试器 软件 ...

  3. ADSP-21489的开发详解:VDSP+自己编程写代码开发(7-Block-Based Talkthru 48 or 96 kHz)(含源代码)

    硬件准备 ADSP-21489EVB:ADI 21489处理器的开发板 AD-HP530ICE:ADI DSP专用仿真器 USBi:ADI SigmaDSP和SHARC DSP的图形化编程调试器 软件 ...

  4. ADSP-21489的开发详解:VDSP+自己编程写代码开发(4-按键控制 LED 灯)(含源代码)

    硬件准备 ADSP-21489EVB:ADI 21489处理器的开发板 AD-HP530ICE:ADI DSP专用仿真器 USBi:ADI SigmaDSP和SHARC DSP的图形化编程调试器 软件 ...

  5. ADSP-21489的开发详解:VDSP+自己编程写代码开发(8-延时算法)

    硬件准备 ADSP-21489EVB:ADI 21489处理器的开发板 AD-HP530ICE:ADI DSP专用仿真器 USBi:ADI SigmaDSP和SHARC DSP的图形化编程调试器 软件 ...

  6. linux设备驱动开发详解源码,linux设备驱动开发详解光盘源码.rar

    压缩包 : linux设备驱动开发详解光盘源码.rar 列表 19/busybox源代码/busybox-1.2.1.tar.bz2 19/MTD工具/mtd-utils-1.0.0.tar.gz 1 ...

  7. linux设备驱动开发详解孔夫子,Linux设备驱动开发详解

    [内容简介] <Linux设备驱动开发详解(第2版)>是一本介绍linux设备驱动开发理论.框架与实例的书,<Linux设备驱动开发详解(第2版)>基于ldd6410开发板,以 ...

  8. java反射机制详解_JAVA反射机制详解_JSP/Java编程_互联网开发技术网_传播最新的编程技术_php361.com...

    今天,下午在和朋友聊天的时候,聊起了反射这个话题. 我们就从下面这个段简单的代码开始吧. 这个代码输出什么,想必大部分的读者跟我一样,会很快地知道答案:0 1 2 3 4 5 6 7 8 9.事实也是 ...

  9. 《Linux设备驱动开发详解》虚拟机及案例代码下载

    虚拟机实验环境下载(内含案例代码): 链接:https://pan.baidu.com/s/1YNvAySz-_AgZ4F8rZSMfsg  提取码:vpdt 如果仅仅想下载代码不想要庞大的虚拟机, ...

最新文章

  1. .substr()在字符串每个字母前面加上一个1
  2. python怎么new对象_Python使用__new__()方法为对象分配内存及返回对象的引用示例
  3. 学习OpenResty编程
  4. 写下thinkphp5和thinkphp3.2的不同
  5. Windows安装mysql8.0
  6. 1071svm函数 r语言_R语言机器学习之核心包e1071 - 数据分析
  7. bootstrap 滚动 进度条_bootstrap实现动态进度条效果
  8. ggforce|绘制区域轮廓-区域放大-寻找你的“onepiece”
  9. 两种MBR分区表恢复方法
  10. kf.qq.com.lol.html,英雄联盟安全信用星级,英雄联盟封号查询中心
  11. PyTorch模型定义和训练技巧
  12. 工厂模式——烘烤OO披萨
  13. ubuntu 安装截图工具 Shutter,并设置快捷键 Ctrl+SuperL
  14. 中荷人寿山东省分公司开展保险消费者权益保护教育宣传周活动
  15. 10台世界上最快的超级计算机
  16. 封装一个常用的js工具类
  17. Windows系统安装搭建ios开发环境
  18. qmainwindow 背景充电_Qt 设置背景图片(背景图片可随意拉伸)
  19. 昆仑通泰(MCGS)官方资料
  20. 基于Python+django的航班查询与推荐-计算机毕业设计

热门文章

  1. 爱斯维尔-模式识别 Pattern Recognition论文投稿周期
  2. 生物信息学 linux版本,BioInfoServOS:Ubuntu下的生物信息学软件
  3. c语言读写nfc,NFC标识最新资讯
  4. diango admin 添加成员报错
  5. MyBatis动态标签
  6. iOS 微信支付 SDK版本1.7.5(2016年12月27日)
  7. MacBookAir启动不了解决办法
  8. python 彩色蟒蛇绘制
  9. Java多线程模拟网络购票上机_多线程模拟售票
  10. tvs二极管应用电路