初学ARM,将学习中的代码贴出,以便以后参考,错误之处欢迎指出

ok6410 sdram(256M)初始化代码

[plain] view plaincopy
  1. #define P1MEMSTAT   (*((volatile unsigned long *)0x7e001000))
  2. #define P1MEMCCMD   (*((volatile unsigned long *)0x7e001004))
  3. #define P1DIRECTCMD (*((volatile unsigned long *)0x7e001008))
  4. #define P1MEMCFG    (*((volatile unsigned long *)0x7e00100c))
  5. #define P1REFRESH   (*((volatile unsigned long *)0x7e001010))
  6. #define P1CASLAT    (*((volatile unsigned long *)0x7e001014))
  7. #define P1T_DQSS    (*((volatile unsigned long *)0x7e001018))
  8. #define P1T_MRD     (*((volatile unsigned long *)0x7e00101c))
  9. #define P1T_RAS     (*((volatile unsigned long *)0x7e001020))
  10. #define P1T_RC      (*((volatile unsigned long *)0x7e001024))
  11. #define P1T_RCD     (*((volatile unsigned long *)0x7e001028))
  12. #define P1T_RFC     (*((volatile unsigned long *)0x7e00102c))
  13. #define P1T_RP      (*((volatile unsigned long *)0x7e001030))
  14. #define P1T_RRD     (*((volatile unsigned long *)0x7e001034))
  15. #define P1T_WR      (*((volatile unsigned long *)0x7e001038))
  16. #define P1T_WTR     (*((volatile unsigned long *)0x7e00103c))
  17. #define P1T_XP      (*((volatile unsigned long *)0x7e001040))
  18. #define P1T_XSR     (*((volatile unsigned long *)0x7e001044))
  19. #define P1T_ESR     (*((volatile unsigned long *)0x7e001048))
  20. #define P1MEMCFG2   (*((volatile unsigned long *)0x7e00104c))
  21. #define p1_chip_0_cfg   (*((volatile unsigned long *)0x7e001200))
  22. #define MEM_SYS_CFG     (*((volatile unsigned long *)0x7e00f120))
  23. #define HCLK        133
  24. #define nstoclk(ns) (ns / (1000/HCLK) + 1)
  25. void ddr_init(void)
  26. {
  27. /*makes DRAM enter "config" state*/
  28. P1MEMCCMD = 0x04;
  29. /*set memory timing parameter, chip config ,
  30. id config register,etc...
  31. */
  32. P1REFRESH = nstoclk(7800); //Auto refresh duty cycle=7.8us =>clock cycles
  33. P1CASLAT = (3 << 1);
  34. P1T_DQSS = 0X1;
  35. P1T_MRD = 0X2;
  36. P1T_RAS = nstoclk(45);
  37. P1T_RC = nstoclk(68);
  38. P1T_RCD = nstoclk(23);//| ((nstoclk(23)-3) << 3);
  39. P1T_RFC = nstoclk(80);//| ((nstoclk(80)-3)  << 5);
  40. P1T_RP = nstoclk(23);//| ((nstoclk(23)-3) << 3);
  41. P1T_RRD = nstoclk(15);
  42. P1T_WR = nstoclk(15);
  43. P1T_WTR = 0X7;
  44. P1T_XP = 0X2;
  45. P1T_XSR = nstoclk(120);
  46. P1T_ESR = nstoclk(120);
  47. /*mem config*/
  48. P1MEMCFG |= 0x3;    //11 columns
  49. P1MEMCFG &= ~(0xf << 3);
  50. P1MEMCFG |= (1 << 4); //13 rows , 256M
  51. P1MEMCFG &= ~(0x7 << 15);
  52. P1MEMCFG |= (1 << 16); //burst 4
  53. P1MEMCFG2 |= 0x5;
  54. P1MEMCFG2 &= ~(0x3 << 6);
  55. P1MEMCFG2 |= (1 << 6);  //32bit
  56. P1MEMCFG2 &= ~(0x7 << 8);
  57. P1MEMCFG2 |= (0x3 << 8);
  58. P1MEMCFG2 &= ~(0x3 << 11);
  59. P1MEMCFG2 |= (1 << 11);
  60. p1_chip_0_cfg |= 1 << 16;
  61. P1DIRECTCMD = 0xc0000; //nop
  62. P1DIRECTCMD = 0x000;   //prechargeAII
  63. P1DIRECTCMD = 0x40000; //autorefresh
  64. P1DIRECTCMD = 0x40000;
  65. P1DIRECTCMD = 0xa0000; //MRS
  66. P1DIRECTCMD = 0x80032; //EMRS
  67. MEM_SYS_CFG = 0X0;
  68. /*set DRAM to "go" state*/
  69. P1MEMCCMD = 0x000;
  70. /*wait for "ready" state*/
  71. while ((P1MEMSTAT & 0X3) != 0X1);
  72. }

