现在的位置: 首页 > 综合 > 正文

Tornado2.2-vxworks5.5仿真测试和调试指南

2013年10月07日 ⁄ 综合 ⁄ 共 7103字 ⁄ 字号 评论关闭

 

集成的Vxworks目标仿真器—VxSim,它提供了与真实目标机一致的调试和仿真运行环境,允许开发者可以在没有BSP、操作系统配置以及目标机硬件设备的情况下进行开发和调试。

VxSim对软件开发者的意义,主要是在嵌入式系统开发中软件的开发通常受到硬件开发进度的制约,由于软件开发必须滞后于硬件的开发,影响了产品的研发进度,VxSim在一定程度上解决了这个问题:使得用户可以在工程开发初期,在硬件环境不具备的情况下,可以利用Tornado进行与硬件无关模块的设计。

下面以简单的PC机仿真为目标机,进行简单的开发和调试过程,主要以图代替文本描述,对于初步的入门者也许提供一些帮助。

1、创建一个工程

2、创建一个Bootable VxWorks Image

 

3、选择一个BSP包

4、生成工程

5、生成的工程目录

6、编写一个main.c程序

#include <stdio.h>

 

int WinMain(void)

{

int nCount = 1234;

printf("hello world!\n");

printf("This is a demo program!\n");

}

7、添加main.c程序(点击工程右键即可)

8、添加main.c后的工程

9、在usrAppInit.c做如下修改

/* usrAppInit.c - stub application initialization routine */

/* Copyright 1984-1998 Wind River Systems, Inc. */

/*
modification history
--------------------
01a,02jun98,ms   written
*/

/*
DESCRIPTION
Initialize user application code.
*/ 

/******************************************************************************
*
* usrAppInit - initialize the users application
*/ 

void usrAppInit (void)
    {
#ifdef	USER_APPL_INIT
	USER_APPL_INIT;		/* for backwards compatibility */
#endif
	WinMain();
    /* add application specific code here */
    }

10、依赖性设置(点击工程右键即可)

11、编译全部(点击工程右键即可)

vxrm *.o *.rpo ctdt.c symTbl.c vxWorks* *.out *.pl

vxrm ..\prjComps.h ..\prjParams.h ..\prjConfig.c ..\linkSyms.c

vxrm ..\libs.nm ..\libs.size

wtxtcl C:\Tornado2.2\host\src\hutils\configGen.tcl ..\demo.wpj

ccsimpc -c -g -mpentium -ansi -fno-builtin -fno-defer-pop -I.. -IC:\Tornado2.2\target\conf

ig\simpc -IC:\Tornado2.2\target\h -IC:\Tornado2.2\target\config\comps\src -IC:\Tornado2.2\

target\src\drv -DCPU=SIMNT -DTOOL_FAMILY=gnu -DTOOL=gnu -DPRJ_BUILD   C:\Tornado2.2\target

\config\simpc\sysLib.c -o sysLib.o

ccsimpc -g -mpentium -ansi -fno-builtin -fno-defer-pop -I.. -IC:\Tornado2.2\target\config\

simpc -IC:\Tornado2.2\target\h -IC:\Tornado2.2\target\config\comps\src -IC:\Tornado2.2\tar

get\src\drv -DCPU=SIMNT -DTOOL_FAMILY=gnu -DTOOL=gnu -DPRJ_BUILD  -c ..\usrAppInit.c

ccsimpc -c -g -mpentium -ansi -fno-builtin -fno-defer-pop -I.. -IC:\Tornado2.2\target\conf

ig\simpc -IC:\Tornado2.2\target\h -IC:\Tornado2.2\target\config\comps\src -IC:\Tornado2.2\

target\src\drv -DCPU=SIMNT -DTOOL_FAMILY=gnu -DTOOL=gnu -DPRJ_BUILD   ..\prjConfig.c -o pr

jConfig.o

ccsimpc -c -g -mpentium -ansi -fno-builtin -fno-defer-pop -I.. -IC:\Tornado2.2\target\conf

ig\simpc -IC:\Tornado2.2\target\h -IC:\Tornado2.2\target\config\comps\src -IC:\Tornado2.2\

target\src\drv -DCPU=SIMNT -DTOOL_FAMILY=gnu -DTOOL=gnu -DPRJ_BUILD   ..\linkSyms.c -o lin

kSyms.o

ccsimpc -g -mpentium -ansi -fno-builtin -fno-defer-pop -I.. -IC:\Tornado2.2\target\config\

simpc -IC:\Tornado2.2\target\h -IC:\Tornado2.2\target\config\comps\src -IC:\Tornado2.2\tar

get\src\drv -DCPU=SIMNT -DTOOL_FAMILY=gnu -DTOOL=gnu -DPRJ_BUILD  -c ..\main.c

vxrm ..\prjObjs.lst

Generating ..\prjObjs.lst...

ccsimpc -g -mpentium -ansi -fno-builtin -fno-defer-pop -I.. -IC:\Tornado2.2\target\config\

simpc -IC:\Tornado2.2\target\h -IC:\Tornado2.2\target\config\comps\src -IC:\Tornado2.2\tar

get\src\drv -DCPU=SIMNT -DTOOL_FAMILY=gnu -DTOOL=gnu -DPRJ_BUILD  -c C:\Tornado2.2\target\

config\comps\src\version.c

ccsimpc -r -nostdlib -Wl,@..\prjObjs.lst  \

       version.o -Wl,--start-group  \

       -LC:\Tornado2.2\target\lib\simpc\SIMNT\gnu -LC:\Tornado2.2\target\lib\simpc\SIMNT\common 

