嵌入式之学习路线


******嵌入式开发的相关硬件基础:对于软件工程专业的学生,从事嵌入式软件开发,像数字电路、计算机组成原理、嵌入式微处理器结构等硬件课程汇编语言、C/C++、数据结构和算法、操作系统,linux;



*******嵌入式相关领域包括:

数字图像压缩技术,通信协议及编程技术,网络与信息安全技术:如加密技术,数字证书CA等,DSP技术:DSP是Digital Signal Process数字信号处理的意思,DSP处理器通过硬件实现数字信号处理算法;

*****学软件、计算机专业出身的人,主要从事嵌入式操作系统和应用软件的开发;

*******学电子工程、通信工程等偏硬件专业出身的人,他们主要是搞硬件设计,有时要开发一些与硬件关系最密切的最底层软件,如BootLoader、Board Support Package(像PC的BIOS一样,往下驱动硬件,往上支持操作系统),最初级的硬件驱动程序等;

******目前嵌入式处理器常见的有ARM、PowerPC、MIPS、Motorola 68K、ColdFire(冷火)等,但ARM占据了绝对主流(资料说手机中几乎100%都是ARM处理器);

*****要么走ARM+WinCE,要么走ARM+LINUX,要么走ARM+VXWORKS。每个搞嵌入式的人都可选一条路,条条大路通罗马。

扫描二维码关注公众号,回复: 1805422 查看本文章

*********所谓内核,是指系统当中的一个组件,它包含了OS的主要功能,及OS的各种特性及其相互之间的依赖关系。这些功能包括:任务管理、存储管理、输入输出设备管理和文件系统管理。

**********.嵌入式系统的组成

---- 硬件层

硬件层中包含嵌入式微处理器存储器(SDRAM、ROM、Flash等)、通用设备接口和I/O接口(A/D、D/A、I/O等)。在一片嵌入式处理器基础上添加电源电路时钟电路存储器电路,就构成了一个嵌入式核心控制模块。其中操作系统应用程序都可以固化在ROM中。

(1 )嵌入式微处理器  体系结构可采用冯诺依曼体系结构或者哈弗结构;指令系统可以选用精简指令系统(RISC)和复杂指令系统(CISC);

嵌入式系统硬件层的核心是 嵌入式微处理器,嵌入式微处理器与通用 CPU最大的不同在于嵌入式微处理器大多工作在为特定用户群所专用设计的系统中,它将通用CPU许多由 板卡完成的任务集成在芯片内部,从而有利于嵌入式系统在设计时趋于小型化,同时还具有很高的 效率和可靠性。
嵌入式微处理器 有各种不同的体系,即使在同一体系中也可能具有不同的 时钟频率 数据总线宽度 ,或集成了不同的外设和接口。据不完全统计,目前全世界 嵌入式微处理器 已经超过1000多种, 体系结构 有30多个系列,其中主流的体系有ARM、MIPS、PowerPC、X86和SH等。但与全球PC市场不同的是,没有一种 嵌入式微处理器 可以主导市场,仅以32位的产品而言,就有100种以上的嵌入式微处理器。 嵌入式微处理器 的选择是根据具体的应用而决定的。

(2)存储器    

嵌入式系统需要存储器来存放和执行代码。嵌入式系统的存储器包含Cache、主存和辅助存储器

Cache是一种容量小、速度快的 存储器阵列它位于主存和 嵌入式微处理器 内核之间,存放的是最近一段时间微处理器使用最多的 程序代码和数据。在需要进行数据读取操作时, 微处理器尽可能的从Cache中读取数据,而不是从主存中读取,这样就大大改善了系统的性能,提高了微处理器和主存之间的 数据传输速率。Cache的主要目标就是:减小 存储器(如主存和辅助存储器)给 微处理器 内核造成的存储器访问瓶颈,使处理速度更快,实时性更强。
在嵌入式系统中Cache全部集成在 嵌入式微处理器内,可分为数据Cache、指令Cache或混合Cache,Cache的大小依不同处理器而定。一般中高档的 嵌入式微处理器才会把Cache集成进去。

② 主存  微处理器可以直接访问的寄存器,存放系统和用户的程序及数据。可以位于微处理器的内部或者外部,其容量为256K~1GB。

常用的 ROM类: NOR Flash  、EEPROM、和PROM

RAM类:SRAM、DRAM、和SDRAM

NOR Flash  可擦写次数多、速度快、容量大、便宜

③辅助存储器   比主存慢,但是容量大

常用外存:硬盘、NANDFlash、CF卡、MMC、和SD卡等等

