• VxWorks 6.9 内核编程指导之读书笔记 -- VxWorks Small-Footprint Configuration


    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和相关函数无法使用。
  • 相关阅读:
    bat脚本运行py文件失败(一闪而过)
    python 将日期戳(五位数时间)转换为标准时间
    Pandas 如何通过获取双(多)重索引获取指定行DataFrame数据
    Pandas 横向合并DataFrame数据
    Pandas 删除指定列中为NaN的行
    git 解决push报错:[rejected] master -> master (fetch first) error: failed to push some refs to
    pandas删除包含指定内容的行
    python项目环境的导出、导入
    pandas 修改列名
    Javascript 异步编程的4种方法
  • 原文地址:https://www.cnblogs.com/C-Sharp2/p/VxWorks_Kernel_Programmer.html
Copyright © 2020-2023  润新知