1. VxWorks7内存管理模型

VxWorks7为执行在内核态与用户态的所有代码都提供了内存管理机制。对于32位与64位CPU,VxWorks7所提供的内存管理机制是相同的。

内核上下文不是一一映射的,也就是说虚拟内存地址与物理地址不是一一映射的。虚拟内存被分区管理,每个分区具有专门的用处和相应的分配机制。

VxWorks7内存模型用于:

  • 使系统能够支持更大容量的RAM;
  • 使系统能够支持RAM中不连续的块空间;
  • 更快、更高效的系统调用内存验证;
  • 减少了虚拟地址空间碎片;
  • 可以根据需求实现内存与I/O空间的动态映射(而不是使用静态配置的代码);
  • 简化使用标准ABI开发共享库的过程,该过程需要基于预定义的虚拟内存布局实现标准的重叠地址空间管理;

显示内存布局信息

shell中的adrSpaceShow()函数(针对C解释器)或adrsp info命令(针对命令解释器),可以用于显示当前地址空间使用的概况。这两者分贝包含在INCLUDE_ADR_SAPCE_SHOW与INCLUDE_ADR_SPACE_SHELL_CMD两个组件中。

虚拟内存区域

VxWorks定义了多个虚拟内存区域。这些区域是根据处理器架构进行地址和大小划分的,具有特定的作用。虚拟内存区域如下图所示。

国外论文:针对航电系统的实时操作系统VxWorks 7的安全评估

Files:
Date 2021-10-05
File Size 2.01 MB
Download 1,813

风河拥抱物联网演讲

下载地址

Date 2021-10-02
File Size 6.66 MB
Download 276

最近研究了一下VxWorks 7.0下基于vxbus的定时器子系统,方便我们在需要使用定时器中断的时候引用,开发过程中的一点体会记录下来,如果由理解不对或者不全面的望批评指正,谢谢。

开发平台为zynq7Z020,该处理器由三个全局的定时器,分别是globaltimer,ttc_0,ttc_1,其中全局定时器用作系统的脉搏,是整个操作系统的ticks定时器,其可通过内核配置完成,具体如下:

VxWorks 7.0 vxbus Timer

而ttc_0会作为系统的AUX clock在初始化的时候完成匹配,系统使用SPY命令时启用定时器,所以,如果要使用TTC0作为应用,要考虑spy调试对其影响,TTC_1可以作为用户自定义定时器使用,挂接用户中断服务例程。其设备树配置如下:

i 显示任务基本信息,参数为0时显示全部任务。

ti 显示任务的TCB信息。

d 显示目标地址内存内容。

devs 列出目标机系统上的全部设备。

version 显示VxWorks版本号。

memShow 显示系统内存空间中空闲和已分配空间的总数等信息。

memPartShow 显示系统内存分区块和统计信息。

moduleShow 显示已加载的所有模块

iosDevShow 显示系统设备的信息。

iosDrvShow 显示系统驱动程序的信息。

semShow 显示信号量的信息。

regsShow 显示所有寄存器信息。

taskShow 显示任务TCB信息。

taskRegsShow 显示任务寄存器的内容。

coreShow 显示CPU频率、DDR频率、system频率、一级缓存、二级缓存、MSR寄存器信息等。

coreLbcShow 显示LBC控制器寄存器详细信息。

vxBusShow 显示vxBus的详细信息。

pciConfigTopoShow 显示PCI配置信息。

pciDevShow [pci设备号] 显示指定的pci设备信息。

TempratureShow 显示当前温度。

-> cmd 进入命令模式

[ VxWorks ] C 退出命令模式

格式化并恢复文件系统:

1. [cmd] sysTffsFormat

2. [cmd] cd FlashVolume

3. [cmd] file create -d FILE_DIR

4. [cmd] cd FILE_DIR

5. [cmd] ftp ip_addr,并输入用户名和密码登录

6. ftp> cd 需要下载的文件所在目录

7. ftp> binary (下载.ini文件时切换到binary模式)

8. ftp> get FILE

9. ftp> quit

10. [cmd] ls -l (查看所下载文件大小是否和FTP Server端的文件大小一致,以防下载出错