(3)嵌入式系统和外界交互需要一定形式的通用设备接口外设通过和片外其他设备的或传感器的连接来实现微处理器的输入/输出功能。每个外设通常都只有单一的功能,它可以在芯片外也可以内置芯片中。外设的种类很多,可从一个简单的串行通信设备到非常复杂的802.11无线设备。

目前嵌入式系统中常用的通用设备接口有A/D(模/数转换接口)、D/A(数/模转换接口),I/O接口有 RS-232接口串行通信接口)、Ethernet( 以太网接口)、USB( 通用串行总线接口)、音频接口、VGA视频输出接口、I2C( 现场总线)、SPI( 串行外围设备接口)和IrDA( 红外线接口)等。

----- - -中间层 位于硬件层与软件层之间,也称为硬件抽象层

中间层

硬件层与软件层之间为中间层,也称为硬件抽象层(Hardware Abstract Layer,HAL)或 板级支持包(Board Support Package,BSP),它将系统上层软件与底层硬件分离开来,使系统的底层 驱动程序与硬件无关,上层软件开发人员无需关心底层硬件的具体情况,根据BSP 层提供的接口即可进行开发。该层一般包含相关底层硬件的初始化、数据的输入/输出操作和硬件设备的配置功能。BSP具有以下两个特点。
硬件相关性:因为 嵌入式实时系统硬件环境具有应用相关性,而作为上层软 件与硬件平台之间的接口,BSP需要为 操作系统提供操作和控制具体硬件的方法。
操作系统相关性:不同的操作系统具有各自的软件层次结构,因此,不同的操作系统具有特定的硬件接口形式。
实际上,BSP是一个介于 操作系统和底层硬件之间的软件层次,包括了系统中大部分与硬件联系紧密的软件模块。设计一个完整的BSP需要完成两部分工作:嵌入式系统的硬件初始化以及BSP功能,设计硬件相关的 设备驱动
1、嵌入式系统硬件初始化
系统初始化过程可以分为3个主要环节,按照自底向上、从硬件到软件的次序依次为:片级初始化、板级初始化和系统级初始化。
片级初始化
完成 嵌入式微处理器的初始化,包括设置嵌入式微处理器的核心 寄存器控制寄存器、嵌入式微处理器核心工作模式和嵌入式微处理器的 局部总线模式等。片级初始化把 嵌入式微处理器从上电时的默认状态逐步设置成系统所要求的工作状态。这是一个纯硬件的初始化过程。
板级初始化
完成 嵌入式微处理器以外的其他硬件设备的初始化。另外,还需设置某些软件的数据结构和参数,为随后的系统级初始化和 应用程序的运行建立硬件和 软件环境。这是一个同时包含软硬件两部分在内的初始化过程。
系统初始化
该初始化过程以软件初始化为主,主要进行 操作系统的初始化。BSP将对 嵌入式微处理器的控制权转交给 嵌入式操作系统,由操作系统完成余下的初始化操作,包含加载和初始化与硬件无关的设备驱动程序,建立 系统内存区,加载并初始化其他系统软件模块,如网络系统、文件系统等。最后, 操作系统创建 应用程序环境,并将控制权交给应用程序的入口。
2、硬件相关的设备 驱动程序
BSP的另一个主要功能是硬件相关的设备驱动。硬件相关的设备驱动程序的初始化通常是一个从高到低的过程。尽管BSP中包含硬件相关的设备驱动程序,但是这些设备驱动程序通常不直接由BSP使用,而是在系统初始化过程中由BSP将他们与 操作系统中通用的设备驱动程序关联起来,并在随后的应用中由通用的设备驱动程序调用,实现对硬件设备的操作。与硬件相关的驱动程序是BSP设计与开发中另一个非常关键的环节。

------系统软件层

