摘要: 镜像种类不同,VxWorks的启动过程会有所不同。 我们项目中使用的是加载型VxWorks镜像

VxWorks Boot Process

函数 函数功能 所在文件
bootTask()
  • 通过createBootLineFromFlash()从FLASH_ADRS中读出配置信息,组装bootline字符串到BOOT_LINE_ADRS
  • 调用autoboot()
bootMain.c
autoboot() 延迟5s,等待用户输入,超时后调用sysInit() bootMain.c
sysInit()
  • 锁住中断
  • 禁用缓冲
  • 用缺省值初始化系统中断表(仅i960)
  • 用缺省值初始化系统错误表(仅i960)
  • 初始化处理器寄存器到一缺省值
  • 使回溯失效
  • 清除所有悬置中断
  • item
  • 激活usrInit(),指明启动类型
sysALib.s
usrInit()
  • 调用sysStart() 对bss清零
  • 调用cacheLibInit() 支持cache
  • 调用excVecInit(),初始化所有系统和缺省中断向量
  • 调用sysHwInit(), usrCacheEnable()
  • 调用usrKernelInit()
prjConfig.c
usrKernelInit() 依次调用classLibInit(),taskLibInit()qInit(),workQInit(),kernelInit() Target\config\comps\src\usrKernel.c
kernelInit() 初始化并启动内核。
  • 激活intLockLevelSet();
  • 从内存池顶部创建根堆栈和TCB
  • 调用taskInit(), taskActivate(),用于usrRoot();
  • 调用usrRoot()
kernelLib.h
usrRoot() 依次调用
  • usrKernelCoreInit()
  • memPartLibInit()
  • memInit()
  • usrMmuInit()
  • sysClkInit()
  • usrIosCoreInit()
  • usrKernelExtrsInit()
  • usrIo***traInit
  • usrNetworkInit()
  • selectInit()
  • usrToolsInit()
  • cplusDemanglerInit()
  • usrAppInit()
prjConfig.c
usrAppInit() 依次调用 startWdTask(), appMain() usrAppInit.c