Bootloader的概念就是一个用于引导的loader,在系统上电的时候最先被运行,然后对硬件平台做最基本的初始化,最后把操作系统加载起来。不同的嵌入式操作系统都有自己的Bootloader,但是本质功能都是一样的。

在WinCE中用的最多的就是EBOOT,是一个基于网络的Bootloader,而且可以根据需要带有命令行菜单功能,网络调试功能以及文件系统的相关功能。在这里我只谈ARM平台的引导,因为其他架构的CPU我没用过,就不吹牛了。一般基于不同的硬件设计,会有不同的引导方式:

NORFlash Boot:

一般ARM处理器的片选0都会接有NORFlash,这样在ARM上电以后,会从0地址开始执行程序,也就是从NORFlash的0地址开始执行。所以把EBOOT烧到NORFlash的0地址开始的地方,这样在上电以后,EBOOT开始执行,可以在NORFlash里面执行,也可以自拷贝到SDRAM中执行。最后加载WinCE image并运行。

NANDFlash Boot with EBOOT:

由于NORFlash容量小,价格贵,现在很多ARM处理器支持NandFlash引导。不同厂家的处理器对Nandflash的引导略有区别,具体要看datasheet。但是本质就是先从Nandflash中读出一个小的Loader来运行,这个Loader再从Nandflash中加载EBOOT到SDRAM中运行,最后EBOOT加载WinCE image,就是NK.bin。

NANDFlash Boot without EBOOT:

如果在NandFlash引导的时候不需要EBOOT,也可以不用EBOOT。这样就是系统启动后从Nandflash中加载一个小的Loader,小的Loader对硬件系统作基本的初始化,然后直接加载WinCE image,一般应该是NK.nb0,然后运行。

这里来说一下NK.bin与NK.nb0,两个不同的WinCE image。

 

NK.nb0:就是一个可以直接运行的WinCE映像文件,直接拷贝到SDRAM中就可以运行。

NK.bin:被称为Windows CE binary image data format文件格式,是一种包含了多个独立纪录(Section)的二进制文件。在加载的时候,需要分别加载,不同的Section加载到不同的地方。所以NK.bin需要Bootloader进行解释性加载。但是他的Size会比NK.nb0小。可以使用viewbin命令查询NK.bin中的纪录信息。

viewbin –rec nk.bin

前面已经讲过了一般系统会使用到的引导方式,下面介绍一下EBOOT。在WinCE中EBOOT一个作用可以加载WinCE image,还可以通过网络配合Platform Builder下载WinCE image进行调试。在开发一个新的BSP的时候,首先会基于一个相似的平台的BSP进行克隆,然后要做的就是要开发和调试EBOOT了,EBOOT的架构如图:

BLCOMMON:相当于EBOOT的一个基本框架,主要完成bootloader相关内存的分配,解析NK.bin文件并进行效验,初始化平台,通过网络下载image等功能。

OEM Code:主要是基于硬件平台,为BLCOMMON提供相应的接口函数,帮助完成相应的功能。

Eboot:一个小的网络协议栈,为网络下载image提供DHCP,TFTP,UDP等网络服务功能。

Network Driver:硬件平台的网络驱动部分,支持上层的网络功能。

Bootpart:为Flash设备提供分区功能,bootloader可以创建一个BinFS分区和一个文件系统分区。还可以用它来创建一个引导分区用来存放引导参数。

Flash Memory:硬件平台的Flash驱动。

