1. 什么是Small-footprint?
  2. Small-footprint常见关键配置?
  3. 如何配置Small-footprint?

什么是Small-footprint?

Small-footprint配置是专门为最小化内核功能和小内存而设计的系统,最少内核功能及最小内存占用。

Small-footprint所支持的内核功能

  1. 中断管理
  2. 系统时钟
  3. 任务管理
  4. 信号量互斥
  5. 可选功能:二进制信号量及kprintf()

Small-footprint不支持的功能

  1. 动态内存分配,(即不支持malloc等函数)
  2. 消息队列
  3. 基本I/O
  4. 大多数标准I/O功能(stdio.h)
  5. 文件系统
  6. 内核shell
  7. 网络
  8. 实时进程(RTP)
  9. 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种配置:

  1. VSB的PROFILE_SMALL_FOOTPRINT的配置
  2. 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的更多相关文章

  1. VxWorks 6.9 内核编程指导之读书笔记 -- VxWorks kernel application (一)

    #1 什么是内核应用程序? #2 开发内核应用程序注意事项 什么是内核应用程序? 内核应用程序不同于RTP程序,它允许在内核态,与操作系统使用相同的地址空间.因此,它与操作系统会相互干扰.它可以编译成 ...

  2. VxWorks 6.9 内核编程指导之读书笔记 -- VxWorks Kernel application (二)

    #1 内核对象的静态实例化 内核对象的静态实例化 任务的静态实例化 VX_TASK宏用来在编译时声明一个任务对象.该宏带有2个参数:任务名和栈大小.不像taskSpawn函数,任务名称可以是NULL. ...

  3. VxWorks 6.9 内核编程指导之读书笔记 -- ISRs和Watchdog Timer

    中断服务程序 ISR 硬件中断处理是实时系统的关键,因为它是外部时间通知系统的方式. ISR亦称为中断处理函数,是对中断的正确响应.可以使用任何ISR连接到任何没有被VxWorks使用的中断上.当关联 ...

  4. VxWorks 6.9 内核编程指导之读书笔记 -- 多任务

    概述 VxWork系统任务 任务调度 任务创建和管理 任务的错误状态 任务异常处理 共享代码和重入 概述 现代实时操作系统是基于多任务和任务间通信的概念的.多任务环境运行一个实时进程RTP可以被作为一 ...

  5. VxWorks 6.9 内核编程指导之读书笔记 -- POSIX

    POSIX能力 VxWorks扩展了POSIX,为了移植,VxWorks提供了额外的POSIX接口作为可选组件.VxWorks实现了POSIX 1003.1(POSIX .1)一些传统接口以及POSI ...

  6. VxWorks 6.9 内核编程指导之读书笔记 -- Singnals

    Signals 信号是操作系统用于异常处理和异步控制流的关键.在很多方面,信号相当于软件方面的硬件中的中断.操作系统产生的信号包括总线错误和浮点处理异常.信号也提供了API来管理和产生信号.在应用程序 ...

  7. VxWorks 6.9 内核编程指导之读书笔记 -- 多任务(二)

    VxWorks的系统任务 VxWorks在引导时启动的系统任务依赖于配置,有些总是运行.任务集与VxWorks的基本配置相关,很少的任务常用于可选的组件. 注意:别挂起.删除或改变任何系统任务的优先级 ...

  8. VxWorks 6.9 内核编程指导之读书笔记 -- C++开发

    5.1 介绍 针对C++的VxWorks配置 C++头文件 使用C++启动任务 C和C++之前调用代码 C++编译器说明 在信号处理和ISR中使用C++ 下载C++编写的内核模块 C++编译器的不同 ...

  9. 《Linux/Unix系统编程手册》读书笔记9(文件属性)

    <Linux/Unix系统编程手册>读书笔记 目录 在Linux里,万物皆文件.所以文件系统在Linux系统占有重要的地位.本文主要介绍的是文件的属性,只是稍微提及一下文件系统,日后如果有 ...

随机推荐

  1. POI Excel导出样式设置

    HSSFSheet sheet = workbook.createSheet("sheetName");    //创建sheet sheet.setVerticallyCente ...

  2. 记录一下在WinXP上搭建Apache的httpd+PHP+MySQL+Wordpress的过程

    实验室有台旧电脑,想用它一台服务器. 不知为何,U盘启动盘死活不能启动,所以放弃了安装Linux的念头,直接在原来的XP上弄一个服务器,毕竟用的人也不多,也就局域网的这几个人, 本来主要是搭建一个FT ...

  3. 为CentOS 加入�本地源

    首先把光盘中的Packages文件夹复制到本地. [arm@Jarvis Packages]$ pwd /home/Packages 安装用于创建安装包依赖关系的软件createrepo. [arm@ ...

  4. iOS开发——UI篇OC篇&UITableView简单封装

    UITableView简单封装 UITableView时iOS开发中使用最多也是最重的一个UI空间,其实在App Store里面的%80以上的应用都用到了这个控件,所以就给大家介绍一下,前面的文章中也 ...

  5. fl,flash,mx包的区别

    在ActionScript项目中还真是不能使用mx包中的UI组件.           Adobe官方论坛上有一个帖子讲述了这个问题,大致意思是说:你要使用mx包中像Button这样的UI组件都是从U ...

  6. 日志分析(四) Elasticsearch的精确查询

    在需要做精确查询时,往往不希望做全文模糊搜索,这时,需要告知Elasticsearch在处理我们提供的字符串时,需要做精确匹配. 此时,在需要做精确匹配的字符串上,加上””,如”/user/info” ...

  7. 高级I/O之STREAMS

    http://en.wikipedia.org/wiki/STREAMS STREAMS(流)是系统V提供的构造内核设备驱动程序和网络协议包的一种通用方法,对STREAMS进行讨论的目的是为了理解系统 ...

  8. HOWTO install Oracle 11g on Ubuntu Linux 12.04 (Precise Pangolin) 64bits

    安装了Ubuntu 12.04 64bit, 想在上面安装Oracle 11gr2,网上找了好多文档都没成功,最后完全参考了MordicusEtCubitus的文章. 成功安装的关键点:install ...

  9. Gradient Boost Decision Tree(&Treelink)

    http://www.cnblogs.com/joneswood/archive/2012/03/04/2379615.html 1.      什么是Treelink Treelink是阿里集团内部 ...

  10. Header 与 Footer 的 DIV 高度固定, 中间内容 DIV高度自适应,内容不满一页时,默认填满屏幕。

    一.需求: 页面布局分三大块: Header Body Footer 1.内容不满一页时,Footer 在屏幕最底部,Body 填充满 Header 与 Footer 中间的部分. 2.当缩小浏览器时 ...