本文主要是通过迁移的思维,记录本人初次使用周立功的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. chrome 屏蔽广告的利器

    Adblock Plus https://chrome.google.com/webstore/detail/adblock-plus/cfhdojbkjhnklbpkdaibdccddilifddb ...

  2. Kong Admin API — 核心对象

    目录 Service API详解 1. 添加服务 2. 列出service列表 3. 查找service 按条件查找service 查找与指定route关联的service 查找与指定Plugin关联 ...

  3. python使用笔记26--多线程、多进程

    1.概念 线程.进程 进程是资源的集合,也就是一个程序 线程是一个程序运行的最小单位 线程是在进程里面的 默认,一个进程就只有一个线程 一个电脑有几核CPU就只能同时运行几个任务,比如4核CPU只能同 ...

  4. Spring RestTemplate 之get请求

    一,简介:Spring RestTemplate 是 Spring 提供的用于访问 Rest 服务的客户端,RestTemplate 提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写 ...

  5. Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第九集-补充-热部署项目到tomcat中,但是数据库配置文件错误,中途停止部署,导致执行shutdow.sh报错异常: Could not contact localhost:8005. Tomcat may not be running error while shutting down】

    1,经过千辛万苦的尝试和百度,终于一个博客:http://stackmirror.caup.cn/page/skxugjqj0ldc关于catalina.sh文件的执行引起了我的注意: 2,我执行ca ...

  6. Python基础之魔术方法(一个序列容器的魔术方法)

    # 创建自己想要的序列容器魔术方法'''__len__():调用len(obj)函数会调用这个魔术方法__getitem__(self,key):在使用下标操作temp['key']以及切片操作的时候 ...

  7. 微信小程序云开发-云存储-上传文件(图片/视频)到云存储 精简代码

    说明 图片/视频这类文件是从客户端会话选择文件. 一.wxml文件添加if切换显示 <!--上传文件到云存储--> <button bindtap="chooseImg&q ...

  8. 忘记Apple ID密码,如何从iPhone/iPad上移除iCloud账号

    忘记Apple ID密码?不用担心!在本文中,我们将分享3种有效方法,即使您不知道密码,也可以轻松移除iPhone或iPad设备上的iCloud账号. 注意:移除iCloud 账号前请备份数据 在开始 ...

  9. Guava - Set集合

    当我们在统计一个字符串中每个单词出现的次数时,通常的做法是分割字符串,遍历字符串,然后放到一个map里面,来进行统计,Guava中提供了类似功能的集合,Multiset String strWorld ...

  10. odoo看板笔记

    案例0001 odoo中看板使用 #其中一定要many2one阶段字段名称 stage_id <kanban default_group_by="stage_id"> ...