RTX理解11

文献来源:http://wzhyblog.yo2.cn/articles/%E5%AE%9E%E6%97%B6%E7%B3%BB%E7%BB%9Frtx%E5%AE%98%E6%96%B9%E6%96%87%E6%A1%A3%E4%B8%AD%E6%96%87%E7%BF%BB%E8%AF%91_13.html

实时系统RTX官方文档中文翻译_13

本文档包括以下内容:

安装VS RTX向导

提示:以下过程只是在安装RTX之后再安装VS时才需要。如果首先安装了VS,然后再安装了RTX,则RTX向导会自动安装。

“添加/删除程序”-->RTX,单击“更改”-->

  1. In the Welcome screen, click Next.
  2. Click Modify, then click Next.
  3. On the Custom Setup screen, expand Microsoft Visual Studio Support.
  4. Click the icon next to the version of Visual Studio you have and choose This feature will be installed on local hard drive.
  5. Click Next.
  6. Click Install.
  7. Click Finish.

新建一个RTX工程(2005 and .NET)

提示:RTX不支持.NET环境下的托管代码。

To create an RTX Project:

  1. From the Visual Studio menu bar select File > New > Project.
  2. Select Visual C++ Projects from the Project types list.
  3. Select one of the following from the templates area:
    • RTX Application Wizard
    • RTX Device Driver Wizard
    • RTX Network Driver Wizard
  1. On the bottom of the dialog you can edit the default project name and location.
  2. Click OK to start the wizard. The Overview page displays the current settings of the RTX Project. Edit the settings of the RTX Project using the wizard. See the following topics for more information:

For Device Drivers:

For Applications:

For Network Drivers:

RTX项目包括四个生成设置:Win32 Release, Win32 Debug, RTSSRelease 和RTSSDebug。

RTX向导可以生成一个可以运行的基本的C语言程序框架,其中包括定时器、事件对象等基本用法。


使用RTX设备驱动向导

1. 生成项目

略。

2. 编辑驱动设置

  1. 在RTX Device Driver Wizard中单击 Driver Settings
  2. 要生成一个RTX驱动,选择 RTX application (.rtss)。 要生成一个RTDLL,选择 Build Device Driver as a DLL
  3. 选择 UNICODEASCII 字符编码方式。
  4. 如果你需要 C 运行时函数的支持,选择 single-threaded 或 multi-threaded library。
    Note:  Visual Studio 2005 不再支持 single-thread C Runtime library。
  5. 如果这些设置满足需要,单击 Finish。否则,单击 Program Settings ,继续编辑程序设置。

3. 编辑程序设置(2005 and .NET)

  1. 单击左侧的 Program Settings
  2. RTX Device Driver Wizard 能够为PCI或串行设备建立一个基本的程序框架。如果选择了 Provide PCI Device framework 或 Provide Serial Device framework ,向导会往项目中插入包含基本功能的C源代码和相关头文件。 如果选择了 No framework,则向导会只保存项目的设置,并不包括任何头文件或C 源文件。
  3. 如果选择了 Provide PCI Device FrameworkProvide Serial Device Framework ,RTX 代码段就会被包含进程序框架中。这些代码显示了RTAPI的合适调用,可做为如何使用这些函数的例子。在其中的"TO DO" 注释下面,用户可以添加自己的代码。可以为一个项目中选择一个或多个代码段,下表显示了现有的代码段及其描述:
代码段
描述

Interrupt Service Routine

创建一个基本的ISR模板,可以用来当一个中断被共享时确定中断的拥有者。
Shared Interrupt Support
支持中断共享代码段。

Basic IO support

支持端口IO的代码段。使能/禁用端口IO,对一个IO端口进行基本的读写操作。

Basic Memory Mapping Support

支持内存映射的代码段。 提示:这个代码段不支持串行设备。

4. 编译和链接选项(For VS 2005)

注意VS2005提供的清单(manifest)功能不能嵌入到一个.rtss程序中。

  • <RTXSDKDir> 指向RTX SDK路径。
  • <APP> 指向程序的名称。
  • <RunDir>指向RTDLL运行的路径,通常为 C:/WINDOWS/RTSS/rtdll。

