Part8-不用内存怎么行_2440内存初始化lesson2
1、2440地址空间
先去找PCB原理图,看CPU引出的内存地址线和数据线的宽度。
说明内存的其实地址是0x30000000为起始地址。
初始化内存其实是去初始化存储器控制器,只有初始化好这个存储器控制器之后才能访问相应的芯片。
2、内存芯片的硬件连接
3、存储控制器
打开芯片手册,找到存储器控制器章节,
该寄存器分成了8个组,用于设置总线宽度和等待状态的寄存器,有8个组可控制8个BANK。
因为BANK7和BANK6用于接SDRAM的,因为原理图没有使用UB/LB,所以ST7位选择为0,WS7等待状态设置为0,DW7用于设置总线宽度,选择10为32位。BANK6的值与BANK的设置一样。
其他BANK不用保持默认值即可。
用于控制内存的寄存器,MT位用于控制内存使用的什么类型,我们用的SDRAM,值位11,
Trcd表示行列型号之间转换的延时,到底延时是多少,可以看上面的时序图
到具体使用的SDRAM里面去查看列地址数量,打开该芯片手册搜索column
为9位所以SCAN应该为01,
刷新寄存器
TREFMD刷新模式选择:选择自动刷新所以取值0,
Trp:准备充电的时间,从时序可以看出
2个时钟选择00;
Tsrc:行刷新时间,一般是7个时钟,选择11,
Refresh Counter:隔多长时间进行刷新一次,用这里来设置,
BURST_EN突发模式,使用起来,是指访问内存时一次性可以使用批量的数据;
SCKE_EN是否使能节点模式,使能起来
SCLK_EN选择推荐模式选择1;
BK76MAP:用于控制设置BANK6和7的大小的。应该选择001为64M
他们的取值是一样的。
CAL域:
选择011,
到这里内存控制器里面所有值已经列出来了。
手把手写代码:
对存储器控制器初始化之后,便可以使用我们的内存了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】