自学嵌入式拉低偏差丨4412开发板学习指引+为学习后面内容打下基础_第1页
免费预览已结束,剩余11页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、自学嵌入式拉低偏差丨4412开发板学习指引+为学习后面内容打下基础总领及学习指引结合入门视频介绍了开发板组装, 环境搭建,以及 常用指令等内容,为学习后面的内容打下基础。推举学习步骤:入门视频->系统编程->驱动->qt 或 。配套视频资源:“itop-4412 开发板视频教程01-迅为开发板入门视频”。01 框架学习法系统的学习办法无数人都讲过,信任大家在网上或者其他渠道接触过一些思路和办法,在这里讲一下个人的体味。首先来说,学习有没有捷径呢?一种说法是可以速成,几天就可以学会,我们认为这种速成的说法太夸张了,那是不行能的。有些人认为学习没有捷径,你必需经过长久的努力,所谓

2、功到自然成。但是学习嵌入式技术,假如说没有好的办法那也是不对的,学习一门新的学问体系绝对是要下工夫,但是也需要有好的指引,也就是捷径,事实上这里是讲的就是学习办法。办法很重要,假如没有办法,闭着眼乱学乱撞,绝对是不可的。就像我们去找一个没有去过的地方,自己跟着感觉去找,找到的希翼就很小,假如手头有张地图,并且还有指南针,那就要快无数;假如我们有导航,自然是更快更便利了。事实上,这就是办法的重要性。那么在这里,我们来介绍一种学习办法,这种办法也是迅为公司多年培训和产品开发阅历所总结出来的。大家可能会问了,迅为也做过嵌入式培训?事实上我们有很丰盛的培训阅历。我们觉得,框架学习法是最适合初学者的一种

3、办法,这里面包含了的思想; 也就是框架学习,迅速原型。这里面的主导思想,即从一开头就要看到嵌入式系统学问领域的全貌,然后逐渐深化!比如说,我们想了解北京这座城市,假如在胡同里转来转去,可能几年都搞不清晰这个城市是什么状况,假如我们先通过北京地图学习一下,了解下天安门在什么地方,鸟巢在什么地方,香山八达岭在哪里。再加上我们到这些地方去看一看,可能很快就把握了这座城市的全貌。在这里需要注重的是,即便是有了地图,也需要有一些基础,比如我们需要知道什么是天安门,知道鸟巢的来历,明了八达岭是怎么回事,事实上这些就是基础学问。也就是说我们在学习系统框架之前要具备一定的基础,否则这张地图也是看不懂的。学习嵌

4、入式技术也是需要一定的基础的,关于基础方面,下一节会特地研究。接下来假如我们想进一步的了解这座城市,就要去讨论这座城市的历史,甚至是中国的历史。更细一步呢,还可以进一步讨论故宫本身的地图。这样一环套一环,经过不断的讨论,逐渐就会把握这座城市的地理、文化、政治经济等特点。通过了解北京城这个简要的例子,运用框架学习法,在对不同层次的框架的学习过程中, 逐渐了解和把握囫囵系统。假如我们不注重办法,天天在胡同里面往返转悠,绝对是事倍功半,很长时光将不得要领。02 嵌入式系统学习的框架学习嵌入式也是这样。必需把握一定的办法,才干比较迅速有效的学习。这个办法就是框架学习法,如前所述,首先在了解这个基础框架

5、之前我们要有一定的基 础,那么这个基础就是和 c 语言,不需要把握的有多好,但一定要具备一定的 c 语言编程能力。像其他有些课程,比如计算机专业课程中的编译原理、数据结构,计算机系统体系结构,这些学问事实上还不太需要,了解一下就可以了。有了 c 语言编程基础,并且学过单片机,这个时候就可以学习一下嵌入式 linux 的基本框架了,很容易,那就是首先要搞清晰什么是 bootloader、linux 内核(kernel)、和文件系统,接下来容易介绍一下。什么是 bootloader 呢?事实上它是个引导程序,也就是硬件复位以后第一个要执行的程序,它主要工作就是初始化操作系统运行的环境,比如说内存、

