一、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安裝畫面將出現(xiàn),對于一切選項使用默認值,也可以自行指定CodeTEST的安裝路徑;景惭b完成后,在<installation_directory>目錄下將創(chuàng)建下面一些目錄和文件:
<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、設置環(huán)境變量
根據(jù)shell的類型,選擇使用AMC CodeTEST 環(huán)境設置腳本codetest_setup.csh或codetest_setup.sh,修改相應的環(huán)境變量AMC__HOME、AMC_TARGET、PATH。設置了這些環(huán)境變量后要生效設置,需要在命令行窗口運行:
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 可執(zhí)行文件的路徑*/
export PATH
第二張光盤"CodeTEST for Vxworks 5.x Version 3.5.0"主要是針對VxWorks目標操作系統(tǒng)的。而且運行這張光盤上的./linux/installvxworkslinux.bin將導致系統(tǒng)問題,所以第二張盤不必安裝。
二、CodeTEST 3.5.0 on Redhat linux 7.2用戶圖形界面的獲得
根據(jù)目前情況,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 主機環(huán)境的安裝及相應GUI的提供。這些過程只需在安裝時進行一次,在以后的使用中將不需要再做。
三、構造libctHwic庫
需要構造libctHwic庫,并在打點編譯目標代碼的時候將其鏈接進去。用于構造libctHwic庫的源程序存放在<installation_dir>/lib/rtos/linux目錄下。
其中ctprintf.c提供CodeTest AMCPrintf支持;ctlinuxwrap.c提供C標準庫內存函數(shù)的封裝。ctPciAdapterLib.c和ctPciAdapterDrvr.c文件提供PCI支持。
CodeTEST對于RTOS Linux只支持PCI連接方式。因為Linux采用虛擬內存管理,所以在用戶程序中是不能直接往物理端口寫數(shù)據(jù),采用PCI卡后,這個問題可以解決了。PCI卡的驅動程序可以完成用戶應用程序邏輯地址和系統(tǒng)物理地址的轉換,所以在用戶程序中可以往PCI卡的邏輯地址寫,由驅動程序完成邏輯地址和物理地址的轉換。
有些比較特殊的用戶,受其硬件限制,不能使用CodeTEST PCI,需要我們根據(jù)PCI原理,自己編寫代碼,完成相應功能。
通過分析AMC的源程序,我們編寫了ctlib.c,該程序ct_init() 的功能是把物理地址轉換成邏輯地址,然后將該邏輯地址賦給amc_ctrl_port_ptr、amc_ctrl_port_ptr,這樣完成了替代PCI卡的工作。
在不能使用PCI的用戶環(huán)境下,我們可以使用ctprintf.c、 ctlinuxwrap.c、ctlib.c構造庫文件,完成除任務性能監(jiān)視以外的所有l(wèi)ibctHwic庫的功能。通常使用RTOS Linux的用戶對于任務性能并不關注,這個libctHwic庫文件的功能基本能夠滿足使用要求。對于任務性能的支持需要添加補丁程序修改Linux kernel 代碼,添加任務鉤子。