资源说明:PART I: CORE TECHNOLOGIES
1 Overview ...................................................................................................... 3
1.1 Introduction ...................................................................................................................... 3
1.2 Kernel Architecture ......................................................................................................... 3
1.3 Related Documentation Resources .............................................................................. 4
1.4 VxWorks Configuration and Build .............................................................................. 5
2 VxWorks Configuration ............................................................................. 7
2.1 Introduction ...................................................................................................................... 7
2.2 About VxWorks Configuration ................................................................................... 7
2.2.1 Default Configuration and Images ................................................................. 8
2.2.2 Configuration With VxWorks Image Projects ............................................... 8
2.2.3 Configuration With VxWorks Source Build Projects ................................... 8
2.2.4 Configuration and Customization .................................................................. 8
2.2.5 Configuration Tools: Workbench and vxprj .................................................. 9
2.3 VxWorks Image Projects: VIPs .................................................................................... 9
2.3.1 VxWorks Components ...................................................................................... 10
Component Names .......................................................................................... 10
Basic VxWorks Components ............................................................................ 11
2.3.2 Device Driver Selection ................................................................................... 13
2.3.3 Component Bundles and Configuration Profiles ........................................ 14
2.3.4 VxWorks Component Reference .................................................................... 14
2.4 VxWorks Source Build Projects: VSBs ....................................................................... 14
2.4.1 Basic Operating System VSB Options ........................................................... 16
BSP-Specific Optimizations ............................................................................. 16
VxWorks
Kernel Programmer's Guide, 6.9
iv
Inconsistent Cache Mode Support .................................................................. 17
System Viewer Instrumentation Support ...................................................... 17
Real-Time Process Support .............................................................................. 17
Object Management Support ........................................................................... 17
Error Detection and Reporting Policy Hooks ............................................... 18
Task Switch Hook Support .............................................................................. 18
Task Create Hook Support ............................................................................... 18
CPU Power Management Support ................................................................. 19
Advanced Options ............................................................................................ 19
VxWorks BSP Validation Test Suite Support ................................................. 19
Symmetric Multiprocessor (SMP) Support ................................................... 19
SMP Determinism ............................................................................................. 19
MIPC Support .................................................................................................... 20
WRLOAD Support ............................................................................................ 20
Task-Specific Current Working Directory ...................................................... 20
Device Name Length ........................................................................................ 20
NFS V3 Server Optimization ........................................................................... 20
DOSFS Name Length Compatible .................................................................. 21
2.4.2 VSB Profiles ........................................................................................................ 21
2.4.3 Using VSB Projects to Create VxWorks Systems: Basic Steps .................... 21
2.4.4 Developing Kernel Applications for VSB Systems ..................................... 21
2.5 VxWorks Without Networking ..................................................................................... 22
2.6 Small-Footprint VxWorks Configuration ................................................................... 22
2.6.1 About Small-Footprint VxWorks .................................................................... 22
Kernel Facilities ................................................................................................. 22
Unsupported Facilities ..................................................................................... 23
BSPs ..................................................................................................................... 23
2.6.2 Configuring Small Footprint VxWorks .......................................................... 23
Small-Footprint VSB Profile and Options ...................................................... 24
VSB Options Specific to the Small-Footprint Profile .................................... 24
Small-Footprint VIP Profile and Components .............................................. 25
Optional Components for a Small Footprint VIP Project ............................ 25
2.6.3 Configuration and Build Steps for Small-Footprint VxWorks ................... 25
2.6.4 Writing Applications for Small-Footprint VxWorks .................................... 26
2.6.5 Example Application ........................................................................................ 26
2.6.6 Debugging Small-Footprint VxWorks ............................................................ 28
2.7 VxWorks Image Types ................................................................................................... 28
2.7.1 Default VxWorks Images ................................................................................ 29
2.7.2 VxWorks Images for Development and Production Systems ..................... 29
2.7.3 Boot Parameter Configuration for Standalone VxWorks Images .............. 30
2.8 Image Size Considerations ............................................................................................ 30
2.8.1 Boot Loader and Downloadable Image ......................................................... 30
2.8.2 Self-Booting Image ............................................................................................ 31
Contents
v
3 Boot Loader ................................................................................................. 33
3.1 Introduction ...................................................................................................................... 33
3.2 Using a Default Boot Loader ......................................................................................... 34
3.3 Boot Loader Image Types ............................................................................................... 35
3.4 Boot Loader Shell ............................................................................................................ 35
3.4.1 Boot Loader Shell Commands ......................................................................... 36
3.5 Boot Parameters ............................................................................................................... 39
3.5.1 Displaying Current Boot Parameters ............................................................. 40
3.5.2 Description of Boot Parameters ...................................................................... 41
3.5.3 Changing Boot Parameters Interactively ....................................................... 44
3.6 Rebooting VxWorks ........................................................................................................ 45
3.7 Configuring and Building Boot Loaders .................................................................... 46
3.7.1 Boot Loader Profiles .......................................................................................... 46
3.7.2 Boot Loader Components ................................................................................ 47
3.7.3 Configuring Boot Parameters Statically ......................................................... 47
3.7.4 Enabling Networking for Non-Boot Interfaces ............................................. 48
3.7.5 Selecting a Boot Device ..................................................................................... 48
3.7.6 Reconfiguring Boot Loader Memory Layout for 32-Bit VxWorks ............. 50
Redefining the Boot Loader Link Address for Custom Boot Loaders ....... 50
Reconfiguring Memory Layout for a Persistent Memory Region ............. 51
3.7.7 Reconfiguring Boot Loader Memory Layout for 64-Bit VxWorks ............. 53
3.7.8 Building Boot Loaders ...................................................................................... 53
3.8 Installing Boot Loaders .................................................................................................. 53
3.9 Booting From a Network ............................................................................................... 53
3.10 Booting From a Target File System ............................................................................. 55
3.11 Booting From the Host File System Using TSFS ..................................................... 55
4 Kernel Applications .................................................................................... 57
4.1 Introduction ...................................................................................................................... 57
4.2 About Kernel Applications ........................................................................................... 58
4.3 Comparing Kernel Applications with RTP Applications ....................................... 59
4.4 C and C++ Libraries ........................................................................................................ 60
VxWorks
Kernel Programmer's Guide, 6.9
vi
4.5 Kernel Application Structure ........................................................................................ 60
4.6 VxWorks Header Files .................................................................................................... 61
4.6.1 VxWorks Header File: vxWorks.h ................................................................... 61
4.6.2 Other VxWorks Header Files ........................................................................... 62
4.6.3 ANSI Header Files ............................................................................................ 62
4.6.4 ANSI C++ Header Files .................................................................................... 62
4.6.5 The -I Compiler Flag ......................................................................................... 62
4.6.6 VxWorks Nested Header Files ........................................................................ 62
4.6.7 VxWorks Private Header Files ........................................................................ 63
4.7 Custom Header Files ....................................................................................................... 63
4.8 Static Instantiation of Kernel Objects ......................................................................... 64
4.8.1 About Static Instantiation of Kernel Objects ................................................. 64
Kernel Objects That can be Instantiated Statically ....................................... 65
Static Instantiation and Code Size .................................................................. 65
Advantages of Static Instantiation .................................................................. 65
Applications and Static Instantiation ............................................................. 66
4.8.2 Scope Of Static Declarations ............................................................................ 66
4.8.3 Caveat With Regard to Macro Use .................................................................. 66
4.8.4 Static Instantiation of Tasks ............................................................................. 66
4.8.5 Static Instantiation Of Semaphores ................................................................ 67
4.8.6 Static Instantiation of Message Queues ......................................................... 68
4.8.7 Static Instantiation of Watchdog Timers ........................................................ 68
4.9 Boot-Time Hook Routine Facility ............................................................................... 69
Boot-Time Hook Routine Stubs and Components ....................................... 69
Using Boot-Time Hook Routine Stubs ........................................................... 70
4.10 Kernel Applications and Kernel Component Requirements ................................. 71
4.11 Building Kernel Application Modules ....................................................................... 71
4.12 Downloading Kernel Application Object Modules to a Target ............................. 72
4.13 Linking Kernel Application Object Modules with VxWorks ................................ 72
4.14 Configuring VxWorks to Run Applications Automatically ................................... 72
5 C++ Development ....................................................................................... 75
5.1 Introduction ...................................................................................................................... 75
5.2 Configuring VxWorks for C++ ..................................................................................... 76
5.3 C++ Header Files ............................................................................................................. 76
Contents
vii
5.4 Spawning Tasks That Use C++ ..................................................................................... 76
5.5 Calls Between C and C++ Code .................................................................................... 77
5.6 C++ Compiler Caveats .................................................................................................... 77
5.7 Using C++ in Signal Handlers and ISRs ................................................................... 78
5.8 Downloadable Kernel Modules in C++ ..................................................................... 78
5.9 C++ Compiler Differences ............................................................................................ 78
5.9.1 Template Instantiation ...................................................................................... 78
5.9.2 Run-Time Type Information ............................................................................ 80
5.10 Namespaces ...................................................................................................................... 80
5.11 C++ Exception Handling ................................................................................................ 81
5.12 Standard Template Library (STL) ................................................................................ 81
5.13 C++ Demo Example ........................................................................................................ 81
6 Multitasking ................................................................................................. 83
6.1 Introduction ...................................................................................................................... 83
6.2 About Tasks and Multitasking ..................................................................................... 84
6.2.1 Task States and Transitions .............................................................................. 85
Tasks States and State Symbols ....................................................................... 85
Illustration of Basic Task State Transitions .................................................... 86
6.3 VxWorks System Tasks .................................................................................................. 87
Basic VxWorks Tasks ......................................................................................... 88
Tasks for Optional Components ..................................................................... 91
6.4 Task Scheduling .............................................................................................................. 93
6.4.1 Task Priorities .................................................................................................... 93
6.4.2 VxWorks Traditional Scheduler ...................................................................... 93
Priority-Based Preemptive Scheduling .......................................................... 94
Scheduling and the Ready Queue ................................................................. 94
Round-Robin Scheduling ................................................................................. 95
6.5 Task Creation and Management ................................................................................... 97
6.5.1 Task Creation and Activation .......................................................................... 97
Static instantiation of Tasks ............................................................................. 98
6.5.2 Task Names and IDs ......................................................................................... 98
Task Naming Rules ........................................................................................... 99
Task Name and ID Routines ............................................................................ 99
VxWorks
Kernel Programmer's Guide, 6.9
viii
6.5.3 Inter-Process Communication With Public Tasks ......................................... 99
6.5.4 Task Creation Options ...................................................................................... 100
6.5.5 Task Stack ........................................................................................................... 102
Task Stack Protection ........................................................................................ 102
6.5.6 Task Information ............................................................................................... 103
6.5.7 Task Deletion and Deletion Safety .................................................................. 104
6.5.8 Task Execution Control ..................................................................................... 105
6.5.9 Task Scheduling Control .................................................................................. 106
6.5.10 Tasking Extensions: Using Hook Routines .................................................... 107
6.6 Task Error Status: errno .................................................................................................. 108
6.6.1 Layered Definitions of errno ........................................................................... 109
6.6.2 A Separate errno Value for Each Task ............................................................ 109
6.6.3 Error Return Convention ................................................................................. 109
6.6.4 Assignment of Error Status Values ................................................................. 110
6.7 Task Exception Handling ............................................................................................... 110
6.8 Shared Code and Reentrancy ........................................................................................ 111
6.8.1 Dynamic Stack Variables .................................................................................. 112
6.8.2 Guarded Global and Static Variables ............................................................. 112
6.8.3 Task-Specific Variables .................................................................................... 113
Thread-Local Variables: __thread Storage Class ........................................... 113
taskVarLib and Task Variables ........................................................................ 114
6.8.4 Multiple Tasks with the Same Main Routine ................................................ 114
7 Intertask and Interprocess Communication ............................................. 117
7.1 Introduction ...................................................................................................................... 117
7.2 About Intertask and Interprocess Communication .................................................. 118
7.3 Shared Data Structures ................................................................................................... 119
7.4 Interrupt Locks ............................................................................................................... 120
7.5 Task Locks ........................................................................................................................ 121
7.6 Semaphores ...................................................................................................................... 122
7.6.1 Inter-Process Communication With Public Semaphores ............................. 123
7.6.2 Semaphore Creation and Use .......................................................................... 123
Options for Scalable and Inline Semaphore Routines ................................ 125
Static Instantiation of Semaphores ................................................................. 125
Scalable and Inline Semaphore Take and Give Routines ........................... 126
Contents
ix
7.6.3 Binary Semaphores ........................................................................................... 126
Mutual Exclusion .............................................................................................. 127
Synchronization ................................................................................................. 128
7.6.4 Mutual-Exclusion Semaphores ....................................................................... 129
Priority Inversion and Priority Inheritance ................................................... 129
Deletion Safety ................................................................................................... 132
Recursive Resource Access .............................................................................. 133
7.6.5 Counting Semaphores ...................................................................................... 134
7.6.6 Read/Write Semaphores ................................................................................. 134
Specification of Read or Write Mode .............................................................. 135
Precedence for Write Access Operations ....................................................... 136
Read/Write Semaphores and System Performance ..................................... 136
7.6.7 Special Semaphore Options ............................................................................. 136
Semaphore Timeout .......................................................................................... 136
Semaphores and Queueing .............................................................................. 137
Semaphores and VxWorks Events .................................................................. 137
7.7 Message Queues .............................................................................................................. 137
7.7.1 Inter-Process Communication With Public Message Queues ..................... 138
7.7.2 Message Creation and Use ............................................................................... 138
Static Instantiation of Message Queues ......................................................... 139
Message Queue Timeout .................................................................................. 139
Message Queue Urgent Messages .................................................................. 140
Message Queues and Queuing Options ........................................................ 140
7.7.3 Displaying Message Queue Attributes .......................................................... 141
7.7.4 Servers and Clients with Message Queues .................................................... 141
7.7.5 Message Queues and VxWorks Events .......................................................... 142
7.8 Pipes ................................................................................................................................... 142
7.8.1 Creating Pipes ................................................................................................... 142
7.8.2 Writing to Pipes from ISRs ............................................................................... 142
7.8.3 I/O Control Functions ...................................................................................... 143
7.9 VxWorks Events ............................................................................................................... 143
7.9.1 Configuring VxWorks for Events .................................................................... 144
7.9.2 About Event Flags and the Task Events Register ......................................... 144
7.9.3 Receiving Events ............................................................................................... 145
7.9.4 Sending Events .................................................................................................. 146
7.9.5 Inter-Process Communication With Events .................................................. 148
7.9.6 Events Routines ................................................................................................. 148
7.9.7 Code Example ................................................................................................... 149
7.9.8 Show Routines and Events .............................................................................. 149
VxWorks
Kernel Programmer's Guide, 6.9
x
7.10 Inter-Process Communication With Public Objects ................................................. 149
Creating and Naming Public and Private Objects ....................................... 150
Example of Inter-process Communication With a Public Semaphore ...... 150
7.11 About VxWorks API Timeout Parameters .................................................................. 152
7.12 About Object Ownership and Resource Reclamation ............................................. 152
8 Signals, ISRs, and Watchdog Timers ........................................................ 155
8.1 Introduction ...................................................................................................................... 155
8.2 Signals .............................................................................................................................. 156
8.2.1 Configuring VxWorks for Signals .................................................................. 157
8.2.2 Basic Signal Routines ........................................................................................ 158
8.2.3 Queued Signal Routines .................................................................................. 159
8.2.4 Signal Events ...................................................................................................... 162
8.2.5 Signal Handlers ................................................................................................. 163
8.3 Interrupt Service Routines: ISRs ................................................................................. 166
8.3.1 Configuring VxWorks for ISRs ........................................................................ 166
Configuring the Interrupt Stack ...................................................................... 166
Adding Show Routine Support ....................................................................... 167
8.3.2 Writing ISRs ....................................................................................................... 167
Restrictions on ISRs ........................................................................................... 167
Facilities Available for ISRs .............................................................................. 169
Reserving High Interrupt Levels .................................................................... 170
8.3.3 System Clock ISR Modification ....................................................................... 171
8.3.4 Connecting ISRs to Interrupts ......................................................................... 171
8.3.5 Getting Information About ISRs ..................................................................... 172
8.3.6 Debugging ISRs ................................................................................................. 173
8.4 Watchdog Timers ............................................................................................................. 174
Static Instantiation of Watchdog Timers ........................................................ 175
8.4.1 Inter-Process Communication With Public Watchdog Timers ................... 176
9 POSIX Facilities .......................................................................................... 177
9.1 Introduction ...................................................................................................................... 178
9.2 Configuring VxWorks with POSIX Facilities ............................................................ 179
9.2.1 VxWorks Components for POSIX Facilities .................................................. 179
9.3 General POSIX Support ................................................................................................. 180
9.4 POSIX Header Files ........................................................................................................ 181
Contents
xi
9.5 POSIX Namespace .......................................................................................................... 183
9.6 POSIX Clocks and Timers ............................................................................................. 183
9.7 POSIX Asynchronous I/O .............................................................................................. 186
9.8 POSIX Advisory File Locking ....................................................................................... 186
9.9 POSIX Page-Locking Interface ..................................................................................... 186
9.10 POSIX Threads ................................................................................................................ 187
9.10.1 POSIX Thread Attributes ................................................................................. 188
9.10.2 VxWorks-Specific Pthread Attributes ............................................................ 188
9.10.3 Specifying Attributes when Creating Pthreads ........................................... 189
9.10.4 POSIX Thread Creation and Management .................................................... 190
9.10.5 POSIX Thread Attribute Access ...................................................................... 190
9.10.6 POSIX Thread Private Data ............................................................................. 191
9.10.7 POSIX Thread Cancellation ............................................................................. 192
9.11 POSIX Thread Mutexes and Condition Variables .................................................... 193
9.11.1 Thread Mutexes ................................................................................................. 193
Protocol Mutex Attribute ................................................................................ 194
Priority Ceiling Mutex Attribute .................................................................... 195
9.11.2 Condition Variables .......................................................................................... 195
9.12 POSIX and VxWorks Scheduling ................................................................................. 196
9.12.1 Differences in POSIX and VxWorks Scheduling ........................................... 197
9.12.2 POSIX and VxWorks Priority Numbering ..................................................... 198
9.12.3 Default Scheduling Policy ................................................................................ 198
9.12.4 VxWorks Traditional Scheduler ...................................................................... 198
9.12.5 POSIX Threads Scheduler ................................................................................ 199
9.12.6 POSIX Scheduling Routines ............................................................................ 203
9.12.7 Getting Scheduling Parameters: Priority Limits and Time Slice ................ 204
9.13 POSIX Semaphores ......................................................................................................... 204
9.13.1 Comparison of POSIX and VxWorks Semaphores ....................................... 205
9.13.2 Using Unnamed Semaphores .......................................................................... 206
9.13.3 Using Named Semaphores .............................................................................. 208
9.14 POSIX Message Queues ................................................................................................. 211
9.14.1 Comparison of POSIX and VxWorks Message Queues ............................... 212
9.14.2 POSIX Message Queue Attributes .................................................................. 213
9.14.3 Displaying Message Queue Attributes .......................................................... 214
VxWorks
Kernel Programmer's Guide, 6.9
xii
9.14.4 Communicating Through a Message Queue ................................................ 215
9.14.5 Notification of Message Arrival ..................................................................... 218
9.15 POSIX Signals .................................................................................................................. 222
9.16 POSIX Memory Management ....................................................................................... 222
10 Memory Management ................................................................................. 223
10.1 Introduction ...................................................................................................................... 223
10.2 32-Bit VxWorks Memory Layout ................................................................................. 224
10.2.1 Displaying Information About Memory Layout .......................................... 224
10.2.2 System Memory Map Without RTP Support ................................................ 224
10.2.3 System Memory Map with RTP Support ....................................................... 226
10.2.4 System RAM Autosizing .................................................................................. 228
10.2.5 Reserved Memory: User-Reserved Memory and Persistent Memory ...... 228
10.3 64-Bit VxWorks Memory Layout ................................................................................. 229
10.3.1 Displaying Information About Memory Layout .......................................... 230
10.3.2 Virtual Memory Regions .................................................................................. 230
Kernel System Virtual Memory Region ......................................................... 231
Kernel Virtual Memory Pool Region .............................................................. 232
Kernel Reserved Memory Region ................................................................... 232
Shared User Virtual Memory Region ............................................................. 232
RTP Private Virtual Memory Region .............................................................. 232
10.3.3 Global RAM Pool .............................................................................................. 233
10.3.4 Kernel Memory Map ........................................................................................ 233
Kernel System Memory .................................................................................... 235
Kernel Common Heap ...................................................................................... 235
DMA32 Heap ..................................................................................................... 235
User-Reserved Memory ................................................................................... 235
Persistent Memory ............................................................................................ 235
10.3.5 Reserved Memory Configuration: User-Reserved Memory and Persistent
Memory .............................................................................................................. 236
10.3.6 System RAM Autosizing .................................................................................. 236
10.4 About VxWorks Memory Allocation Facilities ......................................................... 236
10.5 32-Bit VxWorks Heap and Memory Partition Management .................................. 237
10.5.1 Configuring the Kernel Heap and the Memory Partition Manager .......... 238
10.5.2 Basic Heap and Memory Partition Manager ................................................. 238
10.5.3 Full Heap and Memory Partition Manager ................................................... 238
10.6 64-Bit VxWorks Heap and Memory Partition Management .................................. 239
10.6.1 Kernel Common Heap ...................................................................................... 239
Contents
xiii
10.6.2 Kernel Proximity Heap ..................................................................................... 240
10.6.3 DMA32 Heap ..................................................................................................... 240
10.7 SMP-Optimized Memory Allocation .......................................................................... 241
10.7.1 Configuration ..................................................................................................... 241
10.7.2 Usage scenarios ................................................................................................. 241
10.8 Memory Pools .................................................................................................................. 242
10.9 POSIX Memory Management ....................................................................................... 242
10.9.1 POSIX Memory Management APIs ................................................................ 243
10.9.2 POSIX Memory Mapping ................................................................................ 244
10.9.3 POSIX Memory Protection ............................................................................... 244
10.9.4 POSIX Memory Locking .................................................................................. 244
10.10 Memory Mapping Facilities .......................................................................................... 245
10.10.1 POSIX Memory-Mapped Files ........................................................................ 247
10.10.2 POSIX Shared Memory Objects ...................................................................... 247
10.10.3 Anonymous Memory Mapping ...................................................................... 247
10.10.4 Device Memory Objects ................................................................................... 248
10.10.5 Shared Data Regions ......................................................................................... 249
10.11 Virtual Memory Management ..................................................................................... 249
10.11.1 Configuring Virtual Memory Management .................................................. 250
10.11.2 Managing Virtual Memory Programmatically ............................................. 251
Modifying Page States ...................................................................................... 252
Making Memory Non-Writable ...................................................................... 253
Invalidating Memory Pages ............................................................................ 255
Locking TLB Entries .......................................................................................... 255
Page Size Optimization .................................................................................... 255
Setting Page States in ISRs ............................................................................... 256
10.11.3 Troubleshooting ................................................................................................. 256
10.12 Additional Memory Protection Features ................................................................... 257
10.12.1 Configuring VxWorks for Additional Memory Protection ......................... 257
10.12.2 Stack Overrun and Underrun Detection ........................................................ 258
10.12.3 Non-Executable Task Stack .............................................................................. 258
10.12.4 Text Segment Write Protection ........................................................................ 258
10.12.5 Exception Vector Table Write Protection ........................................................ 259
10.13 Memory Error Detection ................................................................................................ 259
10.13.1 Heap and Partition Memory Instrumentation .............................................. 259
10.13.2 Compiler Instrumentation: 32-Bit VxWorks .................................................. 264
VxWorks
Kernel Programmer's Guide, 6.9
xiv
11 I/O System ................................................................................................... 269
11.1 Introduction ...................................................................................................................... 269
11.2 About the VxWorks I/O System ................................................................................... 270
Differences Between VxWorks and Host System I/O ................................. 270
11.3 Configuring VxWorks With I/O Facilities .................................................................. 271
11.4 I/O Devices, Named Files, and File Systems ............................................................ 272
11.5 Remote File System Access From VxWorks ............................................................... 273
NFS File System Access from VxWorks ......................................................... 273
Non-NFS Network File System Access from VxWorks WIth FTP or RSH 273
11.6 Basic I/O ............................................................................................................................ 275
11.6.1 File Descriptors .................................................................................................. 275
File Descriptor Table ......................................................................................... 276
11.6.2 Standard Input, Standard Output, and Standard Error .............................. 276
11.6.3 Standard I/O Redirection ................................................................................ 276
Issues with Standard I/O Redirection ........................................................... 277
11.6.4 Open and Close ................................................................................................. 278
11.6.5 Create and Remove ........................................................................................... 280
11.6.6 Read and Write .................................................................................................. 281
11.6.7 File Truncation ................................................................................................... 281
11.6.8 I/O Control ........................................................................................................ 282
11.6.9 Pending on Multiple File Descriptors with select( ) ..................................... 282
11.6.10 POSIX File System Routines ............................................................................ 284
11.7 Standard I/O ..................................................................................................................... 285
11.7.1 Configuring VxWorks With Standard I/O .................................................... 285
11.7.2 About printf( ), sprintf( ), and scanf( ) ............................................................ 286
11.7.3 About Standard I/O and Buffering ................................................................ 286
11.7.4 About Standard Input, Standard Output, and Standard Error .................. 287
11.8 Other Formatted I/O ....................................................................................................... 287
11.8.1 Output in Serial I/O Polled Mode: kprintf( ) ................................................ 287
Writing to User-Defined Storage Media With kprintf( ) and kputs( ) ....... 288
11.8.2 Additional Formatted I/O Routines ............................................................. 289
11.8.3 Message Logging ............................................................................................... 289
11.9 Asynchronous Input/Output ......................................................................................... 289
11.9.1 The POSIX AIO Routines ................................................................................. 290
Contents
xv
11.9.2 AIO Control Block ............................................................................................. 291
11.9.3 Using AIO ........................................................................................................... 292
AIO with Periodic Checks for Completion ................................................... 292
Alternatives for Testing AIO Completion ..................................................... 294
12 Devices ........................................................................................................ 297
12.1 Introduction ...................................................................................................................... 297
12.2 About Devices in VxWorks ........................................................................................... 298
12.3 Serial I/O Devices: Terminal and Pseudo-Terminal Devices .................................. 299
tty Options .......................................................................................................... 299
12.3.1 Raw Mode and Line Mode .............................................................................. 300
12.3.2 tty Special Characters ....................................................................................... 300
12.3.3 I/O Control Functions ...................................................................................... 301
12.4 Pipe Devices ..................................................................................................................... 302
12.5 Pseudo I/O Device ........................................................................................................... 302
12.5.1 I/O Control Functions ...................................................................................... 303
12.6 Null Devices .................................................................................................................... 303
12.7 Block Devices ................................................................................................................... 303
12.7.1 XBD RAM Disk .................................................................................................. 305
12.7.2 SCSI Drivers ....................................................................................................... 306
Configuring SCSI Drivers ................................................................................ 306
Structure of the SCSI Subsystem ..................................................................... 307
Booting and Initialization ................................................................................ 308
Device-Specific Configuration Options ......................................................... 308
SCSI Configuration Examples ......................................................................... 310
Troubleshooting ................................................................................................. 312
12.8 Extended Block Device Facility: XBD ......................................................................... 313
12.8.1 XBD Disk Partition Manager ........................................................................... 313
12.8.2 XBD Block Device Wrapper ............................................................................. 314
12.8.3 XBD TRFS Component ..................................................................................... 314
12.9 PCMCIA ............................................................................................................................ 315
12.10 Peripheral Component Interconnect: PCI .................................................................. 315
12.11 Network File System (NFS) Devices ........................................................................... 315
12.11.1 I/O Control Functions for NFS Clients .......................................................... 316
12.12 Non-NFS Network Devices ........................................................................................... 317
VxWorks
Kernel Programmer's Guide, 6.9
xvi
12.12.1 Creating Network Devices ............................................................................... 318
12.12.2 I/O Control Functions ...................................................................................... 318
12.13 Sockets ............................................................................................................................... 318
12.14 Internal I/O System Structure ....................................................................................... 319
12.14.1 Drivers ................................................................................................................ 321
The Driver Table and Installing Drivers ........................................................ 322
Example of Installing a Driver ........................................................................ 322
12.14.2 Devices ................................................................................................................ 323
The Device List and Adding Devices ............................................................. 323
Example of Adding Devices ............................................................................ 324
Deleting Devices ................................................................................................ 324
12.14.3 File Descriptors .................................................................................................. 327
File Descriptor Table ......................................................................................... 327
Example of Opening a File ............................................................................... 327
Example of Reading Data from the File ......................................................... 330
Example of Closing a File ................................................................................. 331
Implementing select( ) ...................................................................................... 331
Cache Coherency ............................................................................................... 334
13 Local File Systems ..................................................................................... 339
13.1 Introduction ...................................................................................................................... 339
13.2 File System Monitor ...................................................................................................... 341
Device Insertion Events .................................................................................... 342
XBD Name Mapping Facility .......................................................................... 343
13.3 Virtual Root File System: VRFS ................................................................................... 343
13.4 Highly Reliable File System: HRFS ............................................................................ 345
13.4.1 Configuring VxWorks for HRFS ..................................................................... 345
13.4.2 Configuring HRFS ............................................................................................ 346
13.4.3 Creating an HRFS File System ....................................................................... 347
Overview of HRFS File System Creation ....................................................... 347
HRFS File System Creation Steps ................................................................... 347
13.4.4 HRFS, ATA, and RAM Disk Examples .......................................................... 348
13.4.5 Optimizing HRFS Performance ...................................................................... 353
13.4.6 Transactional Operations and Commit Policies ......................................... 353
Automatic Commit Policy ............................................................................... 353
High-Speed Commit Policy ............................................................................. 354
Mandatory Commits ......................................................................................... 354
Rollbacks ............................................................................................................. 354
Programmatically Initiating Commits ........................................................... 354
13.4.7 File Access Time Stamps .................................................................................. 355
Contents
xvii
13.4.8 Maximum Number of Files and Directories ................................................. 355
13.4.9 Working with Directories ................................................................................. 355
Creating Subdirectories .................................................................................... 355
Removing Subdirectories ................................................................................. 356
Reading Directory Entries ................................................................................ 356
13.4.10 Working with Files ............................................................................................ 356
File I/O Routines ............................................................................................... 356
File Linking and Unlinking ............................................................................. 356
File Permissions ................................................................................................. 357
13.4.11 I/O Control Functions Supported by HRFS ................................................. 357
13.4.12 Crash Recovery and Volume Consistency ..................................................... 358
Crash Recovery .................................................................................................. 358
Consistency Checking ...................................................................................... 358
13.4.13 File Management and Full Devices ................................................................ 358
13.5 MS-DOS-Compatible File System: dosFs .................................................................. 359
13.5.1 Configuring VxWorks for dosFs ..................................................................... 360
13.5.2 Configuring dosFs ............................................................................................ 361
13.5.3 Creating a dosFs File System ........................................................................... 362
Overview of dosFs File System Creation ....................................................... 362
dosFs File System Creation Steps ................................................................... 363
13.5.4 dosFs, ATA Disk, and RAM Disk Examples ................................................. 365
13.5.5 Optimizing dosFs Performance ...................................................................... 369
13.5.6 Working with Volumes and Disks .................................................................. 370
Accessing Volume Configuration Information ............................................. 370
Synchronizing Volumes .................................................................................... 370
13.5.7 Working with Directories ................................................................................. 370
Creating Subdirectories .................................................................................... 370
Removing Subdirectories ................................................................................. 371
Reading Directory Entries ................................................................................ 371
13.5.8 Working with Files ............................................................................................ 371
File I/O Routines ............................................................................................... 371
File Attributes .................................................................................................... 371
13.5.9 Disk Space Allocation Options ........................................................................ 373
Choosing an Allocation Method ..................................................................... 374
Using Cluster Group Allocation ..................................................................... 374
Using Absolutely Contiguous Allocation ...................................................... 374
13.5.10 Crash Recovery and Volume Consistency ..................................................... 376
13.5.11 I/O Control Functions Supported by dosFsLib ............................................ 376
13.5.12 Booting from a Local dosFs File System Using SCSI ................................... 378
13.6 Transaction-Based Reliable File System Support for dosFs: TRFS ....................... 380
VxWorks
Kernel Programmer's Guide, 6.9
xviii
13.6.1 Configuring VxWorks With TRFS ................................................................... 380
13.6.2 Automatic Instantiation of TRFS .................................................................... 380
13.6.3 Formatting a Device for TRFS ......................................................................... 381
13.6.4 Using TRFS in Applications ............................................................................ 382
TRFS Code Examples ....................................................................................... 382
13.7 Raw File System: rawFs ................................................................................................. 383
13.7.1 Configuring VxWorks for rawFs ..................................................................... 383
13.7.2 Creating a rawFs File System .......................................................................... 383
13.7.3 Mounting rawFs Volumes ................................................................................ 384
13.7.4 rawFs File I/O ................................................................................................... 385
13.7.5 I/O Control Functions Supported by rawFsLib ........................................... 385
13.8 CD-ROM File System: cdromFs ................................................................................... 386
13.8.1 Configuring VxWorks for cdromFs ................................................................ 387
13.8.2 Creating and Using cdromFs ........................................................................... 387
13.8.3 I/O Control Functions Supported by cdromFsLib ...................................... 389
13.8.4 Version Numbers ............................................................................................... 390
13.9 Read-Only Memory File System: ROMFS ................................................................. 390
13.9.1 Configuring VxWorks with ROMFS ............................................................... 391
13.9.2 Adding a ROMFS Directory and File Content to VxWorks ........................ 391
13.9.3 Accessing Files in ROMFS ............................................................................... 392
13.9.4 Using ROMFS to Start Applications Automatically .................................... 392
13.10 Target Server File System: TSFS ................................................................................... 392
Socket Support ................................................................................................... 393
Error Handling .................................................................................................. 394
Configuring VxWorks for TSFS Use ............................................................... 394
Security Considerations ................................................................................... 394
Using the TSFS to Boot a Target ...................................................................... 395
14 Flash File System Support: TrueFFS ........................................................ 397
14.1 Introduction ...................................................................................................................... 397
14.2 Overview of Implementation Steps ............................................................................ 398
14.3 Creating a VxWorks System with TrueFFS ................................................................ 400
14.3.1 Selecting an MTD .............................................................................................. 400
14.3.2 Identifying the Socket Driver .......................................................................... 400
14.3.3 Configuring VxWorks with TrueFFS and File System ................................. 401
Including the Core TrueFFS Component ....................................................... 401
Including the MTD Component ...................................................................... 402
Contents
xix
Including the Translation Layer Component ................................................ 402
Including the Socket Driver ............................................................................. 403
Including the XBD Wrapper Component ...................................................... 403
Including File System Components ............................................................... 403
Including Utility Components ........................................................................ 403
14.3.4 Building the System .......................................................................................... 404
14.3.5 Formatting the Flash ......................................................................................... 404
Formatting With sysTffsFormat( ) .................................................................. 404
Formatting With tffsDevFormat( ) .................................................................. 405
14.3.6 Reserving a Region in Flash for a Boot Image .............................................. 406
Reserving a Fallow Region .............................................................................. 407
Writing the Boot Image to Flash ...................................................................... 408
14.3.7 Mounting the Drive .......................................................................................... 409
14.3.8 Creating a File System ...................................................................................... 409
14.3.9 Testing the Drive ............................................................................................... 410
14.4 Using TrueFFS Shell Commands ................................................................................. 410
14.5 Using TrueFFS With HRFS ............................................................................................
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。