C6678-缓存和内存

这篇具有很好参考价值的文章主要介绍了C6678-缓存和内存。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

全局内存映射

C6678-缓存和内存

扩展内存控制器(XMC)-MPAX内存保护与地址扩展

C6678-缓存和内存
每个C66x核心都具有相同大小的L1和L2缓存,并且可配置为普通内存使用。
每个核心也都有独立的MPAX(隶属于XMC),主要功能如下:
a) 将32bit逻辑地址映射到36bit物理地址上
b) 提供内存保护功能
c) 支持16个可配置映射段如下。

C6678-缓存和内存
注意:复位后Segment0映射起始地址为00000H,但内部CGEM配置空间不可映射,因此实际上只映射了4MB共享内存。
应用实例:
这是一个单镜像的多核应用实例,每个核心共享代码段,因此代码段物理地址相同,数据段通过MPAX分别映射到不同的物理地址空间,但实际上对于每个核心的应用程序而言,所访问数据段的逻辑地址相同。

C6678-缓存和内存

MPAX的段寄存器,分别对应16个段。

C6678-缓存和内存

C6678-缓存和内存
映射逻辑地址/物理地址的第12位均为0,也就是说映射最小单位为4KB。

使用例程

本例程采用单镜像加载,Core0映射4MB的共享空间,进行映射确认;Core3和Core4分别映射1MB的共享空间到0x0_0c000000和0x0_0c100000的物理内存,分别向各自的共享内存起始地址写100个数据。
通过Core0观察0x0c000000和0x0c100000分别可见其他2个核心写入的不同数据。
程序代码:《c6678内存映射示例工程下载》

部分应用程序代码:

/* CSL Header file */
#include <ti/csl/csl_pscAux.h>
#include <ti/csl/csl_xmcAux.h>
#include <c6x.h>

#define MPAX_SEG_1M_Size 0x13
#define MPAX_SEG_4M_Size 0x13+2
/****************************************************
 * 注意:逻辑地址:logicAddr只保留高20bit,
 * 物理地址:phyAddr,只保留高24bit。
 */
void mpax_map(Uint32 segment,Uint32 logicAddr,Uint32 phyAddr,Uint32 segSize)
{
    CSL_XMC_XMPAXH mpaxh;
    CSL_XMC_XMPAXL mpaxl;
    mpaxh.segSize = segSize;
    mpaxh.bAddr = logicAddr; //逻辑地址
    mpaxl.ux = 1;
    mpaxl.uw = 1;
    mpaxl.ur = 1;
    mpaxl.sx = 1;
    mpaxl.sw = 1;
    mpaxl.sr = 1;
    mpaxl.rAddr = phyAddr;//物理地址
    CSL_XMC_setXMPAXH (segment, &mpaxh);
    CSL_XMC_setXMPAXL (segment, &mpaxl);
}
int main(void)
{
    Uint32  Core_ID;
    Uint32 *test;
    psc_init();
    Uint32 i;
    // Get the Current Core ID
    Core_ID = DNUM; // c6x.h
    if (Core_ID == 0)
    {
        mpax_map(0, 0x0c000, 0x00c000, MPAX_SEG_4M_Size);
    }
    if (Core_ID == 3)
    {
        mpax_map(0,0x0c000,0x00c000,MPAX_SEG_1M_Size);
        test = (Uint32 *)0x0c000000;
        for (i=0;i<100;i++)
            *test++ = 0xA0A0A0A0;
    }
    if (Core_ID == 4)
    {
        mpax_map(0,0x0c000,0x00c100,MPAX_SEG_1M_Size);
        test = (Uint32 *)0x0c000000;
        for (i=0;i<100;i++)
            *test++ = 0x11111111;
    }
    while(1);
}

缓存

C6678-缓存和内存
C6678-缓存和内存

C6678-缓存和内存
C6678-缓存和内存
C6678-缓存和内存
C6678-缓存和内存
C6678-缓存和内存
C6678-缓存和内存文章来源地址https://www.toymoban.com/news/detail-422519.html

