基于RT1052 Aworks 内存扩容记录(一)
本文主要是通过迁移的思维,记录本人初次使用周立功的Aworks框架进行BSP开发
1. 首先阅读原理图

内存容量由32M扩容至64M。
2. 再则比较两颗芯片的参数
通过比较32M和64M SDRAM的数据手册,其行地址线不变,数据位宽不变,列地址线多了一根。
在相同的频率下,关键参数兼容。
3. 查找Aworks初始化DDR参数的位置
在工程里面找到flexram_config_for_armcc.S 文件提供了初始化DDR参数的函数接口,通过阅读DDR初始化的汇编函数。
配置总的SDRAM容量大小:
ldr r0, = 0x8000001B
str r0, [r1], #4
*(0x402F0010) = 0x8000001B 32M
New: *(0x402F0010) = 0x8000001D 64M
参考芯片手册进行修该:

配置列地址线的位数:
ldr r0, = 0x00000F31
ldr r1, = 0x402F0040
str r0, [r1], #4
老配置:
*(0x402F0040) = 0x00000F31
CL=3
COL=9BIT
BL=8
Port size = 16
新配置:
New: *(0x402F0040) = 0x00000E31
CL=3
COL=10BIT
BL=8
Port size = 16
参考芯片手册进行修改:

4. 适配sct文件
在easy_arm_rt1052_flexspi_flash.sct文件当中多出来的32M内存,
HEAP_SIZE 增加27M, VRAM_SIZE增加5M,如下所示:


在easy_arm_rt1052_sdram.sct文件当中多出来的32M内存,
HEAP_SIZE 增加27M, VRAM_SIZE增加5M,如下所示:

5. 支持SDRAM 在线调试
为了支持SDRAM调试,需要修该其在线调试的ini文件如下所示:

