改变NI Linux实时终端上的DMA FIFO内存分配



主要软件: Driver Software>>NI-RIO
主要软件版本: 13.0
主要软件修正版本: N/A
次要软件: N/A

问题: 我正在使用NI Linux实时(RT)终端,例如cRIO-9068, myRIO-1900或者myRIO-1950,我希望改变分配给DMA FIFO的内存大小。我这样做的原因是,有时候需要为一个或者更多的DMA FIFO分配更多的内存,或者有时候是想释放一些内存用于别的目的。

在第一种情况下,我尝试着去增加NI Linux终端上的DMA FIFO的深度,当我在实时VI中调用 FIFO.Configure 方法时,我得到一个错误:

Error -63003 occurred at Invoke Method: FIFO.Configure in RT.vi

Possible reason(s):

NI-RIO:  (Hex 0xFFFF09E5)
The NI-RIO driver was unable to allocate memory for a FIFO. This can happen when the combined depth of all DMA FIFOs exceeds the maximum depth for the controller, or when the controller runs out of system memory. You may be able to reconfigure the controller with a greater maximum FIFO depth. For more information, refer to the NI KnowledgeBase article 65OF2ERQ.


我需要一个更大的DMA FIFO深度用于我的应用程序,我怎样可以完成这个操作呢?

对应地,在运行我的应用程序时,我想要找到一种方法来增加控制器的可用内存总量。我没有使用DMA FIFO,或者只是很小程度地使用DMA FIFO,我怎样才能增加可用内存呢?

解答: 在NI Linux实时终端上,操作系统为DMA FIFOs保留内存。默认地,这个值是64 MiB,意味着DMA FIFO只能使用64 MiB大小的内存。这一块内存不能被终端内其他进程占用。 如果你尝试申请比预留的内存更大的内存,就会报错 -63003

如果你需要更多的DMA FIFO 内存或者你需要减小DMA FIFO的量来腾出更多的内存空间,你可以改变nirt.ini文件中RTLINUXMEMRESERVE 部分的 ini token NiRio 值。

重要提示: 不要让这个值太大或者太小。最小值建议设置为 NiRio=8。不要设置为0,否则您的控制器会发生不可预见的行为。你可以设置的最大值为你控制器安装完软件后并且没有VI运行时的 Free Physical Memory 值的一半。你可以在Measurement & Automation Explorer (MAX)中找到这个值。

 通过下列的方法找到 ini token NiRio值:
  1. 使用 WebDAV, FTP, 或者SFTP连接到你的终端。
  2. 在终端上,定位到 /etc/natinst/share/ ,拷贝ni-rt.ini 到你的电脑。
  3. 使用你电脑上你常用的文本编辑器打开 ni-rt.ini。
  4. 定位到[RTLINUXMEMRESERVE] 字段,找到行 NiRio=64.
  5. 将64改成你希望的MiB的整数倍,不低于8,不高于空闲物理内存的一半。
  6. 保存和关闭ni-rt.ini 文件,将之更新到您的终端里,代替原来的文件。
如果您想知道整个过程,,可以联系NI技术支持 ni.com/support.

相关链接: KnowledgeBase 2CJ7JKKN: How Can I Monitor CPU and Memory Usage on Real-Time Embedded Targets?
KnowledgeBase 69EEMIR4: Using WebDAV to Transfer Files to your RT Target
KnowledgeBase 6AGDT2PK: How Do I Use FTP with My Real-Time Linux Target?

附件:

 






报告日期: 01/25/2013
最近更新: 03/02/2014
文档编号: 65OF2ERQ