提示:

  • 当选择“add support for RT-TCP/IP Support”时,预处理定义 _WSPIAPI_H ("/D _WSPIAPI_H_") 会被加入到项目的编译选项中,库rtxtcpip.lib会被加入到链接选项中。
  • 浮点模型被设置成 /fp:fast 以获得最佳性能。详情见《使用浮点数》这一小节的内容。

(1) RTSS Debug No C Runtime:

编译选项

/Od /I "<RTXSDKDir>/include"

/D "WIN32" /D "UNDER_RTSS" /D "_DEBUG" /D "VISUALSTUDIO=8" /D "_UNICODE" /D "UNICODE" /FD /EHsc /MTd /GS- /fp:fast /GR- /Fo"RTSSDebug//"

/Fd"RTSSDebug/<APP>.pdb" /W3 /nologo /c /Z7 /Gd /errorReport:prompt

链接选项

/OUT:"<APP>.rtss" /INCREMENTAL:NO /NOLOGO /LIBPATH:"<RTXSDKDir>/lib" /MANIFEST /MANIFESTFILE:"RTSSDebug/:<APP>.rtss.intermediate.manifest" /NODEFAULTLIB /NODEFAULTLIB:"libc" /NODEFAULTLIB:"libcd" /NODEFAULTLIB:"libcmt" /NODEFAULTLIB:"libcmtd" /DEBUG /PDB:":<APP>.pdb" /SUBSYSTEM:NATIVE /DRIVER /ENTRY:"_RtapiProcessEntry@8" /MACHINE:X86 /ERRORREPORT :P ROMPT rtapi_rtss.lib rtx_rtss.lib

(2) RTSS Release No CRuntime:

编译选项

/Ox /I "<RTXSDKDir>/include" /D "WIN32" /D "UNDER_RTSS" /D "NDEBUG" /D "RELEASE" /D "VISUALSTUDIO=8" /D "_UNICODE" /D "UNICODE" /FD /EHsc /MT /GS- /fp:fast /GR- /Fo"RTSSRelease//" /Fd"RTSSRelease/<APP>.pdb" /W3 /nologo /c /Gd /errorReport:prompt

链接选项

/OUT:"<APP>.rtss" /INCREMENTAL:NO /NOLOGO /LIBPATH::"<RTXSDKDir>/lib" /MANIFEST /MANIFESTFILE:"<APP>.rtss.intermediate.manifest" /NODEFAULTLIB /NODEFAULTLIB:"libc" /NODEFAULTLIB:"libcd" /NODEFAULTLIB:"libcmt" /NODEFAULTLIB:"libcmtd" /SUBSYSTEM:NATIVE /DRIVER /ENTRY:"_RtapiProcessEntry@8" /MACHINE:X86 /ERRORREPORT :P ROMPT rtapi_rtss.lib rtx_rtss.lib

(3) RTSS Debug Multi thread CRuntime:

编译选项

/Od /I "<RTXSDKDir>/include" /D "WIN32" /D "UNDER_RTSS" /D "_DEBUG" /D "VISUALSTUDIO=8" /D "_UNICODE" /D "UNICODE" /FD /EHsc /MTd /GS- /fp:fast /GR- /Fo"RTSSDebug//" /Fd"RTSSDebug/<APP>.pdb" /W3 /nologo /c /Z7 /Gd /errorReport:prompt

链接选项

/OUT:"<APP>.rtss" /INCREMENTAL:NO /NOLOGO /LIBPATH:"<RTXSDKDir>/lib" /LIBPATH:"RTXSDKDir>/lib/VisualStudio8" /MANIFEST /MANIFESTFILE:"RTSSDebug/<APP>.rtss.intermediate.manifest" /NODEFAULTLIB /NODEFAULTLIB:"libc" /NODEFAULTLIB:"libcd" /NODEFAULTLIB:"libcmt" /NODEFAULTLIB:"libcmtd" /DEBUG /PDB:"<APP>.pdb" /SUBSYSTEM:NATIVE /DRIVER /ENTRY:"_RtapiProcessEntryCRT@8" /MACHINE:X86 /ERRORREPORT :P ROMPT startupCRT.obj rtxlibcmt.lib oldnames.lib rtapi_rtss.lib rtx_rtss.lib

(4) RTSS Release Multi thread CRuntime:

编译选项

/Ox /I "<RTXSDKDir>/include" /D "WIN32" /D "UNDER_RTSS" /D "NDEBUG" /D "RELEASE" /D "VISUALSTUDIO=8" /D "_UNICODE" /D "UNICODE" /FD /EHsc /MT /GS- /fp:fast /GR- /Fo"RTSSRelease//" /Fd"RTSSRelease/<APP>.pdb" /W3 /nologo /c /Gd /errorReport:prompt

链接选项

/OUT:"<APP>.rtss" /INCREMENTAL:NO /NOLOGO /LIBPATH:"<RTXSDKDir>/lib" /LIBPATH:"<RTXSDKDir>/lib/VisualStudio8" /MANIFEST /MANIFESTFILE:"RTSSRelease/<APP>.rtss.intermediate.manifest" /NODEFAULTLIB /NODEFAULTLIB:"libc" /NODEFAULTLIB:"libcd" /NODEFAULTLIB:"libcmt" /NODEFAULTLIB:"libcmtd" /SUBSYSTEM:NATIVE /DRIVER /ENTRY:"_RtapiProcessEntryCRT@8" /MACHINE:X86 /ERRORREPORT :P ROMPT startupCRT.obj rtxlibcmt.lib oldnames.lib rtapi_rtss.lib rtx_rtss.lib

(5) RTDLL Debug No CRuntime

编译选项

/Od /I "<RTXSDKDir>/include" /D "WIN32" /D "UNDER_RTSS" /D "_DEBUG" /D "RTX_EXPORTS" /D "VISUALSTUDIO=8" /D "_UNICODE" /D "UNICODE" /D "_WINDLL" /FD /EHsc /MTd /GS- /fp:fast /GR- /Fo"RTSSDebug//" /Fd"RTSSDebug/<APP>.pdb" /W3 /nologo /c /Z7 /Gd /errorReport:prompt

链接选项

/OUT:"<APP>.rtdll" /INCREMENTAL:NO /NOLOGO /LIBPATH:"<RTXSDKDir>/lib" /DLL /MANIFEST /MANIFESTFILE:"RTSSDebug/<APP>.rtdll.intermediate.manifest" /NODEFAULTLIB /NODEFAULTLIB:"libc" /NODEFAULTLIB:"libcd" /NODEFAULTLIB:"libcmt" /NODEFAULTLIB:"libcmtd" /DEBUG /PDB:"<APP>.pdb" /SUBSYSTEM:NATIVE /DRIVER /ENTRY:"_RtapiDllEntry@8" /MACHINE:X86 /ERRORREPORT :P ROMPT rtapi_rtss.lib rtx_rtss.lib startupdll.obj

(6) RTDLL Release No CRuntime

编译选项

/Ox /I "<RTXSDKDir>/include" /D "WIN32" /D "UNDER_RTSS" /D "NDEBUG" /D "RELEASE" /D "RTX_EXPORTS" /D "VISUALSTUDIO=8" /D "_UNICODE" /D "UNICODE" /D "_WINDLL" /FD /EHsc /MT /GS- /fp:fast /GR- /Fo"RTSSRelease//" /Fd"RTSSRelease/<APP>.pdb" /W3 /nologo /c /Gd /errorReport:prompt

链接选项

/OUT:"<APP>.rtdll" /INCREMENTAL:NO /NOLOGO /LIBPATH:"<RTXSDKDir>/lib" /DLL /MANIFEST /MANIFESTFILE:"RTSSRelease/<APP>.rtdll.intermediate.manifest" /NODEFAULTLIB /NODEFAULTLIB:"libc" /NODEFAULTLIB:"libcd" /NODEFAULTLIB:"libcmt" /NODEFAULTLIB:"libcmtd" /SUBSYSTEM:NATIVE /DRIVER /ENTRY:"_RtapiDllEntry@8" /MACHINE:X86 /ERRORREPORT :P ROMPT rtapi_rtss.lib rtx_rtss.lib startupdll.obj

(7) RTDLL Debug Multi thread CRuntime

编译选项