6、定时器、缓冲器等,当这个工作做完以后,再把操作系统的代码加载到内存,然后操作系统就可以启动并执行,到此为止,bootloader 的任务就完成了。那么有人问了,没有 bootloader 行不可呢,可以!但是由于操作系统本身普通是个通用的软件,它要在不同的平台上运行,比如 x86,powerpc 等等,而不同的处理器的初始化操作是不同的,假如操作系统的软硬要考虑在启动时候各种平台的差异性,那就显得过于复杂。除此之外,也有其他方面的缘由,比如烧写系统的便捷性考虑等等,这里暂不做深化的探讨。常用的 bootloder 有无数种,比如 u-boot、redboot、lilo 等等,我们开发板用的是

7、uboot。什么是 kernel 呢?kernel 就是 linux 的内核,也就是说 linux 操作系统本身的代码。那么 u-boot 启动到最后,就是把它加载到内存,并且跳转到 kernel 来执行。什么是文件系统呢?现在我们来介绍一下文件系统,这里需要了解一个事实,就是说 linux 启动到最后一定要挂载一个文件系统。这个是 linux 的一个特点,它不像其他操作系统,比如像 ,是不需要文件系统的,vxworks没有文件系统也可以运行。 而且还需要了解一点,像 qt 系统、android、以及 ubuntu 系统它们的底层都是 linux 内核,不同的是它们的文件系统不一样,也就是说,

8、android 系统相关的一些代码,比如说图形界面系统、android 的虚拟机, android 的框架代码都在 linux 最后挂的文件系统里面。 假如大家理解了这点,那么这几个系统的基本架构也就清晰了。搞清晰了这几个概念,实际我们就了解了 linux 系统最基本的框架,然后我们按照开发板配套的资料,去学习如何编译这几个文件,由于像 uboot、kernel、文件系统,最后编译生成出来分离是一个自立的文件,就是说会生成三个文件,最后我们要学会把这几个文件烧写到板子上。学会了编译和烧写,接下来呢,我们在这个框架的基础上,去学习如何做 linux 上面的应用程序。什么是应用程序(app)呢?它

9、是运行在操作系统上面,通过调用操作系统的资源去工作,是终于的业务规律,比如我们 windows 上面有无数的应用程序,像 qq、暴风影音、word、exel 等,各式各样 app有无数。按照我们后期的视频教程,大家应当很快就能学会,比如说串口程序、网络程序等等,这些都是应用程序,我们不需要做太多,学习几个加深一下对框架的熟悉就可以了。再接下来,我们就需要学习 linux 驱动方面的一些学问了,这也是在基础框架里面的,驱动程序可以看成是操作系统的一部分,它在底层特地和硬件打交道。那么大家略微了解一下, 就会知道 linux 的驱动包括有三种:字符设备、块设备以及网络设备。这个时候呢,大家要注重,

10、只需要学习字符类设备驱动,其他两种先不要去花时光讨论。一定要记住,最初学习嵌入式技术的时候不要去讨论块设备和网络设备。也就是说,把字符类设备搞明了就可以了。由于普通的公司开发嵌入式的产品仅限于字符设备的开发,把握字符设备的框架思想和开发步骤就能够胜任了。至于块设备和网络设备,挺直用开发板或者某个开发平台本身提供的驱动就足够了,这些是一线处理器厂家做的事情,普通状况下不需要我们去完成,这些处理器研发的厂家在为处理器开发配套 bsp 的时候才会涉及这些工作。固然了,有的学生可能会说,某某公司就是在做块设备驱动,我的意思是讲,从嵌入式这个行业总体上来讲,大多数公司都不需要那么做,无数技术往往是挺直拿