到了这里,关于C6678-缓存和内存的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C6678-缓存和内存

    每个C66x核心都具有相同大小的L1和L2缓存,并且可配置为普通内存使用。 每个核心也都有独立的MPAX(隶属于XMC),主要功能如下: a) 将32bit逻辑地址映射到36bit物理地址上 b) 提供内存保护功能 c) 支持16个可配置映射段如下。 注意:复位后Segment0映射起始地址为00000H,但内

    2023年04月23日
    浏览(13)
  • AD域控制器将辅域控制器角色提升为主域控制器

    域控服务器迁移,已将新机器添加为该域的辅域控制器。 主域控制器:test-dc-01 辅域控制器:test-dc-02 需求将主辅域的角色进行互换,test-dc-01更换为辅域,test-dc-02更换为主域。 方法1 命令行修改AD域角色 1.查看当前主域控制器是哪台机器,查询命令 netdom query fsmo 可以看到当前

    2024年02月12日
    浏览(36)
  • Unity 第三人称 玩家控制器+相机控制器

    今天给大家分享一个简单的Unity第三人称视角下玩家控制器和相机控制器的脚本编写方法。   效果如下: 主要分三部分实现:人物旋转、人物移动、相机旋转。 1.人物移动: 首先获取到人物水平和垂直移动的参数: 因为人物移动的方向跟摄像头一致,所以需要根据摄像头的

    2024年02月06日
    浏览(45)
  • 18-k8s控制器资源-cronjob控制器

            job控制器是执行完一次任务,就结束;         cronjob控制器,是基于job控制器,定期频率性执行任务;等同于linux系统中的crontab一样; [root@k8s231 pi]# vim cronjob.yaml apiVersion: batch/v1 kind: CronJob metadata:   name: xinjizhiwa spec:   schedule: \\\"* * * * *\\\"   #定义job的模板   jobTemplate

    2024年02月22日
    浏览(49)
  • 15-k8s控制器资源-deployment/部署控制器

            在学习rc和rs控制器资源时,我们指导,这两个资源都是控制pod的副本数量的,但是,他们两个有个缺点,就是在部署新版本pod或者回滚代码的时候,需要先apply资源清单,然后再删除现有pod,通过资源控制,重新拉取新的pod来实现回滚或者迭代升级;         那么

    2024年02月21日
    浏览(54)
  • 14-k8s控制器资源-rs控制器replicasets

            replicaset副本控制器,简称:rs控制器;         用法:与rc控制器“几乎”相同;         能力:可以指定pod的副本始终存活,相比于rc控制器;支持标签匹配,也支持标签表达式         注意:不论是rc还是rs资源,都是通过“标签”惊醒匹配pod的,如果有同样

    2024年02月21日
    浏览(45)
  • 13-k8s的控制器资源-rc控制器replicationcontrollers

            replicationcontrollers控制器资源,简称:rc控制器;         简单理解,rc控制器就是控制相同的pod副本数量;         使用rc控制器资源创建pod,就可以设定创建pod的数量; [root@k8s231 rc]# vim rc.yaml apiVersion: v1 kind: ReplicationController metadata:   name: rc01 spec:   #控制pod的副本

    2024年02月20日
    浏览(47)
  • 【进口控制器替代】基于Zynq-7020 FPGA的NI 8槽CompactRIO控制器

    667 MHz双核CPU,512 MB DRAM,1 GB存储容量,Zynq-7020 FPGA,更宽工作温度范围,8槽CompactRIO控制器 cRIO-9068是一款坚固耐用的无风扇嵌入式控制器,可用于高级控制和监测应用。这款软件设计控制器搭载FPGA、运行NI Linux Real-Time操作系统的实时处理器以及嵌入式用户界面功能。cRIO-906

    2024年01月25日
    浏览(49)
  • Spring MVC学习随笔-控制器(Controller)开发详解:控制器跳转与作用域(一)

    学习视频:孙哥说SpringMVC:结合Thymeleaf,重塑你的MVC世界!|前所未有的Web开发探索之旅 3.流程跳转 在web.xml里添加Servlet然后执行 可以看到通过url拼接可以获取传递的数据 四种跳转指的是:在SpringMVC中控制器与JSP或者控制器与控制器之间的跳转。 Controller - - forward — JSP Co

    2024年02月05日
    浏览(43)
  • 自抗扰(ADRC)控制原理及控制器设计

    自抗扰控制是在PID控制算法基础上进行改进的新型控制方法,它具有不依赖于控制对象模型、不区分系统内外扰的结构特点。常用的自抗扰控制器主要由 跟踪微分器 (Tracking Differentiator,TD)、 扩张状态观测器 (Extended State Observer,ESO)和 非线性状态误差反馈控制率 (Non

    2024年01月18日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包