PLX_SDK中的一些工具的介绍和分析-----1

  前面介绍了如何安装PLX_SDK,以及编译API函数库和9054驱动的具体方法和步骤。可以注意到上次我们编译9054驱动的时候使用到了一个builddriver工具进行编译的。

         类似的,PLX_SDK提供了一些已经测试完善的工具用来编译,调试驱动,用户程序。下面就简要的介绍下。

        打开 PlxSdk\Bin,可以分析有如下几个工具:

       1:Plx_load 

               Plx_load是一个自动化加载驱动的工具,Linux下我们是通过insmod命令来挂载驱动的,而insmod只是简单的挂载驱动,并不判断驱动是否匹配当前系统的设置。

                使用写字板打开发现Plx_load其实是一个shell脚本,先分析如下,为了方便,就直接在源代码上注释了。

 
  1. #---------------------------------------------------------------------------

  2. #

  3. # File : Plx_load

  4. # Abstract : Loads a PLX module

  5. #

  6. #-----------------------------------------------------------------------------

  7.  
  8.  
  9. clear

  10. #清屏,by hero

  11. # Remove comment to display script commands as it runs

  12. #set -x

  13. #开启shell调试,会详细的显示每个命令的执行步骤

  14. #=============================================================================

  15. # Modify the "export" statement below to set 'PLX_SDK_DIR' to the location

  16. # of the PLX Linux installation path. Some examples are:

  17. #

  18. # export PLX_SDK_DIR=/usr/src/PlxSdk

  19. # export PLX_SDK_DIR=/$HOME/PlxSdk

  20. #=============================================================================

  21. if [ "${PLX_SDK_DIR}1" == "1" ]; then

  22. # Add PLX_SDK_DIR to environment variables

  23. export PLX_SDK_DIR=/usr/src/PlxSdk

  24. #检测PLX_SDK_DIR环境变量是否存在,如果不存在,则导出为默认的配置/usr/src/PlxSdk。

  25. #PLX_SDK_DIR为安装PLX_SDK的时候就必须设置的环境变量,必须设置,否则默认的配置会出错,除非PLX_SDK恰好安装在/usr/src目录下。

  26. echo

  27. echo " Note:"

  28. echo

  29. echo " The required environment variable, PLX_SDK_DIR, is not defined"

  30. echo " in the environment. The default value (\"$PLX_SDK_DIR\")"

  31. echo " will be used instead. Please update your environment to override"

  32. echo " the default, or modify this script accordingly. To set an"

  33. echo " environment variable, use the \"declare\" command as follows:"

  34. echo

  35. echo " export PLX_SDK_DIR=<root of PLX Linux installation>"

  36. echo

  37. else

  38. # Make sure that PLX_SDK_DIR is in the environment, not just a shell variable

  39. export PLX_SDK_DIR=${PLX_SDK_DIR}

  40. fi

  41.  
  42.  
  43. # Path to the driver nodes

  44. path=/dev/plx

  45.  
  46. # Default to non-service driver

  47. bServiceDriver=0

  48.  
  49.  
  50. # Verify command-line

  51. if [ "$1" = "" ]; then

  52. plx_error=1

  53. #判断用户键入的第一个参数,#./builddriver 9054 d,$1=9054,$2=d

  54. #如果为空,则设置plx_error=1,退出

  55. else

  56. plx_error=1

  57.  
  58. if [ "$1" = "9050" ]; then

  59. plx_error=0

  60. fi

  61.  
  62. if [ "$1" = "9030" ]; then

  63. plx_error=0

  64. fi

  65.  
  66. if [ "$1" = "9080" ]; then

  67. plx_error=0

  68. fi

  69.  
  70. if [ "$1" = "9054" ]; then

  71. plx_error=0

  72. fi

  73.  
  74. if [ "$1" = "9056" ]; then

  75. plx_error=0

  76. fi

  77.  
  78. if [ "$1" = "9656" ]; then

  79. plx_error=0

  80. fi

  81.  
  82. if [ "$1" = "8311" ]; then

  83. plx_error=0

  84. fi

  85.  
  86. if [ "$1" = "6000" ]; then

  87. plx_error=0

  88. fi

  89.  
  90. if [ "$1" = "8000" ]; then

  91. plx_error=0

  92. fi

  93.  
  94. if [ "$1" = "Dma" ]; then

  95. plx_error=0

  96. fi

  97.  
  98. if [ "$1" = "EoPCIe" ]; then

  99. plx_error=0

  100. fi

  101.  
  102. if [ "$1" = "Svc" ]; then

  103. plx_error=0

  104. bServiceDriver=1

  105. #检测第一个参数是否是支持的芯片类型号,如果是则清空plx_error,

  106. fi

  107. fi

  108.  
  109. if [ "${plx_error}" == "1" ]; then

  110. #判断plx_error是否为1,如果是则打印出builddriver的用法,然后退出

  111. echo

  112. echo "PLX Linux module load script"

  113. echo

  114. echo " Usage: Plx_load {PLX_Chip} [DebugOption]"

  115. echo

  116. echo " PLX_Chip = 6000 : PLX 6254/6540/6466 NT-mode PnP driver"

  117. echo " 8000 : PLX 8000 NT-mode PnP driver"

  118. echo " 9050 : PLX 9050/9052 PnP driver"

  119. echo " 9030 : PLX 9030 PnP driver"

  120. echo " 9080 : PLX 9080 PnP driver"

  121. echo " 9054 : PLX 9054 PnP driver"

  122. echo " 9056 : PLX 9056 PnP driver"

  123. echo " 9656 : PLX 9656 PnP driver"

  124. echo " 8311 : PLX 8311 PnP driver"

  125. echo " Dma : PLX 8600 DMA Controller PnP driver"

  126. echo " Svc : PLX PCI/PCIe Service driver"

  127. echo

  128. echo " DebugOption = <none> : Load Release build of module"

  129. echo " 'd' : Load Debug build of module"

  130. echo

  131. echo " E.g.: Plx_load 9054 d - Load 9054 module debug version"

  132. echo " Plx_load 8000 - Load 8000 NT module release version"

  133. echo

  134. exit

  135. fi

  136.  
  137.  
  138. # PLX Chip to load module for

  139. plx_chip=$1

  140. #存储芯片类型号,$1=9054,

  141. # Check for debug version

  142. if [ "$2" != "" ]; then

  143. #检查第二个参数,如果不为空,则设置debug,表示加载的驱动为调试版的驱动

  144. debug=_dbg

  145. fi

  146.  
  147. # Registered name of driver

  148. name=Plx${plx_chip}

  149.  
  150. # Name of module to load

  151. module=${name}${debug}.ko

  152. #$name=Plx\9054,$debug=_dbg,module=Plx\9054_dbg.ko

  153. # Install the module

  154. echo

  155. echo " *****************************************************************"

  156. echo " * NOTES: *"

  157. echo " * *"

  158. echo " * You must be superuser, logged in as root, or have sufficient *"

  159. echo " * rights to install modules or this script will not work. *"

  160. echo " * *"

  161. echo " * A warning regarding 'kernel tainting' is normal. This is *"

  162. echo " * because the PLX driver is marked with a 'Proprietary' *"

  163. echo " * license tag, not GPL. For more information, please refer *"

  164. echo " * to: *"

  165. echo " * http://www.tux.org/lkml/#export-tainted *"

  166. echo " *****************************************************************"

  167. echo

  168.  
  169. echo "Installing module ($module)...."

  170. /sbin/insmod $PLX_SDK_DIR/Linux/Driver/${name}/${module}

  171. echo

  172. #调用/sbin/下的insmod命令加载驱动

  173. # Get the major number

  174. echo -n "Getting Module major number..... "

  175. major=`cat /proc/devices | awk "\\$2==\"$name\" {print \\$1}"`

  176.  
  177. #获取主设备号

  178. # Check if valid

  179. if [ "$major" = "" ]; then

  180. #检测major是否为空,如果为空,则表示没获取成功,退出

  181. echo "ERROR: Module not loaded or no device found"

  182. echo

  183. exit

  184. fi

  185.  
  186. # Display Major ID

  187. echo "Ok (MajorID = $major)"

  188.  
  189. # Create the device node path

  190. echo -n "Creating device node path....... "

  191. if [ -d ${path} ]; then

  192. echo "$path already exists"

  193. else

  194. mkdir $path

  195. chmod 0777 $path

  196. echo "Ok ($path)"

  197. fi

  198.  
  199. # Create the device nodes (up to 10 by default)

  200. echo -n "Creating device nodes........... "

  201. rm -f ${path}/${name}*

  202. mknod ${path}/${name} c $major 255

  203. #$path=/dev/plx,$name=Plx/9054,删除原有的设备文件,设备节点

  204. # Create additional nodes for non-service driver

  205. if [ "${bServiceDriver}" == "0" ]; then

  206. mknod ${path}/${name}-0 c $major 0

  207. mknod ${path}/${name}-1 c $major 1

  208. mknod ${path}/${name}-2 c $major 2

  209. mknod ${path}/${name}-3 c $major 3

  210. mknod ${path}/${name}-4 c $major 4

  211. mknod ${path}/${name}-5 c $major 5

  212. mknod ${path}/${name}-6 c $major 6

  213. mknod ${path}/${name}-7 c $major 7

  214. mknod ${path}/${name}-8 c $major 8

  215. mknod ${path}/${name}-9 c $major 9

  216. mknod ${path}/${name}-10 c $major 10

  217. mknod ${path}/${name}-11 c $major 11

  218. mknod ${path}/${name}-12 c $major 12

  219. mknod ${path}/${name}-13 c $major 13

  220. mknod ${path}/${name}-14 c $major 14

  221. mknod ${path}/${name}-15 c $major 15

  222. mknod ${path}/${name}-16 c $major 16

  223. #创建新的设备节点,自动创建十六个

  224. fi

  225.  
  226. chmod 777 $path/*

  227. #更改创建的设备节点的读写权限,修改为777

  228. echo "Ok ($path/$name)"

  229.  
  230. echo

  231. echo Module load complete.

  232. echo

  233. echo


 

    今天时间有限,就先写这么多了哈,后面的有时间继续写吧。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PLX_SDK烧写EEPROM是指使用PLX_SDK软件开发工具包来实现对EEPROM芯片进行编程的过程。EEPROM是一种可擦写、可编程的非易失性存储器,常用于存储系统配置信息或者用户数据。 首先,我们需要在PLX_SDK开发环境引入EEPROM编程所需的相关库文件。这些库文件包含EEPROM编程所需的函数和工具。 接下来,我们需要打开与EEPROM连接的硬件设备。这可以通过在PLX_SDK使用相应的函数来实现。我们需要提供连接EEPROM的接口信息,比如SPI接口、I2C接口或者其他支持的接口类型。 一旦连接成功,我们就可以使用PLX_SDK提供的函数来读取或编写EEPROM的数据。对于写操作,我们首先需要选择要写入字节的地址。然后,我们可以使用编程函数将数据写入EEPROM。根据EEPROM的特性,写入操作可能需要提供写入延时或者擦除操作。 当然,在进行任何写操作之前,我们应该首先确认我们要写入的数据是否符合EEPROM的规格和要求。另外,我们需要小心保护EEPROM的重要数据,并避免不必要的写操作。 最后,我们可以通过使用PLX_SDK的读取函数来验证我们所写入的数据是否正确。通过读取EEPROM的相应地址,我们可以比较读取的数据与我们之前写入的数据,以确保数据的一致性和完整性。 总结起来,PLX_SDK烧写EEPROM的过程涉及到环境搭建、连接设备、选择地址、写入数据并验证的步骤。通过PLX_SDK提供的函数和工具,我们可以方便地进行EEPROM编程,并实现对EEPROM的烧写操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值