关于嵌入式毕业设计日志范文的文字专题页,提供各类与嵌入式毕业设计日志范文相关的句子数据。我们整理了与嵌入式毕业设计日志范文相关的大量文字资料,以各种维度呈现供您参考。如果嵌入式毕业设计日志范文未能满足您的需求,请善用搜索找到更适合的句子语录。
摘要:嵌入式系统是在传统单片机等技术的基础上发展起来的一项结合硬件和软件应用广泛功能强大的系统。嵌入式系统通过在软件*台编译控制程序并在硬件上运行,嵌入式软件的开发已经在工业各个方面都有很多应用,学*好嵌入式系统开发已成为现在从事电子研发人员必不可少的技能。本次课程设计是基于嵌入式硬件*台,完成了有操作系统的嵌入式系统软件设计,通过在虚拟机*台上使用Linux操作系统实现在该操作系统下多任务程序开发,通过编译下载能够在超级终端显示信息,从而达到课程设计要求。 关键字:嵌入式系统;虚拟机;Linux操作系统;超级终端
目 录
1.设计目的 .........................................................................................................
1 2.设计内容和要求 ..............................................................................................
1 2.1设计的内容 ...............................................................................................
1 2.2 要求 .........................................................................................................
1 3.设计步骤 .........................................................................................................
1 主要步骤和方法 ..............................................................................................
1 3.1数字相框软硬件*台的选择....................................................................
2 3.2数字相框的软件总体设计 .......................................................................
2 3.2.功能模块组织架构图 ..............................................................................
2 4. 环境搭建 ..........................................................................................................
3 5. 运行结果及调试 ...............................................................................................
6 6. 课程设计总结与体会 .......................................................................................
8 参考论文: ...........................................................................................................
正 文
1.设计目的
开设本课程设计的目的是,通过本课程设计,提高学生的分析问题、解决问题的能力,巩固嵌入式系统的基本理论知识,进一步了解和掌握课程中所讲授的概念,方法。同时通过本课程设计,全面综合应用所学过的基础知识,建立一个完整的嵌入式系统的开发过程的概念,并掌握其中的主要原理和方法
本课程设计的目的是通过开发一个消费类电子产品——数字相框,了解嵌入式产品开发的主要步骤,包括需求分析、系统结构设计、图形界面设计、驱动程序、功能优化、系统测试等,从而培养学生独立完成比较复杂的实际系统设计的能力。
2.设计内容和要求
2.1设计的内容
作为一个消费类电子产品,数码相框整个系统要完成的基本功能大致如下: 1、用户界面友好,操作简便。由于该产品的使用者大多是非专业人士,用户界面是否清晰明了、操作是否简捷方便成为用户是否能迅速接受此产品的重要因素。
2、数字相框的功能应包括以下方面:
(1)在LCD屏上全屏循环显示多幅图像文件; (2)根据设定的时间间隔更新图像;
2.2 要求
本课程设计要求学生根据实际应用的特点对产品进行完整的需求分析,形成比较完善的总体设计方案。同时,要求学生具备Linux操作系统下简单的设备驱动程序开发、图形用户接口设计的能力。此外,还要求读者掌握基本的系统功能及性能测试技术,从而具备比较全面的嵌入式应用系统开发能力。
3.设计步骤
主要步骤和方法
根据数字相框的主要特点和设计功能那个要求,我们将课设分为以下几个步骤:
3.1、数字相框软硬件*台的选择
性能方面,由于数字图像的解码算法比较复杂,而且大量图片需要从外部Flash存储器中读取,所以对嵌入式微处理器的性能要求比较高。外部接口方面,该芯片最好能在外围直接支持CF卡的Compact Flash接口,还应提供按钮、LCD显示屏、触摸屏、声音输出通道等。在本课程设计中,采用了Intel的PXA270作为微处理器,完全能满足上述硬件*台的要求。
数字相框属于消费类电子产品,对价格比较敏感,而嵌入式Linux操作系统上有比较丰富的软件资源、驱动程序和开发工具,因此本课程设计采用嵌入式Linux作为软件开发*台。在Linux操作系统*台上有多种嵌入式图形界面开发工具可供使用,主要包括MicroWindows、MuniGUI、TinyX和Qt/Embedded等几种。本课程设计将集中讨论在Qt/Embedded系统上数字相框的实现技术,当然也可以通过其他图形开发界面工具实现数字相框功能。
3.2、数字相框的软件总体设计
数字相框软件系统功能可以划分为三个模块: 1)图片浏览模块。2)播放模块,对浏览界面选定的图片进行循环播放。
4.环境搭建
将Linux和开发板的系统搭建好之后,拔掉计算机主机箱网线后,用网线将主机箱和开发板连接,并将串口连接,将开发板电源连接上,启动开发板。然后配置Internet协议,让开发板连接到电脑。配置Internet属性如图所示:
在SHARE共享文件中新建文件夹,将要编辑的图片和音乐和编辑文件放入其中,如图所示:
首先来谈谈嵌入式系统发展前景。嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。像我们*常常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3 Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等都是典型的嵌入式系统。
随着硬件电子技术的发展,在当前,微处理器的种类越来越多,而与外设接口以及I/O接口的标准越来越统一,但是主流的嵌入式微处理器主要有ARM架构、X86架构、MIPS架构以及POWERPC架构点呢过。由于嵌入式系统的微处理器种类众多,所以在进行嵌入式系统开发的过程中,根据实际的应用进行选型。
在嵌入式系统开发的早期,由于硬件设备的局限,很多嵌入式系统是没有操作系统的,也就是我们常说的“跑裸机”,裸机运行的嵌入式系统功能较少,而且相应应用程序的开发难度是很高,不能够满足当前嵌入式的发展。在当前,随着硬件技术的不断发展,为嵌入式系统配置上相应的操作系统成为可能,在当前,使用较多的有linux系统、unix系统、ios系统、palm系统。
在当前,嵌入式系统主要有如下几个应用领域:
(一)手机领域
在当前,iphone手机风靡全世界,iphone手机无论在硬件功能还是软件功能上都十分强大,而iphone手机就是嵌入式技术发展的产物,iphone成功的秘诀就是在于完美的工业设计和嵌入式技术结合的产物。早在iphone问世之前,美国的palm公司就一开嵌入式系统在移动通信领域的先河,先后开发出palm 650、palm 680、palm centro以及web os系列等优秀手机,为很多工程人员和商务人士提供了巨大的方便。而当前iphone取得的成绩更为辉煌,ios系统的'应用软件有数十万之多,而苹果较之安卓、windows phone等手机操作系统最为不同的是,苹果手机的硬件和软件的匹配度最高。
(二)国防领域
随着嵌入式系统的发展,以及信息技术的不断发展,世界各国的国防研究领域为了在国防技术上寻求突破,相继在众多的军事设备中使用了嵌入式系统,如:战斗机、潜艇、导弹上使用的导航系统,空军使用的仿真设备,海军使用的海图设备等。在当前,嵌入式系统正为国防贡献这自己的宝贵力量。
作为一名小学英语教师,如何在此刻的岗位上发光发热,如何让学生在有限的课堂时光里学好英语这门语言,教育教学中有太多的东西值得我去深思,去探索。透过八年的工作实践,然后我认识到,小学英语教学不就应只满足于对单词、句型的概念化解释和程序化分析,那样只会使教学资料*淡、课堂气氛沉闷,使学生不能全身心地投入到英语学*中来,使他们原有的兴趣和信心很快丧失殆尽。那么,怎样才能做好小学英语的教学工作呢?以下是我教学过程中的几点体会和心得:
一、勇创双语教学特色,营造英语氛围。
1、在教学过程中尽可能少地说汉语,而是以英语为主体,利用手势、眼神、动作、音调等辅助手段来帮忙学生理解教学资料;并且在教学过程中创设各种情景对话,透过直接的语言交流来帮忙学生建立语感。透过这种方式组织教学,能增加学生的语言实践机会,营造语言氛围,培养学生直接用英语思维、表达的*惯。
2、英语作为一种语言,其教学就应融入必须的情境之中。可透过课堂表演来创造必须的语言环境,给孩子营造一方自由发展、自由发挥的天地;并且可为学生带给自主学*和交流的机会,给每位学生自我表现和自我发展的时光和空间。
3、鼓励学生透过参与体验、实践、合作、探索等方式,发展听、说、读、写的综合潜力和整体素质。要求学生在学校见到老师、同学,用英语打招呼;在英语课堂,尽可能用英语进行交流;然后在课外,也要鼓励孩子们尽可能使用英语。把英语教学融入日常生活中的各个环节,让学*成为生活的一部分,让生活成为学*的延续。
4、反馈信息、即时巩固。英语的听、说训练必须要做到反馈及时。在教学中,学生对刚学的资料记忆犹新,印象深刻,但若不及时巩固,不仅仅会很快遗忘,而且会使学生在听、说中的`错误与偏差得不到及时纠正,以至构成错误的思维定势和语言*惯。
二、 关注学生情感,创造宽松、民主、和谐的教学氛围。
1、尊重每个学生,鼓励他们用心尝试,及时发现他们的进步并给予相应的表扬,然后保护他们的自尊心和用心性。
2、创设各种合作学*活动,促进学生互相学*、互相帮忙、体验成功、合作发展。
3、关注后进生和性格内向的学生,尽可能为他们带给正确表现自我的机会,让每一次小小的突破成为他们进步的基石。
4、建立融洽的师生关系,经常和学生一齐交流和探索,了解学生所想所需,然后做到教学相长。
三、加强学*方法指导,帮忙学生学会学*。
1、用心创造条件,让每个学生都参与到学*活动中来。
2、结合语言情境,让学生透过实践和运用来深化学*。
3、进行自我评价,根据各自的不一样状况进行查漏补缺。
四、实行激励评价,使学生树立学*英语的信心。
1、注重教师的客观性评价,对学生学*过程中的点滴进步给予及时的肯定和激励。
2、重视学生的主观性评价,让学生透过分析,透过比较,认识自我的优势和不足,然后明确努力的方向。
小学英语教学的目标是要透过听、说、读、写训练,帮忙学生学会如何正确使用英语,并具备必须的英语口头表达潜力。这一主线贯穿整个教学的全过程。其中,听、说训练尤为重要,训练的途径也是多样化的。儿童学*外语的方式、资料与成年人就应有所不一样。他们喜欢玩,喜欢唱歌、画画,喜欢表演和游戏;他们喜欢动手操作,喜欢探究和想象。所以,英语教学务必根据学生的年龄阶段和性格特征,因材施教,因人施教;并且在教学过程中要联系实际,不断探索、不断实践、然后不断反思,这样才能在教育教学中不断进步和完善。
嵌入式心得体会
我们得到了一些心得体会以后,有这样的时机,要好好记录下来,这样可以不断更新自己的想法。是不是无从下笔、没有头绪?以下是小编为大家整理的嵌入式心得体会,仅供参考,大家一起来看看吧。
本人本科学的是电子信息工程专业,其实这个专业和嵌入式没有多大的关系,要说有关系就是简单的讲了下C语言语法,学完之后还不知道什么是C语言,只记住了char,int,long等占几个字节,if, while,for循环什么的,感觉也就能算一些小学就会的题目,全国计算机二级C语言也就糊涂的过了。我这个专业没学过C++,一开始不知道什么是面向对象,这可能会让人笑话了。不过这说的是实话,本科的时候,学院安排的课程大部分偏硬件部分,动手机会比较多,自然而然比较喜欢硬件方面。
在大二的时候就听学长说,单片机很难学,那时候经学长介绍,淘宝买了本郭天祥老师出的书《51单片机C语言教程》,一开始还真是不怎么懂,感觉有点像是看天书,然后硬着头皮去看,当我把51的结构看完了,就不像一开始那样一头雾水了,自己在纸上把51的结构图默画一遍,然后再把各个寄存器功能写一下,各个功能口的结构粗略画了下,然后觉得51整体已在我心中了,虽然没有什么作用,但是至少懂得这门课要怎么去学*。其实有些时候不是这个东西你不会,而是在不会的时候自己先告诉自己这个太难了,自己先放弃了。
在大三的时候,第一学期课比较少,我就经常待在图书馆,会去蛮看些专业相关的书籍,现在想想,那时候也是机缘巧合下,看到了一本书《从51到ARM》,讲述的是从51系列单片机的一般知识出发,将arm处理器和51系列单片机进行对比,引导读者去理解和学*arm处理器的知识。那个时候也有考虑到以后就业的问题,就想到一件事情,如果去应聘工作的话,每个工科院校电子信息类的毕业生都会异口同声地说:我会51系列单片机。当他说这句话的时候,他和别人是站在同一起跑线上的。可我们完全有可能和别人不站在同一起跑线上。正是这本书给我开启了另外一扇大门,让我初步了解了嵌入式。后来去报考全国计算机等级考试三级教程——嵌入式系统开发技术,在图书馆奋斗了两个月,最后取得优秀的成绩,也让我进一步了解嵌入式系统。
在大四的时候,我们有嵌入式的选修课,不过当时因为考研的缘故,就没有去上过这门课,好可惜呀!但是,在选择读研研究方向的时候我还是毅然选择了嵌入式方向,我知道这将成为我未来三年研究的方向。这学期(研一下学期),很开心能够再次接触嵌入式系统这门课程,对于导师教的这门课程,我觉得自己上课还是蛮认真听讲的,当然也被师在台上那讲得头头是道,温文儒雅的风姿所吸引。对于没有学过微机8086的我,有些时候,老师用微机与嵌入式的对比让我头脑没有相关概念...
首先,我对嵌入式在概念上有了一个比较精确的了解。嵌入式是指以应用为中心,以计算机为基础,并且软硬件可裁剪,适用于对功能、可靠性、成本、体积和功耗有严格要求的专用计算机系统。它由硬件*台和系统软件组成。硬件*台指嵌入式处理器和与之通过接口连接的外围硬件*台。系统软件是指实时操作系统和用户应用软件。
谈到硬件部分,我首先想到的是嵌入式处理器那些外围功能模块。对于这部分的学*,我当初花了好长时间看《深入浅出ARM7——LPC2400》这本书,现在想想觉得自己学*方法没用对,完全没有那个必要,自己却花了大把时间在看这些寄存器引脚的使用,因为单纯的看过之后还是很容易忘的,之后在进行实验的时候还是翻书来查就证明了这一点。不过一些最基本的模块,例如通用输入/输出口(GPIO),通用异步收发器(UART),向量中断控制器(VIC),外部中断输入和定时器/计数器还是需要看书认真去记住那些常用的引脚功能。对于CPU异常这部分,我一开始以为异常就是中断,因为处理程序流程设计是相似的,都是请求处理器打断正常的程序执行流程,进入特定程序的一种机制。当时还对老师提出的一个看法有点疑义,51可以处理中断嵌套而ARM处理器却不能?我当时脑子里面就在想:中断不都是有硬件设备产生的,那按常理来讲ARM处理器也可以处理的呀。后来在认真查书,发现CPU异常有7种:复位,数据中止,中断,快中断,预取中止,未定义,软件中断。而异常向量会使CPU转入异常入口地址执行程序,开始了异常处理。同理的话,中断向量使CPU转入中断入口地址执行程序,开始了中断处理。即当发生IRQ中断时,程序返回地址被存入该IRQ中断模式下的LR,如果继续发生IRQ中断,那第二次的中断返回地址也还是被存入该IRQ中断模式下的LR中,那先前发生中断时候存入的程序返回地址将被覆盖掉,导致不能返回正确的位置。在我解决这个问题的期间,每次睡前思维准会定格在这问题上,久久不能绕出来,其实有时候查书还是最好的解决方案,因为网络资源只能提供给我们部分的参考资料。
对于ARM汇编语言这部分的学*,我认为是需要重视的,学汇编不是说用这语言做多牛逼的事情, 问题的关键在于, 学透了汇编会使你真正理解计算机。另外一方面,只要以后在嵌入式工作中你迟早会在某个阴暗的角落里遇到汇编。“不管你承认不承认, 现在的CPU没有直接跑高级语言的, 哪怕是虚拟机也都是类似汇编的指令集.当遇到崩溃分析, 性能优化甚至编译器抽风等等的时候, 汇编是你最后一根救命稻草(这句话是福来师兄讲的)。”为此他给了我们一份资料,周立功lpc21xx/lpc22xx系列ARM7启动代码分析,主要讲述的是startup.s文件的分析,看了下才发现老师上课讲的那个启动代码分析很多不理解之处这里都有详细的介绍,这分析太精辟了。
学 ARM7这么久,我认为从硬件上讲,一方面就是学*接口电路设计,另一方面就是学*汇编和C语言的板级编程。如果从软件上讲,就是要学*基于ARM处理器的操作系统层面 的驱动和移植。这些对于我们初学者来说必须明确,要么从硬件着手开始学,要么从操作系统的熟悉到应用开始学,但不管学什么,只要不是纯的操作系统级,硬件的寄存器类的东西还是要能看懂的,基于板级的汇编和C编程还是要会的。
μC/OS-II 是一种基于优先级的抢占式多任务实时操作系统,包含了实时内核、任务管理、时间管理、任务间通信同步(信号量,邮箱,消息队列)和内存管理等功能。它可以使各个任务独立工作,互不干涉,很容易实现准时而且无误执行,使实时应用程序的设计和扩展变得容易,使应用程序的设计过程大为减化。μC /OS-II是一个完整的、可移植、可固化、可裁剪的占先式实时多任务内核。μC/OS-II绝大部分的代码是用ANSI的C语言编写的,包含一小部分汇编代码,使之可供不同架构的微处理器使用。
μC/OS-II可以大致分成内核结构、任务管理、时间管理、任务之间通信与同步4个部分。内核结构是操作系统的处理核心,包括操作系统初始化、操作系统运行、中断进出的前导、时钟节拍、任务调度、事件处理等多部分。任务管理部分中的内容都是与任务的操作密切相关的。包括任务的建立、删除、挂起、恢复等等。因为μC/OS-II是以任务为基本单位调度的,所以这部分内容也相当重要。μC/OS-II中的最小时钟单位是timetick(时钟节拍),任务延时等操作是在时间管理这部分完成的。任务之间通信与同步为事件处理部分,包括信号量、邮箱、邮箱队列、事件标志等部分;主要用于任务间的互相联系和对临界资源的访问。μC/OS-Ⅱ操作系统是在main()中建立的,首先要系统初始化,OSInit(),初始化系统所有的变量和数据结构。然后进行任务的创建,OSTaskCreate();之后进行多任务的启动,OSStart()。在进行任务的并行处理的时候,一个任务的程序是顺序执行的,而不同任务的程序却是并行执行的。从应用程序的观点来看,此处的并行处理只是一个假象。而实际上它是通过实时操作系统的内核控制任务之间的切换来实现的,也就是任务调度啦。
μCOS-Ⅱ总是运行进入就绪态任务中优先级最高的那一个。当创建新任务时,或当前任务调用一些可能把自己挂起的系统函数(如OSMBoxPend)时,内核就要进行任务切换。在上述的场合,任务级的调度是由函数OSSched()完成的。
在一个多任务的应用工程中,任务之间并不是完全独立的,它们存在一些需相互配合的处理,这些相互配合是靠任务间的通讯或同步,信号量、邮箱、消息队列可以实现这种任务与任务,任务与中断服务函数间的通讯与同步。
邮箱可以使一个任务或者中断服务子程序向另一个任务发送一个指针型的变量。而信号量不可以,其只能发送信号量。消息队列可以使一个任务或者中断服务子程序向另一个任务发送以指针方式定义的变量。因具体的应用有所不同,每个指针指向的数据结构变量也有所不同,实际上,我们可以将消息队列看作多个邮箱组成的数组,只是它们共用一个等待任务列表。
我们实验所用的ARM开发工具是ADS1.2。ARMADS全称为ARM Developer Suite,是ARM公司推出的新一代ARM集成开发工具。现在ADS的最新版本是1.2,支持软件调试及JTAG硬件仿真调试、支持汇编、C语言、C++源程序,具有编译效率高、系统库功能强等特点。在安装ADS1.2的时候出现过小问题,当时我的电脑是64位的,安装完之后显示不了,后来百度查找到原因,竟然是文件夹放错地方,应该放在Program Files(x86)这个文件夹中。后来有同学问我这方面的问题,但是发现他们的ADS1.2安装不了的原因是因为Licence弄错了。在打开CodeWarrior for ARM Developer Suite的时候,一定要记得选DebugInChipRAM,否则Make都出现很多error,而且那些几乎都是未定义函数的错误。之后就进行Debug,调试成功之后会跳出AXD的界面,选择Options里面的ConfigureTarget,再添加H-JTAG的文件,之后点击GO,程序会跳出汇编语言的界面,再点击下就跳到C语言程序入口地址,之后再点击下GO,程序就开始跑起来。前面所述的这些步骤是理想情况下程序自身没有发生错误,当然在调试过程中,还是有很多硬件上的问题,一方面是有些开发板可能用久了,用JTAG并口连接的时候接触不良,很容易自动掉线,常出现未连接设备的的Error,还有一方面是跑程序过程常会出现兼容性的问题,导致程序AXD调试时候会出现卡在某个部分一直进入死循环,这个后来是解决了,但是偶尔还是会出现这个BUG。
通过这学期对嵌入式的学*,我发现自己尚未掌握的知识点还是蛮多的,尤其是对μC/OS-II的移植方面,我只是理论上粗略了解,没有经过实验的操作。还有对存储器加速模块(MAM)这方面不够了解,主要一方面当初在做消息队列采集实验(KeySem_SampdataQeue),这个模块被代替掉,不需要使用它,所以后来也没有去掌握相关知识点。对于任务就绪算法这部分,我只是上课的时候听“懂”了,课后自己再看完全懵了。对于CAN总线调试的部分,老师上课没有讲到这部分的介绍与应用,但是后来通过自己对实验室师兄们所做的课题初步了解,发现我自己有必要去弄懂它的构造和原理。
“看书不要希望一次就会,一次就明白是什么意思,也不要死记硬背,看不明白也没关系,以后遇到了知道去哪里去找就可以了,以后遇到的多了,也就记住了,遇到的少的,忘记也就忘记了。”依然记得当初不懂怎么解决某个问题的时候请教李硕师兄,师兄对我说的这番话。自己在μC/OS-II这部分内容挣扎了好久,现在想想,觉得当初不应该一上来就直接阅读内核源代码,看了一些自己把头撞破也想不明白的事,这样直接正面打击我学*嵌入式的积极性。学*啊,还是得要循序渐进。如果你想学*嵌入式一定要有块学*板。看再多的视频,看再多的书,也不如自己动手试一下,看着很简单的东西,做起来就可能遇到很多的问题,遇到问题找到原因,解决问题,只有这样才能学到东西。记得我第一次仿写led的驱动,想自己试一下,可是自己一试,就出了好多的问题,那个led弄了我一天才把led灯点亮。所以不要眼高手低。
对于初学者,有一点小建议,我们拿到一个开发板,很兴奋也很激动,想法自然也很多,想用开发板实现自己的这个想法,实现那个想法,然后又不知道从何下手,然后就去论坛中发一个贴,最后等着别人去回复,当见没人回复就开始抱怨。这种做法是不可取的,有想法是好的,我们要实现自己的想法也是有前提的,首先,我们对这部分知识了解吗?如果不了解就去google一下(最好别用百度,不太好用),了解了一些,也就大概知道要怎么做了。如果再遇到问题,再去发贴问,这样也显得咱们有水*。比如自己连串口是什么都不太清楚呢,就问串口通信怎么做啊,就是人家把代码给咱,咱也不明白是怎么回事啊。见多识广,熟能生巧。多看代码,要从代码中读出代码的意思来。自己*时也要多写代码,多练*(这一点我做的不好,写的少)。
最后,我想说的是嵌入式系统的学*和研究一旦我们达到了一定的水*后,其实很简单,就是如何去看CPU和相关芯片的Datasheet!
8月我参加了学校安排的课题实训,基地在北京,学院安排我们集体坐火车一同前去,浩浩荡荡的队伍开始出发了。刚来北京的时候,映入眼绵的都是高楼大厦,一直想到的地方终于到了,好多以前的同学听说我要去北京实训都很羡慕不已,我自己也隐隐感到自豪。
我参加的课题实训是嵌入式方向的,开课的内容主要是嵌入式开发方面的,C语言,数据结构,LINUX基本操作,网络编程,操作系统和汇编语言,这些都是嵌入式不可缺少的。
每个专业技能都决定了你以后找工过。我们班分了很多小组,每组都有小组长,小组长直接对我们负责。教课老师很认真,都是从很基础的开始讲;同学们听课也很认真,由于代码操作比较多,键盘的声音源源不断的在响。好久没有感觉到这种浓重的学*气氛了,而在这紧张而充实的学*氛围中我获益匪浅,感受颇多。
授课过程中老师们也传授了一些找工作方面的经验,比如简介的样式和写法,面试中的一些着装,礼貌用语和技巧,对此基地的老师还精心的为我们安排了一场模拟面试,在其中我们学到了很多有关于面试方面的经验。
通过这几个月的实训我学到了很多,同时也让我们意识到我们要学的更多。从程序的设计到编写、画图、调试、修改、完善、到最后的实训报告,每个人都付出了时间和精力去做好自己的任务帮助队友,所以团队的合作和队友之间的相互协助非常重要。
通过实训让我们更深一步的对自己的专业,对自己的能力,对自己所学的有正确的认识,并且能在以后的学*工作中不断提高和完善自己。特别是讲C语言和进程通信中老师给了我们每个小组的几个小项目,让我学到了更多项目经验,这在学校之前是没有的。这次实训也碰到了些问题,比如项目文档的写法,代码的规范,流程图的画法,这些都有讲究,在老师和同学的帮助下,我不断的提高了在这些方面的学*。
生活上班主任郭老师和王老师对我们关怀备至,让我们没有感觉在外面的那种不适感,同学们也互帮互助,所以生活上大致没什么问题,这让我们更好的去学专业。很感谢学校有这样的实训安排。
总的来说,这次实训还是比较成功的,无论是个人动手能力还是团队协作能力都得到了很好的锻炼。在实训过程中老师也交给我们很多简单实用的技巧。我们也学到了,做好做对一个项目固然重要,同时美观程度也是必不可少的,无论是从参观者的角度还是自己看的角度都很重要。
现在嵌入式做为计算机发展的一个新的方向越来越得到社会的重视。随之而来的是很多培训班的诞生,但是如何能在琳琅满目的培训机构中找到一个能真正学到东西的培训班呢,这是摆在众多想学嵌入式的人面前的第一个问题。我在了解了众多培训机构并且试听之后,最终选择了Tocore嵌入式培训,之所以选择,是因为我看重老师的实际能力和认真负责的态度。我非常荣幸能够成为Tocore中的一员。
嵌入式开发,做为一个新的计算机发展方向,已经越来越受到社会的重视,社会上的需要也十分巨大,可是真正懂得嵌入式开发的人才缺不是很多,归结去原因主要是一下几个方面:
一:因为它是新兴的一个发展方向,懂得的人自然不多。
二:学*嵌入式需要比较庞杂的知识结构。操作系统、微机原理、C/C++语言、数据结构等。
三:嵌入式学*,上手很困难,不知道从哪里着手去学*。
在刚开始接触的时候,我也是抱着本书,自己摸索,可是越看越迷茫,连很多书里的名词都不知道是什么意思,去网上查也没有得到答案。可是在Tocore我得到了很好的指点,在这里,由于老师都是十分有经验的项目经理,他们懂得如何去学*,从哪里开始入手,这对于我这样的背景知识比较薄弱又接触时间比较短的人来说实在是太有帮助了。
虽然课程还没有完,可是在这段时间的学*中,我按照老师的指导在完善的课程体系下进行系统的学*,已经掌握了U-boot、kernel以及linux移植的基本框架,(我想在今后的学*中一定会对这些知识更加熟悉以至精通!)这对于2个月前什么都不懂的我来说已经是很大的提高了!用得是ARM9的板子,这也是市场上现在比较新的,比较流行的板子,很多公司在实际的产品开发中就用的是ARM9。在课堂上,老师的讲解和我们的练*相结合,理论联系实际。老师除了讲解知识外,还结合了大量的实际案例和操作,这对于我对问题的理解和知识的记忆有很大帮助。
最后谈谈对学*态度的一点看法。嵌入式学*,是比较耗时的,前期需要很多知识做铺垫,有很多人在这个过程中走了不少弯路,于是开始失去耐心、失去信心,以至最终放弃学*。所以我想有必要强调一下问题,在刚开始的时候,自己什么都不懂,可是学*的愿望很强烈,每次上课都希望上完课就能如何如何,可是下来发现自己好像离自己原本的目标还很远,于是心里着急,自己跑到网上搜了很多资料,每天乱看,可是并没有很大的帮助。我想说的是,学*嵌入式一定要有耐心和毅力,不能急躁,按照课程的安排自己多做一些总结和练*,等到知识慢慢的积累下来就会有一种豁然开朗的感觉。
最后希望每个想学*和热爱linux的人都能学有所成!
首先,嵌入式系统是以应用为中心,以计算机技术为基础,且软硬件可裁减,适应应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。嵌入式有如下几个突出的有点:
1、系统内核小。
2、专用性强。
3、系统精简。
4、高实时性OS。
5、嵌入式系统的应用程序可以没有操作系统直接在芯片上运行。
6、嵌入式系统需要开发工具和环境。
嵌入式系统是*几年才风靡起来的,但是这个概念并非新*才出现。从20世纪七十年代单片机(最早的单片机是Intel公司的8048,出现在1976年)的出现到今天各式各样的嵌入式微处理器,微控制器的大规模应用,嵌入式系统已经有了*30年的发展历史。经过30年的发展,嵌入式技术已经日趋成熟,在*嵌入式机一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。
其次,嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。
嵌入式系统是软硬结合的学科,通常有两类人会去专研嵌入式:一类是学电子工程、通信工程等偏硬件专业的,另一类是学软件、计算机专业出身的人,主要从事嵌入式操作系统和应用软件的开发。我是软件专业的学*嵌入式,越是智能设备越是复杂系统,软件越起关键作用,而且这是目前的趋势。嵌入式应用在很多方面,具体的可以分为工业控制,交通管理,信息家电,家庭智能管理系统,POS网络及电子商务,环境工程与自然,机器人,机电产品方面应用等方面。其中目前在服务领域,如远程点菜器等已经体现了嵌入式系统的优势。例外还有很多地方用到了嵌入式系统,最*飞利浦和ARM共同推出32位RISC嵌入式控制器,适用于工业控制,采用最先进的0.18微米CMOS嵌入式闪存处理技术,操作电压可以低至1.2伏,它还能降低25%到30%的制造成本,在工业领域中对最终用户而言是一套极具成本效益的解决方案。
我们学*的课本是嵌入式系统应用教程。我学*的体会是这样的:
开始时,由于是刚刚入门,对老师说的好多东西很好奇,列如C语言也是新鲜的,不过不太懂什么意思。但是慢慢的,了解深入后让我有了更深的感触和体会。在嵌入式的学*过程中,让我了解了什么是嵌入式系统。它就是以应用为中心,以计算机技术为基础,软硬件可定制,适用于不同应用场合,对功能、可靠性、成本、体积、功耗有严格要求的计算机系统。他一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统、用户应用程序四个部分组成,用于实现对其他设备的控制、监视或管理功能。嵌入式系统已经应用于科学研究、工业控制、军事技术、交通通信、医疗卫生、消费娱乐等领域,人们日常使用的手机、PDA、汽车、智能家电、GPS等均是嵌入式系统的典型代表。
在学*命令的过程中,只要你认真的看着老师操作还有认真听着他讲,你就会发现有些命令的操作还是很简单的,不过在操作的过程中,有时也会遇到困难,有时你按照书上学*的例子,命令输入终端时会出现你不想要的结果,也就是错误的结果。这是问问旁边的同学或是懂得的同学就可以解决了。
在对于这部分的学*中,让我知道了命令对于嵌入式的重要性。它是linux的重要内容,linux中所有的功能都是通过命令执行。在实际应用中,为了减少系统开销,经常不使用图形界面,此时,对系统的所有操作都需要以命令方式来执行。在嵌入式系统开发过程中,由于目标机的性能和配置比较低,因此,一般情况下标机仅具有命令窗口而没有图形界面,对目标机的所有操作都通过命令来实现。还有的那就是进一步学*与嵌入式系统开发相关的linux的服务,他们的启动、设置等的操作和应用。而在学*之中,我们主要介绍的是嵌入式系统中开发工程使用的TFTP、Telent和NFS服务。第一个实现的是上机位与下机位之间文件的传输、无磁盘网络设备的启动等功能;第二个实现的是远程登录功能;第三个实现的是网络文件系统功能。
学期开始,我们开始学*《嵌入式系统及应用》,由于初次接触嵌入式系统,感觉蛮难的,所以收获不是很大,很多的概念都比较模糊,等到学期结束开始做嵌入式课程设计时,真是茫然无从下手,自从拿到设计主题后,我就像热锅上的蚂蚁,一个字"急"。最后实在没有办法,逼着自己去学*,查资料,总算对嵌入式有了浅层理解。
嵌入式系统本身是一个相对模糊的定义,一个手持的Mp3和一个pC104的微型工业控制计算机都可以认为是嵌入式系统。总体来说,嵌入式系统是"用于控制,监视或者辅助操作机器和设备的装备"。
一个典型的桌面Linux系统包括3个主要的软件层———linux内核、C库和应用程序代码。内核是唯一可以完全控制硬件的层,内核驱动程序代表应用程序与硬件之间进行会话。内核之上是C库,负责把pOSIXApI转换为内核可以识别的'形式,然后调用内核,从应用程序向内核传递参数。应用程序依靠驱动内核来完成特定的任务。
在了解了基础知识之后,我开始进行上机操作,当然,其中遇到很多的难题,很多东西都是第一次接触,又没有别人在旁边指导操作,完全凭借自己去摸索练*。其中的困难可想而知。
然而坚持就是胜利,牙一咬眼一闭坚持做下去,而通过本次实验,我感觉收获还是蛮多的。可能我对于嵌入式的知识学*的还是不太多,但是这之外的东西收获颇丰。
它让我学会了如何通过自己的努力去认知一个新事物,更重要的是端正自己的学*态度,只有真正下功夫去学*,才能有收获,正所谓"一份耕耘,一份收获。"没有付出,何谈回报呢?
再者,通过本次实验,我也学会了如何去分析问题,如何找出自己设计中的不足,继而去排除解决问题,这就是一个自我学*的过程。当我们通过实验去学*理论知识时,自己动手得出的结论,不仅能加深我们对嵌入式的理解,更能加深我们对此的记忆。
当然,在这其中,我也发现自己的许多不足之处,由于学期伊始我没有好好学*,才落到如此地步,这也可以说是一个教训吧!我相信在以后的学*工作中,我一定会端正自己的学*态度,一丝不苟的去对待每一件事。只有做好足够的准备,才能事半功倍!
一、嵌入式的概述:
随着信息化技术的发展和数字化产品的普及,以计算机技术、芯片技术和软件技术为核心的嵌入式系统再度成为当前研究和应用的热点,通信、计算机、消费电子技术(3C)合一的趋势正在逐步形成,无所不在的网络和无所不在的计算(everything connecting, everywhere computing)正在将人类带入一个崭新的信息社会。
二、实*目的
学*和了解了嵌入式在生活中的重要作用和发展过程,熟练掌握ARM硬件体系结构,熟悉linux下的嵌入式编程流程,积累自己的软件编写经验,能够参与并实现一个真实和完整的嵌入式项目,为今后的学*和将从事的技术工作打下坚实的基础
三、实*任务
第一阶段Linux操作和编程基础
主要介绍Linux的基本命令和基础编程知识,包括Linux的文件操作和目录操作命令,VI编辑器,GCC编译器,GDB调试器和Make项目管理工具等知识。
第二阶段 嵌入式C语言编程基础
主要介绍在嵌入式开发编程中C语言的重要概念和编程技巧中的重点难点,以复*串讲和实例分析的形式,重点介绍包括函数与程序结构,指针、数组和链表,库函数的使用等知识。
第三阶段Linux上C强化编程训练
主要包括整数算法训练,递归和栈编程训练,位操作训练,指针训练,字符串训练和常用C库函数编程接口实践,强化学员对Linux下基本编程开发的理解和编码调试的能力。
第四阶段 Linux环境高级编程及项目开发编程实践
主要包括系统编程(信号/系统调用/管道/FIFO/消息队列/共享内存等),文件I/O编程(文件描述符/文件读写接口/原子操作/阻塞与非阻塞IO等,多任务和多线程编程(进程标识/ 用户标识/fork与vfork/多线程概念/线程同步等),网络编程(网络基本概念/套接口编程/网络字节次序/Client/Server结构/UDP编程);掌握Linux下Socket编程的开发流程,熟悉网络编程的调用接口函数和相关数据结构,使学员初步具备在Linux上进行系统编程开发的能力。同时综合之前所学内容和编程技术,以小组为单位进行一个团队合作项目的开发,考核内容包括文件I/O编程,多线程编程,网络编程和项目文档编写。
第五阶段嵌入式处理器体系结构及编程实践
主要介绍ARM体系结构及其基本编程知识,包括指令分类,寻址方式、指令集、存储系统、异常中断处理、汇编语言以及C++和汇编语言的混合编程等知识。同时结合ARM嵌入式开发板硬件设计原理和基本硬件设计流程,分析各种外设的工作原理和驱动机制,并自己动手实践完成一个ARM开发板上的编程大作业。
第六阶段嵌入式Linux开发基础及高级应用
主要介绍嵌入式Linux开发应用程序的基本流程和知识,包括嵌入式Linux基本概念和开发流程、Bootloader工作原理、内核裁减配置和交叉编译、根文件系统制作、网络编程以及图形界面和数据库开发等知识。同时独立完成一个基于嵌入式Linux GUI的应用编程大作业。
第七阶段嵌入式 Linux驱动理论及驱动程序开发实践
主要介绍嵌入式Linux上驱动程序开发规范,包括设备驱动程序概念、字符设备驱动程序、块设备与网络设备、网卡驱动以及常用嵌入式设备驱动开发等知识。同时独立实现两种嵌入式设备驱动程序的编写,包括驱动模块的调试和加载以及完整的项目开发文档的编写。
第八阶段嵌入式Linux项目团队开发实践锻炼
主要包括设计并实现一个真实和完整的嵌入式项目的开发流程,涉及到数据采集、网络通讯、图形用户界面显示以及嵌入式数据库存储系统等多种嵌入式Linux编程技术。要求学员建立起团队开发和协同工作的企业项目开发模式的概念和流程,强化学员对编写项目概要设计文档和详细设计文档的理解,为就业前的职业技能和素质训练做好充分准备。
四、实*内容
1、 嵌入式的历史与现状
虽然嵌入式系统是*几年才开始真正风靡起来的,但事实上嵌入式这个概念却很早就已经存在了,从上个世纪70年代单片机的出现到今天各种嵌入式微处理器、微控制器的广泛应用,嵌入式系统少说也有了*30年的历史。纵观嵌入式系统的发展历程,大致经历了以下四个阶段:
无操作系统阶段
嵌入式系统最初的应用是基于单片机的,大多以可编程控制器的形式出现,具有监测、伺服、设备指示等功能,通常应用于各类工业控制和飞机、导弹等武器装备中,一般没有操作系统的支持,只能通过汇编语言对系统进行直接控制,运行结束后再清除内存。这些装置虽然已经初步具备了嵌入式的应用特点,但仅仅只是使用8位的CPU芯片来执行一些单线程的程序,因此严格地说还谈不上"系统"的概念。
这一阶段嵌入式系统的主要特点是:系统结构和功能相对单一,处理效率较低,存储容量较小,几乎没有用户接口。由于这种嵌入式系统使用简便、价格低廉,因而曾经在工业控制领域中得到了非常广泛的应用,但却无法满足现今对执行效率、存储容量都有较高要求的信息家电等场合的需要。
ARM嵌入式系统综合设计
一、实*时间和地点安排
1、实*时间:20XX年12月03 日 —— 20XX年12月14日,共两周的时间。
2、每天的实*时间安排:
上午:8:30——11:30
下午:13:30——15:30
3、实*地点:校内。
二、实*目的
1、掌握电子元器件的焊接原理和方法。
2、掌握ARM7 LPC2132控制程序的编写方法。
3、掌握调试软件和硬件的方法。
三、实*内容与要求
1、根据设计要求焊接好电路板并测试焊接无误。
2、绘制流程图并编写程序。
3、编译通过后,将程序下载到LPC2132进行调试。
4、调试成功后编写实*报告。
嵌入式软件开发个人简历
时间过得太快,让人猝不及防,我们又将面临求职找工作的挑战,是时候静下心来写一份简历了哦。那么优秀的简历都是怎么写的呢?下面是小编精心整理的嵌入式软件开发个人简历,仅供参考,希望能够帮助到大家。
基本信息
姓名:
性别:
出生日期:
民族:汉
户籍:黑龙江省饶河县
现居住地:北京海淀区
邮箱:
电话:
教育/培训
20xx年8月—20xx年11月凌阳(北京)爱普公司嵌入式软件工程师
每日在公司学*时间:朝八晚十(周一~周六)
学*内容:
求职意向:
嵌入式软件工程师(应用程序开发)(无锡+苏州)
个人技能
掌握C/C++编程语言,以及常用的数据结构和基本算法。
掌握Linux下应用程序的开发过程,具有良好的编程风格。
掌握QT图形开发技术。
掌握TCP/IP协议,掌握socket网络编程。
掌握vi、gcc、VC++6.0、QTCreator等开发工具的使用。
了解ARM体系结构,掌握三星公司2410、2440系列处理器。
初步了解嵌入式*台搭建过程
项目经验
①黑白棋
项目描述:基于QT的GUI界面,独立完成项目的整体构架机功能模块的划分,整体界面的设计,游戏规则算法及各模块功能的实现。能够实现双人对战,人机对战,悔棋,计时等功能。
心得体会:
1、掌握了QT/C++编程的核心思想和技巧。
2、掌握了QT基本框架,常用的部件外观及其基本功能。
3、熟悉了QT的'信号与槽、事件机制。
②歌词解析器
项目描述:本项目在C语言阶段是非常具有代表性的,通过本项目对C语言的重点知识灵活运用,完成lrc格式歌词的文件读取、解析、存入链表等,并通过屏幕与歌曲同步实时显示。
心得体会:通过该项目能熟练掌握C语言字符切割操作、基本数据结构,培养良
好的编程规范。
③MPlayer播放器
项目描述:基于三星S3C2440开发板的Mplayer播放器。利用TFT图形库实现MplayerUI
界面的设计。实现Mplayer播放、暂停、上一首、下一首、静音、音量调节、播放列表、歌曲信息、播放进度等功能。
心得体会:该项目中涉及到多进程、多线程以及进行间通信、重定向等系统编程知识,是对所学知识点的强化和提升。
④基于Linux的信息交换系统(飞鸽传书)
项目描述:运用TCP、UDP网络通信协议,实现局域网内多人聊天与文件传输等功能,具备用户上下线动态识别机制。
心得体会:基本熟悉了TCP/IP协议、Socket、TCP、UDP的网络编程。
自我评价
喜欢阅读经典,比如《CPrimerPlus》《万物简史》。
具有独立思考能力。
热爱软件开发,享受创造有意思的事物的过程。
喜欢关注计算机业界最新动态和前沿科技。
热爱生活。
姓名:xxx
目前所在: 天河区
现在市面上嵌入式消毒分为双门和三门,不同的门它们的尺寸都不同。而最广泛的双门嵌入式消毒柜是长600mm左右,宽420-450mm左右,高650mm左右。一般家里使用的消毒柜标准尺寸在80L-100L的就可以了。如果消毒柜对过大,对于家里人口比较少的家庭来说,是一种资源浪费。在消毒柜品牌中,每一个品牌的嵌入式消毒柜尺寸都有不同,但是它们对应的开孔尺寸是相同的。
嵌入式消毒柜的`尺寸是按照消毒方式分为电热食具消毒柜、臭氧食具消毒柜、紫外线食具消毒柜。组合型食具消毒柜按照消毒效果分为:一星级消毒柜和二星级消毒柜两种。一星级消毒柜是对大肠杆菌杀灭率应不小于99.9%,二星级消毒柜是对大肠杆菌杀灭率应不小于99.9% ;对脊髓灰质炎病毒感染滴度(TCID50)≥105 灭活对数值≥4.00。
(每小题4分,共20分)
1、简述嵌入式系统的定义和组成结构。
答: 嵌入式系统是以应用为中心,以计算机技术为基础,并软硬件可剪裁、功能、 ,可靠性、体积、重量、成本、功耗、成本、安装方式等方面符合要求的专用计算机系统。 嵌入式系统一般由嵌入式微处理器、存储与I/O部分、外设与执行部分、嵌入式软件等四个部分组成。
2、简单说明ARM微处理器的特点。
答:(1) 体积小、低功耗、低成本、高性能。
(2) 支持Thumb(16位)/ARM(32位)双指令集,能很好地兼容8位/16位器件。
(3) 大量使用寄存器,指令执行速度更快。
(4) 大多数数据操作都在寄存器中完成,通过Load/Store结构在内存和寄存器之间批量传递数据。
(5) 寻址方式灵活简单,执行效率高。
(6) 指令长度固定。
3、简述嵌入式系统产品的设计和开发过程。
答:① 在嵌入式系统的开发过程中,一般采用的方法是首先在通用PC机上的集成开发环境中编程;② 然后通过交叉编译和链接,将程序转换成目标*台(嵌入式系统)可以运行的二进制代码;③ 接着通过嵌入式调试系统调试正确;④ 最后将程序下载到目标*台上运行。要强调,选择合适的开发工具和调试工具,对整个嵌入式系统的开发都非常重要。
4、简述嵌入式系统设计中要考虑的因素。
答:在嵌入式系统的开发过程中,要考虑到实时性、可靠性、稳定性、可维护性、可升级、可配置、易于操作、接口规范、抗干扰、物理尺寸、重量、功耗、成本、开发周期等多种因素。
5、什么是BootLoader,了解其在嵌入式系统中作用。
答:就是启动载入或引导加载又叫自举装载。由于系统加电后需要首先运行BootLoader这段程序,因此它需要放在系统加电后最先取指令的地址上。嵌入式处理器的生产厂商都为其处理器预先安排了一个在系统加电或复位后最先取指令的地址。
(每小题2分,共10分)
1、DSP(Digital Signal Processor),数字信号处理器,一种特别用于快速处理数字信号的微处理器。DSP处理器对系统结构和指令进行了特殊设计,使其适合于执行DSP算法,编译效率较高,指令执行速度也较高。
2、RTOS Real Time Operating System. 译为实时操作系统。实时系统是指一个能够在指定的或者确定的时间内,实现系统功能和对外部或内部、同步或异步事件作出响应的系统。
3、BSP设计板级支持包(BSP)的目的主要是为驱动程序提供访问硬件设备寄存器的函数包,从而实现对操作系统的支持。类似于PC机上的BIOS,是一个承上启下的软件层次。由嵌入OS和用户开发相结合取得。BSP一般是在嵌入式系统上固化存放。
4、总线竞争就是在同一总线上,同一时刻,有两个以上器件要通过总线输出数据和状态。发生总线争用现象。可能会造成总线上数据或逻辑混乱。
5、微内核嵌入式操作系统中,经过划分功能,用很短的结构(几到几十千字节)实现最基本和很具体的功能,此结构成为微内核结构。
(每小题3分,共30分)
1、嵌入式开发一般采用__方式,其中宿主机一般是指机 )。
2、嵌入式系统一般由嵌入式微处理器、_____________、_______________、等四个部分组成。
3、嵌入式系统设计时,必须优先考虑的问题有:运行和速度、功能扩展、能耗和体积等问题。
4、嵌入式处理器的层次分为:1)嵌入式微控制器;2)_2)嵌入式处理器 ;3)嵌入式DSP; 4)嵌入式片上系统_。
5、选择ARM处理器需要考虑的四大因素有:内核/版本;片内功能模块。
6、为了提高的开发的效率,降低开发难度,提高重用性,经验告诉大家:式操作系统,采用模块化方式是开发嵌入式系统软件的必由之路。
7、哈佛体系结构数据空间和地址空间ARM920T采用
8、由于嵌入式系统本身不具备____,即使设计完成以后用户通常也是不能对其程序功能进行修改的,须有一套__开发工具和环境___才能进行交**发。
9、一般而言,嵌入式系统的构架可以分为4个部分:处理器、/输出和软件,一般软件亦分为__嵌入式OS____和应用软件两个主要部分。
10、A/D变换器工作原理可分__逐次比较式____和___双积分__两种工作方式。
研究嵌入式系统已经有快两年的时间了。很庆幸自己当初选择了嵌入式系统作为自己的研究和职业方向,可以说它是一种催化剂,让我自身的修养和研究能力都有了很大的提高。
在嵌入式系统的大门前,我只能算是刚刚看到这个大门的台阶,但这段小小的距离让我受益颇多,现将其中心得奉献出来,欢迎高手前辈们指正,以供刚接触的新人参考。
在写之前,想先写一句话,千万不要以为你是天才,所谓天才即胜别人N倍的人,如果你真认为你是天才,请以天才的标准来要求自己,将自己付出和别人的比例以N:1来进行。
(1)学*与生活心态
很多朋友都是在刚步入大学校门开始接触计算机或者其他。大学是一个很让人迷茫颓废的地方,可能你在高中踌躇满志,但在大学的管理机制下却心态渐糜。能够在大学(大一)里找到自己人生之志的同学有多少?目标要明确,不要得过且过,不要追逐热门的东西。
不管在什么时候,心里都要有自己的信念和理想,不要被其他东西左右了自己。要从兴趣和竞争出发,因为这才是你产生动力源的地方。学东西时,要让自己先喜欢上它,要学会享受学*它的时间,喜欢乔XXX的都知道,乔老爷子最常说的一句就是要享受比赛的时间。
因为只有你喜欢上了它,享受了它,才不会被它所产生的压力压倒自己,不要产生一种厌恶的心理。而且心态要调整,不要一味的蛮学,死学,在没有什么兴趣学的时候可以先玩几天,在回过头来,或者用其他的方式来转换。要抱着一种十年方能磨一剑的心理,扎扎实实从基础开始,不要为高速开发的一些现象所迷惑,那些都只是软件的功劳。
我个人认为搞编程,英语和数学很重要,大家一定要时时的抓,至于怎么抓那就是另外一回事了,当然其他的知识也要汲取,可以多接触点天文,地理,人文方面的东西来补充自己。转换的生活方式。要学会生活,在人的一生中,都会遇到一些很不开心的事,或者大大小小的意外,孙子兵法里面一句大意就是说,战场上要会将劣势转成优势,即最大的劣势很可能就是你的优势所在。
一个打击你可以把他变为前进的动力,不必为了一点挫折和捶胸顿足,不必为了一点小事争吵不休。空闲的时候可以躺下来看看天,你就会明白自强不息,厚德载物之理。(看到一些为了失恋或者其他而堕落的人真的很难受和可惜)。
要给人以帮助。别人有困难时或者一些举手之劳在自己解决范围内的尽力帮之,这对自己不会损失什么,相反在对方心里能够树立你的形象和增加好感。记住,给人之恩时也是给你自己铺路,这个世界不是靠你一个人可改变的。
(2)编程语言的选择语言的争论。
很多初学择,老是在学*何种语言上举棋不定,试问,*牌子有几个不被骂的,试问,世界上哪部影片没人说他坏话的?术业有专攻,各司其职,每个语言的出现肯定都有自己价值和领域的范围,不同的只是价值和领域的高级和大小。
就像高,矮,胖,瘦组成一个“型”。但是技术是进步的,这个进步也是在旧的基础上。放心,技术再飞跃也不会今天奔I,明天扣肉的迅速,在学*的同时也要时时关注整个语言界的走势(貌似哪个伟人说的与时俱进),保持一种同步曲线的前进。语言能干什么?能问这句话,很欣慰。
表明你是从基础学起才会问出这样的话来。但换而言之你一开始对这门语言调查的信息不足。庙算者胜,对自己身边的事物了解是非常重要的,这也能说明说你的教材或者教导你的人不够充分。如果是我对新手交流,我会花足时间让他明白这门语言是什么,能干什么,整个体系等等。
这样在学的时候,对同一条语句上的理解你可能跟别人就不一样了,因为你知道这门语言的体系架构,你可以从更多的特性角度去挖掘使用它。提高自己对语言阅读能力。如何快速的进步?可以告诉你没有一步登天的办法,但是也可以告诉你如何让你快速掌握你所学的技术。多读他人代码,多领悟他人思维,多给自己出难题,多几种方法来解问题,多将语言的思想和身边的事物联系起来。想想你是怎么掌握普通话的,方法就不具体说了。
编程的思维。计算机是充满诱惑的东西,很多人都说热爱计算机,那只是它的表面,你热爱的只是他的一种扩展性的东西。能学计算机我很高兴,因为计算机从某种意义上来说将空间的距离给消除掉了。这里没有流血,没有牺牲。你可以以一种艺术家的思维来塑造它,可以以侦探的逻辑思维来解决它,可以以一种战争狂人的思维来摧毁它。
你可以将你的这种思维体现在代码和整个布局里,不要惊异别人代码思维的异风,你也有自己的思维风格,你也可以,你也可以用自己代码让别人惊异。记住你学东西时更多的要体会他的思维,比如数学,微积分,离散,无数的定理,你学完以后可能永远都用不到,但是你可能有这种感觉,在你碰到某一问题时,这一问题的性质和你学到的东西很类似,但是中间就是差了一点东西,对了,这就是它思维上的一种运用,一种抽象,一种转换。
本人本科学的是电子信息工程专业,其实这个专业和嵌入式没有多大的关系,要说有关系就是简单的讲了下C语言语法,学完之后还不知道什么是C语言,只记住了char,int,long等占几个字节,if,while,for循环什么的,感觉也就能算一些小学就会的题目,全国计算机二级C语言也就糊涂的过了。我这个专业没学过C++,一开始不知道什么是面向对象,这可能会让人笑话了。不过这说的是实话,本科的时候,学院安排的课程大部分偏硬件部分,动手机会比较多,自然而然比较喜欢硬件方面。
在大二的时候就听学长说,单片机很难学,那时候经学长介绍,淘宝买了本郭天祥老师出的书《51单片机C语言教程》,一开始还真是不怎么懂,感觉有点像是看天书,然后硬着头皮去看,当我把51的结构看完了,就不像一开始那样一头雾水了,自己在纸上把51的结构图默画一遍,然后再把各个寄存器功能写一下,各个功能口的结构粗略画了下,然后觉得51整体已在我心中了,虽然没有什么作用,但是至少懂得这门课要怎么去学*。其实有些时候不是这个东西你不会,而是在不会的时候自己先告诉自己这个太难了,自己先放弃了。
在大三的时候,第一学期课比较少,我就经常待在图书馆,会去蛮看些专业相关的书籍,现在想想,那时候也是机缘巧合下,看到了一本书《从51到ARM》,讲述的是从51系列单片机的一般知识出发,将arm处理器和51系列单片机进行对比,引导读者去理解和学*arm处理器的知识。那个时候也有考虑到以后就业的问题,就想到一件事情,如果去应聘工作的话,每个工科院校电子信息类的毕业生都会异口同声地说:我会51系列单片机。当他说这句话的时候,他和别人是站在同一起跑线上的。可我们完全有可能和别人不站在同一起跑线上。正是这本书给我开启了另外一扇大门,让我初步了解了嵌入式。后来去报考全国计算机等级考试三级教程——嵌入式系统开发技术,在图书馆奋斗了两个月,最后取得优秀的成绩,也让我进一步了解嵌入式系统。
在大四的时候,我们有嵌入式的选修课,不过当时因为考研的缘故,就没有去上过这门课,好可惜呀!但是,在选择读研研究方向的时候我还是毅然选择了嵌入式方向,我知道这将成为我未来三年研究的方向。这学期(研一下学期),很开心能够再次接触嵌入式系统这门课程,对于导师教的这门课程,我觉得自己上课还是蛮认真听讲的,当然也被师在台上那讲得头头是道,温文儒雅的风姿所吸引。对于没有学过微机8086的我,有些时候,老师用微机与嵌入式的对比让我头脑没有相关概念...
首先,我对嵌入式在概念上有了一个比较精确的了解。嵌入式是指以应用为中心,以计算机为基础,并且软硬件可裁剪,适用于对功能、可靠性、成本、体积和功耗有严格要求的专用计算机系统。它由硬件*台和系统软件组成。硬件*台指嵌入式处理器和与之通过接口连接的外围硬件*台。系统软件是指实时操作系统和用户应用软件。
谈到硬件部分,我首先想到的是嵌入式处理器那些外围功能模块。对于这部分的学*,我当初花了好长时间看《深入浅出ARM7——LPC2400》这本书,现在想想觉得自己学*方法没用对,完全没有那个必要,自己却花了大把时间在看这些寄存器引脚的使用,因为单纯的看过之后还是很容易忘的,之后在进行实验的时候还是翻书来查就证明了这一点。不过一些最基本的模块,例如通用输入/输出口(GPIO),通用异步收发器(UART),向量中断控制器(VIC),外部中断输入和定时器/计数器还是需要看书认真去记住那些常用的引脚功能。对于CPU异常这部分,我一开始以为异常就是中断,因为处理程序流程设计是相似的,都是请求处理器打断正常的程序执行流程,进入特定程序的一种机制。当时还对老师提出的一个看法有点疑义,51可以处理中断嵌套而ARM处理器却不能?我当时脑子里面就在想:中断不都是有硬件设备产生的,那按常理来讲ARM处理器也可以处理的呀。后来在认真查书,发现CPU异常有7种:复位,数据中止,中断,快中断,预取中止,未定义,软件中断。而异常向量会使CPU转入异常入口地址执行程序,开始了异常处理。同理的话,中断向量使CPU转入中断入口地址执行程序,开始了中断处理。即当发生IRQ中断时,程序返回地址被存入该IRQ中断模式下的LR,如果继续发生IRQ中断,那第二次的中断返回地址也还是被存入该IRQ中断模式下的LR中,那先前发生中断时候存入的程序返回地址将被覆盖掉,导致不能返回正确的位置。在我解决这个问题的期间,每次睡前思维准会定格在这问题上,久久不能绕出来,其实有时候查书还是最好的解决方案,因为网络资源只能提供给我们部分的参考资料。
对于ARM汇编语言这部分的学*,我认为是需要重视的,学汇编不是说用这语言做多牛逼的事情,问题的关键在于,学透了汇编会使你真正理解计算机。另外一方面,只要以后在嵌入式工作中你迟早会在某个阴暗的角落里遇到汇编。“不管你承认不承认,现在的CPU没有直接跑高级语言的,哪怕是虚拟机也都是类似汇编的指令集.当遇到崩溃分析,性能优化甚至编译器抽风等等的时候,汇编是你最后一根救命稻草(这句话是福来师兄讲的)。”为此他给了我们一份资料,周立功lpc21xx/lpc22xx系列ARM7启动代码分析,主要讲述的是startup.s文件的分析,看了下才发现老师上课讲的那个启动代码分析很多不理解之处这里都有详细的介绍,这分析太精辟了。
学ARM7这么久,我认为从硬件上讲,一方面就是学*接口电路设计,另一方面就是学*汇编和C语言的板级编程。如果从软件上讲,就是要学*基于ARM处理器的操作系统层面的驱动和移植。这些对于我们初学者来说必须明确,要么从硬件着手开始学,要么从操作系统的熟悉到应用开始学,但不管学什么,只要不是纯的操作系统级,硬件的寄存器类的东西还是要能看懂的,基于板级的汇编和C编程还是要会的。
μC/OS-II是一种基于优先级的抢占式多任务实时操作系统,包含了实时内核、任务管理、时间管理、任务间通信同步(信号量,邮箱,消息队列)和内存管理等功能。它可以使各个任务独立工作,互不干涉,很容易实现准时而且无误执行,使实时应用程序的设计和扩展变得容易,使应用程序的设计过程大为减化。μC/OS-II是一个完整的、可移植、可固化、可裁剪的占先式实时多任务内核。μC/OS-II绝大部分的代码是用ANSI的C语言编写的,包含一小部分汇编代码,使之可供不同架构的微处理器使用。
μC/OS-II可以大致分成内核结构、任务管理、时间管理、任务之间通信与同步4个部分。内核结构是操作系统的处理核心,包括操作系统初始化、操作系统运行、中断进出的前导、时钟节拍、任务调度、事件处理等多部分。任务管理部分中的内容都是与任务的操作密切相关的。包括任务的建立、删除、挂起、恢复等等。因为μC/OS-II是以任务为基本单位调度的,所以这部分内容也相当重要。μC/OS-II中的最小时钟单位是timetick(时钟节拍),任务延时等操作是在时间管理这部分完成的。任务之间通信与同步为事件处理部分,包括信号量、邮箱、邮箱队列、事件标志等部分;主要用于任务间的互相联系和对临界资源的访问。μC/OS-Ⅱ操作系统是在main()中建立的,首先要系统初始化,OSInit(),初始化系统所有的变量和数据结构。然后进行任务的创建,OSTaskCreate();之后进行多任务的启动,OSStart()。在进行任务的并行处理的时候,一个任务的程序是顺序执行的,而不同任务的程序却是并行执行的。从应用程序的观点来看,此处的并行处理只是一个假象。而实际上它是通过实时操作系统的内核控制任务之间的切换来实现的,也就是任务调度啦。
μCOS-Ⅱ总是运行进入就绪态任务中优先级最高的那一个。当创建新任务时,或当前任务调用一些可能把自己挂起的系统函数(如OSMBoxPend)时,内核就要进行任务切换。在上述的场合,任务级的调度是由函数OSSched()完成的。
在一个多任务的应用工程中,任务之间并不是完全独立的,它们存在一些需相互配合的处理,这些相互配合是靠任务间的通讯或同步,信号量、邮箱、消息队列可以实现这种任务与任务,任务与中断服务函数间的通讯与同步。
邮箱可以使一个任务或者中断服务子程序向另一个任务发送一个指针型的变量。而信号量不可以,其只能发送信号量。消息队列可以使一个任务或者中断服务子程序向另一个任务发送以指针方式定义的变量。因具体的应用有所不同,每个指针指向的数据结构变量也有所不同,实际上,我们可以将消息队列看作多个邮箱组成的数组,只是它们共用一个等待任务列表。
我们实验所用的ARM开发工具是ADS1.2。ARMADS全称为ARM Developer Suite,是ARM公司推出的新一代ARM集成开发工具。现在ADS的最新版本是1.2,支持软件调试及JTAG硬件仿真调试、支持汇编、C语言、C++源程序,具有编译效率高、系统库功能强等特点。在安装ADS1.2的时候出现过小问题,当时我的电脑是64位的,安装完之后显示不了,后来百度查找到原因,竟然是文件夹放错地方,应该放在Program Files(x86)这个文件夹中。后来有同学问我这方面的问题,但是发现他们的ADS1.2安装不了的原因是因为Licence弄错了。在打开CodeWarrior for ARM Developer Suite的时候,一定要记得选DebugInChipRAM,否则Make都出现很多error,而且那些几乎都是未定义函数的错误。之后就进行Debug,调试成功之后会跳出AXD的界面,选择Options里面的ConfigureTarget,再添加H-JTAG的文件,之后点击GO,程序会跳出汇编语言的界面,再点击下就跳到C语言程序入口地址,之后再点击下GO,程序就开始跑起来。前面所述的这些步骤是理想情况下程序自身没有发生错误,当然在调试过程中,还是有很多硬件上的问题,一方面是有些开发板可能用久了,用JTAG并口连接的时候接触不良,很容易自动掉线,常出现未连接设备的的Error,还有一方面是跑程序过程常会出现兼容性的问题,导致程序AXD调试时候会出现卡在某个部分一直进入死循环,这个后来是解决了,但是偶尔还是会出现这个BUG。
通过这学期对嵌入式的学*,我发现自己尚未掌握的知识点还是蛮多的,尤其是对μC/OS-II的移植方面,我只是理论上粗略了解,没有经过实验的操作。还有对存储器加速模块(MAM)这方面不够了解,主要一方面当初在做消息队列采集实验(KeySem_SampdataQeue),这个模块被代替掉,不需要使用它,所以后来也没有去掌握相关知识点。对于任务就绪算法这部分,我只是上课的时候听“懂”了,课后自己再看完全懵了。对于CAN总线调试的部分,老师上课没有讲到这部分的介绍与应用,但是后来通过自己对实验室师兄们所做的课题初步了解,发现我自己有必要去弄懂它的构造和原理。
“看书不要希望一次就会,一次就明白是什么意思,也不要死记硬背,看不明白也没关系,以后遇到了知道去哪里去找就可以了,以后遇到的多了,也就记住了,遇到的少的,忘记也就忘记了。”依然记得当初不懂怎么解决某个问题的时候请教李硕师兄,师兄对我说的这番话。自己在μC/OS-II这部分内容挣扎了好久,现在想想,觉得当初不应该一上来就直接阅读内核源代码,看了一些自己把头撞破也想不明白的事,这样直接正面打击我学*嵌入式的积极性。学*啊,还是得要循序渐进。如果你想学*嵌入式一定要有块学*板。看再多的视频,看再多的书,也不如自己动手试一下,看着很简单的东西,做起来就可能遇到很多的问题,遇到问题找到原因,解决问题,只有这样才能学到东西。记得我第一次仿写led的驱动,想自己试一下,可是自己一试,就出了好多的问题,那个led弄了我一天才把led灯点亮。所以不要眼高手低。
对于初学者,有一点小建议,我们拿到一个开发板,很兴奋也很激动,想法自然也很多,想用开发板实现自己的这个想法,实现那个想法,然后又不知道从何下手,然后就去论坛中发一个贴,最后等着别人去回复,当见没人回复就开始抱怨。这种做法是不可取的,有想法是好的,我们要实现自己的想法也是有前提的,首先,我们对这部分知识了解吗?如果不了解就去google一下(最好别用百度,不太好用),了解了一些,也就大概知道要怎么做了。如果再遇到问题,再去发贴问,这样也显得咱们有水*。比如自己连串口是什么都不太清楚呢,就问串口通信怎么做啊,就是人家把代码给咱,咱也不明白是怎么回事啊。见多识广,熟能生巧。多看代码,要从代码中读出代码的意思来。自己*时也要多写代码,多练*(这一点我做的不好,写的少)。
最后,我想说的是嵌入式系统的学*和研究一旦我们达到了一定的水*后,其实很简单,就是如何去看CPU和相关芯片的Datasheet!
4月10号,为期一个阶段的Linux开发基础培训课程圆满结束,回首这些天所留下的点点滴滴,感触深深,学*上知识点的积累,灵活运用的过程中感受到了Linux操作的快速高效性能,这也是我所追求的效率!
当初初涉培训课程的第一门课程时,都说Linux操作很繁琐复杂,心里总有些顾忌,带着种种不安与些许拼博的决心,开始了自我提升阶段的“充电”,由徐海兵老师教授我们基础课程的培训,我们则像着小学生般认真的记着笔记,仔细听着并学会如何去在实践中运用所学的Linux下的各种强大的命令集。
在Unit 1中,徐老师详细生动的为我们讲述了有关Linux的诞生、初成长以及辉煌的发展至今,今后应用范围则愈来愈广泛,讲解了为Linux这个伟大的OS做出巨大贡献的一位位出色的、伟大的人物,他们那种学*钻研的精神、锲而不舍的信念、勇于把握住难得的机会,从小处着手,踏踏实实的创造出了对人类科技发展做出卓越贡献的Linux(Unix)系统,他们的种种,都值得我们去深刻反省、刻苦学*、传承并永远发展下去。
查看ip地址和重启网络服务是我学的第一个命令: ifconfig eth0、ifconfig eth0 IP地址、service network restart。了解到远程登录软件可用xmanager。
secureCRT是我们常用的,安装好后利用其登录到了Red hat Linux,需要知道Linux主机的ip 地址。徐老师为我们介绍了重要内容:SHELL,即运行程序的程序,如echo $$SHELL可查看SHELL的环境变量是csh还是bash。指令pwd可查看当前所在路径,passwd:更改Linux下的密码,仅限root用户有此权限,当然我们是利用虚拟机VMware程序来运行Linux OS的,懂得了如何设置虚拟机的网卡设置、暂停、恢复、全屏等。
简单的学*后进入Unit 2,命令行的句法让我懂得了用法规则,一系列的命令功能强大:
date 显示当前年月时间星期之类的;
more指令与less重要但不常用;
cat用于查看短小的文件内容,常用!
mkdir命令用于在当前目录下创建新的目录;
ls 显示当前目录下所有文件;cd更改文件路径,如cd、cd.当前目录;
rmdir 删除空文件夹;
rm指令很强大,用于删除空目录及非空目录下的指定或全部文件;
man 真男人,帮助手册;
history指令用于显示编写过的命令集,以history序号可显示序号所指命令;
echo回写命令,很重要,我需要继续学*;
嵌入式毕业设计日志范文
嵌入式培训总结范文
嵌入式实*报告
日记嵌入式作文范文
嵌入式培训总结范文3000字
日记嵌入式作文范文1100字
嵌入式著作权范文
嵌入式系统实*报告
嵌入式培训总结范文1600字
嵌入式培训总结范文1200字
嵌入式培训总结范文1800字
日记嵌入式作文范文1300字
嵌入式培训总结范文1400字
嵌入式培训总结范文1500字
嵌入式心得体会
日记嵌入式作文范文2500字
嵌入式培训总结范文2000字
嵌入式培训总结范文1000字
日记嵌入式作文范文3000字
嵌入式培训总结范文1300字
日记嵌入式作文范文1600字
嵌入式培训总结范文1900字
日记嵌入式作文范文1800字
嵌入式培训总结范文1100字
嵌入式培训总结范文1700字
嵌入式的培训心得体会
嵌入式著作权范文2000字
嵌入式著作权范文3000字
嵌入式著作权范文600字
嵌入式著作权范文800字