11、来用的。我们把握了字符设备驱动的开发办法,已经能够对付大多数公司的开发要求,对于一个还没有入门的同学来讲,一定要根据我说的方法来学习。等未来娴熟把握基本技能以后,可以按照框架学习的办法,再去讨论更深化的编程。这个时候,那些计算机专业的课程,比如数据结构、计算机系统体系结构、各种算法等等就可以派上用场了,自己的水平也会在学习的过程中再次升华。学习字符类设备驱动,请跟着迅为的视频去学习 的驱动编写办法,以及蜂鸣器、ad 转换等这些跟 gpio 相关的驱动开发技巧。把握了这些,可以讲,我们已经成为了一个比较合格的嵌入式驱动工程师!这个时候我进一步介绍一下什么是迅速原型,假如学过软件工程的话,那么大家

12、会听说过一种自顶向下的产品开发办法,这个办法很有效,多数产品的开发办法都是遵循这个思想,也许就是从最初的可行性分析,然后概要设计、具体设计、编码、测试等等。除此之外呢,还有一种开发办法就是迅速原型,这个是微软采纳的一种办法,简而言之呢,迅速原型是个逐渐迭代的办法,就是说让产品尽快把雏形开发出来,然后逐渐清楚,一步步走向成熟。在这里我们把迅速原型法用到学习上,它本来是种开发办法,我们这里借鉴过来,借鉴到框架学习的思想上。也就是说,我们把握一定的基础以后,就要去学习框架,当这个基础框架清楚以后,再去学习更新更深化的框架学问,这样一环套一环,环环相扣,终于讨论越来越深化,进而成为这个行业的专家。那么

13、在嵌入式行业的工程师的职位其实也是这个样子的,大家看一下: 基本数字 + c 语言 + 基础框架学问 -> 嵌入式驱动工程师数据结构+编译原理 -> 高级嵌入式驱动工程师计算机系统体系结构 + 操作系统(从抽象到详细)-> 系统架构工程师由于在第一个阶段,你会发觉,只要娴熟把握 c 语言,有良好的编程功底就够了,在工作的时候很少涉及到编译原理、数据结构这些方面的学问,那么无数其他专业的毕业生,甚至本来学机械设计的学生都可以成为嵌入式驱动工程师。实际也是这样,在大多数嵌入式技术公司,尤其是应用产品开发的公司,只要了解基本的 linux 架构的学问,并且能够编写字符类的驱动程序就

14、够了。由于像网络设备驱动以及块设备驱动,基本都有个 demo设计,只要参考这个 demo 做就可以,根本不需要我们做什么,假如说需要做的话,那也是改一下 gpio 的设置,修改一下中断的引脚,仅此而已。那么深化学习的话,分析操作系统源码的时候就会发觉,数据结构的学问逐渐排上用场, 尤其是在某些专业公司,负责某个专用领域的时候,工作中可能会改写操作系统的某部分代 码,来适应他们自己硬件的各种状况,将会深化分析某方面的技术,比如文件系统、网络协议等,这个时候数据结构等方面学问就显得很重要了。有了基础的原型以后,通过继续学习新的学问,逐渐使自己的熟悉提高一个层次,更精深的了解嵌入式技术,同时学问体系

15、越发完备,可以做更高层次的工作了。应用这样的学习办法,在学习过程中,也会使学习过程始终有目标,而不会感觉枯燥,天天都会有成就感,从一开头就能抓住嵌入式系统的脉络,只要付诸努力,持久学习下去,就能成为嵌入式行业的专家。最后我们总结下,要想比较快的把握嵌入式技术,要应用框架学习的办法,在一定的学问基础上就开头学习基础的框架学问,这样就很简单入门,随着开发阅历的堆积,再去学更深化的基础学问,以及更深层次的框架学问。这样互相迭代,直到能够精通嵌入式技术。这个办法也充分解释计算机科学是门试验科学。那么在学习过程中,要注重,不用学习过多的基础学问,也就是说有了 c 语言和单片机的基础就可以学习嵌入式的基本