系统软件层由 实时多任务操作系统(Real-time Operation System,RTOS)、文件系统、图形 用户接口(Graphic User Interface,GUI)、网络系统及通用组件模块组成。RTOS是嵌入式 应用软件的基础和开发平台。
嵌入式操作系统(Embedded Operation System,EOS)是一种用途广泛的系统软件,过去它主要应用与工业控制和国防系统领域。EOS负责 嵌入系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。目前,已推出一些应用比较成功的EOS产品系列。随着 Internet技术的发展、信息家电的普及应用及EOS的微型化和专业化,EOS开始从单一的弱功能向高专业化的强功能方向发展。 嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固化以及应用的专用性等方面具有较为突出的特点。EOS是相对于一般 操作系统而言的,它除具备了一般操作系统最基本的功能,如任务调度、同步机制、 中断处理、文件功能等外,还有以下特点:
(1)可装卸性。开放性、可伸缩性的 体系结构
(2)强实时性。EOS实时性一般较强,可用于各种设备控制当中。
(3)统一的接口。提供各种设备驱动接口.
(4)操作方便、简单、提供友好的图形GUI,图形界面,追求易学易用.
(5)提供强大的网络功能,支持TCP/IP协议及其它协议,提供TCP/UDP/IP/PPP 协议支持及统一的MAC访问层接口,为各种移动计算设备预留接口.
(6)强稳定性,弱交互性。嵌入式系统一旦开始运行就不需要用户过多的干预,这就要负责系统管理的EOS具有较强的稳定性。 嵌入式操作系统的用户接口一般不提供操作命令,它通过 系统调用命令向 用户程序提供服务。
(7)固化代码。在 嵌入系统中, 嵌入式操作系统应用软件被固化在嵌入式系统计算机的ROM中。辅助 存储器在嵌入式系统中很少使用,因此, 嵌入式操作系统的文件管理功能应该能够很容易地拆卸,而用各种内存文件系统.
(8)更好的硬件适应性,也就是良好的移植性.

------应用软件层

实时操作系统(RTOS-Real Time Operating System):
嵌入式系统目前最主要的组成部分。根据 操作系统的工作特性,实时是指物理进程的真实时间。实时操作系统具有实时性,能从硬件方面支持 实时控制系统工作的操作系统。其中实时性是第一要求,需要调度一切可利用的资源完成实时控制任务,其次才着眼于提高 计算机系统的使用 效率,重要特点是要满足对时间的限制和要求。
对于 分时操作系统,软件的执行在时间上的要求,并不严格,时间上的错误,一般不会造成灾难性的后果。目前 分时系统的强项在于多任务的管理,而 实时操作系统的重要特点是具有系统的可确定性,即系统能对运行情况的最好和最坏等的情况能做出精确的估计。
系统支持多 任务管理和任务间的同步和通信,传统的单片机系统和DOS系统等对多任务支持的功能很弱,而目前的Windows是典型的 多任务操作系统。在嵌入式应用领域中,多任务是一个普遍的要求。
5、 实时操作系统中的重要概念
系统响应时间(System response time):系统发出处理要求到系统给出应答信号的时间。
任务换道时间(Context-switching time):任务之间切换而使用的时间。
中断延迟(Interrupt latency): 计算机接收到中断信号到 操作系统作出响应,并完成换道转入 中断服务程序的时间。
6、 实时操作系统的工作状态
实时系统中的任务有四种状态:运行(Executing),就绪(Ready),挂起(Suspended),冬眠(Dormant)。
运行:获得CPU控制权。
就绪:进入任务等待队列,通过调度转为运行状态。
挂起:任务发生阻塞,移出任务 等待队列,等待系统实时事件的发生而唤醒,从而转为就绪或运行。
冬眠:任务完成或错误等原因被清除的任务,也可以认为是系统中不存在的任务。
任何时刻系统中只能有一个任务在运行状态,各任务按级别通过 时间片分别获得对CPU的访问权。


 ***********8软件部分要考虑板级支持包BSP的开发、操作系统的移植、应用程序的开发和操作系统的接口等问题。即使只开发应用程序,也要在工程项目中将操作系统文件、设备驱动文件和应用程序集成在一起,经过修改整理后再编译成目标文件。


***********嵌入式软件开发工具

   嵌入式软件的开发可以分为几个阶段:源代码程序的编写,将源程序编译成各个目标模块,将所有的目标模块及相关的库文件链接成目标程序,代码调试等等。,在不同的阶段,使用到不同的工具。

1.编辑器

         UltraEdit      Source Insight

2.编译器

         GCC

3.调试及调试工具

     在嵌入式软件的开发实践中,经常采用的调试方法有直接测试法、调试监控器法、ROM仿真器法、在线仿真器法、片上调试法及模拟器法。

    (1 ) 直接测试法

    (2 )调试监控器法(使用最广)

    (3 )ROM仿真器法

    (4 )在线仿真器法

    (5 )片上调试法(如JTAG)

     (6 )模拟器法

4.软件工程工具

    (1 )CVS

    (2 )GNU make

4.3.3集成开发环境

1.Tornado

2.Windows CE应用程序开发工具

3.Linux环境下的集成开发环境



猜你喜欢

转载自blog.csdn.net/u011146511/article/details/80689245