VxWorks 6.9 内核编程指导之读书笔记 -- VxWorks Small-Footprint Configuration
- 什么是Small-footprint?
- Small-footprint常见关键配置?
- 如何配置Small-footprint?
什么是Small-footprint?
Small-footprint配置是专门为最小化内核功能和小内存而设计的系统,最少内核功能及最小内存占用。
Small-footprint所支持的内核功能
- 中断管理
- 系统时钟
- 任务管理
- 信号量互斥
- 可选功能:二进制信号量及kprintf()
Small-footprint不支持的功能
- 动态内存分配,(即不支持malloc等函数)
- 消息队列
- 基本I/O
- 大多数标准I/O功能(stdio.h)
- 文件系统
- 内核shell
- 网络
- 实时进程(RTP)
- C++
Small-footprint常见关键配置?
|
Component |
Default |
Description |
|
INCLUDE_NETWORK |
* |
Network subsystem code |
|
INCLUDE_NFS |
Network File System (NFS) |
|
|
INCLUDE_NFS_SERVER |
NFS server |
|
|
INCLUDE_PIPES |
* |
Pipe driver |
|
INCLUDE_POSIX_XXX |
Various POSIX options |
|
|
INCLUDE_PROTECT_TEXT |
Text segment write protection |
|
|
INCLUDE_PROTECT_VEC_TABLE |
Vector table write protection |
|
|
INCLUDE_PROXY_CLIENT |
* |
Proxy ARP client support |
|
INCLUDE_PROXY_SERVER |
Proxy ARP server support |
|
|
INCLUDE_RAWFS |
Raw file system |
|
|
INCLUDE_RLOGIN |
Remote login with rlogin |
|
|
INCLUDE_ROMFS |
ROMFS file system |
|
|
INCLUDE_RTP |
Real-time process support |
|
|
INCLUDE_SCSI |
SCSI support(not provided for 64-bit VxWorks with this release) |
|
|
INCLUDE_SCSI2 |
SCSI-2 support(not provided for 64-bit VxWorks with this release) |
|
|
INCLUDE_SECURITY |
Remote login security package |
|
|
INCLUDE_SELECT |
Select facility |
|
|
INCLUDE_SEM_BINARY |
* |
Binary semaphore support |
|
INCLUDE_SEM_COUNTING |
* |
Counting semaphore support |
|
INCLUDE_SEM_MUTEX |
* |
Mutual exclusion semaphore support |
|
INCLUDE_SHELL |
Kernel (target) shell |
|
|
INCLUDE_XXX_SHOW |
Various system object show facilities |
|
|
INCLUDE_SIGNALS |
* |
Software signal facilities |
|
INCLUDE_SM_OBJ |
Shared memory object support (requires VxMP) |
|
|
INCLUDE_SNMPED |
SNMP agent |
|
|
INCLUDE_SPY |
Task activity monitor |
|
|
INCLUDE_STDIO |
* |
Standard buffered I/O package |
|
INCLUDE_SW_FP |
Software floating point emulation package |
|
|
INCLUDE_SYM_TBL |
Target-resident symbol table support |
|
|
INCLUDE_TASK_HOOKS |
* |
Kernel call-out support |
|
INCLUDE_TASK_VARS |
* |
Task variable support |
|
INCLUDE_IPTELNETS |
Remote login with telnet |
|
|
INCLUDE_TFTP_CLIENT |
* |
TFTP client support |
|
INCLUDE_TFTP_SERVER |
TFTP server support |
|
|
INCLUDE_TIMEX |
* |
Function execution timer |
|
INCLUDE_TRIGGERING |
Function execution timer |
|
|
INCUDE_UNLOADER |
Target-resident kernel object module unloader package |
|
|
INCLUDE_VXEVENTS |
VxWorks events support |
|
|
INCLUDE_WATCHDOGS |
* |
Watchdog support |
|
INCLUDE_WDB |
* |
WDB target agent |
|
INCLUDE_WDB_TSFS |
* |
Target server file system |
|
INCLUDE_WINDVIEW |
System Viewer command server |
如何配置Small-footprint?
Small-footprint的配置依赖于下面2种配置:
- VSB的PROFILE_SMALL_FOOTPRINT的配置
- VIP的PROFILE_SMALL_FOOTPRINT的配置
VSB允许你从源码层来自定义和优化类库,并且构建它们。VIP则允许你在基于VSB上的自定义类库通过组件的选择和移除来配置VxWorks映像。
注意:使用PROFILE_SMALL_FOOTPRINT的VSB项目通常比VIP项目减少内存更加明显。
当使用PROFILE_SMALL_FOOTPRINT配置创建VSB项目时,下面的选项可以被选择:
|
VSB Option |
Description |
|
REMOVE_UNUSED_FUNCTIONS |
启用该选项时,编译器和连接器将移除从没有使用的函数和数据。 |
|
FORMATTED_OUT_BASIC |
提供了kprintf()函数。 |
|
OBJECT_VERIFICATION |
将对提供给内核的对象进行验证,如果传递给内核的对象非法,则将导致无法恢复的故障 |
|
OBJECT_CLASS_LIST_PSF |
提供了调试内核对象的能力。如果移除该选项,则一些特征无法使用,如show,open和常用函数,如taskShow,semOpen等。没有这些这些特征,VxWorks无法配置INCLUDE_OBJ_OPEN,INCLUDE_CLASS_SHOW和INCLUDE_OBJ_INFO组件。对应PROFILE_SMALL_FOOTPRINT的系统,OBJECT_CLASS_LIST_PSF提供了同样的功能。 |
|
TASK_CREATE_HOOKS |
默认支持。当禁用时,VIP项目无法使用INCLUDE_TASK_CREATE_HOOKS组件。 |
|
TASK_SWITCH_HOOKS |
默认情况下,该选项被包含。当禁用时,INCLUDE_TASK_SWITCH_HOOKS组件无法被VIP项目包含。 |
|
CPU_PWR_MGMT_PSF |
电源管理,目前64位VxWorks不支持。CPU_PWR_MGMT_D选项提供了特定CPU的电源管理支持。VSB中不包含电源管理,则VIP无法包含。没有电源管理,调度将更快。 |
|
EDR_POLICY_HOOKS |
错误检测和报告策略。 |
|
COMPONENT_VXTESTV2_PSF |
BSP验证测试套件。 |
|
SFOOTPRINT_VXTESTV2 |
小内存的验证测试套件。 |
VIP的small-footprint配置和组件
包含以下组件。
INCLUDE_KERNEL
提供内核能力,如调度和任务
INCLUDE_SYSCLK_INIT
提供系统时钟,如果禁用将没有超时机制,即semTake或taskDelay函数中的超时将不会使用超时机制。
下面的组件也可以被添加到VxWorks
INCLUDE_SEM_BINARY
提供二进制信号量的支持。注意:在使用INCLUDE_KERNEL带有INCLUDE_SEM_MUTEX的组件时,互斥信号量将被自动包含。
INCLUDE_DEBUG_KPRINTF
提供kprintf()函数。
编程时注意事项
- 不能动态分配内存,必须使用静态内存分配,即在编译时就必须分配好内存。Malloc和free不支持。内核对象只能静态实例化。
- 任务,信号量和看门狗也无法在运行时创建,taskSpawn,taskDelete,semXCreate,semDelete等类似函数也无法使用。
- Kprintf可以使用,但是printf和相关函数无法使用。
VxWorks 6.9 内核编程指导之读书笔记 -- VxWorks Small-Footprint Configuration的更多相关文章
- VxWorks 6.9 内核编程指导之读书笔记 -- VxWorks kernel application (一)
#1 什么是内核应用程序? #2 开发内核应用程序注意事项 什么是内核应用程序? 内核应用程序不同于RTP程序,它允许在内核态,与操作系统使用相同的地址空间.因此,它与操作系统会相互干扰.它可以编译成 ...
- VxWorks 6.9 内核编程指导之读书笔记 -- VxWorks Kernel application (二)
#1 内核对象的静态实例化 内核对象的静态实例化 任务的静态实例化 VX_TASK宏用来在编译时声明一个任务对象.该宏带有2个参数:任务名和栈大小.不像taskSpawn函数,任务名称可以是NULL. ...
- VxWorks 6.9 内核编程指导之读书笔记 -- ISRs和Watchdog Timer
中断服务程序 ISR 硬件中断处理是实时系统的关键,因为它是外部时间通知系统的方式. ISR亦称为中断处理函数,是对中断的正确响应.可以使用任何ISR连接到任何没有被VxWorks使用的中断上.当关联 ...
- VxWorks 6.9 内核编程指导之读书笔记 -- 多任务
概述 VxWork系统任务 任务调度 任务创建和管理 任务的错误状态 任务异常处理 共享代码和重入 概述 现代实时操作系统是基于多任务和任务间通信的概念的.多任务环境运行一个实时进程RTP可以被作为一 ...
- VxWorks 6.9 内核编程指导之读书笔记 -- POSIX
POSIX能力 VxWorks扩展了POSIX,为了移植,VxWorks提供了额外的POSIX接口作为可选组件.VxWorks实现了POSIX 1003.1(POSIX .1)一些传统接口以及POSI ...
- VxWorks 6.9 内核编程指导之读书笔记 -- Singnals
Signals 信号是操作系统用于异常处理和异步控制流的关键.在很多方面,信号相当于软件方面的硬件中的中断.操作系统产生的信号包括总线错误和浮点处理异常.信号也提供了API来管理和产生信号.在应用程序 ...
- VxWorks 6.9 内核编程指导之读书笔记 -- 多任务(二)
VxWorks的系统任务 VxWorks在引导时启动的系统任务依赖于配置,有些总是运行.任务集与VxWorks的基本配置相关,很少的任务常用于可选的组件. 注意:别挂起.删除或改变任何系统任务的优先级 ...
- VxWorks 6.9 内核编程指导之读书笔记 -- C++开发
5.1 介绍 针对C++的VxWorks配置 C++头文件 使用C++启动任务 C和C++之前调用代码 C++编译器说明 在信号处理和ISR中使用C++ 下载C++编写的内核模块 C++编译器的不同 ...
- 《Linux/Unix系统编程手册》读书笔记9(文件属性)
<Linux/Unix系统编程手册>读书笔记 目录 在Linux里,万物皆文件.所以文件系统在Linux系统占有重要的地位.本文主要介绍的是文件的属性,只是稍微提及一下文件系统,日后如果有 ...
随机推荐
- BOOL,int,float,指针变量与零值比较的if语句
1.注意这里说的是,与零值比较,而不是与零比较. 2.对于int类型,与零值比较就是: if(var == 0) //零值 3.对于bool类型,零值表示false,任何非零值表示true,因此使用: ...
- VS DLL 复制本地
1.引用一个DLL,需要指定路径,复制本地的意思是 把这个DLL复制到exe的Debug目录(调试的时候). 2.复制到本地的动作是在生成的时候执行的,清理的时候会删除. 3.从外部引用一个DLL,不 ...
- 解决easyui-datagrid在ie中无法reload问题
easyui在页面载入时,会自己主动填充datagrid中的数据,当加入.改动.删除后,会触发reload事件,对datagrid进行又一次载入. 这个过程在FireFox中没有问题,用firebug ...
- day06 Java面向对象
1.对象内存图 (1)1个对象的内存图:一个对象的基本初始化过程 (2)2个对象的内存图:方法的共用 (3)3个对象的内存图:其中有两个引用指向同一个对象
- debian清除无用的库文件(清理系统,洁癖专用)
deborphan 可以用来找出在系统中已经没有被依赖的套件.一般的情况是 library 会在其他套件需要的时候被牵引进来,但是当这些套件升级或删除后,被牵引进来的 library package ...
- java_java 利用JAX-RS快速开发RESTful 服务
JAX-RS(Java API for RESTful Web Services)同样也是JSR的一部分,详细规范定义见 https://jcp.org/en/jsr/detail?id=311 .从 ...
- LSM Tree解析
引言 众所周知传统磁盘I/O是比较耗性能的,优化系统性能往往需要和磁盘I/O打交道,而磁盘I/O产生的时延主要由下面3个因素决定: 寻道时间(将磁盘臂移动到适当的柱面上所需要的时间,寻道时移动到相邻柱 ...
- SQL语言的四大分类
以下是sql数据语言类型的关键词: 1.数据定义语言DDL create.drop.alter.truncate 2.数据查询语言DQL select 3.数据操纵语言DML insert.dele ...
- eclipse按Crl+鼠标左键,找不到源文件的解决办法。
这种情况一般发生在tomcat的之中,原因是缺少类的源文件.在jdk中很少见,jdk中自带类的源文件,配置jdk的时候就已经将其加载进来了.而tomcat之中没有带类的源文件,需要自己去网上单独下载. ...
- ArcEngine中打开各种数据源(WorkSpace)的连接http://www.cnblogs.com/feilong3540717/archive/2011/08/07/2129906.html
ArcEngine中打开各种数据源(WorkSpace)的连接 ArcEngine中打开各种数据源(WorkSpace)的连接 (SDE.personal/File.ShapeFile.CAD数据.影 ...