/Od /I "<RTXSDKDir>/include" /D "WIN32" /D "UNDER_RTSS" /D "_DEBUG" /D "RTX_EXPORTS" /D "VISUALSTUDIO=8" /D "_UNICODE" /D "UNICODE" /D "_WINDLL" /FD /EHsc /MTd /GS- /fp:fast /GR- /Fo"RTSSDebug//" /Fd"RTSSDebug/<APP>.pdb" /W3 /nologo /c /Z7 /Gd /errorReport:prompt

链接选项

/OUT:"<APP>.rtdll" /INCREMENTAL:NO /NOLOGO /LIBPATH:"<RTXSDKDir>/lib" /LIBPATH:"<RTXSDKDir>/lib/VisualStudio8" /DLL /MANIFEST /MANIFESTFILE:"RTSSDebug/<APP>.rtdll.intermediate.manifest" /NODEFAULTLIB /NODEFAULTLIB:"libc" /NODEFAULTLIB:"libcd" /NODEFAULTLIB:"libcmt" /NODEFAULTLIB:"libcmtd" /DEBUG /PDB:"<APP>.pdb" /SUBSYSTEM:NATIVE /DRIVER /ENTRY:"_RtapiDllEntryCRT@8" /MACHINE:X86 /ERRORREPORT :P ROMPT startupDllCrt.obj rtxlibcmt.lib oldnames.lib rtapi_rtss.lib rtx_rtss.lib

( 8) RTDLL release Multi thread CRuntime

编译选项

/Ox /I "<RTXSDKDir>/include" /D "WIN32" /D "UNDER_RTSS" /D "NDEBUG" /D "RELEASE" /D "RTX_EXPORTS" /D "VISUALSTUDIO=8" /D "_UNICODE" /D "UNICODE" /D "_WINDLL" /FD /EHsc /MT /GS- /fp:fast /GR- /Fo"RTSSRelease//" /Fd"RTSSRelease/<APP>.pdb" /W3 /nologo /c /Gd /errorReport:prompt

链接选项

/OUT:"<APP>.rtdll" /INCREMENTAL:NO /NOLOGO /LIBPATH:"<RTXSDKDir>/lib" /LIBPATH:"<RTXSDKDir>/lib/VisualStudio8" /DLL /MANIFEST /MANIFESTFILE:"RTSSRelease/<APP>.rtdll.intermediate.manifest" /NODEFAULTLIB /NODEFAULTLIB:"libc" /NODEFAULTLIB:"libcd" /NODEFAULTLIB:"libcmt" /NODEFAULTLIB:"libcmtd" /SUBSYSTEM:NATIVE /DRIVER /ENTRY:"_RtapiDllEntryCRT@8" /MACHINE:X86 /ERRORREPORT :P ROMPT startupDllCrt.obj rtxlibcmt.lib oldnames.lib rtapi_rtss.lib rtx_rtss.lib


使用RTX程序向导

1. 建立项目

略。

2. 编辑程序设置

同RTX设备驱动向导。

3. 编辑程序选项

如果选择了 Provide a program framework ,会有RTX代码段添加进项目中,有以下几种:

  • Event server thread: 创建一个子线程函数框架,包括一个命名的事件和一个子线程、设置线程的优先级、恢复/暂停线程。用户必须提供子线程函数代码,事件名称和异常代码。
  • Periodic timer thread: 创建一个周期性定时器框架。用户必须提供定时器生命时间,周期定时函数代码和异常代码。
  • RTDLL exported function: 创建一个生成RTDLL 的代码框架.  此选项只有在指定程序类型为RTDLL 才有效。
  • Interrupt handler thread (.NET only): 由Device Driver Wizard提供,产生一个有中断向量的中断处理函数框架。用户必须提供中断处理函数代码,总线信息和异常代码。
  • Port I/O (.NET only): 由Device Driver Wizard提供,显示了如何使能从用户态直接通过IO访问一个端口,还给出了一个如何读写蜂鸣器的例子。

4. 编译和链接选项(VS 2005)

(1) RTSS Debug No C Runtime

编译选项

/Od /I "<RTXSDKDir>/include"

/D "WIN32" /D "UNDER_RTSS" /D "_DEBUG" /D "VISUALSTUDIO=8" /D "_UNICODE" /D "UNICODE" /FD /EHsc /MTd /GS- /fp:fast /GR- /Fo"RTSSDebug//" /Fd"RTSSDebug/<APP>.pdb" /W3 /nologo /c /Z7 /Gd /errorReport:prompt

