好吧,终于有决心写一写我对这个领域的一点认识了,初入行不久,理解还有限。
嵌入式粗略的来看,可以分为嵌入式软件和嵌入式硬件,其中软件的工作就是想办法在已经搭好的硬件平台上开发软件,是其稳定高效的完成需要的功能;嵌入式硬件就是搭建硬件平台,这包括一些芯片选型和布线等,要考虑一些匹配和电磁兼容等。
文中,嵌入式和嵌入式系统指的是同一个意思。
嵌入式到底是什么?说白了就是一台专用于某种场合的计算机,其CPU根据应用场合的不同在选型的时候要考虑到功耗,稳定性,成本等,以最低的价格可靠的完成任务是嵌入式系统的追求。和通用计算机比较起来,它要实现的功能很有针对性,也很有局限性,不需要那么高的计算能力,满足要求即可,还要便宜。如果和51单片机比较一下,他们有很多相似性, 都是一种专用的计算机,大的区别有两点:一是,51单片机只是一个CPU,用户要单独配置外围IO(输入输出)接口芯片,嵌入式芯片ARM通常不需要这么做,因为某个厂商推出的一个ARM芯片,它本身就集成了CPU和IO口。另外一点,ARM可以运行操作系统,而51不行,原因在于ARM芯片带有内存管理单元,而51没有,内存管理单元是操作系统必需的,而且ARM的速度也比51快。
简单介绍一下ARM到底是什么?它通常指的是一款芯片,当然它还有其它含义。英国一家叫(advanced risc machine)的公司,专门设计这种芯片的内核,并出售自己的设计方案,本身并不生产芯片。芯片厂家在购买了他们设计的内核方案以后,再根据特定的需求(比如专用于网络),结合一定的IO功能,最后生产出一种可以出售的ARM芯片。也就是说一个市场上出售的ARM芯片,它不仅仅是一个CPU,还集成一些IO口。这些IO口有个统称,叫GPIO,意思是通用可编程IO接口,可以编程控制各个IO口的功能。很多人会听说:什么华为啊,高通啊,联发科啊等等,他们的芯片都是基于ARM内核的。是的,他们生产出来的芯片,其CPU部分就是根据(advanced risc machine)公司设计的内核生产的。很多人可能听说过ARM 9或者Cortex A8等等,这指的是(advanced risc machine)公司设计的不同内核版本。其中ARM 9 就包括多种系列,各有一些特点。那么Cortex 又是什么鬼?(advanced risc machine)公司在推出了ARM 11这个系列以后,就不再以ARM命名了,没有ARM 12,用Cortex 来命名,也就是说凡是Cortex系列的芯片,都是ARM 11版本以后的。Cortex 又分为三个系列 Cortex-A,Cortex-R,Cortex-M,针对不同应用场合而设计的,功能和特点有差异。
常常还有一个说法,“ARM架构”。这是什么意思?所谓ARM架构是针对ARM的指令集来说的和ARM内核版本是不同的东西,例如,ARM 9系列的一部分和ARM 10系列都支持ARM v5架构,也就是说他们采用的是一样的指令集。每一个版本的ARM架构,都修改了一小部分指令,向下兼容。ARM采用的是RISC指令集,这个东西的中文意思是,精简指令集,说白了,就是每一条汇编指令都可以在4个左右的CPU时钟周期内执行完,这样一段程序需要多久能执行完,是可预测的。对于一些实时性要求比较高的场合,程序的响应时间是需要有一定的把控的。而相比之下,还有一种指令集,CISC,即复杂指令集。Intel的CPU支持的汇编指令就是这样的指令,它不保证所有的指令都在某几个时钟周期内完成,但是对于对实时性要求不要的通用操作系统来说,这没有什么影响,反而因为某些指令的强大,比如单个指令就可以完成复杂的功能而提高了效率,尽管它可能执行时间要相对长一点。
先写这些吧...待续,文中有不当的表述,欢迎留言批评指正。
理解嵌入式之学习笔记一
时间: 2024-12-26 11:26:44
理解嵌入式之学习笔记一的相关文章
嵌入式开发学习笔记 ( java - c/c++ :从入门到入门 )
发现放到Blog之后排版全乱套了.. 已经把PDF上传到资源页了 http://download.csdn.net/detail/lyy289065406/8934637 那边排版好看一点...看官们随意吧 >...< · 目 录 导 航 1. 引言 1.1. 编写目的 1.2. 阅读范围 1.3. 声明 1.4. 缩写词/名词解释 1.5. 参考资料 2. 嵌入式开发学习笔记 2.1. 开发环境/测试环境 2.2. 开坑:提要 2.3. 入坑:JNI 2.3.1. navicate 接口定
嵌入式驱动学习笔记
驱动学习笔记 输入子系统概念介绍 嵌入式驱动学习笔记,布布扣,bubuko.com
嵌入式Linux学习笔记之LED驱动
最近在学习嵌入式Linux驱动开发,大致了解了驱动的基本开发流程,本文主要针对字符设备驱动开发做一个简要介绍,也当作是对这几天工作的一个小小总结. 计算机系统是由软硬件相互协调共同完成工作的,作为专用计算机系统的嵌入式系统也不例外,既要有CPU.SDRAM.FLASH.IO等硬件,同时也少不了操作系统和应用软件等软件的支持,而作为应用程序与硬件的桥梁--驱动程序,是整个嵌入式系统开发过程中的关键环节.驱动开发涉及底层,而了解底层作用机制对于整个系统的开发意义重大. Linux内核中有60%以上是
嵌入式Linux学习笔记(基于S5PV210 TQ210)
基于S5PV210.TQ210平台. 本文更多的是教会大家如何学习! 包括如下内容: 1.前言 2.开发环境搭建 3.制作交叉编译器 4.裸机编程 4.1.汇编学习 4.2.S5PV210启动流程 4.3.点亮一个LED 4.4.串口 4.5.实现printf 4.6.时钟配置 4.7.重定位 4.8.DDR 4.9.NAND读写 4.11.LCD操作 5.移植u-boot(基于u-boot-2014.4版本) 5.1.概述 5.2.u-boot配置过程分析 5.3.u-boot编译过程分析 5
<;深入理解C指针>;学习笔记和总结 第四章 指针和数组
数组是一个什么玩意: 数组和指针我的理解,有相同之处也有不同之处.因有相同之处,因此一些资料上说,数组和指针本质是相同的.因有不同之处,因此也有一些资料上说,数组和指针是不一样的. 相同之处: 数组名字和指针名字都代表了一个地址. 如:int num[10];num是数组名.函数开辟了一个存储十个整数类型的空间,而num是他们的首地址. int *p; p=(int *)malloc(10*sizeof(int));类似的,p也指向了首地址. 不同之处是,num[10]中的空间位置是在栈中,而
嵌入式Linux学习笔记(0)基础命令。——Arvin
学习记录: 到今天为止ARM裸机开发学习进程:1.2.1-1.2.14 预科班知识Linux介绍学习进程:0.2.1-0.2.6 学习内容笔记: 学习了Linux的开发方式的优劣介绍 学习了常用文件夹命令 ls(list) ls -a 显示所有文件(包括隐藏文件) ls -l 显示所有详细信息 ls -a -l也可以 man(查询命令) man 1 ls(1表示查询命令,ls表示查询的内容) cd(change directory) cd ..代表上一层 cd ../../代表上上层 cd .是
深入理解java虚拟机学习 笔记 第二章 java 内存区域和内存溢出异常
2.2 运行时区域 java虚拟机划分成若干个不同的数据区域, 1.程序计数器,字节码解释器工作时就是通过改变计数器的值来取吓一跳需要执行的字节码命令 了解 String.intern()方法 作用: 如果字符串常量池中一个包含了一个等于此String对象的字符串,则返回代表池中的这个字符串的String对象,否则将此对象包含的字符串添加到常量池中,并返回此String对象的引用. 实战 将堆的最小值 -Xms参数与最大值-Xmx参数设置为一样即可避免堆自动扩展 通过参数 -XX:+HeapD
嵌入式linux学习笔记1—内存管理MMU之虚拟地址到物理地址的转化
一.内存管理基本知识 1.S3C2440最多会用到两级页表:以段的方式进行转换时只用到一级页表,以页的方式进行转换时用到两级页表.页的大小有三种:大页(64KB),小页(4KB),极小页(1KB).条目也称为"描述符",有:段描述符,大页描述符,小页描述符,极小页描述符——他们保存大页,小页,极小页的起始物理地址:粗页表描述符,细页表描述符——他们保存二级页表的物理地址. 2.一级页表描述符的最低两位,可分为以下四种情况: (1).0b00:无效. (2).0b01:粗页表. (3).
深入理解Java虚拟机- 学习笔记 - Java内存模型与线程
除了在硬件上增加告诉缓存之外,为了使得处理器内部的运算单元能尽量被充分利用,处理器可能会对输入代码进行乱序执行(Out-Of-Order Execution)优化,处理器会在计算之后将乱序执行的结果重组,保证该结果与顺序执行的结果一致,但并不保证程序中各个语句计算的先后顺序与输入代码中的顺序一致,因此,如果存在一个计算任务依赖另外一个计算任务的中间结果,那么其顺序性并不能靠代码的先后顺序来保证.与处理器的乱序优化执行类似,Java虚拟机的即时编译器中也有类似的指令重排序(Instruction