16、框架,然后就能够成为一个合格的嵌入式工程师; 以后可以继续深造,学习数据结构编译原理操作系统等方面的学问,并深化学习算法,从而再去学习 linux 更深层次的框架结构,使得整体水平得到进一步的升华。现在我们总结一下,把学习嵌入式技术的路途图跟大家澄清一下,那就是:单片机 + c 语言 -> 学习基础框架学问(包括 bootloader,linux 内核、文件系统的编译和烧写 ->再去学习 linux 上层应用的编程,以及字符设备的驱动,学完以后就会觉得入门了,能做一些事情了->最后深化学习计算机系统结构、数据结构、操作系统原理等等一些学问,通过分析 linux 系统源码,直到

17、娴熟把握嵌入式编程技术。大家根据这个学习办法,基于 itop-4412 开发板提供的资料和视频,就一定能够学好这门技术。03 关于裸机程序和有些用户希翼通过 arm 开发板来学裸机程序,其实我们不建议这样做,在 arm 上做一些裸机程序,不是不行以,而是没有太多价值,由于裸机程序根本发挥不了 arm 处理器的性能,惟独运行了操作系统才干够充分挖掘 arm 处理器的优势,更能够保证系统运行的平安和稳定性。假如真的想学习裸机程序,单片机就够了。从架构上来讲,单片机和 arm 是一样的,都是 cpu,而且编程思想也没有多少区分,只不过 arm 速度太快了,惟独在上面跑操作系统, 并用法多任务的编程办

18、法才干最大化的发挥 arm 处理器的优势。在实际产品开发时也是这样,几乎没有拿 arm 跑裸机的方式来开发产品的。假如用裸机方式来编程,推举用法单片机,这样整体成本也会小无数,实际上也是这样的。早期的时候,我们在 arm 上也做过无数裸机程序,并且用仿真器来调试;无数人,尤其从单片机转过来的工程师,都希翼学习下这种技术,由于他们感觉裸机程序更亲切,而挺直用操作系统觉得很不踏实,不能够彻低把握系统的运行状况;其实这种主意是不对的。我们必需在抽象的层次上来开发产品,逐渐改变观念,不能说开发一款产品,就一定要对每个程序的详情都十分清晰,应当学会在操作系统这个抽象的软件上来开发产品,这样做才符合潮流,

19、也是产品进展以及个人进展必需改变的思路和观念。我们看到无数本来做单片机开发的工程师,在转型嵌入式产品开发的时候濒临无数困难, 事实上观念的改变应当说是最大的障碍,希翼引起大家的注重。04 基于 4412 开发板的学习步骤本节结合迅为的 itop-4412 开发板来介绍一下嵌入式技术的学习步骤。大家都知道,嵌入式技术的学问面十分广,学起来往往不知道如何下手,我们通过这一小节给大家阐述一下嵌入式技术应当从哪里开头学起,以及根据什么样的步骤深化下去,最后顺当入门,成为一个合格的嵌入式工程师。这节的教程很重要,希翼通过这次的讲解能起到提纲挈领的作用,让大家能够在大量的学习资料中有一个比较清楚的学习脉络

20、。前面已经介绍过,嵌入式系统的学习办法,首先要把握架构,那么什么是架构呢,这里再强调一遍,那就是要搞清晰几个概念:弄明了什么是 bootloadre 引导程序,什么是 linux 操作系统内核 kernel,什么是文件系统。这个很重要,假如搞不明了,挺直去学其他的内容,学起来就比较迷糊,事实上是在走弯路,这里推举大家首先要看一篇文章,也就是迅为用户 qq 群的一个谈天记录:澄清几个基本概念-迅为qq 群谈天记录,这个文件在迅为 qq 群的分享里有,在网盘里也有提供,大家可以去研读一下。信任大家看了这个对话以后,就应当明了 u-boot、kernel 和文件系统这几个文件的作用和意义。接下来大多

21、数工作都是围绕这几个文件绽开的,比如编译环境的搭建,源代码的编译和烧写, 应用程序和驱动程序的编程等等,就是说这几个文件是贯通我们囫囵嵌入式学习的始终的。把这几个文件搞明了了,后面的学习也就有了目标,所以说搞明了这几个文件的含义十分重要。接下来需要我们做的是搭建编译环境,在教程里建议大家安装 64 位的 win7 系统,并且在 win7 或者 win10 系统上安装虚拟机,然后在虚拟机上再安装 ubuntu。这里需要解释的是,大家在初学的时候要尽量根据教程里的办法一步步的来,这样学习的效率比较高,假如你用法 xp 系统或者 win8 系统不是说不可,但是在安装和编译过程可能碰到无数别人没有碰到

22、的问题,解决起来就比较棘手,所以在可能的状况下一定要根据手册的要求来做,尤其是初学者;固然大家娴熟以后可以去做下创新,做不同的尝试。安装编译环境是个很费事的过程,虽然说没有太多的技术含量,但是在这个过程中也要客服无数困难,开源系统就是这样,不时会碰到一些这样那样的问题,无数时候是不行预测的, 或许大家会觉得安装系统是铺张时光很困窘,其实这个过程也是很重要的,中间要学习无数的学问,只要大家不怕折腾,这些过程当中的困难都是可以克服的,迅为公司为了让大家少走弯路,已经把安装步骤做了很大程度的简化,比如已经做好了虚拟机的 ubuntu 镜像,挺直拷贝进去就可以用法了。开发环境搭建起来以后,这个时候可以

23、学习一下对源码举行编译,同时也可以学习一下烧写,一步步根据教程去做就可以了。再次强调一下,全部这些工作都是围绕我们前面所讲的那三个文件举行的,也就是 uboot, kernel 和文件系统。系统的编译和烧写都是依靠于这个开发环境的,也就是必需在虚拟机上安装好 ubuntu, 并且把源代码从光盘中拷贝到 ubuntu 的环境下面,只要根据教程的提醒往下做就可以了。在娴熟把握系统的编译和烧写以后,就可以进一步开头嵌入式开发了,那么这个时候建议先学习一下linux 应用程序的设计,也就是根据教程开头逐步深化。这个时候要根据网盘里的itop-4412 开发板视频教程及其相关里的嵌入式 linux 视频

24、举行学习。大家在初学的时候,还是要根据这个试验的挨次来走一遍,这里强调两个方面,来协助大家理解:一、第一个试验也就是第 0 个,是制作 linux 的最小系统,那么什么是最小系统呢,就是 linux 运行的时候能跑的起来的最小系统,也就是说我们在文件系统当中把图形系统的内容从这个文件系统里面砍掉了;在无数设备里面,比如说路由器,或者一些通讯类或者控制类的产品中是不需要图形界面的,这样我们就可以做一个简化的 linux 文件系统,这时候最小系统的设计就排上用场了。二、这些试验都是通过烧写文件系统的方式来测试的,其实有一种比较容易和有用的方 法,那就是通过网络文件系统来举行(nfs),至于什么是

25、nfs,以及如何搭建,大家一定要学习一下,详细可以参考第 12个实验,就是试验 12,由于未来我们调试应用程序或者驱动都是要通过这个手段来举行的,它是公认的比较好用的调试方法。也就是说我们这些试验回过头来,都是可以通过 nfs 来举行调试的,这时候就不用每次烧写,囫囵调试工作变得更简单,在实际的 linux 调试中,多数是通过这种方式来举行的。所以说大家一定要学会 nfs 的调试办法。学完 linux 的应用程序设计,接着应当学习一下 linux 驱动方面的编程了。linux 驱动程序所有把握是十分困难的,但是要明确我们的目标是能利用 linux 这个操作系统来开发产品。大家都知道,linux 的驱动分为网络设备驱动、块设备驱动以及字符类设备驱动,如

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论