一、CodeTEST的安装——on Redhat linux 7.2
我们参照CodeTEST 手册(getting-started-vxworks)Installing CodeTEST for Linux部分,进行CodeTEST的安装工作,但是没有成功。
通过多次摸索,我们完成了CodeTEST在Linux主机上安装。过程如下:
首先使用第一张光盘"Codetest version 3.5.0 winNT/2000, Solaris, Linux"
1、在X-terminal命令行窗口完成codetest.tar.Z包的解压缩:
cd <installation_directory>
zcat /<cdrom>/linux/codetest.tar.Z | tar xBpf -
2、然后运行光盘上的install.amc进行安装
/<cdrom>/linux/install.amc
CodeTEST安装画面将出现,对于一切选项使用默认值,也可以自行指定CodeTEST的安装路径。基本包安装完成后,在<installation_directory>目录下将创建下面一些目录和文件:
<installation_dir>/AcrobatReader
<installation_dir>/bin
<installation_dir>/lib
<installation_dir>/flexlm
<installation_dir>/hardware
<installation_dir>/help
<installation_dir>/instrconfig
<installation_dir>/JRE
<installation_dir>/codetest_setup.csh
<installation_dir>/codetest_setup.sh
3、设置环境变量
根据shell的类型,选择使用AMC CodeTEST 环境设置脚本codetest_setup.csh或codetest_setup.sh,修改相应的环境变量AMC__HOME、AMC_TARGET、PATH。设置了这些环境变量后要生效设置,需要在命令行窗口运行:
source $AMC_HOME/codetest_setup.csh或
. <installation_dir>/codetest_setup.sh
codetest_setup.sh内容示例:
AMC_HOME="/root/CodeTEST" /* CodeTEST 安装路径*/
export AMC_HOME
AMC_TARGET="gnu-x86-linux-native" /*为CodeTEST 正确指定打点文件*/
export AMC_TARGET
PATH="/root/CodeTEST/bin:$PATH" /*指定CodeTEST 可执行文件的路径*/
export PATH
第二张光盘"CodeTEST for Vxworks 5.x Version 3.5.0"主要是针对VxWorks目标操作系统的。而且运行这张光盘上的./linux/installvxworkslinux.bin将导致系统问题,所以第二张盘不必安装。
二、CodeTEST 3.5.0 on Redhat linux 7.2用户图形界面的获得
根据目前情况,CodeTEST 3.5.0对于Linux Redhat 6.2完全支持,但对于Linux Redhat 7.2只支持源代码打点编译,无法提供用户图形界面。
需要在另一台win2000主机上安装CodeTEST 3.5.0,以获得图形界面。在Linux Redhat 7.2主机上完成libctHwic.a文件的构造、源代码的打点,将打点生成的codetest.idb文件和源文件COPY到win2000主机上。并在配置Manager时,正确设置路径指向这些文件。
至此已基本完成CodeTEST在Linux 主机环境的安装及相应GUI的提供。这些过程只需在安装时进行一次,在以后的使用中将不需要再做。
三、构造libctHwic库
需要构造libctHwic库,并在打点编译目标代码的时候将其链接进去。用于构造libctHwic库的源程序存放在<installation_dir>/lib/rtos/linux目录下。
其中ctprintf.c提供CodeTest AMCPrintf支持;ctlinuxwrap.c提供C标准库内存函数的封装。ctPciAdapterLib.c和ctPciAdapterDrvr.c文件提供PCI支持。
CodeTEST对于RTOS Linux只支持PCI连接方式。因为Linux采用虚拟内存管理,所以在用户程序中是不能直接往物理端口写数据,采用PCI卡后,这个问题可以解决了。PCI卡的驱动程序可以完成用户应用程序逻辑地址和系统物理地址的转换,所以在用户程序中可以往PCI卡的逻辑地址写,由驱动程序完成逻辑地址和物理地址的转换。
有些比较特殊的用户,受其硬件限制,不能使用CodeTEST PCI,需要我们根据PCI原理,自己编写代码,完成相应功能。
通过分析AMC的源程序,我们编写了ctlib.c,该程序ct_init() 的功能是把物理地址转换成逻辑地址,然后将该逻辑地址赋给amc_ctrl_port_ptr、amc_ctrl_port_ptr,这样完成了替代PCI卡的工作。
在不能使用PCI的用户环境下,我们可以使用ctprintf.c、 ctlinuxwrap.c、ctlib.c构造库文件,完成除任务性能监视以外的所有libctHwic库的功能。通常使用RTOS Linux的用户对于任务性能并不关注,这个libctHwic库文件的功能基本能够满足使用要求。对于任务性能的支持需要添加补丁程序修改Linux kernel 代码,添加任务钩子。