24 SEMC相关

文章目录

  • 24.1 SEMC 简介
  • 24.2 SEMC 框图剖析
    • 24.2.1 通讯引脚
      • 24.2.1.1 SEMC 的片选信号
      • 24.2.1.2 数据选通信号 DQS
    • 24.2.2 存储器控制器
    • 24.2.3 IP 命令和 AXI 命令
    • 24.2.4 驱动时钟
  • 24.4 SEMC 初始化配置结构体
    • 24.4.1 dqsMode
    • 24.4.2 cmdTimeoutCycles
    • 24.4.3 busTimeoutCycles
    • 24.4.4 queueWeight

24.1 SEMC 简介

RT10529使用SEMC外设来管理扩展的存储器,SEMC是Smart External Memory Controller的缩写,译为智能的外部存储控制器。

  • 可以用于驱动包括 SRAM、SDRAM、NorFlash、NAND Flash 等类型的存储器以及使用 8080 接口协议(DBI 接口)的显示器和设备。
  • SEMC 支持使用 8、16 位的方式访问 SDRAM,最多支持控制 4 个 SDRAM 存储器,每个 SDRAM存储器最大容量为 512Mb(64MByte),支持使用 ARM 内核的 AXI 接口控制SDRAM。

24.2 SEMC 框图剖析

在这里插入图片描述

24.2.1 通讯引脚

右侧显示的是 SEMC 与外部多种类型存储设备的连接

  • 地址线 SEMC_ADDR 和数据线 SEMC_DA 是所有控制器都共用的

24.2.1.1 SEMC 的片选信号

SEMC 外设把 SDRAM 的控制分成了 Region#0/1/2/3 四个区域

  • 控制时每个区域有一个对应的片选信号 CS0/1/2/3
  • 每个区域可以连接到一个外部 SDRAM 存储器进行控制
  • 当触发访问到某区域时,与之对应的片选信号会使能与其连接的 SDRAM

RT1052 提供了可软件定制信号的引脚 SEMC_CSX0/1/2/3,它们中的任意一个引脚都可以“变形”成 CS1/2/3 中的任意一个信号

  • CS0 片选信号只能使用 SEMC_CS0 引脚

在这里插入图片描述

24.2.1.2 数据选通信号 DQS

在 RT1052 中包含一个数据选通信号 SEMC_DQS,它是 DDR 类型的 SDRAM 中才有的信号

  • 功能主要用来在一个时钟周期内准确地区分出每个传输周期,并便于接收方准确接收数据。
  • 它是双向的,在写入时它用来传送由主控芯片发来的 DQS 信号,读取时,则由 SDRAM 芯片生成 DQS向主控发送,完全可以说,它就是数据的同步信号。

RT1052 不支持驱动 DDR 类型的 SDRAM

  • 设计硬件时,必须使 RT1052 的这个 SEMC_DQS 引脚悬空
  • 在软件配置方面必须开启该引脚的 SION 功能
  • 而且要把 SEMC的模块控制寄存器 MCR[DQSMD] 位置 1,即配置为使用 DQS 引脚的读选通信号

24.2.2 存储器控制器

SEMC 外设内部包含有 SDRAM/NOR/SRAM/NAND/8080 设备使用的不同控制器

  • 不同的控制器有专用的寄存器用于配置其工作模式。

例如配置 SEMC 通用控制的寄存器主要有 MCR、IOCR、BMCR0/1、IPCR0/1/2、IPCMD 以及 IP-TXDAT/IPRXDAT;

  • SDRAM 专用的控制寄存器的为 BR0/1/2/3 以及 SDRAMCR0/1/2/3;
  • NAND的专用控制寄存器为 BR4/8 以及 NANDCR0/1/2/3。

24.2.3 IP 命令和 AXI 命令

使用 FlexSPI 外设时,有 IP 命令和 AHB 命令两种方式,SEMC 外设也类似,它支持使用 IP 命令和 AXI 命令控制外部存储器。

  • 其中 AXI 是 Advanced eXtensible Interface 的缩写,这是 ARM 公司提出的 AMBA 协议的一部分,是一种高性能、高带宽、低延迟的片内总线。

24.2.4 驱动时钟

控制 SDRAM 时,SEMC的 SEMC_CLK 线的时钟信号是由 SEMC 根时钟 SEMC_CLK_ROOT 提供的
在这里插入图片描述

