• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    單元測試-codetest在linux下的應用

    發布: 2008-6-11 09:58 | 作者: 網絡轉載 | 來源: 網絡轉載 | 查看: 151次 | 進入軟件測試論壇討論

    領測軟件測試網 一、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的安裝路徑;景惭b完成后,在<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 代碼,添加任務鉤子。

    舉例ct_init():

    #define CFG_IMMR 0xff000000
    #define CODETEST_PHY_ADDR 0x70000000
    #define CODETEST_ATTRIB_VAL 0xfff009f0
    int ct_init(void)
    {
    extern int fd;
    extern int *ip;

    immap_t *immap;
    size_t size,pgsize;

    fd = open ("/dev/mem", O_RDWR);
    pgsize = getpagesize();
    size = ((sizeof(immap_t)/pgsize)+1)*pgsize;

    ip = (int *) mmap (0, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, CFG_IMMR);
    immap = (immap_t *)ip;
    immap -> im_memctl.memc_or2 = CODETEST_ATTRIB_VAL;
    immap -> im_memctl.memc_br2 = CODETEST_PHY_ADDR + 0x001;
    munmap (ip, size);

    ip = (int *)mmap (0, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, CODETEST_PHY_ADDR);
    amc_ctrl_port_ptr = ip;
    amc_data_port_ptr = (ip + 1);

    return 0;

    }

    初始化程序ct_init()完成了物理地址到邏輯地址的映射,對于不同的用戶環境需要對片選、映射地址進行相應修改。

    四、源代碼打點編譯

    目標環境:嵌入式linux (kernel 2.2.14)

    1、修改instrconfig文件

    libctHwic庫中的初始化程序ctlib.c完成了物理地址到邏輯地址的映射,這個邏輯地址被賦給amc_ctrl_port_ptr、amc_ctrl_port_ptr,使Probe可以正確接收數據。

    這個邏輯地址的值同樣需要被用戶程序知道,我們的初始化程序ctlib.c必須先于用戶的主程序運行。而在RTOS Linux中不同的用戶程序無法實現變量的共用,所以我們采用了軟件打點的方法來決這個問題。

    存放在<installation_dir>/instrconfig目錄下的打點配置文件為隱藏文件,為了對其進行相應修改,需要讓系統顯示所有文件。

    根據環境變量AMC_TARGET的值,選擇同名文件進行修改。修改的內容主要包括:

    為CodeTEST確定當前環境使用的編譯器類型,即令:

    AMC_CC=ppc_8xx-gcc
    AMC_CXX=ppc_8xx-gcc
    在AMC_TAGDEFAULTS中增加-tags-to-ctTag選項,-tags-to-ctTag選項令CodeTEST采用軟件方式打點。注釋去
    #AMC_TAGDEFAULTS=-gnu -no-placement-delete \
    # -allocator-call-map=$AMC_HOME\lib\rtos\vxworks\ctvxwrap.map

    AMC_TAGDEFAULTS=-gnu \
    -no-placement-delete \
    -tags-to-ctTag \
    -allocator-call-map=$AMC_HOME\lib\rtos\linux\ctlinuxwrap.map

    舉例打點函數:

    int ctTag( unsigned long tagID )
    {
    if ( amc_ctrl_port == NULL )
    ct_init();

    *amc_ctrl_port = tagID;
    return( tagID );

    }
    int ctDataTag( unsigned long tagID )
    {
    if ( amc_data_port == NULL )
    ct_init();

    *amc_data_port = tagID;
    return( tagID );

    }

    接下來需要對編譯目標源代碼的makefile文件進行修改,

    1、 確定CodeTEST打點編譯選項

    注釋去CC = ppc_8xx-gcc

    令CC = ctcc -CTv –Ctkeep \

    –CTtag-allocator=$AMC_HOME\lib\rtos\linux\ctlinuxwrap.map

    其中-CTv選項提供版本號信息,–CTkeep選項將保留中間過程文件,通過*.i和*._i可察看源程序中的打點情況。

    2、在編譯需要鏈接的*.o文件,增加libctHwic.a,即令

    mginit_OBJECTS = mginit.o \

    libctHwic.a libctmem.a

    3、令CodeTEST采用軟件方式打點,注釋去

    #CFLAGS = -g -O2 -Wall -fomit-frame-pointer -fno-strength-reduce -g -O2 –pipe,令



    CFLAGS = -g -O2 -Wall -fomit-frame-pointer -fno-strength-reduce -g -O2 –pipe -DTAG_DEST=1

    保存修改好的makefile文件。

    使用上述的makefile文件,對待測代碼進行打點編譯。打點編譯完成后將在當前編譯目錄增加codetest.idb 和mginit.exe文件。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: CodeTest linux Linux 單元 codetest CodeTEST


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>