第1篇:嵌入式知识点总结
嵌入式知识点总结
总结是社会团体、企业单位和个人在自身的某一时期、某一项目或某些工作告一段落或者全部完成后进行回顾检查、分析评价,从而肯定成绩,得到经验,找出差距,以下是小编整理的嵌入式知识点总结,希望能够帮助到大家!
最后,与大家分享一下我这个月实习的心得与体会。通过这段时间的学习,从无知到认知,到深入了解,渐渐的我喜欢上这份工作,让我深刻的体会到学习的过程是最美的。在整个实习过程中,我每天都有很多的新的体会,新的想法,想说的很多,我总结下来主要有以下几点:
1、持之以恒
既然选择了自己的这份工作,不管工作本身怎么样,我们都要坚持往下走。因为我相信每一家公司的工作原理都是差不多的。如果你在这家公司做不住的话,我想你在另外一家公司也是做不住的。只有我们改变自己的态度,才可能战胜心中的浮躁。我们新人一来到公司我,一开始都不会立刻给工作我们做,—一般也都是先让我们看看文档或代码,时间短的要几天,时间长的要几周,在这段时间里很多人会觉得很无聊,没事可做,便觉没有发展空间,于是产生想走的念头。恰恰在这个关键的时候更需要我们的坚持,轻易放弃只会让自己后悔。
2、不怕做小事,那是一种考验
我们一来到公司实习的时候,很多组里的前辈多数还是把我们当学生看待。他们不会也不敢让我们直接参考到一个真正的项目中去。在这个其间一般会给我们看一些过去做过项目的文档和代码,其实不可小看这些小事,也许是为了考验我们,也许是让我们先了解业务。作为一人新人,一定要积极面对这些,勇于担当做小事,喜欢做小事。这样公司同事才会更快的接受你,慢慢地才会让你做一些重要的工作。
3 、态度端正,一定要多主动
我们到公司工作以后,要知道自己能否胜任这份工作,关键是看你自己对待工作的态度,态度对了,即使自己以前没学过的知识也可以在工作中逐渐的掌握。态度不好,就算自己有知识基础也不会把工作做好,四多一少就是我的态度,我刚到这个岗位工作,根本不清楚该做些什么,并且这和我在学校读的专业与这里做的东西还是不太一样的,刚开始我觉得很头痛,可经过工作过程中多看别人怎样做,多听别人怎样说,多想自己应该怎样做,然后自己亲自动手去多做,终于在这一个月里对工作有了一个较系统的认识,慢慢的自己也可以完成相关的工作了,光用嘴巴去说是不行的,所以,我们今后不管干什么都要端正自己的态度,这样才能把事情做好。
4、不要报怨
其实在做单元测试的那个时候,有时候觉的特别的烦。有时候做了半天连一个函数都没有把弄出来,那种感觉真的是非常的难受,心中也有委屈。可是这是我的工作,我报怨也没有用。只能一步一个脚印走过来。直到后面把函数测完,心中还是很有成就感的。其实有的人会觉得公司这里不好那里不好,同事也不好相处工作也不如愿,经常埋怨。我觉这样只会影响自己的工作情绪,不但做不好工作,还增加了自己的压力。所以,我们应该少埋怨,要看到公司好的一面,对存在的问题应该想办法去解决而不是去报怨,这样才能保持工作的激情。
5、虚心学习
由于我们是新手,而且又还没有从学校里完全走出来。所以在工作过程中,我们会碰到很多问题,有的问题我们可以有我们所学的解决,有的有很大业务性的问题,我们就无法解决。这个时候不要不懂装懂,应该虚心地向前辈们请教。请不要害怕,因为前辈肯教我们肯定是我们的福气,对我们以后在工作中都有帮助的。同时请教的时候也是一个锻炼沟通的过程。在前辈给我们解惑的时候,我们也应该虚心的接受,不要装着一副不屑的样子。
6、知错能改
做为一名新人,不管在学校有多么的优秀,来到公司,我们顶多就只有点基础,其他什么的都得重新开始。在学习的过程当中,犯错是不可避免的。知错能改是我们唯一的选择。明知自己有错,还理直气壮那是不应该的。我认为这种行为是可耻的。在犯错的时候来铭记于心,不要第二次在犯同样的错了。当前辈或其他人指出我们的错误时,我们要虚心听教,坦诚改错。这样我们才会进步,才会在组里与同事相处融洽。
7、团队合作
重要的不是我,是我们。在一个项目组里,我并不是一个人。我只能说我是组里的一个部分。我们每一人都不是神,我们不可能一个来完成所有的工作,因此,必须分工。但是,分工并不是都很明确的。每个人分到的工作,多多少少都会和别人的工作的有交集。这是因为,作为一个项目的每个部分,最终还是整合形成整体。我们还是需要这些部分与部分交集作为连接点组合起来。因此,每个虽是分工,但更多是合作。我们中的我必须明白这些,要有团队观,做好自己的同时,更重要也要做好与别人的沟通。这样才会避免工作的重复,意见的不同等负能量。
8、沟通能力
在上一点的体会团队合作中,其实我已经说了,团队合作的基础就是沟通。一个有效率的团队,我认为它的成功就在于成员之间良好的沟通能力。因为,人与人的沟通是信息传递的媒介。没有良好的沟通基础,信息在传递的时候就会被曲解。在软件开发的'整个过程,团队合作是至关重要。每一环节,都离不开沟通。需求变更带来的问题,尤其需要在沟通中解决问题。所以,让自己把信息传递的正确和有效,提高沟通能力是必不可少的。
9、做人做事讲究原则
其实在公司上下班是一个很大的学问。同事都已经来上班了,你才来。或者是同事还没下班,你人就都先走了。其实要把这些看成一种常态。在公司上班不是比谁先来,也不是比谁晚走的,比得是自己的工作的效率。有时候,我们工作做完,是可以先走。你想想,你走了之后,估计别人也敢走了。从这一点上,可以说你是帮助了大家。当然这只是开玩笑,做人做事要有点原则。工作没完成当然不能跑回去,这是没有责任的表现,以后主管怎么能把事情交给你。工作做完,想先走就走了,不必当担心这担心那的。我相信一个好的主管,不会以一些无所谓的因素来衡量一个人的。只要自己身体正,就不怕别人说。
10、做好职业生涯规划
每个人在来实习之前,肯定会想我来这家公司是做什么。当你想好,并决定来的时候,你已经做了第一步职业生涯规划了。实习也是成了我们检验计划的时候,如果你发现这个工作不适合你,毕业前你还有机会可以做换。如果感觉这个工作适合你,那么你就可以做下一步
的规划了。我当初选择这个工作,是因为嵌入式软件开发在近几年会发展会比较快,而且本人对c++和c比较感兴趣。同时,目前做的工作是对日外包,对于我日语的提高也是很有帮助的。现在实习给我感觉是,不出现什么其他状况,应该毕业后会留在这个公司。至少今后的职业规划以日语和编程提高为主,以管理为辅。
在这里,我要感谢上海宝信软件股份分司给我这次宝贵的实习机会。同时,也要感谢组员对我有直接帮助的前辈。当然还要感谢学校和毕业指导王老师的关心与指导。
总而言之,这次实习是我大学四年来最正式的一次。我想通过这次的实习,我将从学生走向社会职业人的转变。一个月的时间过的太快了,但是我们的实习并没有结束。通过这次的总结,我对这次实习的意义有了深刻地认识。自己在今后的学习与工作中,一定会更加努力做的更好。
第2篇:嵌入式 知识点总结
1、嵌入式系统的特点:
(1).嵌入式系统的个性化很强,软件系统和硬件在不同的应用中均有差异;(2).由通用计算机系统发展而来,根据应用对软硬件进行裁剪;(3).高的可靠性,强的实用性;
(4).高的耗电量直接影响系统的成本及电源寿命;
2、什么是嵌入式系统?
嵌入式系统是以应用为中心,以计算机技术为基础,采用可剪裁硬件,适用于对功能,可靠性,成本,体积,功耗等有严格要求的专用计算机系统。
3、采用RISC架构的ARM微处理器一般具有如下特点:(1).体积小、功耗低、成本低、性能高;
(2).支持Thumb(16位)/ARM(3位)双指令集,能很好地兼容8位/16位器件;(3).大量使用寄存器,指令执行速度快;(4).大多数数据操作都在寄存器中完成;(5).寻址方式灵活简单,执行效率高;(6).采用固定长度的指令格式;
4、嵌入式系统开发流程:
选择嵌入式处理器(硬件平台)---选择嵌入式操作系统(软件平台)-----开发嵌入式应用软件-----测试通过---(是)---系统测试-----开发结束
5、嵌入式系统软件设计流程:
代码编程(C/汇编源程序)-----交叉编译(OBJ文件)-----交叉函数库----交叉链接(系统映像文件)---(重定向与下载)---目标板----调试;
6、ARM9E处理器有独立的指令缓存(ICACHE)和数据缓存(DCACHE);
7、ARM9系列处理器共有37个寄存器,其中31个属于通用寄存器,6个为ARM处理器;
8、ARM总共有7种不同的处理器模式,分别是:用户模式,快速中断模式,外部中断模式,管理模式,数据访问中止模式,未定义指令中止模式,系统模式
9、R13一般作为栈指针SP;R14被称为连接寄存器LR,作用:一是在通过BL或者BLX指令调用子程序时存放当前子程序的返回地址;二是在发生异常时用来保存该模式基于PC的返回地址;R15是程序计数器PC,用来保存处理器取值的地址;
10、流水线技术的工作原理:
ARM7采用的是3级流水线:FETCH/DECODE/EXECUTE.此时在EXECUTE阶段要完成大量的工作,包括寄存器和存储器的读写操作、移位操作、ALU操作等,这导致在执行阶段往往需要多个时钟周期,从而成为系统性能的瓶颈。
ARM9采用5级流水线技术,分别是FETCH/DECODE/EXECUTE/MEMORY/WRITE.FETCH阶段和之前功能相同,即从指令存储器中取值;DECODE阶段除了译码之外,还读取寄存器操作数;EXECUTE阶段执行运算,产生ALU运算结果或产生存储器地址;MEMORY阶段进行存储器的读写操作;WRITE阶段将结果写回寄存器;
11、ARM9使用一个统一的TLB来缓存页表信息,TLB主页分为两个部分:主TLB和锁定TLB;
12、ARM总共有7种处理器异常:复位异常、未定义指令异常、软件中断异常、指令预取终止异常、数据访问终止异常、外部访问终止异常、快速中断请求异常
13、(1).复位异常和软件中断异常时,处理器进入管理模式;(2).未定义指令异常时,处理器进入未定义模式;
(3).指令预取终止异常和数据访问终止异常时,处理器进入中止模式;(4).外部中断请求时,处理器进入外部中断模式;(5).快速中断请求时,处理器进入快速中断模式; 14.ARM运行状态:ARM状态和Thumb状态;ARM指令必须在ARM状态下执行,同样,Thumb指令也必须处于Thumb状态下执行。
15.ARM状态和Thumb状态切换可以通过BX指令来实现。
16.ARM指令集有5种形式的位移操作:LSL:逻辑左移;LSR:逻辑右移;ASR:算术右移;ROR:循环右移;RRX:带扩展的循环右移;
17.立即数并不是任意数都是合法的,在立即数寻址中,分配给立即数的空间是12位,8位用于保存一个常数,4位用于保存循环右移基数,而循环右移每次需要移动偶数位,即右移的位数是基数*2;假设常数为A,循环右移位数为N,则最后得到的立即数=A循环右移(N*2位);
18.ARM指令的寻址方式及特点:(1)立即寻址;
(2).寄存器偏移寻址;(3).寄存器偏移寻址;(4).寄存器间接寻址;(5).基址变址寻址;(6).多寄存器寻址;
(7).堆栈寻址:满递增堆栈、空递增堆栈、满递减堆栈、空递减堆栈; 19.LDR和STR LDR指令:从内存读取数据装入寄存器; STR指令:将寄存器中的数据存入内存;
20.CDP:是协处理器数据处理指令:用来执行特定的数据操作; MCR:将ARM寄存器中的数据传输到协处理器寄存器中;
MRC:数据传输方向与MCR指令相反,它将协处理器寄存器中的数据传送到ARM处理器寄存器中;
21.ADR:小范围的地址读取伪指令,主要用来读取基于PC相对偏移的地址或基于寄存器相对偏移的地址;
LDR:大范围伪地址读取伪指令,用于加载32位的立即数或是一个地址值; 22.Thumb跳转指令:
B:是Thumb指令中唯一可以条件执行的指令; BL:带链接的长跳转;
BX:指令在跳转的同时,会选择性的切换指令集; BLX:带链接的跳转,并选择性的切换指令集;
23.MMU:其作用主要有2个方面:一是地址映射,负责将虚拟地址映射成物理地址;二是对地址访问的保护和限制;提供硬件机制的内存访问授权,大多数使用虚拟存储器的系统都使用一种称为分页机制,虚拟地址空间划分成大小相同的一组页,每个页有一个用来标记它的页号,而相应的物理地址空间也被进行划分,单位帧、页和页帧的大小必须相同,虚拟地址被送往MMU,MMU将虚拟地址转化为物理地址。
24.进程调度策略可分为:“抢占式调度”和”非抢占式调度”;
25.在用户空间中,进程是由进程标识符(PID)表示的,一个PID在进程的整个生命期间不会更改,但PID可以在进程进行销毁后重新使用;对用户来说,PID是唯一标识一个进程的数字值;
26.Linux进程还可以通过exec系统调用产生; 27.Linux操作系统有三种进程调度策略:(1).分时调度策略;(2).先到先服务的实时调度策略;(3).时间片轮的实时调度策略; 28.嵌入式文件系统分类:(1).基于Flash的文件系统:
JFFS2文件系统;YAFFS文件系统;Cramfs;Romfs;其他文件系统;
(2).基于RAM的文件系统: RamDisk;Ramfs/Tmpfs(3).网络文件系统NFS 29.Boot Loader 阶段一:1.基本的硬件初始化:a.屏蔽所有中断;b.设置CPU的速度和时钟频率;c.RAM初始化;d.初始化LED;30.ARM-Linux内存管理原理:从两方面入手:一是Linux内核对内存的管理(包括最重要的地址映射、内存空间的分配以及地址访问的限制,即保护机制);二是体系对内存管理方面的特殊性;
31.Linux虚拟内存的实现需要6种机制的支持:地址映射机制、请求页机制、内存分配回收机制、缓存和刷新机制、交换机制和内存共享机制; 32.Linux虚拟内存实现机制间的相互关系:
地址映射机制----请求页机制----内存分配和回收机制---交换机制----缓存和刷新机制
33.进程,又称作任务,是一个动态的执行过程,是处于执行期的程序,进程是系统资源分配的最小单位。
34.在Linux系统中,所有的进程都是fork出来的,它们有个共同的祖先:0号进程;
35.init是内核启动的第一个用户级进程,也是系统的第一个真正的进程,是其他所有进程的父进程,所以init内核线程(或进程)的标识符为1,init有很多重要的任务,负责完成系统的一些初始化设置任务,以及执行系统初始化程序,init程序使用/etc/inittab作为脚本文件来创建系统中的新进程;
36.进程的销毁通过以下三个事件驱动:正常的进程结束、信号、exit函数的调用;
37.进程调度时机可分为:主动调度和被动调度;按细分的话:(1)进程状态转换;(2)当前进程的时间片用完;(3)设备驱动程序;(4)进程从中断、异常以及系统调用返回到用户态; 38.选择进程的依据:policy、priority、counter、rt_priority; 39.内核模块全称为动态可加载内核模块,是Linux内核向外部提供的一个插口,简称为模块; 40.加载模块有两种方法:第一种是通过insmod命令手工将module载入内核;第二种是根据需要载入module;kerneld的主要功能是module载入内核和将它卸载出内核; 41.中断是一个流程,一般经过三个环节:中断相应、中断处理、中断返回;
42.ARM-Linux的系统调用原理:系统调用的过程和中断有类似之处,当CPU遇到自陷指令后,跳转到内核态,操作系统首先保存当前运行的信息,然后根据系统调用号来查找相应的函数去执行,执行完了以后恢复原先保存的运行信息返回,比如通常应用程序所用的fork()函数,它是经过包装的函数,其最终的实现是系统调用;
43.在UNIX系统下有两种方式实现系统调用:通过经过封装的C库或者直接调用;
44.系统调用的过程和中断有类似之处,当CPU遇到自陷指令后,跳转到内核态,操作系统首先保存当前运行的信息,然后根据系统调用号查找相应的函数去执行,执行完了以后恢复原先保存的运行信息返回;通过不同的向量索引可以使CPU立即转入不同的处理程序; 45.init进程是系统所有进程的起点,内核在完成核内参数init=XXX来设置init进程,init进程需要读取/etc/inittab文件作为其行为指针,inittab是以行为为单位的描述性(非执行性)文本; 46.存储文件系统的设备称为block设备(块设备);
47.设备驱动的接口API都是从文件管理器API中继承下来的,所以这些设备API都有open().close().read().write().lseek()和ioctl()等与文件API类似的接口;
48.Linux也使用文件管理器,但是它的文件管理器使用了VFS(虚拟文件系统),正是VFS让Linux能够支持目前多种文件系统。VFS具备访问各种各样的文件系统的能力,也是因为VFS在内部去适应各种不同文件系统的差异,而提供给用户进程的是统一的文件API。49.JFFS2嵌入式文件系统原理:
首先JFFS2是一个日志结构文件系统,包含数据和元数据的节点在闪存上顺序存储。JFFS2定义了三种节点类型:JFFS2_NODETYPE_INODE, JFFS2_NODETYPE_DIRENT,JFFS2_NODETYPE_CLEANMARKER。JFFS2中I节点的信息并没有全部存放在内存,mount操作时,会为节点建立映射表,但是这个映射表并不全部存放在内存中,存放在内存中的节点信息是一个缩小尺寸的结构体。JFFS2使用了多个级别的待回收块队列。JFFS2写平衡策略是在垃圾收集中实现的,垃圾收集的时候会读取系统时间,使用这个系统时间产生一个伪随机数。利用这个伪随机数结合不同的待回收链表选择要进行回收的链表。50.JFFS2克服了JFFS中以下缺点:
(1).使用了基于哈希表的日志节点结构,大大加快了对节点的操作速度;(2).支持数据压缩;
(3).提供了”写平衡”支持;
(4).支持多种节点类型(数据I节点,目录I节点等);(5).提高了对闪存的利用率,降低了内存的消耗;
51.系统调用是操作系统内核和应用程序之间的接口,而设备驱动程序则是操作系统内核和机器硬件之间的接口;
52.Linux支持三类硬件设备:字符设备、块设备、网络设备; 53.Linux内核设备模型的目的和功能:
目的:设备模型提供独立的机制表示设备,并表示其在系统中的拓扑结构,这样使系统具有以下优点:代码重复最小;提供如引用计数这样的统一机制;列举系统中所有设备,观察其状态,查看其连接总线;用树的形式将全部设备结构完整、有效地展现,包括所有总线和内部连接;将设备和对应驱动联系起来,将设备按照类型分类;从树的叶子向根的方向依次遍历,确保以正确顺序关闭各个设备的电源;初衷是为了节能,有助于电源管理,通过建立表示系统设备拓扑关系的树结构,能够在内核中实现智能的电源管理;
功能:将系统中的设备组织成层次结构,然后向用户程序提供内核数据结构信息; 54.同步机制的分类及特点:
(1).同步锁:适用于保持时间段的情况,可以在任何上下文使用,不可以睡眠,任何时候,只能有一个持有者;
(2).信号量:不能用在内核之外,是一种睡眠锁,适用于锁会被长期持有的情况,允许多个持有者;
(3).原子操作:在执行完毕前绝不会被任何其他任何或时间打断,是最小的执行单位,主要用在资源计数上;
(4).完成事件:适用于需要睡眠和唤醒的情景,不会引起资源竞争;
55.表示字符设备的设备文件可以通过”ls-l”命令输出的第一列中的“c”来识别,而块设备则用“b”标识;
56.dev t是一个32位的无符号数,其高12位用来表示主设备号,低20位用来表示次设备号;
Register_chrdev_region()函数和alloc_chrdev_region()函数用于分配设备号,这两个函数最终都会调用_register_chrdev_region()函数来注册一组设备的编号范围,它们的区别是后者是以动态的方式分配的,unregister_chrdev_region()函数则用于释放设备号。Alloc_chrdev_region()函数用于动态申请设备号范围,通过指针参数返回实际分配的起始设备号;
Dev_ti_rdev:对于设备文件而言,此成员包含实际的设备号; Struct cdev *i_cdev:字符设备在内核中是用cdev结构来表示的,此成员是指想cdev结构的指针;
57.I/O接口是微控制器必须具备的最基本外设功能。通常在ARM里,所有I/O都是通用的,称为GPIO(通用输入输出);GPIO接口一般至少会有两个寄存器,即控制寄存器和数据寄存器;
58.同步外设接口是由摩托罗拉公司推出的一种高速的、全双工、同步的串行总线; 59.SPI的工作模式有两种:主模式和从模式;
60.字符设备以字节为单位进行读写,而块设备则以块为单位,块设备的I/O请求都有对应的缓冲区并使用了请求队列对请求进行管理,块设备还支持随机访问,而字符设备只能顺序访问。Linux中每一个块设备里请求都有一个I/O请求队列,每个请求队列都有调度器的插口。
61.Bio是底层对部分块设备的I/O请求描述,其包含了驱动程序执行请求所需的全部信息,通常一个I/O请求对应一个bio。I/O调度器可将联系的bio合并成一个请求。
62.MMC/SD卡驱动结构:a.文件结构;b.块设备驱动;c.MMC/SD核心;d.MMC/SD接口;
第3篇:嵌入式系统相关知识点总结
嵌入式系统的定义及特点
定义:嵌入式系统是以应用为中心、以计算机技术为基础,软、硬件可裁剪,适应于应用系统对功能、可靠性、成本、体积、功耗等方面有特殊要求的专用计算机系统。
特点:(1)嵌入式系统是面向特定应用的。嵌入式系统中的CPU是专门为特定应用设计的,具有低功耗、体积小、集成度高等特点,能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而有利于整个系统设计趋于小型化。
(2)嵌入式系统涉及先进的计算机技术、半导体技术、电子技术、通信和软件等各个行业。是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。
(3)嵌入式系统的硬件和软件都必须具备高度可定制性。
(4)嵌入式系统的生命周期相当长。嵌入式系统和具体应用有机地结合在一起,其升级换代也是和具体产品同步进行的。
(5)嵌入式系统本身并
第4篇:哈工大ARM嵌入式系统考试知识点总结
接VIC部分
一旦产生IRQ中断,微控制器切换到IRQ模式,并跳转到向量表0x0018地址执行指令。一旦产生FIQ中断,微控制器切换到FIQ模式,并跳转到向量表0x001C地址执行指令,然后跳转到FIQ_Handler代码段。
第5篇:嵌入式系统设计的最后知识点总结
系统概念
1、嵌入式系统的定义?
以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。“嵌入”、“专用”、“计算机”
2、嵌入式系统的软、硬件组成?以及主要特点?
软件:从底层到上层:bootloader等系统初始化引导程序、设备驱动层(包括驱动程序、板级支持包BSP等)、操作系统、用户应用程序。(底层为上层提供服务)开发软件:即集成开发环境(asemmbler&&compiler&&linker&&debugger&&loader)硬件组成:核心板+外围板+外设(核心板:微控制器(CPU和外设接口、外设控制器)、电源、时钟、复位、SDRAM、flash。外围板面向外围设备,一般是引脚的集合、电平转换电路。外围设备。),当然也可以将核心