VxWork BSP 和启动过程
开发BSP主要的两点:系统image的生成,image的种类,image的download下载过程,系统的启动顺序和过程,调试环境的配置及远端调试的方式和方法,相应BSP设置文件的修改(网络,串口..),BSP各文件的组成和作用.
要对系统底层驱动清楚,也就是对CPU及相关的硬件有所了解.主要是32微处理器(上电启动过程, download image的方式方法,读写ROM,地址空间分配,MMU,寄存器,中断定义,..).参照硬件资料,多读一些源码会有所帮助.
Tornado 2 开发调试环境协议框图
主机开发(Host Development System)
目标机(Target System)
Tornado 工具
WTX协议通信<==========>
Editor
Project
Shell
Debugger
Browser
Windview
Target Server
|
Target Agent
VxWorks Target Simulator
WDB协议通信
<==========>
Application
VxWorks OS
VxWorks Target (WDB)Agent
两个主要两个协议
WTX协议(Wind River Tool eXchange): 用于开发机内部Tornado工具与Target Server之间通信.
WDB协议(Wind DeBug): 用于主机Target Server与目标机之间的通信.
一.基本概念
BSP定义:
Provides VxWorks with primary interface to hardware environment.
作用:
在通电后,初始化硬件.
支持VxWorks和硬件驱动通信.
使hardware-dependent 和 hardware-independent在VxWorks系统中很好的结合.
主要BSP主要文件目录的组成及主要文件的作用:
目录target/config/All:
这个目录下的文件是所有BSP文件共享的,不是特别需要不要更改里面的任何文件.
configAll.h:
缺省定义了所有VxWorks的设置.如果不用缺省的设置,可在BSP目录下的config.h文件中用#define或#undef方式来更改设置.
bootInit.c:
在romInit.s后,完成Boot ROM的第二步初始化.程序从romInit.s中的romInit()跳到这个文件中的romStart().来执行必要的解压和ROM image的放置.
bootConfig.c: 完成Boot ROM image的初始化和控制.
usrConfig.c: VxWorks image的初始化代码.
目录target/config/comps/src:
涉及系统核心的components,主要由target/config/All中usrConfig.c中函数调用
目录target/config/bspname:
包含系统或硬件相关的BSP文件.
Makefile
一些命令行控制images的生成
README
BSP发布纪录,版本,总的文档
config.h
包括所有涉及CPU主板的设置及定义(includes,definations)
configNet.h
网络驱动的主要设置文件,主要对END驱动设置.
romInit.s
汇编语言文件,是VxWorks Boot ROM和ROM based image的入口
sysALib.s
汇编语言文件,程序员可以把自己的汇编函数放在这个文件里,在上层调用.VxWorks image的入口点_sysInit在这个文件里,是在RAM中执行的第一个函数.
sysLib.c
包含一些系统相关的函数例程,提供了一个board-level的接口,VxWorks和应用程序可以以system-indepent的方式生成.这个文件还能包含目录target/config/comps/src的驱动.
sysScsi.c
可选文件用于Scsi设备设置和初始化.
sysSerial.c
可选文件用于所有的串口设置和初始化.
bootrom.hex
ASIC文件包含VxWorks Boot ROM代码
VxWorks
运行在目标机上,完整的,连结后的VxWorks二进制文件.
VxWorks.sym
完全的,连结后带有符号表的VxWorks二进制文件
VxWorks.st
完全的,连结后,standalone,带有符号表的VxWorks二进制文件
BSP用"make"来编译连接生成(Created),而不是用Tornado的工具.
BSP和应用程序都可以在"make"或"tornade"上开发(developed)
BSP被设置包括以下驱动:
中断控制interrupt controller,计时器timer(sys/aux),串口UART(serial),显示屏LCD,键盘Keyboard(opt),触摸屏touch-screen(opt).
前面三个是BSP的主要部分.
BSP默认的download VxWorks RAM image方式是从ethernet.
串口电缆需要用来和开发板(COM1)通信,通过协议WDB.
VxWorks Image的种类:
Loadable images.
ROM-based images---compressed/uncompressed.
ROM-Resident images.
VxWorks boot images---A VxWorks image designed to load another VxWorks images containing application code (often refer to as "boot code")
"Burned" into ROM or loaded into Flash.
Maybe execute in ROM/Flash (ROM-resident).
Maybe execute out of RAM.
VxWorks images---A VxWorks image containing "end-user" code,Sub-types:
Loadable VxWorks image--VxWorks images loaded by VxWorks boot image.
VxWorks ROM image--VxWorks image "burned" into ROM or loaded into Flash.May execute in Flash.
VxWorks images consist of:
Text segment---executable instruction.
Data segment---Initilized global and static varibles.
BSS.
VxWorks Image文件类型的说明
Uploaded images(通过网口或串口下载到RAM):
vxWorks - basic Tornado, shell 和 symbol table 在主机端
vxWorks.st(文件很大)- 独立的 image,包含shell和 symbol table在目标板运行
ROM based images(直接烧入ROM的VxWorks):
vxWorks_rom - Tornado in ROM,非压缩, 在 RAM 中运行
vxWorks.res_rom_nosym - Tornado in ROM, 非压缩,在 ROM 中运行
vxWorks.st_rom - Stand-alone in ROM, 压缩, RAM 中运行
vxWorks.res_rom - Stand-alone in ROM, 非压缩, ROM 中运行
非BSP make文件中包括:
include $(TGT_DIR)/h/make/rules.library
include $(TGT_DIR)/h/make/defs.default(define default value for makefile)
...............
BSP make文件中包括: include $(TGT_DIR)/h/make/rules.bsp ...
ARM7 做VxWorks imgage 时,在makefile 文件中用 MACH_EXTRA 代替 LIB_EXTRA, 这样生成的VxWorks时不压缩的在ROM中运行的程序(uncompressed ROM-based VxWorks image),否则就是压缩的在RAM中运行的程序(compressed RAM-based VxWorks image).
启动顺序的一些概念
The sequence of events which occur as power-up are a function of type VxWorks image with will run.
处理器"跳"到再ROM或Flash中Boot-strap 程序的起点. 这个程序主要有以下作用:
关闭中断(来自处理器)
初始化目标内存(target memory)
装载要运行的VxWorks image segments
Jumps to code to place target in quiet state
启动顺序 Boot Sequence--Loadable VxWorks image
Bootstrap code executes and loads text and data segments of boot code(from ROM or Flash) into RAM.具体执行如下:
Boot code compressed-Decompression during copy
Boot code uncompressed-copy
Boot code is ROM-resident-copy data segment only
Boot program executes and loads VxWorks image into RAM.Jumps to VxWorks load point.
System initialization code statically linked into loaded VxWorks image executes and completes initialization.
Startup Sequence--VxWorks 初始化
做以下工作:
Place hardware environment in a quiet state.
Initalize and start the wind kernel
Spawn a tast to complete system initialization
System initialization task will initialize support for end-user specified facilities,and start the end-user's application
二.系统启动顺序
VxWorks image
分为在ROM中运行和在RAM中运行两种.两者启动顺序的区别在于sysInit()函数的调用.该函数在RAM运行的VxWorks中初始化RAM.
ROM中运行的VxWorks
VxWorks在ROM中运行,即写入ROM中的VxWorks是非压缩的,不需要解压,系统直接跳到ROM的首地址,运行VxWorks.注意:ROM运行的VxWorks并不支持所有的主扳,应以主扳手册为准.
文件romInit.s中的romInit()---->文件bootInit.c中的romStart()---->文件usrConfig.c中的usrInit()----->sysHwInit()----->usrKernelInit()----->KernelInit(usrRoot,...)
VxWorks在ROM中运行主要是为了节省RAM空间,以便应用程序有更大的空间运行.只把VxWorks image的data段复制到RAM的LOCAL_LOW_ADRS, text部分留在ROM并在ROM中执行.
ROM中运行的VxWorks缺点是运行速度慢.
RAM中运行的VxWorks
VxWorks在RAM中运行,即写入ROM中的Boot或VxWorks Image是压缩的,需要先解压copy所有的text和data到RAM的LOCAL_LOW_ADRS中,下面sysInit()主要是初始化RAM用的,系统直接跳到RAM的首地址,运行VxWorks
usrInit()前面不压缩,即romInit(),romStart()不能压缩.
文件romInit.s中的romInit()---->文件bootInit.c中的romStart()---->sysaLib.s中的sysInit()---->文件usrConfig.c中的usrInit()----->sysHwInit()----->usrKernelInit()----->KernelInit(usrRoot,...)
RAM运行的Boot或VxWorks image的text段或data段会从ROM复制到RAM,在RAM中运行.
其中usrRoot()是VxWorks启动的第一个任务,由它来初始化 driver,network等
描述: romInit.s first execute in flash,minal initiliz,then jump to romStart.
romStart() 开始装载和解压image到RAM,sysaLib.s是在RAM中执行的第一个函数.
BootROM image
BootROM image
最少的系统初始化,主要用于启动装载VxWorks image.一般有压缩和不压缩两种形式,如bootrom和boot_uncmp.与VxWorks image的区别在于一个Bootrom调用bootConfig.c,而VxWorks调用usrConfig.c.
文件romInit.s中的romInit()---->文件bootInit.c中的romStart()---->文件bootConfig.c中的usrInit()----->sysHwInit()----->usrKernelInit()----->KernelInit(usrRoot,...)
其中 /target/config/all/bootConfig.c是Boot ROM设置模块.用于通过网络加载VxWorks image.
usrRoot()---->bootCmdLoop(void)命令行选择,或autobooting----->bootLoad(pLine, &entry)加载模块到内存(网络,TFFS,TSFS...)----->netifAttach()---->go(entry)----->(entry)()从入口开始执行,不返回.
各个函数的主要作用
romInit()-----power up,disable interrupt,put boot type on the stack,clears caches.
romStart()-----load Image Segments into RAM.
usrInit()-----Interrupt lock out,save imformation about boot type,handle all the Initialization before the kernel is actually started,then starts the kernel execution to create an initial task usrRoot().This task completes the start up.
sysHwInit()-----Interrup locked,Initializes hardware,registers,activation kernel
KernelInit(usrRoot,...)-----
Initializes and starts the kernel.
Defines system memory partition.
Activates a task tUsrRoot to complete initalization.
Unlocks inierrupts.
Uses usrInit()stack.
usrRoot()
初始化内存分区表(memory partition library)
初始化系统系统时钟(system clock)
初始化输入输出系统(I/O system)----可选
Create devices----可选
设置网络(Configure network)--------可选
激活WDB目标通信(Activate WDB agent)---------可选
调用程序(Activate application)
VxWorks Image在RAM中解压的位置
RAM Low Address
RAM High Address
VxWorks运行的位置
Boot image由ROM解压后Copy的位置,即bootRom区
RAM Low Address,RAM High Address和有关定义在BSP,config.h,makefile文件中定义.
VxWorks 在ROM中的情况
ROM 低高地址位
ROM 低地址位
压缩的VxWorks Imgage
没有压缩的romInit.s和romStart()在ROM的起始位置,系统power up后,从这个起始位开始执行,即执行romInit(),起始位置由硬件定义,一般为0x00000000
注:浅蓝色为整个VxWorks Image.
其中 RAM_LOW_ADRS, RAM_HIGH_ADRS 等一些地址在makefile 和BSP config.h中定义.
BSP配置文件及生成下载
VxWorks BSP主要配置文件 config.h 和 Makefile 注解config.h
/*
This file contains the configuration parameters for the CPU evaluation board.
*/
#ifndef INCconfigh
#define INCconfigh
/* BSP version/revision identification, before configAll.h */
#define BSP_VER_1_2 1
#define BSP_VER_1_1 1
#define BSP_VERSION "1.2" /* A Tornado 2.0 BSP */
#define BSP_REV "/3" /* 0 for first revision */
#include "configAll.h" /* 这个文件定义了VxWorks所有的缺省设置 */
/*
* Define ONE of the following to specify the revision of the PPC405GP chip
* you are using. Undefine all others. sysModel() will return
* "Unknown processor" if the correct selection is not made.
*/
/*
* Default boot line
*/
/*
解释: 这一行对配置网络,连通Target Server及下载调试程序非常重要
DEFAULT_BOOT_LINE 的原意是为没有NVRAM的target设计的,这样用户就不需要在每次系统启动是手工输入这些参数了.
系统启动网络时xxxEndLoad()会解释这一行并按这一行的定义进行加载.
Emac(0,0) : 启动设备,可是是软盘,硬盘,PCMCIA卡等 其他的设备名称如:
fd为软盘,(0,0)表示第一个软驱,3.5寸盘.
dc则表示从DEC 21x4x 芯片启动,即系统有NVRAM存在,这种方式现在已不采用.
elpci表示启动设备为3COM EtherLink XL PCI网卡.
fei:Intel 82559 EtherExpress网卡.
ene: NE2000网卡
ELT: 3COM以太网卡
EEX: Intel网卡
ata: ATA/IDE 硬盘 ............
405GP: 主机名
vXworks 从主机加载的VxWorks文件
h=172.16.1.159 主机的IP地址
e=172.16.254.52 目标机的IP地址,若网络启动Target Server时,这个IP必须和主机上Target Server配置的Target IP地址一致,且设置Back End选项为wdbrpc
u=xxx 用户名,pw=xxx 密码: 若通过网络加载调试时,主机的Ftp服务器和目标机的用户名和密码必须相同
tn=vxTarget 目标机名称
*/
#define DEFAULT_BOOT_LINE \
"Emac(0,0)405GP:vxWorks h=172.16.1.159 e=172.16.254.52 \
u=xxx pw=xxx tn=vxTarget"
/*
* 内存设置.
* 如果定义了LOCAL_MEM_AUTOSIZE则SDRAM的大小会在Boot时指定
*/
#undef LOCAL_MEM_AUTOSIZE /* 运行时内存大小 */
#define LOCAL_MEM_SIZE 0x02000000 /* 32MB 内存缺省 */
#define LOCAL_MEM_LOCAL_ADRS 0x00000000 /* 内存基地址为 0 */
#define USER_RESERVED_MEM 0 /* see sysMemTop() */
/*
* Define SDRAM_ECC_ENABLE to enable ECC if an ECC SDRAM DIMM is detected
* during SDRAM auto-configuration. If not defined, ECC will not be enabled
* if an ECC SDRAM DIMM is detected, and the DIMM will be used as a normal DIMM.
*/
#undef SDRAM_ECC_ENABLE
/* 解释: 这里主要设置系统的内存分配定义,若分配不当,则系统不能正常加载和运行.
ROM_TEXT_ADRS, ROM_SIZE, RAM_HIGH_ADRS, 和RAM_LOW_ADRS 在config.h和Makefile文件中都要定义,且必须要保持一致,这些地址的定义一定要参照VxWorks 加载执行过程,硬件手册,MMU和VxWorks的大小进行.主要原则是保证VxWorks image 在ROM和RAM中都要有一定的运行空间且高效运行,可参见 VxWorks BSP和启动过程.
*/
#define ROM_BASE_ADRS 0xfff80000 /* ROM的基地址 */
#define ROM_TEXT_ADRS (ROM_BASE_ADRS + 0x100) /* 程序指针和堆栈指针 */
#define ROM_WARM_ADRS (ROM_TEXT_ADRS+0x0004) /* 热启动入口地址 */
#define ROM_SIZE 0x0007f000 /* ROM大小 512KB */
#define RAM_LOW_ADRS 0x00010000 /* RAM 低地址运行 vxWorks */
#define RAM_HIGH_ADRS 0x00C00000 /* RAM 高地址存储 bootrom */
#define USER_RESERVED_MEM 0 /* 用户保留地址 */
/*
* Cache options 定义缓存
*/
#define INCLUDE_CACHE_SUPPORT
#define USER_D_CACHE_ENABLE
#define USER_I_CACHE_ENABLE
#undef USER_D_CACHE_MODE
#define USER_D_CACHE_MODE (CACHE_COPYBACK)
/*
* 405 timers (PIT, FIT, WDT) 可由外部时钟驱动或者CPU驱动
*/
#define TIMER_CLOCK_EXTERNAL
/*
* Optional timestamp support
*/
#undef INCLUDE_TIMESTAMP
/*
* Auxilliary Timer rates 定义辅助计时器频率
*/
#ifdef TIMER_CLOCK_EXTERNAL
#define AUX_CLK_RATE_MIN (EXT_TIMER_CLK_FREQ / (1 << 21) )
#define AUX_CLK_RATE_MAX (EXT_TIMER_CLK_FREQ / (1 << 9) )
#define AUX_CLK_RATE_DEFAULT (EXT_TIMER_CLK_FREQ / (1 << 17) )
#else
/* ZZZZZZZZZZZ todo put rates in for system clock derived timer clock */
#endif
/*
* Watchdog Timer rates
*/
#define WDT_RATE_MIN 1 /* minimum watchdog timer rate */
#define WDT_RATE_MAX 5000 /* maximum watchdog timer rate */
/* 实时时钟设置 */
#define INCLUDE_RTC
/* 去除不需要的网络驱动 */
#undef INCLUDE_EI
#undef INCLUDE_EX
#undef INCLUDE_ENP
#undef INCLUDE_LN
#undef INCLUDE_SM_NET
#undef INCLUDE_SM_SEQ_ADDR
/* #define for software floating point support */
#undef INCLUDE_SW_FP
/* 定义串口 Serial port configuration */
#define INCLUDE_SERIAL
/* PCI 设置,PCI configuration */
#define INCLUDE_PCI
#ifdef INCLUDE_PCI
/*
* Three programmable processor local memory address to PCI memory address
* mappings. If a region is enabled, PMMx_LOCAL_ADRS must be between
* PCI_MEMORY_START and PCI_MEMORY_END. If PMMx_PCI_HIGH_ADRS is non-zero in
* an enabled region, 64 bit dual cycle addresses will be generated on the
* PCI bus for this region.
*/
//定义PCI设备的初始化地址 参见 PCI设备(网卡)初始化代码分析
# define PMM0_LOCAL_ADRS PCI_MEMORY_START // 定义PCI空间起始地址
# define PMM0_PCI_LOW_ADRS 0x80000000 // 定义PCI空间低位地址
# define PMM0_PCI_HIGH_ADRS 0x00000000 // 定义PCI空间高位地址
# define PMM0_PCI_MASK_ATTRIB (PMM_MASK_512MB | PMM_ENABLE)
# define PMM1_LOCAL_ADRS PMM_UNUSED
# define PMM1_PCI_LOW_ADRS PMM_UNUSED
# define PMM1_PCI_HIGH_ADRS PMM_UNUSED
# define PMM1_PCI_MASK_ATTRIB PMM_UNUSED
# define PMM2_LOCAL_ADRS PMM_UNUSED
# define PMM2_PCI_LOW_ADRS PMM_UNUSED
# define PMM2_PCI_HIGH_ADRS PMM_UNUSED
# define PMM2_PCI_MASK_ATTRIB PMM_UNUSED
/*
* PCI memory address to processor local memory address mapping. If a region
* is enabled, PTMx_LOCAL_ADRS must be within the two Local memory / peripheral
* regions (0x00000000-0x7FFFFFFF, or 0F0000000-0xFFFFFFFF)
*/
# define PTM1_LOCAL_ADRS LOCAL_MEM_LOCAL_ADRS
# define PTM1_SIZE_ATTRIB PTM_SIZE_2GB | PTM_ENABLE
# define PTM2_LOCAL_ADRS PTM_UNUSED
# define PTM2_SIZE_ATTRIB PTM_UNUSED
#endif /* INCLUDE_PCI */
/*
* 如果支持网络,本地EMAC和PCI网卡,必须有一个被选取,两者都是END形式驱动
*/
#define INCLUDE_NETWORK /* 支持网络 */
#define INCLUDE_EMAC_NETWORK /* 405GP 本地 EMAC 网络 */
#undef INCLUDE_PCI_NETWORK /* PCI 网络 */
/*
* The board does not have the Ethernet MAC address of the EMAC stored
* in any sort of NVRAM. Modify the 12 digit string below to match the decal
* that is on your board.
*/
#ifdef INCLUDE_EMAC_NETWORK
#define DEFAULT_EMAC_HW_ADDR "xxxxxxxxxxxx" /* 网络硬件地址,即MAC地址 */
#endif
/*
* WDB 通过网络Enhanced Network Driver加载调试程序,若网络加载调试,必须定义此项
*/
#define WDB_COMM_TYPE WDB_COMM_SERIAL /*首先默认使用串口通信*/
#define WDB_TTY_CHANNEL 0 /*使用第一个串口
#ifdef INCLUDE_NETWORK
#define INCLUDE_END
#undef WDB_COMM_TYPE
#define WDB_COMM_TYPE WDB_COMM_END /* 定义网络通信, END 驱动 */
#else
#undef WDB_COMM_TYPE
#define WDB_COMM_TYPE WDB_COMM_SERIAL /* 定义串口通信,和PC机串口连接 */
#undef WDB_TTY_CHANNEL
#define WDB_TTY_CHANNEL 0 /* 串口1 */
#endif /* INCLUDE_NETWORK */
/*************** 此处定义一些杂项 */
#ifdef NUM_TTY
#undef NUM_TTY
#endif
#define NUM_TTY 2 /* 定义了两个串口终端,*/
#ifdef WDB_TTY_BAUD
#undef WDB_TTY_BAUD
#endif
#define WDB_TTY_BAUD 57600 /* 波特率设置 9600, 19200, 38400, 57600, 115200 */
#ifdef CONSOLE_BAUD_RATE
#undef CONSOLE_BAUD_RATE
#endif
#define CONSOLE_BAUD_RATE 57600
#undef INCLUDE_ENV_VARS /* unix compatable environment variables */
#undef INCLUDE_TIMEX /* timexLib for exec timing */
#undef INCLUDE_HW_FP
#undef INCLUDE_TFTP_CLIENT /* used by autoboot from ftp server*/
#define INCLUDE_SW_FP
#define INCLUDE_ELF
#define INCLUDE_NET_SHOW
#define INCLUDE_PING
#undef INCLUDE_DEMO /* only for vxWorks bsp test */
#define ETHERNET_ADR_SET /* only for bootrom used */
#define INCLUDE_USER_APPL /* Startup the user's application in dos makefile project */
#undef PCIDEBUG
#ifdef INCLUDE_USER_APPL
#define USER_APPL_INIT _appEntry()
#endif
#endif /* INCconfigh */
#if defined(PRJ_BUILD)
#include "prjParams.h"
#endif
Makefile
# Makefile - make rules for board
#
#*/
CPU = PPC40x
TOOL = gnu
TGT_DIR=$(WIND_BASE)/target
include $(TGT_DIR)/h/make/defs.bsp
include $(TGT_DIR)/h/make/make.$(CPU)$(TOOL)
include $(TGT_DIR)/h/make/defs.$(WIND_HOST_TYPE)
## Only redefine make definitions below this point, or your definitions will
## be overwritten by the makefile stubs above.
TARGET_DIR = xxx
VENDOR = IBM
BOARD = xxx
RELEASE = vxWorks vxWorks.st bootrom_uncmp.hex
USR_ENTRY = usrInit
# ROM_TEXT_ADRS, ROM_SIZE, RAM_HIGH_ADRS, 和RAM_LOW_ADRS 在config.h,Makefile和Makefile.*文件中 # 都要定义,且必须要保持一致,
ROM_TEXT_ADRS = fff80100 # ROM 起始地址
ROM_SIZE = 0007f000 # ROM 空间大小
RAM_LOW_ADRS = 00010000 # RAM 低地址 vxWorks */
RAM_HIGH_ADRS = 00C00000 # RAM 高地址存储 bootrom */
HEX_FLAGS = -a 100
#ADDED_CFLAGS = -gdwarf -O0 # for debug
MACH_EXTRA = appentry.o # 注意:这里加载用户的程序模块,程序调用在usrRoot()
BOOTCONFIG = bootconfig.c # bsp bootconfig.c for bootrom
## Only redefine make definitions above this point, or the expansion of
## makefile target dependencies may be incorrect.
include $(TGT_DIR)/h/make/rules.bsp
include $(TGT_DIR)/h/make/rules.$(WIND_HOST_TYPE)
Tornado for x86下BSP的生成,下载和Target Server的配置实例,
Pentium主机,3Com网卡,软盘引导,ftp下载VxWorks映像。
1.在C:\Tornado\target\config\pcPentium目录下修改BSP文件config.h。
#elif (CPU_VARIANT == PENTIUM)
#define DEFAULT_BOOT_LINE
"elt(0,0)HOST:c:\\Tornado\\target\\config\\pcPentium\\vxWorks
h=90.0.0.3 e=90.0.0.50 u=target pw=target tn=target"
#define INCLUDE_ELT //3Com网卡
#define INCLUDE_END //END驱动
2.打开Tornado选择新建一个bootable vxworks image,选择建 A BSP,选择
pcPentium,建完后编译就可以在相应的目录下生成vxworks的映像文件。
3.制作bootrom;选择Build Boot Rom,选择pcPentium,再选择bootrom_uncmp,
生成 bootrom_uncmp。拷贝 bootrom_uncmp到host\x86-win32\bin下,插入空白
盘到软区,在dos界面进入目录host\x86-win32\bin下,用命令"mkboot a:
bootrom_uncmp "生成引导盘
4. 在Start > Programs > Tornado2 > FTP Server,点开Security下的
user/rights菜单,新建用户User Name:target,Password:target,Home
Directory为VxWorks映像所在目录如 C:\Tornado\target\config\pcPentium\。
注意这些配置要和config.h中的一致。
5.将bootrom的启动盘插入目标机的软驱,启动目标机,系统从软驱启动,随后登
陆FTP,从主机下载vxworks文件,目标机提示7秒内按任意键选择Boot方式(手工
,自动),手工方式可对FTP用户,口令,IP等参数进行修改。
通常是等待7秒后系统autoboot。
屏幕显示:
Attached TCP/IP interface to elt0.
Attaching network interface lo0... done. //TCP/IP网络连接成功
Loading... 602128 //通过ftp下载VxWorks映像
Starting at 0x01080000 //下载成功,从RAM_LOW_ADRS 0x01080000
开始执行VxWorks系统
Attached TCP/IP interface to elt unit 0
Attaching interface lo0...done //TCP/IP网络连接成功
(注意这里网络初始化成功和上边的不同,上边是Bootrom映像网络初始化来下载VxWorks,这里VxWorks系统初始化网络。)
VxWorks
Copyright 1984-1998 Wind River Systems, Inc.
CPU: xxxx --- Intel x82
VxWorks: 5.4
BSP version: 1.2/4
Creation date: Jan xx 2001
WDB: Ready.
至此目标机系统启动完成。
6.配置Target Server下载应用程序.
打开Tornado,在Tools菜单下选择Target Sever再选择configure进行配置(Tools
> Target Server > Configure > New)给出Target Server名字描述如net00.在
(Target Server Properties > Back End)选择WdbRpc. Target Name/IP Address
框内输入Target的IP: 90.0.0.50.
Core File and Symbols选项(Target Server Properties > Core File and
Symbols): C:\Tornado\target\config\pcPentium\vxWorks等等。
配置的内容根据系统的具体情况定。点击Launch启动Target Sever,随后在主界
面下选择已启动的Target Sever就可以下载 *.o或*.out程序。
给大家推荐一个美女多的游戏
[size=4][color=#f70909][b]惊艳美女云集<美女三国> 千元大礼包人人有份[/b][/color][/size][color=#cc5233] -------------三国类网页游戏的终极大作[/color]
让人翘首以盼的由游戏盒子倾力打造的一款全新即时策略性网页游戏《美女三国之小乔出嫁》盛装开幕了。
[url=http://pass.boxgm.com/Box_UserReg.asp?Lid=100006][img]http://up.jdjsq.com/box_pop.jpg[/img][/url]
从[url=http://pass.boxgm.com/Box_UserReg.asp?Lid=100006][color=#800080]《美女三国》[/color][/url]sanguo.boxgm.com开区的预告发出,就有众多网友,来函来电咨询,问:美女三国 什么时候开始测试啊,什么时候正式开放啊。在此对一直支持我们的众多网友,和游戏盒子的120万老朋友们表示真挚的感谢!感谢你们对游戏盒子对[url=http://pass.boxgm.com/Box_UserReg.asp?Lid=100006][color=#800080]《美女三国》[/color][/url]的关注,支持和厚爱。 仅《美女三国之小乔初嫁》开服不足一个小时,便如潮水般涌进了近千的网友,开服次日注册用户就已突破万人。我们简单做了一下调查,其中以女性玩家人数最多,比例达到2/3 .
金秋十月 丹桂飘香 ;金秋时月,暗香袭人,众多佳丽的加入,无疑也成了[url=http://pass.boxgm.com/Box_UserReg.asp?Lid=100006][color=#800080]美女三国[/color][/url]的一道亮丽的风景线。
英雄榜也在不断的刷新,众多家族联盟也都踊跃的进入了[url=http://pass.boxgm.com/Box_UserReg.asp?Lid=100006][color=#800080]美女三国[/color][/url]。英雄的队伍也在不断的增长,在美女三国,有一展宏图,实现自己的统一霸业的为目标的霸业系玩家,还有誓复汉室一匡天下的忠义系玩家,也有是偏居一隅,求得安乐的 安乐系玩家。都在努力建立着自己的王国憧憬着自己的梦想。其逢乱世,究竟谁能成就霸业,谁能一匡天下,谁能称霸一方那。乱世造就几多悲歌,也成就几多英雄。自古美女爱英雄,英雄怜美女。金秋的十月,广邀天下英雄美女,共赴美女三国。建建千秋功业,留万古英明。那风华绝对,倾国倾城的美女,就是你!
游戏盒子为了感谢众多网友对[url=http://pass.boxgm.com/Box_UserReg.asp?Lid=100006][color=#800080]《美女三国》[/color][/url]的厚爱和支持,决定让开区优惠活动延长至10月6日24时,每天参与答题边可获意外惊喜。美女三国伴你度过一个美好的假期。
笔者也时尚了一把,带着对希望遇见美女一点憧憬,[url=http://pass.boxgm.com/Box_UserReg.asp?Lid=100006][color=#800080]开始了我的美女三国之旅[/color][/url],上班时间也可以玩!好不惬意,哇进游戏一看这么多的免费道具真是好爽啊。
你还等什么呢,赶快[url=http://pass.boxgm.com/Box_UserReg.asp?Lid=100006][color=#800080]注册[/color][/url]!建立自己的王国。
游戏盒子《美女三国》官方网站 [url=http://pass.boxgm.com/Box_UserReg.asp?Lid=100006][color=#800080]http://pass.boxgm.com/Box_UserReg.asp?Lid=100006[/color][/url]
游戏盒子通行证注册地址[url=http://pass.boxgm.com/Box_UserReg.asp?Lid=100006][color=#800080]http://pass.boxgm.com/Box_UserReg.asp?Lid=100006[/color][/url]
[size=7][b][url=http://pass.boxgm.com/Box_UserReg.asp?Lid=100006]立即注册开始游戏吧![/url][/b][/size]
友情提示:[url=http://pass.boxgm.com/Box_UserReg.asp?Lid=100006][color=#800080]注册盒子通行证[/color][/url] 可以通行游戏盒子所有游戏!并且有免费的加速器软件可以用啊 简单简单加速器[url=http://www.jdjsq.com/][color=#0000ff]http://www.jdjsq.com[/color][/url] (终身免费)
[img]http://recv.cn/upload/65539/2008-8/12008822062825782.gif[/img]
如何优雅的解决你面临的网站推广问题?[url=http://www.tgxzs.com/]群发软件[/url]、[url=http://www.tgxzs.com/]论坛群发[/url]、[url=http://www.tgxzs.com/]网站推广[/url]又将何去何从?
页:
[1]