NI does not actively maintain this document.
This content provides support for older products and technology, so you may notice outdated links or obsolete information about operating systems or other relevant products.
The MHDDK is a collection of example code, hardware documentation, and C++ classes called Chip Objects, which correspond to the chips on a device and expose all the functionality of the hardware. It has the advantage of abstracting the functionality of the hardware from the complicated mechanics of RLP. This abstraction greatly simplifies the task of developing in different operating systems. A more thorough description of the MHDDK can be found in Measurement Hardware Driver Development Kit (MHDDK) Architecture. You can also find more details about using a Chip Object in How to Use a Chip Object.
Prior to the MHDDK, the example code was all in straight C and was written for a DOS-based compiler. This required the programmer to spend a lot of effort accessing each register and left the code open to simple memory and addressing mistakes.
For a variety of device families, NI has register level programming documentation available. These manuals are named either “Register Level Programming Manual” or “Technical Reference Manual”. In many cases, more than one manual is applicable to a device, where common components like the DAQ-STC or DAQ-DIO chips are used on a variety of devices.
RLP manuals contain descriptions of the individual devices and components on the devices. The descriptions include detailed information on the individual registers and bitfields on the device as well as information on programming the device for different operations using the registers. Information on initializing the device as well other general programming topics, such as RTSI, interrupts, DMA, is included. The completeness of the RLP documentation may vary some between the different product families. If you need additional information on a particular device contact your field engineer to discuss the possibility of extended support options.
For some hardware families, manuals have not been formally released and are therefore considered to be in beta status. These beta manuals are not available through the product page and need to be requested through your field engineer.
The MDDDK is not supported through Applications Engineering. For information about the support policy for MHDDK refer to Measurement Hardware Driver Development Kit (MHDDK) Technical Support.
The MHDDK supports several operating systems:
The MHDDK makes use of C++ classes called Chip Objects to abstract hardware functionality from hardware access. The Chip Objects in turn use an iBus class to handle interaction with the operating system and the details of hardware access. The iBus class is designed to be easily ported to another operating system and the procedure is described in How to Make an iBus.
Compiling the examples in the MHDDK will vary a bit depending on the compiler that you are using and your host platform. In general, you will want to make a project and add the example code (eg aiex1.cpp), the Chip Objects for your hardware, and the iBus for your platform.
For an X Series device, you would use:
In order to register a driver for a device with the operating system, you will need the Product ID and Vendor ID for your device. The Vendor ID for any NI PCI/PXI device is 0x1093, and, for most devices, the Product ID will identify the specific device model. However, all X Series devices have the Product ID 0xC4C4, so you will need to use the Subsystem Product ID to differentiate between X Series models. Finding the IDs will be operating system specific.
Windows:
Linux:
RLP examples and documentation are available for the following NI hardware families. Some of this information may require a nondisclosure agreement (NDA) to be signed before distribution. If you require information for other products, contact your field engineer.
MHDDK Device Support | PCI | PCIe | PXI | PXIe |
---|---|---|---|---|
X Series | N/A | 6320, 6321, 6323, 6341, 6351, 6353, 6361, 6363 | N/A | 6323, 6341, 6343, 6356, 6358, 6361, 6363, 6366, 6368 |
M Series* | 6220, 6221, 6224, 6225, 6229, 6230, 6232, 6233, 6236, 6238, 6239, 6250, 6251, 6254, 6259, 6280, 6281, 6284, 6289 | N/A | 6220, 6221, 6224, 6225, 6229, 6230, 6232, 6233, 6236, 6238, 6239, 6250, 6251, 6254, 6259, 6280, 6281, 6284, 6289 | N/A |
S Series | 6110, 6111, 6143** | N/A | N/A | N/A |
E Series | End of Life | N/A | End of Life | N/A |
DIO | 6503**, 6509, 6510, 6511, 6512, 6513, 6514, 6515, 6516, 6517, 6518, 6519, 6520, 6521, 6528, 6533 | 6509 | 6508**, 6509, 6511, 6512, 6513, 6514, 6515, 6521, 6528, 6533 | |
TIO | 6601, 6602 | 6602, 6608 | ||
AO | 6704**, 6711, 6713, 6731, 6733 | N/A | 6704**, 6711, 6713, 6731, 6733 | N/A |
Other*** |
NOTE: If you do not see your device listed there is no documentation available at this time. You may contact your NI account manager or post on the Measurement Hardware Driver Development Kit (MHDDK) Technical Support forum to inquire.
*Not a complete RLP manual, also no support for PCIe and PXIe variants
**NI device has limited support and no official register maps, just examples, chip objects, and a make file.
***USB devices, due to differences in bus architecture, are significantly different and have very limited/incomplete support in many cases. For those devices please contact NI and your situation can be evaluated in more depth.
MHDDK Device Support | PCI | PCIe | PXI | PXIe |
---|---|---|---|---|
X Series | N/A | 6320, 6321, 6323, 6341, 6351, 6353, 6361, 6363 | N/A | 6323, 6341, 6343, 6356, 6358, 6361, 6363, 6366, 6368 |
M Series* | 6220, 6221, 6224, 6225, 6229, 6230, 6232, 6233, 6236, 6238, 6239, 6250, 6251, 6254, 6259, 6280, 6281, 6284, 6289 | N/A | 6220, 6221, 6224, 6225, 6229, 6230, 6232, 6233, 6236, 6238, 6239, 6250, 6251, 6254, 6259, 6280, 6281, 6284, 6289 | N/A |
S Series | 6110, 6111, 6143** | N/A | N/A | N/A |
E Series | End of Life | N/A | End of Life | N/A |
DIO | 6503**, 6509, 6510, 6511, 6512, 6513, 6514, 6515, 6516, 6517, 6518, 6519, 6520, 6521, 6528, 6533 | 6509 | 6508**, 6509, 6511, 6512, 6513, 6514, 6515, 6521, 6528, 6533 | |
TIO | 6601, 6602 | 6602, 6608 | ||
AO | 6704**, 6711, 6713, 6731, 6733 | N/A | 6704**, 6711, 6713, 6731, 6733 | N/A |
Other*** |