SEMC 根时钟有 3 个可选输入来源:

  • PLL2 PFD2:该时钟常规配置为 396MHz,为了 SDRAM 运行更稳定,本开发板把该时钟配置为 316.8MHz。
  • PLL3 PFD1:该时钟常规配置为 454.74MHz。
  • PERIPH CLK: 这 是 AHB_CLK_ROOT 的 时 钟 源,PERIPH CLK 分 频 后 得 到AHB_CLK_ROOT,SEMC 也可以使用这个时钟源

时钟源经过一个 3 位的分频器,它可对时钟进行 1~8 分频,分频后得到 SEMC 根时钟 SEMC_CLK_ROOT。

24.4 SEMC 初始化配置结构体

SEMC 配置结构体 semc_config_t

/*!
2 * @brief SEMC 配置结构体
3 * busTimeoutCycles: 当 busTimeoutCycles 设置为 0 时 , 总线的超时周期为
4 * 255*1024. 使用其它值时,总线周期为 busTimeoutCycles*1024
5 * cmdTimeoutCycles: 用于设置命令执行超时周期,与 busTimeoutCycles 类似
6 */
7 typedef struct _semc_config_t {
8 semc_dqs_mode_t dqsMode; /*!< Dummy 读选通模式 */
9 uint8_t cmdTimeoutCycles; /*!< 命令执行超时周期 */
10 uint8_t busTimeoutCycles; /*!< 总线超时周期 */
11 semc_axi_queueweight_t queueWeight; /*!< AXI queue weight. */
12 } semc_config_t;

24.4.1 dqsMode

寄存器位 MCR[DQSMD],它用于选择 DQS 的读选通模式

  • 可选值分别为使用内部回环的读选通信号(kSEMC_Loopbackinternal)和从 DQS 引脚得到的读选通信号(kSEMC_Loopbackdqspad)。
  • DQS 信号用于接收方更准确地接收数据,应用时需要把它设置成 kSEMC_Loopbackdqspad 才能以高频率的时钟访问 SDRAM

24.4.2 cmdTimeoutCycles

寄存器位 MCR[CTO],它用于设定命令执行超时周期

  • 当 SEMC 命令的执行时间超过该配置值时,可触发 IPCMDERR 和 AXICMDERR 中断。
  • 当此成员被赋值为 0 时,超时周期被配置为 2561024 个时钟周期,赋为其它值时被配置为 cmdTimeoutCycles1024。

24.4.3 busTimeoutCycles

寄存器位 MCR[BTO],它用于设定 AXI 总线超时周期

  • 当此成员被赋值为 0 时,超时周期被配置为 2551024 个时钟周期,赋为其它值时被配置为 busTimeoutCycles1024。

24.4.4 queueWeight

寄存器位 BMCR0/1,在 AXI 接口控制器中包含有 Queue A 和 Queue B 两个队列用来缓冲
AXI 访问触发的请求

  • queueWeight 就是用于定制 Queue A 和 Queue B 相关的权重配置,本成员本身也是一个结构体类型
1 /*! @brief SEMC AXI queue 权重配置 */
2 typedef struct _semc_axi_queueweight {
3 semc_queuea_weight_t *queueaWeight; /*!< queue a 的权重配置 */
4 semc_queueb_weight_t *queuebWeight; /*!< queue b 的权重配置 */
5 } semc_axi_queueweight_t;
6
7 /*! @brief SEMC AXI queue a 权重配置 */
8 typedef struct _semc_queuea_weight {
9 /*!< queue 0 的 qos 权重配置 */
10 uint32_t qos : 4;
11 /*!< queue 0 的 aging 权重配置 */
12 uint32_t aging : 4;
13 /*!< queue 0 的读 / 写切换( switch )权重配置 */
14 uint32_t slaveHitSwith : 8;
15 /*!< queue 0 的读 / 写无切换( no switch )权重配置 */
16 uint32_t slaveHitNoswitch : 8;
17 } semc_queuea_weight_t;
18
19 /*! @brief SEMC AXI queue b 权重配置 */
20 typedef struct _semc_queueb_weight {
21 /*!< queue 1 的 qos 权重配置 */
22 uint32_t qos : 4;
23 /*!< queue 1 的 aging 权重配置 */
24 uint32_t aging : 4;
25 /*!< queue 1 的读 / 写切换( switch )权重配置 */
26 uint32_t slaveHitSwith : 8;
27 /*!< queue 1 的页碰撞( page hit )权重配置 */
28 uint32_t weightPagehit : 8;
29 /*!< queue 1 的 bank 翻转 (bank rotation) 权重 */
30 uint32_t bankRotation : 8;
31 } semc_queueb_weight_t;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2776788.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

