原创Windows® Embedded CE 6.0 Fundamentals 读书笔记_Chapter 7

 

 

Windows® Embedded CE 6.0 Fundamentals 读书笔记_Chapter 1

Windows® Embedded CE 6.0 Fundamentals 读书笔记_Chapter 2

Windows® Embedded CE 6.0 Fundamentals 读书笔记_Chapter 3

Windows® Embedded CE 6.0 Fundamentals 读书笔记_Chapter 4

Windows® Embedded CE 6.0 Fundamentals 读书笔记_Chapter 5

Windows® Embedded CE 6.0 Fundamentals 读书笔记_Chapter 6

Windows® Embedded CE 6.0 Fundamentals 读书笔记_Chapter 7

Windows® Embedded CE 6.0 Fundamentals 读书笔记_Chapter 8

Windows® Embedded CE 6.0 Fundamentals 读书笔记_Chapter 9

Windows® Embedded CE 6.0 Fundamentals 读书笔记_Chapter 10

 

文档下载地址

Windows® Embedded CE 6.0 Fundamentals +读书笔记

 

Chapter 7
这一章主要介绍操作系统的启动流程,相对前面几章理解上稍微简单一些。
首先还是一些单词
//============单词==============
components
manufacturer
presence
preliminary
preparation
implementation
prepare
table of contents (TOC)
validates
separated out
appropriate
attempts
determined
//============简单翻译============
组件
制造商
存在
初步
准备
执行
准备
目录表(TOC)
验证
分离出来
适当
尝试
确定

Chapter7 系统启动
对驱动开发完成后我们可以编译出一套属于自己的WinCE操作系统,那操作系统是如何启动的呢,这一章对这个问题进行了描述。
这一章分为四个步骤,准备镜像,启动处理,加载文件系统,加载驱动管理。下面我们逐一来看。

第一节准备镜像


首先提出的就是系统镜像的构建,一个系统镜像构建需要做以下的一些准备,首先需要做好配置文件,也就是为镜像的运行预备好 空间,其次要建立一套镜像内容的目录表,最后通过目录表指针来运行NK。NK在wince的镜像中是一个非常重要的部分,当bootloader完成对系统的启动后就会转入NK的执行,bootloader其主要的任务就是将处理器进入预处理状态,并初始化底层的硬件设备,例如初始化内存控制,平台soc初始化等,完成这些任务后进入NKStartup。进入内核后会做一系列的动作。具体大家可以参考下文章列出的一些实例。对系统的整体启动的运作有个认识。大概的顺序为,初始化NK全局结构体,中间调用OEMInitGlobals函数,完成后会返回NK全局结构体,并初始化一些动态库以及Kitl,完成后进入ARMSetup()(MIPS的进入MIPSSetup()),如果kitl在镜像中,会先加载Kitl的入口点,完成后开放OEMInitDebugSerial() ,通过这个函数可以通过串口查看调试,当整体系统平台初始化完成后执行OEMInit() ,完成后执行 KernelFindMemory(),通过armtrap.s调用KernelStart(),通过KernelStart()来启动,完成后执行KernelInit()。

第二节启动处理
接着上面一节提出的一个流程,我们简化一下,StartUp() – KernelStart()/KernelInitialize() – NKStartup() (<Kernel Entry>()),按照这个顺序我们再仔细来看看具体的处理过程,大家可以自己阅读图7-1System startup process StartUp()- ><KernelEntry>,这里大家需要去看看schedule.c这个文件,这里列出了一些函数的调用顺序,在内核的调用是一个比较复杂的过程,整个启动过程也可以看作KernelInit()->SystemStartupFunc()->RunApps(),其中的函数调用大家可以参考图7-2。

第三节文件系统加载
首先我们再来回顾下文件系统是什么,文件系统模式大家可以看看第六章151页,文件系统驱动的概念,其功能是预定义一些函数以及IOCTL控制。当系统冷启动需要加载,文件系统加载首先会对自己进行一个内存地址初始化,并将自身初始化,接下来对应用程序API接口进行一个初始化,设置文件系统自身的一些API,数据库,点对点的消息队列,事件日志,注册表。接下来对注册表数据进行初始化,总体说来,一个系统部分的加载就是其自身以及相关功能初始化的过程。完成文件系统初始化后,系统将完全运行,图7-3对系统启动中文件系统启动进行了描述。

第四节
关于设备管理加载就更好理解,通过以上几个部分的准备,设备管理将会按照以上初始化中生成的一些信息以及注册表信息对设备进行逐一的初始化工作。特别主要的依据是注册表,文中给出了一段注册表的实例,具体的意义大家可以回到第六章157页表6-3再回顾一下。最后举两个例子,例如我们想在系统启动时将系统的一些属性隐藏,想对系统的音量进行设定等都可以通过注册表修改,因为当执 行到设备管理加载的时候,注册表会作为一个准备的依据,比如,我们想在开机的时候把WINCE的开始和任务栏给隐藏,我们就可以 使用以下一段注册表来实现。