在easy_arm_rt1052_sdram.ini会调用 easy_arm_rt1052_common.ini的函数。
Index: easy_arm_rt1052_common.ini
===================================================================
--- easy_arm_rt1052_common.ini (revision 1)
+++ easy_arm_rt1052_common.ini (working copy)
@@ -131,8 +131,8 @@
_WDWORD(0x402F0000, 0x10000004);
_WDWORD(0x402F0008, 0x00030524);
_WDWORD(0x402F000C, 0x06030524);
- _WDWORD(0x402F0010, 0x8000001B);
- _WDWORD(0x402F0040, 0x00000F31);
+ _WDWORD(0x402F0010, 0x8000001D);
+ _WDWORD(0x402F0040, 0x00000E31);
_WDWORD(0x402F0044, 0x00652922);
_WDWORD(0x402F0048, 0x00010920);
_WDWORD(0x402F004C, 0x50210A08);
6.如何测试
可以使用SDK自带的测试样例demo_sdram.c 测试日记如下所示:
AWorks for i.MX RT1050, build Oct 15 2020
AWorks SDK Version is 2.1.0 <2020-04-20>
use panel: tft_panel 0 (480 x 272 16 bpp)
current time: 1970-01-01 05:18:01
P/IP i|AWorks->>> nitializing
Hostname set to AWorks
TCP/IP initialized
netif: add 0 <eth0>, (default)
Application Start.
demo_sdram test...
test_sdram_write:246.15 MB/s
test_sdram_read:90.14 MB/s
test sdram success
test_sdram_read:90.14 MB/s
test sdram success
test_sdram_read:90.14 MB/s
test sdram success
test_sdram_read:90.14 MB/s
test sdram success
test_sdram_read:90.14 MB/s
test sdram success
```</eth0>
基于RT1052 Aworks 内存扩容记录(一)的更多相关文章
- Go/Python/Erlang编程语言对比分析及示例 基于RabbitMQ.Client组件实现RabbitMQ可复用的 ConnectionPool(连接池) 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!
Go/Python/Erlang编程语言对比分析及示例 本文主要是介绍Go,从语言对比分析的角度切入.之所以选择与Python.Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性, ...
- 最简单的基于FFmpeg的内存读写的例子:内存转码器
===================================================== 最简单的基于FFmpeg的内存读写的例子系列文章列表: 最简单的基于FFmpeg的内存读写的 ...
- 最简单的基于FFmpeg的内存读写的例子:内存播放器
===================================================== 最简单的基于FFmpeg的内存读写的例子系列文章列表: 最简单的基于FFmpeg的内存读写的 ...
- (转)最简单的基于FFmpeg的内存读写的例子:内存播放器
ffmpeg内存播放解码 目录(?)[+] ===================================================== 最简单的基于FFmpeg的内存读写的例子系列文章 ...
- 基于.NetCore3.1系列 —— 日志记录之初识Serilog
一.前言 对内置日志系统的整体实现进行了介绍之后,可以通过使用内置记录器来实现日志的输出路径.而在实际项目开发中,使用第三方日志框架(如: Log4Net.NLog.Loggr.Serilog.Sen ...
- Java安全之基于Tomcat实现内存马
Java安全之基于Tomcat实现内存马 0x00 前言 在近年来红队行动中,基本上除了非必要情况,一般会选择打入内存马,然后再去连接.而落地Jsp文件也任意被设备给检测到,从而得到攻击路径,删除we ...
- 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Caching; usi ...
- kernel中,dump_stack打印调用栈,print_hex_dump打印一片内存,记录一下
kernel中,dump_stack打印调用栈,print_hex_dump打印一片内存,记录一下
- 基于JVM(内存)和Tomcat性能调优
一.总结前一天的学习 从“第三天”的性能测试一节中,我们得知了决定性能测试的几个重要指标,它们是: ü 吞吐量 ü Responsetime ü Cpuload ü MemoryUsa ...
随机推荐
- 在docker中使用nginx部署前端项目
前言 部署了三个nginx用于前端项目, 并使用keepalived部署好热备, 所以总共有5个nginx 创建好nginx的文件和配置 根据上面的指令创建好目录 mkdir /home/web/ng ...
- ctf实验吧逻辑问题
ctf5.shiyanbar.com/web/5/index.php 绕开. php题,习惯先看源码,F12,结果发现了 url输入了一看 告诉了我们后台逻辑.分析一下,发现只要使得$row[&quo ...
- centos搭建dns服务器
前言:搭建dns服务器,dns服务器我就不多说什么了,大家都懂,就是域名解析,就将ip装换为域名,域名就可以理解为类似这样的www.baidu.com网址,接下来我就直接上图了.这里面最重要的是修改u ...
- postgresql 使用游标笔记
游标介绍:游标是一种从表中检索数据并进行操作的灵活手段,游标主要用在服务器上,处理由客户端发送给服务端的sql语句,或是批处理.存储过程.触发器中的数据处理请求. 游标的优点在于它允许应用程序对查询语 ...
- QT单进程下载
QT 同步下载 #include <QNetworkAccessManager> #include <QNetworkRequest> #include <QNet ...
- C语言:地址
一切都是地址 C语言用变量来存储数据,用函数来定义一段可以重复使用的代码,它们最终都要放到内存中才能供 CPU 使用.数据和代码都以二进制的形式存储在内存中,计算机无法从格式上区分某块内存到底存储的是 ...
- C语言:最大公约数和最小公倍数
#include <stdio.h> int main() { int a,b,c,m,t; printf("请输入两个数:\n"); scanf("%d%d ...
- Java基础00-数组9
1. 数组定义格式 1.1 数组概述 1.2 什么是数组 1.3 数组定义格式 推荐使用第一种格式,因为第一种格式读法比较顺畅. 2. 数组初始化之动态初始化 2.1 数组初始化概述 2.2 数组初始 ...
- Hive——连接方式
Hive--连接方式 一.CLI连接 直接通过CLI连接hive,进行相关hive sql 操作. 直接使用 hive-1.1.0-cdh5.7.0/bin/hive 命令即可 hive> ...
- jquery性能优化建议-上篇
一.注意定义jQuery变量的时候添加var关键字这个不仅仅是jQuery,所有javascript开发过程中,都需要注意,请一定不要定义成如下:$loading = $('#loading'); / ...