无人机图像识别技术研究及应用,无人机AI算法技术理论,无人机飞行控制识别算法详解

在现代科技领域中&#xff0c;无人机技术是一个备受瞩目的领域。随着人们对无人机应用的需求在不断增加&#xff0c;无人机技术也在不断发展和改进。在众多的无人机技术中&#xff0c;无人机图像识别技术是其中之一。 无人机图像识别技术是利用计算机视觉技术对无人机拍摄的图像…

鸿蒙原生应用再添新丁!央视新闻 入局鸿蒙

鸿蒙原生应用再添新丁&#xff01;央视新闻 入局鸿蒙 来自 HarmonyOS 微博2月9日消息&#xff0c;#央视新闻启动鸿蒙原生应用开发#中央广播电视总台旗舰央视新闻客户端正式宣布&#xff0c;将基于HarmonyOS NEXT鸿蒙星河版&#xff0c;启动央视新闻 鸿蒙原生应用开发&#xf…

《MySQL 简易速速上手小册》第10章:未来趋势和进阶资源(2024 最新版)

文章目录 10.1 MySQL 在云计算和容器化中的应用10.1.1 基础知识10.1.2 重点案例&#xff1a;使用 Python 部署 MySQL 到 Kubernetes10.1.3 拓展案例 1&#xff1a;在 AWS RDS 上部署 MySQL 实例10.1.4 拓展案例 2&#xff1a;使用 Docker 部署 MySQL 10.2 MySQL 和 NoSQL 的整合…

【软考】系统集成项目管理工程师(十五)文档和配置管理【2分】

一、 文档管理 二、配置管理 1、配置项 基线类型基线包括管理原则基线配置项所有设计文档和源程序向开发人员开放读取的权限非基线配置项项目的各类计划额报告向PM、CCB及相关人员开放所有配置项的操作权限应由CMO&#xff08;配置管理员&#xff09;严格管理 2、基线 3、配置…

可达鸭二月月赛——基础赛第六场(周五)题解,这次四个题的题解都在这一篇文章内,满满干货,含有位运算的详细用法介绍。

姓名 王胤皓 T1 题解 T1 题面 T1 思路 样例输入就是骗人的&#xff0c;其实直接输出就可以了&#xff0c;输出 Hello 2024&#xff0c;注意&#xff0c;中间有一个空格&#xff01; T1 代码 #include<bits/stdc.h> using namespace std; #define ll long long int …

自制微信红包封面

一.前言 这不是过年了吗&#xff0c;各大平台都发放了免费的微信红包封面&#xff0c;但我老是抢不到QAQ。于是乎&#xff0c;我便想“授人以鱼不如授人以渔”&#xff0c;不如自己造个封面。 二.主要步骤 1.条件 1>创建视频号 2>过去一年发表过视频号 3>过去一…

春节:当代发展及创新传承

为了解中国传统节日——春节&#xff0c;2024年2月9日&#xff0c;曲阜师范大学计算机学院“古韵新声&#xff0c;格物致‘知’”实践队队员贾宣在山东省青岛市西海岸新区的商场中进行了街头调查&#xff0c;探究春节的发展与当代意义。 春节历史悠久&#xff0c;起源于早期人…

Educational Codeforces Round 145 (Rated for Div. 2)C. Sum on Subarrays(构造)

很意思的一道构造题 题意&#xff1a;给一个 n 、 k n、k n、k&#xff0c;让构造长度为n的数组满足&#xff0c;子数组为整数的个数为k个&#xff0c;负数的为 k − ( n 1 ) ∗ n / 2 k-(n1)* n/2 k−(n1)∗n/2,每个数的范围为 [ − 1000 , 1000 ] [-1000,1000] [−1000,10…

1987-2022年各省进出口总额数据整理(含进口和出口)(无缺失)

1987-2022年各省进出口总额数据整理&#xff08;含进口和出口&#xff09;&#xff08;无缺失&#xff09; 1、时间&#xff1a;1987-2022年 2、来源&#xff1a;各省年鉴、统计公报 3、指标&#xff1a;进出口总额&#xff08;万美元&#xff09;、进口总额&#xff08;万美…

代码随想录 Leetcode122. 买卖股票的最佳时机 II