链接选项

/OUT:"<APP>.rtss" /INCREMENTAL:NO /NOLOGO /LIBPATH:"<RTXSDKDir>/lib" /MANIFEST /MANIFESTFILE:"RTSSDebug/:<APP>.rtss.intermediate.manifest" /NODEFAULTLIB /NODEFAULTLIB:"libc" /NODEFAULTLIB:"libcd" /NODEFAULTLIB:"libcmt" /NODEFAULTLIB:"libcmtd" /DEBUG /PDB:":<APP>.pdb" /SUBSYSTEM:NATIVE /DRIVER /ENTRY:"_RtapiProcessEntry@8" /MACHINE:X86 /ERRORREPORT :P ROMPT rtapi_rtss.lib rtx_rtss.lib

(2) RTSS Release No CRuntime

编译选项

/Ox /I "<RTXSDKDir>/include" /D "WIN32" /D "UNDER_RTSS" /D "NDEBUG" /D "RELEASE" /D "VISUALSTUDIO=8" /D "_UNICODE" /D "UNICODE" /FD /EHsc /MT /GS- /fp:fast /GR- /Fo"RTSSRelease//" /Fd"RTSSRelease/<APP>.pdb" /W3 /nologo /c /Gd /errorReport:prompt

链接选项

/OUT:"<APP>.rtss" /INCREMENTAL:NO /NOLOGO /LIBPATH::"<RTXSDKDir>/lib" /MANIFEST /MANIFESTFILE:"<APP>.rtss.intermediate.manifest" /NODEFAULTLIB /NODEFAULTLIB:"libc" /NODEFAULTLIB:"libcd" /NODEFAULTLIB:"libcmt" /NODEFAULTLIB:"libcmtd" /SUBSYSTEM:NATIVE /DRIVER /ENTRY:"_RtapiProcessEntry@8" /MACHINE:X86 /ERRORREPORT :P ROMPT rtapi_rtss.lib rtx_rtss.lib

(3) RTSS Debug Multi thread CRuntime

编译选项

/Od /I "<RTXSDKDir>/include" /D "WIN32" /D "UNDER_RTSS" /D "_DEBUG" /D "VISUALSTUDIO=8" /D "_UNICODE" /D "UNICODE" /FD /EHsc /MTd /GS- /fp:fast /GR- /Fo"RTSSDebug//" /Fd"RTSSDebug/<APP>.pdb" /W3 /nologo /c /Z7 /Gd /errorReport:prompt

链接选项

/OUT:"<APP>.rtss" /INCREMENTAL:NO /NOLOGO /LIBPATH:"<RTXSDKDir>/lib" /LIBPATH:"RTXSDKDir>/lib/VisualStudio8" /MANIFEST /MANIFESTFILE:"RTSSDebug/<APP>.rtss.intermediate.manifest" /NODEFAULTLIB /NODEFAULTLIB:"libc" /NODEFAULTLIB:"libcd" /NODEFAULTLIB:"libcmt" /NODEFAULTLIB:"libcmtd" /DEBUG /PDB:"<APP>.pdb" /SUBSYSTEM:NATIVE /DRIVER /ENTRY:"_RtapiProcessEntryCRT@8" /MACHINE:X86 /ERRORREPORT :P ROMPT startupCRT.obj rtxlibcmt.lib oldnames.lib rtapi_rtss.lib rtx_rtss.lib

(4) RTSS Release Multi thread CRuntime

编译选项

/Ox /I "<RTXSDKDir>/include" /D "WIN32" /D "UNDER_RTSS" /D "NDEBUG" /D "RELEASE" /D "VISUALSTUDIO=8" /D "_UNICODE" /D "UNICODE" /FD /EHsc /MT /GS- /fp:fast /GR- /Fo"RTSSRelease//" /Fd"RTSSRelease/<APP>.pdb" /W3 /nologo /c /Gd /errorReport:prompt

链接选项

