本文主要是通过迁移的思维,记录本人初次使用周立功的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 内存扩容记录(一)的更多相关文章

  1. Go/Python/Erlang编程语言对比分析及示例 基于RabbitMQ.Client组件实现RabbitMQ可复用的 ConnectionPool(连接池) 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!

    Go/Python/Erlang编程语言对比分析及示例   本文主要是介绍Go,从语言对比分析的角度切入.之所以选择与Python.Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性, ...

  2. 最简单的基于FFmpeg的内存读写的例子:内存转码器

    ===================================================== 最简单的基于FFmpeg的内存读写的例子系列文章列表: 最简单的基于FFmpeg的内存读写的 ...

  3. 最简单的基于FFmpeg的内存读写的例子:内存播放器

    ===================================================== 最简单的基于FFmpeg的内存读写的例子系列文章列表: 最简单的基于FFmpeg的内存读写的 ...

  4. (转)最简单的基于FFmpeg的内存读写的例子:内存播放器

    ffmpeg内存播放解码 目录(?)[+] ===================================================== 最简单的基于FFmpeg的内存读写的例子系列文章 ...

  5. 基于.NetCore3.1系列 —— 日志记录之初识Serilog

    一.前言 对内置日志系统的整体实现进行了介绍之后,可以通过使用内置记录器来实现日志的输出路径.而在实际项目开发中,使用第三方日志框架(如: Log4Net.NLog.Loggr.Serilog.Sen ...

  6. Java安全之基于Tomcat实现内存马

    Java安全之基于Tomcat实现内存马 0x00 前言 在近年来红队行动中,基本上除了非必要情况,一般会选择打入内存马,然后再去连接.而落地Jsp文件也任意被设备给检测到,从而得到攻击路径,删除we ...

  7. 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!

    using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Caching; usi ...

  8. kernel中,dump_stack打印调用栈,print_hex_dump打印一片内存,记录一下

    kernel中,dump_stack打印调用栈,print_hex_dump打印一片内存,记录一下

  9. 基于JVM(内存)和Tomcat性能调优

    一.总结前一天的学习 从“第三天”的性能测试一节中,我们得知了决定性能测试的几个重要指标,它们是: ü   吞吐量 ü   Responsetime ü   Cpuload ü   MemoryUsa ...

随机推荐

  1. 资源:Kafka消息队列下载路径

    Kafka下载路径 http://kafka.apache.org/downloads.html

  2. mysql 深度解析auto-increment自增列"Duliplicate key"问题

    转载自:https://cloud.tencent.com/developer/article/1367681 问题描述 近期,线上有个重要Mysql客户的表在从5.6升级到5.7后master上插入 ...

  3. 最常见的安全漏洞– Acunetix Web应用程序漏洞报告2021

    每年,Acunetix都会为您提供最常见的Web安全漏洞和网络外围漏洞的分析.我们的年度Web应用程序漏洞报告(现已成为Invicti AppSec指标的一部分)是基于从Acunetix在线获得的真实 ...

  4. Doris开发手记3:利用CoreDump文件快速定位Doris的查询问题

    Apache Doris的BE部分是由C++编写,当出现一些内存越界,非法访问的问题时会导致BE进程的Crash.这部分的问题常常较难排查,同时也很难快速定位到对应的触发SQL,给使用者带来较大的困扰 ...

  5. Django基础08篇 filter&tag

    1.Django自带的过滤器filter views.py中代码 def template_tags(request): import datetime content = '三胖content三胖c ...

  6. Django基础-01篇

    一.Django介绍 flask,FastApi是轻量级服务端开发框架 Django是重量级服务端开发框架 ORM:封装了数据库操作 form:校验请求数据 安装Django: pip install ...

  7. python使用笔记002

    一.字符串常用方法 1 s = ' ha.hahaha.' 2 print(s.count('a'))#找某一个元素在字符串里出现的次数 3 print(s.index('a'))#找某一个元素的下标 ...

  8. C语言:判断整除

    if (aa%10==0)来判断 不能用if (aa/10==int(aa/10)) 判断

  9. Flyway使用说明

    Flyway简介 Flyway是源自Google的数据库版本控制插件.项目开发中,数据库往往需要随着软件版本进行变化,相比起手动执行SQL脚本,flyway可以实现自动化的数据库版本修改,让开发/测试 ...

  10. 单细胞分析实录(19): 基于CellPhoneDB的细胞通讯分析及可视化 (下篇)

    在上一篇帖子中,我介绍了CellPhoneDB的原理.实际操作,以及一些值得注意的地方.这一篇继续细胞通讯分析的可视化. 公众号后台回复20210723获取本次演示的测试数据,以及主要的可视化代码. ...