zoukankan      html  css  js  c++  java
  • VxWorks启动流程 分类: vxWorks 2014-03-14 08:44 316人阅读 评论(0) 收藏

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

      



    函数

    函数功能

    所在文件

    bootTask()

    (a)    通过createBootLineFromFlash()从FLASH_ADRS中读出配置信息,组装bootline字符串到BOOT_LINE_ADRS

    (b)    调用autoboot()

    bootMain.c

    autoboot()

    延迟5s,等待用户输入

    超时后调用sysInit()

    bootMain.c

    sysInit()

    (a)    锁住中断

    (b)    禁用缓冲

    (c)    用缺省值初始化系统中断表(仅i960)

    (d)    用缺省值初始化系统错误表(仅i960)

    (e)    初始化处理器寄存器到一缺省值

    (f)     使回溯失效

    (g)    清除所有悬置中断

    激活usrInit(),指明启动类型

    sysALib.s

    usrInit()

    (a)    调用sysStart() 对bss清零

    (b)    调用cacheLibInit() 支持cache

    (c)    调用excVecInit(),初始化所有系统和缺省中断向量

    (d)    调用sysHwInit(), usrCacheEnable()

    (e)    调用usrKernelInit()

    prjConfig.c

    usrKernelInit()

    依次调用classLibInit(),taskLibInit()qInit(),workQInit(),

    kernelInit()

    Targetconfig

    compssrc

    usrKernel.c

    kernelInit()

    初始化并启动内核。

    (a)激活intLockLevelSet();

    (b)从内存池顶部创建根堆栈和TCB

    (c)调用taskInit(), taskActivate(),用于usrRoot();

    (d)调用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


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    [ZJOI2008]树的统计 树链剖分
    CF915E 动态开线段树
    Poj 2114 Boatherds(点分治)
    Poj 2599 Godfather(树的重心)
    Bzoj 2152: 聪聪可可(点分治)
    Cogs 1714. [POJ1741][男人八题]树上的点对(点分治)
    Cogs 329. K- 联赛(最大流)
    Cogs 731. [网络流24题] 最长递增子序列(最大流)
    Bzoj 2282: [Sdoi2011]消防(二分答案)
    Cogs 732. [网络流24题] 试题库(二分图)
  • 原文地址:https://www.cnblogs.com/mao0504/p/4706650.html
Copyright © 2011-2022 走看看