/OUT:"<APP>.rtss" /INCREMENTAL:NO /NOLOGO /LIBPATH:"<RTXSDKDir>/lib" /LIBPATH:"<RTXSDKDir>/lib/VisualStudio8" /MANIFEST /MANIFESTFILE:"RTSSRelease/<APP>.rtss.intermediate.manifest" /NODEFAULTLIB /NODEFAULTLIB:"libc" /NODEFAULTLIB:"libcd" /NODEFAULTLIB:"libcmt" /NODEFAULTLIB:"libcmtd" /SUBSYSTEM:NATIVE /DRIVER /ENTRY:"_RtapiProcessEntryCRT@8" /MACHINE:X86 /ERRORREPORT :P ROMPT startupCRT.obj rtxlibcmt.lib oldnames.lib rtapi_rtss.lib rtx_rtss.lib

(5) RTDLL Debug No CRuntime

编译选项

/Od /I "<RTXSDKDir>/include" /D "WIN32" /D "UNDER_RTSS" /D "_DEBUG" /D "RTX_EXPORTS" /D "VISUALSTUDIO=8" /D "_UNICODE" /D "UNICODE" /D "_WINDLL" /FD /EHsc /MTd /GS- /fp:fast /GR- /Fo"RTSSDebug//" /Fd"RTSSDebug/<APP>.pdb" /W3 /nologo /c /Z7 /Gd /errorReport:prompt

链接选项

/OUT:"<APP>.rtdll" /INCREMENTAL:NO /NOLOGO /LIBPATH:"<RTXSDKDir>/lib" /DLL /MANIFEST /MANIFESTFILE:"RTSSDebug/<APP>.rtdll.intermediate.manifest" /NODEFAULTLIB /NODEFAULTLIB:"libc" /NODEFAULTLIB:"libcd" /NODEFAULTLIB:"libcmt" /NODEFAULTLIB:"libcmtd" /DEBUG /PDB:"<APP>.pdb" /SUBSYSTEM:NATIVE /DRIVER /ENTRY:"_RtapiDllEntry@8" /MACHINE:X86 /ERRORREPORT :P ROMPT rtapi_rtss.lib rtx_rtss.lib startupdll.obj

(6) RTDLL Release No CRuntime

编译选项

/Ox /I "<RTXSDKDir>/include" /D "WIN32" /D "UNDER_RTSS" /D "NDEBUG" /D "RELEASE" /D "RTX_EXPORTS" /D "VISUALSTUDIO=8" /D "_UNICODE" /D "UNICODE" /D "_WINDLL" /FD /EHsc /MT /GS- /fp:fast /GR- /Fo"RTSSRelease//" /Fd"RTSSRelease/<APP>.pdb" /W3 /nologo /c /Gd /errorReport:prompt

链接选项

/OUT:"<APP>.rtdll" /INCREMENTAL:NO /NOLOGO /LIBPATH:"<RTXSDKDir>/lib" /DLL /MANIFEST /MANIFESTFILE:"RTSSRelease/<APP>.rtdll.intermediate.manifest" /NODEFAULTLIB /NODEFAULTLIB:"libc" /NODEFAULTLIB:"libcd" /NODEFAULTLIB:"libcmt" /NODEFAULTLIB:"libcmtd" /SUBSYSTEM:NATIVE /DRIVER /ENTRY:"_RtapiDllEntry@8" /MACHINE:X86 /ERRORREPORT :P ROMPT rtapi_rtss.lib rtx_rtss.lib startupdll.obj

(7) RTDLL Debug Multi thread CRuntime

编译选项

/Od /I "<RTXSDKDir>/include" /D "WIN32" /D "UNDER_RTSS" /D "_DEBUG" /D "RTX_EXPORTS" /D "VISUALSTUDIO=8" /D "_UNICODE" /D "UNICODE" /D "_WINDLL" /FD /EHsc /MTd /GS- /fp:fast /GR- /Fo"RTSSDebug//" /Fd"RTSSDebug/<APP>.pdb" /W3 /nologo /c /Z7 /Gd /errorReport:prompt

链接选项