s3c6410 ddr初始化相关推荐

  1. 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 ...

  2. 如何修改rk3399 ddr初始化代码的波特率

    终极方法(先公布答案) hexdump -ve '1/1 "%.2X"' rk3399_ddr_800MHz_v1.25.bin | \ sed "s/60E31600/ ...

  3. 3.3519v101-uboot-start.S分析DDR初始化

    一般是DDR3控制器有,采用fly-by拓扑,CK与DQS的时延难以控制,用ddr traning用于调整两者之间的时延,已达到最佳采样点的目的.窗口值反映出当前CK与DQS的偏移值,窗口越大,窗口越 ...

  4. s3c6410 nand初始化

    ok6410 nand初始化和读数据(用于copy代码至ram) [plain] view plaincopy #define MEM_SYS_CFG (*((volatile unsigned lo ...

  5. S3C6410 时钟初始化

    ++++++++++++++++++++++++++++++++++++++++++ 本文系本站原创,欢迎转载! 转载请注明出处: http://blog.csdn.net/mr_raptor/art ...

  6. DDR突然初始化失败 Debug记录

    背景:板卡用的一直好好的,硬件没有什么问题,DDR跑在2400M,也一直正常工作. 但最近有个工程中,需要增加SRIO接口,SRIO接收的数据需要先过DDR,工程编完下载bit后,偶尔会提示DDR初始 ...

  7. 烧录时初始化DDR报错 [0x10105004]Romcode/初始化DDR/读取初始化结果/命令结果返回错误

    如下图,烧录时DDR初始化报错 [0x10105004]Romcode/初始化DDR/读取初始化结果/命令结果返回错误 串口打印信息如下图 通过日志信息我们可以发现DDR类型为DDR4,初始化时却只检 ...

  8. 【嵌入式开发】ARM 内存操作 ( DRAM SRAM 类型 简介 | Logical Bank | 内存地址空间介绍 | 内存芯片连接方式 | 内存初始化 | 汇编代码示例 )

    文章目录 一. 内存 简介 1. 两大内存分类 ( 1 ) DRAM 简介 ( 定期刷新 | 速度慢 | 成本低 ) ( 2 ) SRAM 简介 ( 不需刷新 | 存取速度快 | 功耗大 | 成本高 ...

  9. NXP(I.MX6uLL)DDR3实验——DDR3初始化、校准、超频测试

    DDR3L 初始化与测试 ddr_stress_tester简介(DDR压力测试工具) DDR3L驱动配置 DDR3L校准 DDR3L超频测试 DDR3L驱动总结 ddr_stress_tester简 ...

最新文章

  1. 监控神器Prometheus用不对,也就是把新手村的剑
  2. python中使用html前端页面显示图像预测结果(改进)
  3. TableLayout(表格布局)
  4. c++中堆、栈内存分配
  5. 直播报名 | 官方解读NVIDIA黑科技:StyleGAN的架构与实现
  6. mysql将一个字段的值根据逗号拆分_mysql中要根据某个逗号分割的字符串关联查询另一张表的数据...
  7. Windows系统MySQL8.0的安装教程
  8. 在linux上处理base64加密和解密
  9. Android Webview实现有道电子词典
  10. 详解用OpenCV绘制各类几何图形
  11. 风控五大模型、三大风险指的是什么--几大模型PD、LGD、评分模型都有哪些细节点
  12. Python自学笔记-lambda函数(来自廖雪峰的官网Python3)
  13. 从需求出发来看关系模型与非关系模型–时代的变革
  14. matlab 复杂曲面,基于MATLAB生成的SCR文件实现AutoCAD中复杂曲线曲面的绘制.pdf
  15. vue打卡日历_VUE也有自己的日历组件
  16. 帆软BI工具Fine BI连接数据库
  17. 如何将PDF文件中的繁体字转成简体字?
  18. 文本diff算法Patience Diff
  19. Squeeze-and-Excitation Networks论文翻译——中文版
  20. 美国-机械故障预防技术学会MFPT

热门文章

  1. 方舟编译器的安装和编译Helloword
  2. maven导出Java方法_eclipse导出maven工程的可执行jar包
  3. IDEA显示完整目录,取消合并的文件,取消“ . “ 的这种目录
  4. android没有界面app,Android离线打包 app处于原生界面 切换到桌面再点击app 原生界面被关闭...
  5. python生成安装程序_python生成安装文件 msi
  6. 鸿蒙系统和你,鸿蒙系统面世,但与您所想的不一样
  7. 5、ABPZero系列教程之拼多多卖家工具 修改User表结构
  8. 简单博弈论总结加例题解析
  9. grunt安装与运行
  10. 【翻译】在Sencha Touch中创建离线/在线代理