VxWorks 6.9 内核编程指导之读书笔记 -- VxWorks Small-Footprint Configuration
2016-09-23 10:00
627 查看
什么是Small-footprint?
Small-footprint常见关键配置?
如何配置Small-footprint?
系统时钟
任务管理
信号量互斥
可选功能:二进制信号量及kprintf()
消息队列
基本I/O
大多数标准I/O功能(stdio.h)
文件系统
内核shell
网络
实时进程(RTP)
C++
VSB的PROFILE_SMALL_FOOTPRINT的配置
VIP的PROFILE_SMALL_FOOTPRINT的配置
VSB允许你从源码层来自定义和优化类库,并且构建它们。VIP则允许你在基于VSB上的自定义类库通过组件的选择和移除来配置VxWorks映像。
注意:使用PROFILE_SMALL_FOOTPRINT的VSB项目通常比VIP项目减少内存更加明显。
当使用PROFILE_SMALL_FOOTPRINT配置创建VSB项目时,下面的选项可以被选择:
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和相关函数无法使用。
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 | 小内存的验证测试套件。 |
包含以下组件。
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 6.9 内核编程指导之读书笔记 -- VxWorks Kernel application (二)
- VxWorks 6.9 内核编程指导之读书笔记 -- ISRs和Watchdog Timer
- VxWorks 6.9 内核编程指导之读书笔记 -- Singnals
- VxWorks 6.9 内核编程指导之读书笔记 -- 多任务(二)
- VxWorks 6.9 内核编程指导之读书笔记 -- POSIX
- VxWorks 6.9 内核编程指导之读书笔记 -- C++开发
- VxWorks 6.9 内核编程指导之读书笔记 -- VxWorks kernel application (一)
- 指定的服务已标记为删除 寒江孤钓<<windows 内核安全编程>> 学习笔记
- 核心编程笔记9——内核对象的线程同步2
- 内核编程笔记
- 2.6内核模块编程实例指导
- 核心编程笔记9——内核对象的线程同步2
- Debuggee not connected 寒江孤钓<<windows 内核安全编程>> 学习笔记
- 【由尚德内核编程学习笔记1】AT&T汇编语法
- 内核编程学习笔记(003) SSDT hook 所延伸出来的知识
- windows内核安全编程——内核上机指导
- 删除自定义服务 寒江孤钓<<windows 内核安全编程>> 学习笔记
- 核心编程笔记9——内核对象的线程同步2
- 内核编程学习笔记(005) “天空很蓝”的5个教训