当前位置: 首页 > news >正文

VxWorkds 内存管理(3)

虚拟内存管理

对于带MMU的目标板,VxWorks提供虚拟内存的支持,VxWorks提供了两种虚拟内存管理单元(MMU)的支持: 基本MMU和VxVMI

基本MMU邦定于VxWorks中,可以通过config.h中宏定义INCLUDE MMU BASIC或Tornado工程配置中包含基本MMU组件

VxVMI是wind River公司推出的一个可选软件模块,实现了MMU的全部功能

VxWorks中有关MMU的配置包括以下内容INCLUDE MMU BASIC: 基本MMU的支持。

        INCLUDE MMU FULL: 完整MMU的支持(需要VxVMD

        INCLUDE PROTECT TEXT: 代码段写保护支持(需要VVMD

        INCLUDE PROTECT VEC TABLE: 中断向量表写保护支持需要VxVMI

虚拟内存几个名词:

  1. 虚拟地址空间:由程序计数器的寻址能力来决定其大小,如32位的i86虚拟地址空间=4GB
  2. 物理地址:用于内存芯片级的单元寻址,与处理器连接的地址总线相对应(与地址总线相对应 )
  3. 虚拟地址:虚拟地址空间中的地址,程序中使用的都是虚拟地址
  1. 内存映射:建立虚拟地址与物理地址之间的对应关系一-处理器中MMU可以完成此功能

基本MMU与VxWorks捆绑在一起,可以指定基于页的内存区域为不可缓存,该特性能够使直接内存访问(DMA)和处理其内部通信更为有效、迅速。如当其它处理器或DMA设备访问同一段地址空间时,可以保证这些数据不被缓存。

如果系统不具备这样的不可缓存特性,那么在访问这些地址空间时,必须从全局上关闭高速缓存Cache或者手工清洗缓冲区(flush)或使缓冲区无效(invalidate)。

  1. 基本MMU使用物理内存描述来建立一种地址映射关系,这种方式是平面型的,实地址和虚地址一一对应
  2. BSP负责提供物理内存描述的支持:

1:sysLib.c中定义PHYS MEM DESC 结构体类型的数组sysPhysMemDesc[]。

2:sysPhysMemdesc[]描述了虚拟地址和实地址之间的对应关系及内存页的初始状态

3:定义的内存区必须是页对齐的,并且必须跨越完整的页

4:页面大小VM PAGE SIZE在config.h中定义,一般为4KB或8KB

·PHYS MEM DESC 数据结构定义如下( vmLib.h) :

typedef struct phys_mem_desc{void *virtualAddr;void *physicalAddr;UNIT len;UNIT initialStateMask;UNIT initialState;} PHYS MEM DESC;

virtualAddr和physicalAddr通常是相等的.

sysPhysMemDesc [] 中可能包含的映射空间有内存、flash、rom、I/O设备和外部总线地址空间等·

下面是多cpu嵌入式系统中使用共享内存网络时各目标板的MMU配置示例:

{(void *) 0x4000000,/* virtual address */(void *) 0x4000000,/* physical address */0x20000,/* length *//* initial state mask */VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE | VM_STATE_CACHEABLE,/* initial state */VM_STATE_VALID | VM_STATE_WRITABLE | VM_STATE_CACHEABLE_NOT,……}

虚拟内存状态标志:

VM_STATE_VALIDVM_STATE_VALID_NOTVM_STATE_WRITABLEVM_STATE_WRITABLE_NOTVM_STATE_CACHEABLEVM_STATE_CACHEABLE_NOT

有效性: 有效状态指示虚到实转换是正确的。当转换表被初始化时,全局虚内存被标记为有效的,所有其他虚内存被初始化为无效的.

可写性:通过设置状态为不可写,也可以被设置为只读。这被VxWorks用于写保护所有text段.

可cache: 内存页的cache可以通过设置状态标志为cache被禁止。这对处理器间共享的内存及DMA设备是有用的.

屏蔽标志:描述哪一标志可以被改变

VM_STATE_MASK_VALIDVM_STATE_MASK WRITABLEVM_STATE_MASK_CACHEABLE

有两种方法可以修改虚地址和实地址之间的映射关系;

        静态方式:通过修改结构体sysPhyMemDesc的内容

        动态方式:通过调用vmBaseStateSet函数来修改一块虚拟内存空间的状态

        所有可能会在应用程序中被访问的物理内存(包括内存映射设备,比如以太网设备、PCI设备、SCSI设备等) 都应该被映射到不同的虚拟内存空间.

在MMU使能的情况下,如果某一段物理地址没有被映射,而试图对这样的地址进行些操作时,将会引起总线错误.

        一个较完整的内存映射实例, 此实例是一款基于mpc860开发板的内存映射表。这款开发板上的器件有mpc860, mpc860内嵌64K存储器, 外挂内存(SDRAM) 、Boot flash、版本fIash.

PHYS MEM_DESC sysPhysMemDesc [] =
{{(void*)LOCAL_MEM_LOCAL_ADRS,(void*)LOCAL_MEM_LOCAL ADRS,LOCAL_MEM_SIZE, /*SDRAM*/VM_STATE_MASK_VALID | VM_STATE_MASK_ WRITABLE |VM_STATE_MASK_CACHEABLE |VW_STATE_VALID | VM_STATE_WRITABLE | VM_STATE_CACHEABLE},……}

相关文章:

VxWorkds 内存管理(3)

虚拟内存管理 对于带MMU的目标板,VxWorks提供虚拟内存的支持,VxWorks提供了两种虚拟内存管理单元(MMU)的支持: 基本MMU和VxVMI 基本MMU邦定于VxWorks中,可以通过config.h中宏定义INCLUDE MMU BASIC或Tornado工程配置中包含基本MMU组件 VxV…...

单元测试、反射、注解、动态代理

🏡个人主页 : 守夜人st 🚀系列专栏:Java …持续更新中敬请关注… 🙉博主简介:软件工程专业,在校学生,写博客是为了总结回顾一些所学知识点 目录单元测试、反射、注解、动态代理单元测…...

【数据结构】夯实基础|线性表刷题01

作者:努力学习的大一在校计算机专业学生,热爱学习和创作。目前在学习和分享:算法、数据结构、Java等相关知识。博主主页: 是瑶瑶子啦所属专栏: 【数据结构|刷题专栏】:该专栏专注于数据结构知识,持续更新&a…...

Java怎么实现几十万条数据插入(30万条数据插入MySQL仅需13秒)

本文主要讲述通过MyBatis、JDBC等做大数据量数据插入的案例和结果。 30万条数据插入插入数据库验证实体类、mapper和配置文件定义User实体mapper接口mapper.xml文件jdbc.propertiessqlMapConfig.xml不分批次直接梭哈循环逐条插入MyBatis实现插入30万条数据JDBC实现插入30万条数…...

java多线程之线程的六种状态

线程的六种状态(1) NEW(初始状态)(2) TERMINATED(终止状态 / 死亡状态)(3) RUNNABLE(运行时状态)(4) TIMED_WAITING(超时等待状态)(5) WAITING(等待状态)(6) BLOCK(阻塞状态)sleep和wait的区别:操作系统里的线程自身是有一个状态的,但是java Thread 是对系统线程的封装,把这里的…...

UnixBench----x86架构openEuler操作系统上进行性能测试

【原文链接】UnixBench----x86架构openEuler操作系统上进行性能测试 (1)打开github上 UnixBench 地址,找到发布的tag (2)找到tar.gz包,右键复制链接 比如这里是 https://github.com/kdlucas/byte-unix…...

于Java8 Stream教程之collect()

目录 前言正文第一个小玩法 将集合通过Stream.collect() 转换成其他集合/数组:第二个小玩法 聚合(求和、最小、最大、平均值、分组)总结前言 本身我是一个比较偏向少使用Stream的人,因为调试比较不方便。 但是, 不得不说&#…...

Python

1、str 三个关键点: 正着数,0,1,2 反着数,0,-1,-2 str[a,b] 左闭右开 [a,b) str123456789 print(str) # 输出字符串 print(str[0:-1]) # 输…...

Spring框架中IOC和DI详解

Spring框架学习一—IOC和DI 来源黑马Spring课程,觉得挺好的 目录 文章目录Spring框架学习一---IOC和DI目录学习目标第一章 Spring概述1、为什么要学习spring?2、Spring概述【了解】【1】Spring是什么【2】Spring发展历程【3】Spring优势【4】Spring体系…...

本地快速搭建Kubernetes单机版实验环境(含问题解决方案)

Kubernetes是一个容器编排系统,用于自动化应用程序部署、扩展和管理。本指南将介绍Kubernetes的基础知识,包括基本概念、安装部署和基础用法。 一、什么是Kubernetes? Kubernetes是Google开发的开源项目,是一个容器编排系统&…...

FPGA控制DDS产生1CLK周期误差的分析(二)

前文简短的介绍了DDS的产生原理,其实相当的简单,所以也不需要多做解释,本文详细阐述一下在调试DDS的过程中所产生的一个bug 问题发现 正如上文所述,再用FPGA控制存储在rom中的波形信号输出之后,在上板之前&#xff0…...

这一次,吃了Redis的亏,也败给了GPT

关注【离心计划】,一起离开地球表面 背景 组内有一个系统中有一个延迟任务的需求,关于延迟任务常见的做法有时间轮、延迟MQ还有Redis Zset等方案,关于时间轮,这边小苏有一个大学时候做的demo: https://github.com/JA…...

第一章 信息化知识

1、信息是客观事物状态和运动特征的一种普遍形式,信息的概念存在两个基本的层次,即本体论层次和认识论层次: 本体论层次:就是事物的运动状态和状态变化方式的自我表述认识论层次:就是主体对于该事物的运动状态以及状态…...

如何用matlab工具箱训练一个SOM神经网络

本站原创文章,转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com本文展示如何用matlab工具箱训练一个SOM神经网络的DEMO并讲解其中的代码含义和相关使用说明- 01.SOM神经网络DEMO代码 -- 本文说明 -下面,我们先随机初始化一些样本点,然后…...

音视频技术开发周刊 | 285

每周一期,纵览音视频技术领域的干货。新闻投稿:contributelivevideostack.com。GPT-4 Office全家桶发布谷歌前脚刚宣布AI工具整合进Workspace,微软后脚就急匆匆召开了发布会,人狠话不多地祭出了办公软件王炸——Microsoft 365 Cop…...

安装flume

flume最主要的作用就是实时读取服务器本地磁盘的数据,将数据写入到hdfs中架构:开始安装一,上传压缩包,解压并更名解压:[rootsiwen install]# tar -zxf apache-flume-1.9.0-bin.tar.gz -C ../soft/[rootsiwen install]#…...

为工作排好优先级

工作,是干不完的,因此我们需要分清轻重缓急,为它们划分优先级,这样才不至于让自己手忙脚乱。 给手头的事情排上正确的优先级,是一项很重要的工作能力。 优先级有很多考量,并不是简单的先来后到的线性时间…...

超专业解析!10分钟带你搞懂Linux中直接I/O原理

我们先看一张图: 这张图大体上描述了 Linux 系统上,应用程序对磁盘上的文件进行读写时,从上到下经历了哪些事情。 这篇文章就以这张图为基础,介绍 Linux 在 I/O 上做了哪些事情。 文件系统 什么是文件系统 文件系统&#xff0…...

【C++】面试101,用两个栈实现队列,包含min函数的栈,有效括号序列,滑动窗口的最大值,最小的K个数,倒置字符串,排序子序列,跳跃,数字三角形,蓝肽子序列

目录 1. 用两个栈实现队列 2.包含min函数的栈 3.有效括号序列 4.滑动窗口的最大值 5.最小的K个数 6.倒置字符串 7.排序子序列 8.数字三角形(蓝桥杯,学习一个大佬的博客....) 9.跳跃(蓝桥杯) 10.蓝肽子序列 1. 用…...

WPF 认识WPF

什么是WPF?WPF是Windows Presentation Foundation(Windows展示基础)简称,顾名思义是专门编写表示层的技术。WPF绚丽界面如下:GUI发展及WPF历史?Windows系统平台上从事图形用户界面GUI(Graphic User Interface)已经经历了多次换代&#xff0c…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

<6>-MySQL表的增删查改

目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表&#xf…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

【若依】框架项目部署笔记

参考【SpringBoot】【Vue】项目部署_no main manifest attribute, in springboot-0.0.1-sn-CSDN博客 多一个redis安装 准备工作&#xff1a; 压缩包下载&#xff1a;http://download.redis.io/releases 1. 上传压缩包&#xff0c;并进入压缩包所在目录&#xff0c;解压到目标…...

python基础语法Ⅰ

python基础语法Ⅰ 常量和表达式变量是什么变量的语法1.定义变量使用变量 变量的类型1.整数2.浮点数(小数)3.字符串4.布尔5.其他 动态类型特征注释注释是什么注释的语法1.行注释2.文档字符串 注释的规范 常量和表达式 我们可以把python当作一个计算器&#xff0c;来进行一些算术…...

云原生时代的系统设计:架构转型的战略支点

&#x1f4dd;个人主页&#x1f339;&#xff1a;一ge科研小菜鸡-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 一、云原生的崛起&#xff1a;技术趋势与现实需求的交汇 随着企业业务的互联网化、全球化、智能化持续加深&#xff0c;传统的 I…...

数据挖掘是什么?数据挖掘技术有哪些?

目录 一、数据挖掘是什么 二、常见的数据挖掘技术 1. 关联规则挖掘 2. 分类算法 3. 聚类分析 4. 回归分析 三、数据挖掘的应用领域 1. 商业领域 2. 医疗领域 3. 金融领域 4. 其他领域 四、数据挖掘面临的挑战和未来趋势 1. 面临的挑战 2. 未来趋势 五、总结 数据…...

基于小程序老人监护管理系统源码数据库文档

摘 要 近年来&#xff0c;随着我国人口老龄化问题日益严重&#xff0c;独居和居住养老机构的的老年人数量越来越多。而随着老年人数量的逐步增长&#xff0c;随之而来的是日益突出的老年人问题&#xff0c;尤其是老年人的健康问题&#xff0c;尤其是老年人产生健康问题后&…...

React与原生事件:核心差异与性能对比解析

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...