s3c6410 ddr初始化
初学ARM,将学习中的代码贴出,以便以后参考,错误之处欢迎指出
ok6410 sdram(256M)初始化代码
- #define P1MEMSTAT (*((volatile unsigned long *)0x7e001000))
- #define P1MEMCCMD (*((volatile unsigned long *)0x7e001004))
- #define P1DIRECTCMD (*((volatile unsigned long *)0x7e001008))
- #define P1MEMCFG (*((volatile unsigned long *)0x7e00100c))
- #define P1REFRESH (*((volatile unsigned long *)0x7e001010))
- #define P1CASLAT (*((volatile unsigned long *)0x7e001014))
- #define P1T_DQSS (*((volatile unsigned long *)0x7e001018))
- #define P1T_MRD (*((volatile unsigned long *)0x7e00101c))
- #define P1T_RAS (*((volatile unsigned long *)0x7e001020))
- #define P1T_RC (*((volatile unsigned long *)0x7e001024))
- #define P1T_RCD (*((volatile unsigned long *)0x7e001028))
- #define P1T_RFC (*((volatile unsigned long *)0x7e00102c))
- #define P1T_RP (*((volatile unsigned long *)0x7e001030))
- #define P1T_RRD (*((volatile unsigned long *)0x7e001034))
- #define P1T_WR (*((volatile unsigned long *)0x7e001038))
- #define P1T_WTR (*((volatile unsigned long *)0x7e00103c))
- #define P1T_XP (*((volatile unsigned long *)0x7e001040))
- #define P1T_XSR (*((volatile unsigned long *)0x7e001044))
- #define P1T_ESR (*((volatile unsigned long *)0x7e001048))
- #define P1MEMCFG2 (*((volatile unsigned long *)0x7e00104c))
- #define p1_chip_0_cfg (*((volatile unsigned long *)0x7e001200))
- #define MEM_SYS_CFG (*((volatile unsigned long *)0x7e00f120))
- #define HCLK 133
- #define nstoclk(ns) (ns / (1000/HCLK) + 1)
- void ddr_init(void)
- {
- /*makes DRAM enter "config" state*/
- P1MEMCCMD = 0x04;
- /*set memory timing parameter, chip config ,
- id config register,etc...
- */
- P1REFRESH = nstoclk(7800); //Auto refresh duty cycle=7.8us =>clock cycles
- P1CASLAT = (3 << 1);
- P1T_DQSS = 0X1;
- P1T_MRD = 0X2;
- P1T_RAS = nstoclk(45);
- P1T_RC = nstoclk(68);
- P1T_RCD = nstoclk(23);//| ((nstoclk(23)-3) << 3);
- P1T_RFC = nstoclk(80);//| ((nstoclk(80)-3) << 5);
- P1T_RP = nstoclk(23);//| ((nstoclk(23)-3) << 3);
- P1T_RRD = nstoclk(15);
- P1T_WR = nstoclk(15);
- P1T_WTR = 0X7;
- P1T_XP = 0X2;
- P1T_XSR = nstoclk(120);
- P1T_ESR = nstoclk(120);
- /*mem config*/
- P1MEMCFG |= 0x3; //11 columns
- P1MEMCFG &= ~(0xf << 3);
- P1MEMCFG |= (1 << 4); //13 rows , 256M
- P1MEMCFG &= ~(0x7 << 15);
- P1MEMCFG |= (1 << 16); //burst 4
- P1MEMCFG2 |= 0x5;
- P1MEMCFG2 &= ~(0x3 << 6);
- P1MEMCFG2 |= (1 << 6); //32bit
- P1MEMCFG2 &= ~(0x7 << 8);
- P1MEMCFG2 |= (0x3 << 8);
- P1MEMCFG2 &= ~(0x3 << 11);
- P1MEMCFG2 |= (1 << 11);
- p1_chip_0_cfg |= 1 << 16;
- P1DIRECTCMD = 0xc0000; //nop
- P1DIRECTCMD = 0x000; //prechargeAII
- P1DIRECTCMD = 0x40000; //autorefresh
- P1DIRECTCMD = 0x40000;
- P1DIRECTCMD = 0xa0000; //MRS
- P1DIRECTCMD = 0x80032; //EMRS
- MEM_SYS_CFG = 0X0;
- /*set DRAM to "go" state*/
- P1MEMCCMD = 0x000;
- /*wait for "ready" state*/
- while ((P1MEMSTAT & 0X3) != 0X1);
- }
s3c6410 ddr初始化相关推荐
- linux内核ddr初始化,X-007-UBOOT-DDR的初始化(Bubblegum-96平台)
X-007-UBOOT-DDR的初始化(Bubblegum-96平台) 作者:wowo 发布于:2016-7-21 22:47 分类:X Project 1. 前言 到目前为止,"X Pro ...
- 如何修改rk3399 ddr初始化代码的波特率
终极方法(先公布答案) hexdump -ve '1/1 "%.2X"' rk3399_ddr_800MHz_v1.25.bin | \ sed "s/60E31600/ ...
- 3.3519v101-uboot-start.S分析DDR初始化
一般是DDR3控制器有,采用fly-by拓扑,CK与DQS的时延难以控制,用ddr traning用于调整两者之间的时延,已达到最佳采样点的目的.窗口值反映出当前CK与DQS的偏移值,窗口越大,窗口越 ...
- s3c6410 nand初始化
ok6410 nand初始化和读数据(用于copy代码至ram) [plain] view plaincopy #define MEM_SYS_CFG (*((volatile unsigned lo ...
- S3C6410 时钟初始化
++++++++++++++++++++++++++++++++++++++++++ 本文系本站原创,欢迎转载! 转载请注明出处: http://blog.csdn.net/mr_raptor/art ...
- DDR突然初始化失败 Debug记录
背景:板卡用的一直好好的,硬件没有什么问题,DDR跑在2400M,也一直正常工作. 但最近有个工程中,需要增加SRIO接口,SRIO接收的数据需要先过DDR,工程编完下载bit后,偶尔会提示DDR初始 ...
- 烧录时初始化DDR报错 [0x10105004]Romcode/初始化DDR/读取初始化结果/命令结果返回错误
如下图,烧录时DDR初始化报错 [0x10105004]Romcode/初始化DDR/读取初始化结果/命令结果返回错误 串口打印信息如下图 通过日志信息我们可以发现DDR类型为DDR4,初始化时却只检 ...
- 【嵌入式开发】ARM 内存操作 ( DRAM SRAM 类型 简介 | Logical Bank | 内存地址空间介绍 | 内存芯片连接方式 | 内存初始化 | 汇编代码示例 )
文章目录 一. 内存 简介 1. 两大内存分类 ( 1 ) DRAM 简介 ( 定期刷新 | 速度慢 | 成本低 ) ( 2 ) SRAM 简介 ( 不需刷新 | 存取速度快 | 功耗大 | 成本高 ...
- NXP(I.MX6uLL)DDR3实验——DDR3初始化、校准、超频测试
DDR3L 初始化与测试 ddr_stress_tester简介(DDR压力测试工具) DDR3L驱动配置 DDR3L校准 DDR3L超频测试 DDR3L驱动总结 ddr_stress_tester简 ...
最新文章
- 监控神器Prometheus用不对,也就是把新手村的剑
- python中使用html前端页面显示图像预测结果(改进)
- TableLayout(表格布局)
- c++中堆、栈内存分配
- 直播报名 | 官方解读NVIDIA黑科技:StyleGAN的架构与实现
- mysql将一个字段的值根据逗号拆分_mysql中要根据某个逗号分割的字符串关联查询另一张表的数据...
- Windows系统MySQL8.0的安装教程
- 在linux上处理base64加密和解密
- Android Webview实现有道电子词典
- 详解用OpenCV绘制各类几何图形
- 风控五大模型、三大风险指的是什么--几大模型PD、LGD、评分模型都有哪些细节点
- Python自学笔记-lambda函数(来自廖雪峰的官网Python3)
- 从需求出发来看关系模型与非关系模型–时代的变革
- matlab 复杂曲面,基于MATLAB生成的SCR文件实现AutoCAD中复杂曲线曲面的绘制.pdf
- vue打卡日历_VUE也有自己的日历组件
- 帆软BI工具Fine BI连接数据库
- 如何将PDF文件中的繁体字转成简体字?
- 文本diff算法Patience Diff
- Squeeze-and-Excitation Networks论文翻译——中文版
- 美国-机械故障预防技术学会MFPT
热门文章
- 方舟编译器的安装和编译Helloword
- maven导出Java方法_eclipse导出maven工程的可执行jar包
- IDEA显示完整目录,取消合并的文件,取消“ . “ 的这种目录
- android没有界面app,Android离线打包 app处于原生界面 切换到桌面再点击app 原生界面被关闭...
- python生成安装程序_python生成安装文件 msi
- 鸿蒙系统和你,鸿蒙系统面世,但与您所想的不一样
- 5、ABPZero系列教程之拼多多卖家工具 修改User表结构
- 简单博弈论总结加例题解析
- grunt安装与运行
- 【翻译】在Sencha Touch中创建离线/在线代理