题目&#xff1a; 代码(首刷自解 2024年2月9日&#xff09;&#xff1a; class Solution { public:int maxProfit(vector<int>& prices) {int res 0;for (int i 1; i < prices.size(); i) {if (prices[i] - prices[i - 1] > 0) {res prices[i] - prices[i …

图神经网络与图表示学习: 从基础概念到前沿技术

目录 前言1 图的形式化定义和类型1.1 图的形式化定义1.2 图的类型 2 图表示学习2.1 DeepWalk: 融合语义相似性与图结构2.2 Node2Vec: 灵活调整随机游走策略2.3 LINE: 一阶与二阶邻接建模2.4 NetMF: 矩阵分解的可扩展图表示学习2.5 Metapath2Vec: 异构图的全面捕捉 3 图神经网络…

深入实战:ElasticSearch的Rest API与迭代器模式在高效查询中的应用

在我们公司&#xff0c;大多数Java开发工程师在项目中都有使用Elasticsearch的经验。通常&#xff0c;他们会通过引入第三方工具包或使用Elasticsearch Client等方式来进行数据查询。然而&#xff0c;当涉及到基于Elasticsearch Rest API的/_sql?formatjson接口时&#xff0c;…

通过Harbor构建docker私服仓库

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器&#xff0c;它扩展了开源的Docker Distribution&#xff0c;通过添加一些企业必需的功能特性&#xff0c;如安全、标识和管理等。Harbor由VMware公司开发并开源&#xff0c;旨在帮助用户迅速搭建一个企业级的Docke…

C语言每日一题(52)单值二叉树

力扣网 965 单值二叉树 题目描述 如果二叉树每个节点都具有相同的值&#xff0c;那么该二叉树就是单值二叉树。 只有给定的树是单值二叉树时&#xff0c;才返回 true&#xff1b;否则返回 false。 示例 1&#xff1a; 输入&#xff1a;[1,1,1,1,1,null,1] 输出&#xff1a;t…

商汤科技「日日新4.0」正式发布,多维度升级大模型体系,能力比肩GPT-4!

文 | BFT机器人 近日&#xff0c;商汤科技正式发布「日日新SenseNova 4.0」&#xff0c;宣告大模型体系多维度全面升级。这款模型具备更全面的知识覆盖、更可靠的推理能力&#xff0c;以及更优越的长文本理解和数字推理能力。同时&#xff0c;它还支持跨模态交互&#xff0c;为…

C++初阶篇----新手进村

目录 一、什么是C二、C关键字三、命名空间3.1命名空间的定义3.2命名空间的使用 四、C输入和输出五、缺省参数5.1缺省参数的概念5.2缺省参数的分类 六、函数重载6.1函数重载的概念6.2函数重载的原理----名字修饰 七、引用7.1引用概念7.2引用特性7.3常引用7.4引用的使用7.5传值、…

解析十六进制雷达数据格式:解析雷达数据长度。

以Cat62格式雷达数据为例&#xff0c;十六进制雷达数据部分代码&#xff1a; 3e0120bf7da4ffee0085 雷达数据长度使用4个字符&#xff08;2个字节&#xff09;标识&#xff0c;在这里是“0120”&#xff0c;转换为十进制数为288。 雷达数据长度父类&#xff1a; base_length_…

Easy Excel动态表头的实现

步骤&#xff1a; 1.查找官方API文档理解实现 2.实现融入到代码里面 一&#xff1a;Easy Excel动态头实时生成头写入 动态头实时生成头写入 二&#xff1a;实现 目的&#xff1a;实现表头为&#xff0c;第一列是固定列&#xff0c;第二列为动态生成的时间段的每一天的日期…

《MySQL 简易速速上手小册》第7章:MySQL监控和日志分析(2024 最新版)

文章目录 7.1 配置和使用 MySQL 监控工具7.1.1 基础知识7.1.2 重点案例&#xff1a;使用 Python 和 Prometheus 监控 MySQL 性能7.1.3 拓展案例 1&#xff1a;自动化 MySQL 慢查询日志分析7.1.4 拓展案例 2&#xff1a;实时警报系统 7.2 解读 MySQL 日志文件7.2.1 基础知识7.2.…

Linux网络编程——udp套接字

本章Gitee地址&#xff1a;udp套接字 文章目录 创建套接字绑定端口号读取数据发送数据聊天框输入框 创建套接字 #include <sys/types.h> #include <sys/socket.h> int socket(int domain, int type, int protocol);int domain参数&#xff1a;表面要创建套接字的域…