/OUT:"<APP>.rtdll" /INCREMENTAL:NO /NOLOGO /LIBPATH:"<RTXSDKDir>/lib" /LIBPATH:"<RTXSDKDir>/lib/VisualStudio8" /DLL /MANIFEST /MANIFESTFILE:"RTSSDebug/<APP>.rtdll.intermediate.manifest" /NODEFAULTLIB /NODEFAULTLIB:"libc" /NODEFAULTLIB:"libcd" /NODEFAULTLIB:"libcmt" /NODEFAULTLIB:"libcmtd" /DEBUG /PDB:"<APP>.pdb" /SUBSYSTEM:NATIVE /DRIVER /ENTRY:"_RtapiDllEntryCRT@8" /MACHINE:X86 /ERRORREPORT :P ROMPT startupDllCrt.obj rtxlibcmt.lib oldnames.lib rtapi_rtss.lib rtx_rtss.lib

( 8) RTDLL release Multi thread CRuntime

编译选项

/Ox /I "<RTXSDKDir>/include" /D "WIN32" /D "UNDER_RTSS" /D "NDEBUG" /D "RELEASE" /D "RTX_EXPORTS" /D "VISUALSTUDIO=8" /D "_UNICODE" /D "UNICODE" /D "_WINDLL" /FD /EHsc /MT /GS- /fp:fast /GR- /Fo"RTSSRelease//" /Fd"RTSSRelease/<APP>.pdb" /W3 /nologo /c /Gd /errorReport:prompt

链接选项

/OUT:"<APP>.rtdll" /INCREMENTAL:NO /NOLOGO /LIBPATH:"<RTXSDKDir>/lib" /LIBPATH:"<RTXSDKDir>/lib/VisualStudio8" /DLL /MANIFEST /MANIFESTFILE:"RTSSRelease/<APP>.rtdll.intermediate.manifest" /NODEFAULTLIB /NODEFAULTLIB:"libc" /NODEFAULTLIB:"libcd" /NODEFAULTLIB:"libcmt" /NODEFAULTLIB:"libcmtd" /SUBSYSTEM:NATIVE /DRIVER /ENTRY:"_RtapiDllEntryCRT@8" /MACHINE:X86 /ERRORREPORT :P ROMPT startupDllCrt.obj rtxlibcmt.lib oldnames.lib rtapi_rtss.lib rtx_rtss.lib


使用RTX网络驱动向导

略。


使用Makefile来创建程序和DLL

可以使用RTX托管的makefile(rtx.mak)来创建一个程序的RTSS和Win32版本。rtx.mak包含编译C文件和链接obj文件的规则。可以使用rtx.mak在一个makefile中指定Win32可执行文件(.exe),因为rtx.mak包括win32.mak。

Makefile 变量

NODEBUG: Specifies that no debugging information is included in the executable image.

RTSS_CRT: Links RTSS single-threaded applications with the C run-time library.

RTSS_MTCRT: Links RTSS multi-threaded applications with the C run-time library.

VISUALSTUDIO=X

where X = 6 for Visual Studio 6 C Runtime support
7 for Visual Studio .NET C Runtime support
71 for Visual Studio .NET 2003 C Runtime support
8 for Visual Studio 2005 C Runtime support6

Note: RTX no longer registers its lib and include directories with the System, so before building your application, you will need to run RtxSetEnv.bat, located in the RTX bin directory.


使用Makefile来创建动态链接库

以下内容介绍如何生成RTSS DLL和RTDLL。

1. 生成RTSS DLL

可以使用包括所需初始化程序的'main'进入点来生成一个RTSS DLL。需要以下两种文件:

dll.c — 定义了调用库函数的源文件

dll.def — 定义了DLL名称和导出函数

注意进入RTSS DLL的进入点为 MAIN。

RTSS DLL Makefile 例子

The following example shows a typical RTSS DLL makefile for dll.c.


NODEBUG = 1

!include <rtx.mak>

all: dll.rtss

dll.rtss: dll.obj

lib -nodefaultlib -machine:$(CPU) -out:dll.lib -def:dll.def dll.obj

link $(rtsslflags) -out:dll.rtss dll.exp dll.obj $(rtsslibs)

del dll.exp

clean:

-del *.rtss

-del *.obj

-del *.exe

-del dll.lib

2. 生成RTDLL

The following is an example of an nmake input file which will build an RTDLL and Win32 DLL from a single source file, thandler.c.


!include <rtx.mak>

all: thandler.dll thankler.rtdll

clean:

-del thandler.obj thandler.dll thandler.rtdll

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值