;===========auto bar==============
;[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Shell/AutoHide]
;    "Default"=dword:1
;[HKEY_LOCAL_MACHINE/Software/Microsoft/Shell/OnTop]
;    "Default"=dword:0
;[HKEY_LOCAL_MACHINE/Software/Microsoft/Shell/SlideTaskBar]
;    "Default"=dword:0
;===================================

这一张内容虽然少,但是都是非常重要的部分,对系统运行的理解有一个很重要的引导作用,大家需要仔细的结合上面几章再阅读一下。

第七章学习完毕


作者:Mercury Xu
本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

更多相关文章
  • AngularJS自带了对表单或控件的输入数据进行验证的功能,对于Html5的基础控件均有内建的验证器,以下列举了所有支持的验证类型: email max maxlength min minlength number pattern required url date datetimelocal t ...
  • 看了SQL注入脚本后,笔者深受启发,不过美中不足的是文章中还有一些问题需要解决: 1.字典支持问题:如果字典信息不够全面,或者说字典中没有我们数据库中所具有的信息,如数据库表名,字段名,那我们的注入行动只是浪费时间而已. 2.缺乏对汉字的支持:现在很多朋友都在使用汉字作为平时的密码和帐户,汉字的出现 ...
  • 前日在地质大学举办的常青藤论坛上,一见作为战略合作媒体单独采访了前IDG资本合伙人李丰先生.通过采访,李丰创立的Freesvc顾名思义有解放传统VC的意味,也就是说Set VC free,一见认为Freesvc的投资方式.利益机制和管理机制会完全不同于原有的基金操作方式,Freesvc提出要通过一个 ...
  • 一.linux之路 1.入门篇  <LINUX权威指南>书不错,写的很全面也比较广,涉及的不深,做为入门书籍不错,可以比较全面的了解linux .另外比较热门的也可以看看<鸟哥的私房菜>等书,偏管理类的书.如果想做server方向的可以找来看看. 2.驱动篇  <LIN ...
  • Tomcat 使用 jsvc 以守护进程的方式启动(daemon.sh ).这样tomcat自身将会生成另外一个日志文件(catalina-daemon.out),而不是之前的catalina.out,而且catalina-daemon.out日志不会自动切割,会越来越大. 以前遇到过一个问题,就是 ...
  • 在<[Hibernate]Hibernate的聚类查询.分组查询.排序与时间之差>(点击打开链接)一文中已经讲述过如何利用HQL语句取代SQL语句,进行聚类查询.分组查询.排序与时间之差的查询,同时指出hql能代替sql语句做任何事情.我原本以为hql语句的多表查询,要先对里面的实体做J ...
一周排行
  •             一.多步OLE操作产生错误的多种形式 错误如图: 问题形式: (1)写入数据库的数据长度超过数据库设计时定义字段的长度,例如数据库定义字段长度为10,而我输入的数据长度为12就会报这种错. ( ...
  • 易网科技讯 6月28日消息,据国外媒体报道,谷歌周三在旧金山召开的Google IO大会上展示了能够联接互联网的谷歌眼镜Google Glass.谷歌眼镜项目的工程师伊莎贝勒·奥尔森(Isabelle Olsson) ...
  •     据凤凰科技报道,联发科昨天发布其八核移动芯片"MT6592",尽管高通一直强调"强大的核"而非"更多的核",但联发科却坚定地认为"八核智能 ...
  • 给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树. 由于数组是递增有序的,每次都在中间创建结点,类似二分查找的方法来间最小树. struct TreeNode { int data; TreeNode* ...
  • 易网科技讯 1月22日消息,据路透社报道,一个由对冲基金经理克里斯·汉森(Chris Hansen)领导的西雅图投资财团已同意收购NBA萨克拉门托国王队的大部分股权,双方已就此签署了具有约束力的协议.此举意味着西雅图 ...
  • 原文出自:http://blog.chinaunix.net/uid-26404201-id-3037401.html 如果指示符"include"指定的文件不是以斜线开始(绝对路径,如/usr/ ...
  • 什么是Tokenizer-分词   分词器的工作就是分解文本流成词(tokens).在这个文本中,每一个token都是这些字符的一个子序列.一个分析器(analyzer)必须知道它所配置的字段,但是tokenizer ...
  • 下载地址: http://www.tomore.com/dispdocnew.php?id=42193 
  • 可牛作为一款免费的杀毒软件,虽然并不太知名,但是在杀毒能力上还是可圈可点.我们生活的周边总是有着许多山寨的产品,一些山寨产品便宜的价格和用户的虚荣心,使得山寨货极为畅销,不过山寨大学可就不那么受欢迎了.近日,可牛免费 ...
  • https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...