WinCE Boot方式及 Bootloader架构概述相关推荐

  1. Java生鲜电商平台-微服务架构概述

    Java生鲜电商平台-微服务架构概述 单体架构存在的问题 在传统的软件技术架构系统中,基本上将业务功能集中在单一应用内,或者是单一进程中.尽管现代化的软件架构理论以及设计原则已推广多年,但实际技术衍化 ...

  2. 基于UDS服务的BootLoader架构和刷写流程

    基于UDS服务的BootLoader架构和刷写流程 1. BootLoader支持的UDS服务 bootloader 不需要支持19/14等故障类服务 在boot程序中, 10/27/11/3E 这样 ...

  3. 一文读懂 Spring Boot、微服务架构和大数据治理三者之间的故事

    微服务架构 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物.互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况 ...

  4. netty系列之:netty架构概述

    文章目录 简介 netty架构图 丰富的Buffer数据机构 零拷贝 统一的API 事件驱动 其他优秀的特性 总结 简介 Netty为什么这么优秀,它在JDK本身的NIO基础上又做了什么改进呢?它的架 ...

  5. Kafka概念和基本架构概述

    Kafka概念和基本架构概述 一.Kafka介绍 Kafka是最初由 Linkedin 公司开发,是一个 分布式.分区的.多副本的.多生产者.多订阅者,基于zookeeper协调的分布式日志系统(也可 ...

  6. 一文透析 Spring Boot、微服务架构和大数据治理三者之间的故事

    微服务架构 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物.互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况 ...

  7. Spring Cloud与微服务学习总结(8)——Spring Boot、微服务架构和大数据治理三者之间的故事

    前言 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物.互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况下,如 ...

  8. 【5G架构】5G 接入网架构概述

    博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发. 在5G早期负责终端数据业务层.核心网相关的开发工作,目前牵头6G ...

  9. 搭建Spring Boot2.X集成Hibernate5项目,并集成传统SSH老项目的安全认证组件,以Spring Boot方式开发项目并集成到老系统

    搭建Spring Boot2.X集成Hibernate5项目,并集成传统SSH老项目的安全认证组件,以Spring Boot方式开发项目并集成到老系统 场景 可行性分析 搭建Spring Boot集成 ...

最新文章

  1. opencv 九点标定_精度与HALCON结果仅差(±0.2mm)
  2. ios自定义日期、时间、城市选择器
  3. centos 下载文件很慢_【已解决】Mac中从远程CentOS服务器中加速下载大文件
  4. .net 5.0 中的 JsonConsole
  5. Spring Boot 自动配置的 “魔法” 是如何实现的?
  6. java面试题43要使某个类能被同一个包中的其他类访问,但不能被这个包以外的类访问,可以( )
  7. SecondaryNameNode的Inconsistent checkpoint fields异常
  8. RouteDebug.dll
  9. vue打包配置的详细说明【config/index.js的build部份】
  10. Spring管理hibernate的事务的方法
  11. c 打印二叉树_基础扩展 | 22. 遍历二叉树—前序遍历算法的VBA代码解析
  12. java毕业设计明德学院网站源码+lw文档+mybatis+系统+mysql数据库+调试
  13. Oracle常用函数
  14. 【软件测试的重要性】
  15. Python爬虫之QQ空间登陆获取信息!
  16. 亲身经历!4个月写完硕士毕业论文一稿过,我是如何做到的?
  17. 【小狗钱钱】—— 送人生一份理财
  18. 河南山东商会刘继臣 全国工商联·万祥军:商协社团儒商大会
  19. 网络安全等级保护指南|网络安全等级保护测评周期需要多久
  20. IoT设备配网方式总结

热门文章

  1. java socket 浏览器_Socket实现Java和浏览器交互。
  2. mysql 中有没有临时表_MySQL临时表的简单用法
  3. docker绑定端口主机访问curl: (56) Recv failure: Connection reset by peer
  4. mybatis TypeHandler 类型处理器
  5. 我的世界服务器显示不出地图,为什么我的世界服务器地图加载不了
  6. CSDN-Markdown-图片设置(大小,居中)
  7. 热度3年猛增20倍,Serverless云开发的技术架构全解析
  8. LeetCode(109):有序链表转换二叉搜索树
  9. 手风琴案例jquery写法
  10. 我的第一次Pascal程序