C:\Tornado2.2\target\config\simpc\simpcDrv.a    -lcplus  -lgnucplus  -lvxcom  -lvxdcom  -l

arch  -lcommoncc  -ldrv  -lgcc  -lnet  -los  -lrpc  -lwdb  -lwind  -lwindview C:\Tornado2.

2\target\lib\libSIMNTgnuvx.a -Wl,--end-group  -o partialImage.o

nmsimpc -g partialImage.o @..\prjObjs.lst | wtxtcl C:\Tornado2.2\host\src\hutils\munch.tcl

 -c simpc > ctdt.c

ccsimpc -c -fdollars-in-identifiers -g -mpentium -ansi -fno-builtin -fno-defer-pop -I.. -I

C:\Tornado2.2\target\config\simpc -IC:\Tornado2.2\target\h -IC:\Tornado2.2\target\config\c

omps\src -IC:\Tornado2.2\target\src\drv -DCPU=SIMNT -DTOOL_FAMILY=gnu -DTOOL=gnu -DPRJ_BUI

LD  ctdt.c -o ctdt.o

ccsimpc -g -mpentium -ansi -fno-builtin -fno-defer-pop -I.. -IC:\Tornado2.2\target\config\

simpc -IC:\Tornado2.2\target\h -IC:\Tornado2.2\target\config\comps\src -IC:\Tornado2.2\tar

get\src\drv -DCPU=SIMNT -DTOOL_FAMILY=gnu -DTOOL=gnu -DPRJ_BUILD  -c C:\Tornado2.2\target\

config\comps\src\dataSegPad.c

ldsimpc --subsystem=windows -e _WinMainCRTStartup C:\Tornado2.2\host\x86-win32\i386-pc-min

gw32\lib\crt1.o \

       dataSegPad.o partialImage.o ctdt.o \

       -T C:\Tornado2.2\target\h\tool\gnu\ldscripts\link.SIMNT -o vxWorks

wtxtcl C:\Tornado2.2\host\x86-win32\bin\simpcToExe.tcl vxWorks

echo -v   vxWorks

-v vxWorks

 

Done.

 

12、打开VxSim Lauch

13、下载对象文件main.o,这样我们可以调试main.c所有函数了

14、在main.c设置断点第6行

15、运行程序(run),Task以WinMain函数作为起点开始

16、运行程序后,程序指针指向WinMain函数开始处

17、让程序指针运行如图处,我们看看watch窗口和VxSim界面上的内容

a.变量窗口

b.Vxsim内容

18、Shell程序使用

A、Shell帮助

-> help

help                        Print this list

h         [n]               Print (or set) shell history

i         [task]            Summary of tasks' TCBs

ti        task              Complete info on TCB for task

sp        adr,args...       Spawn a task, pri=100, opt=0, stk=20000

sps       adr,args...       Spawn a task, pri=100, opt=0, stk=20000

                            and leave it suspended

td        task              Delete a task

ts        task              Suspend a task

tr        task              Resume a task

tw        task              Print info about the object a task is pending on

w                           Summary of tasks' pending information

d         [adr[,nunits[,width]]] Display memory

m         adr[,width]       Modify memory

mRegs     [reg[,task]]      Modify a task's registers interactively

version                     Print VxWorks version info, and boot line

 

Type <CR> to continue, Q<CR> to stop:

 

b                               Display breakpoints

b         addr[,task[,count]]   Set breakpoint

bd        addr[,task]           Delete breakpoint

bdall     [task]                Delete all breakpoints

c         [task[,addr[,addr1]]] Continue from breakpoint

s         [task[,addr[,addr1]]] Single step

l         [adr[,nInst]]         List disassembled memory

tt        [task]                Do stack trace on task

bh        addr[,access[,task[,count]]] Set hardware breakpoint

             access:     0 - instruction        1 - write 1 byte

                    3 - read/write 1 byte      5 - write 2 bytes

                    7 - read/write 2 bytes     d - write 4 bytes

                    f - read/write 4 bytes

sysSuspend                      Suspend the system

sysResume                       Resume the system

 

Type <CR> to continue, Q<CR> to stop:

 

devs                        List devices

cd        "path"            Set current working path

pwd                         Print working path

ls        ["path"[,long]]   List contents of directory

ld        [syms[,noAbort][,"name"]] Load stdin, or file, into memory

                                    (syms = add symbols to table:

                                    -1 = none, 0 = globals, 1 = all)

lkup      ["substr"]        List symbols in system symbol table

lkAddr    address           List symbol table entries near address

printErrno  value           Print the name of a status value

period    secs,adr,args...  Spawn task to call function periodically

repeat    n,adr,args...     Spawn task to call function n times (0=forever)

 

NOTE:  Arguments specifying 'task' can be either task ID or name.

value = 0 = 0x0

->

B、查看目录

-> ls

 驱动器 C 中的卷没有标签。

 卷的序列号是 782B-C07C

 

 C:\vxworks_demo 的目录

 

[.]            [..]           [default]      demo.wpj       demo.wsp

linkSyms.c     main.c         Makefile       prjComps.h     prjConfig.c

prjObjs.lst    prjParams.h    usrAppInit.c  

              10 个文件         52,850 字节

               3 个目录 34,592,718,848 可用字节

value = 0 = 0x0

->

 

C、执行函数WinMain

-> WinMain

hello world!

This is a demo program!

value = 24 = 0x18 = __major_os_version__ + 0x14

->

 

抱歉!评论已关闭.