首页 > 编程知识 正文

嵌入式系统设计师证书(史上最详细嵌入式系统设计师修炼手册)

时间:2023-05-04 05:30:45 阅读:122643 作者:4834

最近,经常有人打电话给我,询问我是否有嵌入式Linux的开发人员。 他们说他们的公司需要了解嵌入式Linux环境下的软件开发者。 我回答说,现在每年毕业的大学生那么多,还招不到合适的软件开发者吗? 他告诉我,毕业大学生很多,但大部分能力不够,不能满足他们的工作要求。

通过该公司HR的一句话,我知道了我们现在的大学教育和大学生就业的现状。一方面每年那么多大学生毕业找不到合适的工作,另一方面很多用人单位和企业又找不到合适的人才。

造成这一现象的最基本原因是学校教育和社会需求的严重脱节。很多嵌入式专业学生毕业后,还是难以满足用人单位要求的最主要原因是高校在嵌入式教学方面重视理论和轻实践,很多嵌入式专业老师也没有实际工作经验, 这样培养出来的学生可能对他有些不对劲,但是调试让他实际写的APP就傻了,不知道从哪里着手。 因为他们在学校的学习,可能没有机会带他们实际调试嵌入式程序,也可能没有机会调试嵌入式APP应用程序。

嵌入式专业是一门非常实践的学科,只有多动手,多实践,多编程,多调试,多看书,多思考才能真正掌握嵌入式开发技术。

那么,如何从零开始学习嵌入式开发技术,进入嵌入式开发的大门呢? 笔者根据自己的嵌入式学习经验和多年的嵌入式Linux教学经验,阐述自己对嵌入式学习的想法和意见,希望对大家有所帮助。

一、学好基本功的嵌入式系统专业是计算机硬件技术、计算机软件技术及电子电路技术综合学科,包括数字电路、模拟电路、计算机组成原理、单片机基础、c语言基础、

1、C语言基础

在正式学习嵌入式开发之前,首先要打好基础。 其中最重要的是c语言基础、数字电路、计算机组成原理三节课。 对于c语言,您至少可以编写调试3 ~ 500行程序,了解c语言的基本语法规则、基本语句的使用、指针的概念,并利用各种指针。

2、计算机组成原理

计算机的组成原理是了解构成一个计算机系统的几个大部件、计算机系统的结构、系统总线,了解处理器与计算机外部设备的关系,了解处理器与计算机外围设备如何协调工作, 了解计算机软件和硬件如何分工协作完成任务,软件通过寄存器控制硬件。

3、数字电路

数字电路、模拟电路应理解其基本原理的概念,能理解简单的模拟、数字电路原理图。 了解数字电路中的寄存器、时序概念,可以查看芯片手册和时序图。 对于其他基础课程,重点是了解其一些基本概念、如何使用等。

对于电子、自动化、通信、计算机类专业的学生,大二、大三开设的专业基础或专业课程基本包含以上大部分课程。 由于实践不足,可能学习不太深入,但一些基本概念和基本知识应该还知道。 对一些薄弱环节,自己加强一点学习,基本上就有了学习嵌入式开发的基础。 在嵌入式基本功的学习阶段,最重要的是c语言和单片机的基础,用c语言实现单片机与PC的串行通信,用c语言控制LED等的显示,用c语言控制数码管的显示等小在此期间所需的学习工具是单片机51的学习开发板。

二、嵌入式Linux APP应用开发学习嵌入式开发的基础知识后,此时,你已经有了一定的嵌入式开发基础,可以进行基于单片机的嵌入式系统设计。 单片机编程本身也是嵌入式编程,但这里以单片机的开发作为嵌入式系统开发的基础,而不是以单片机的开发作为真正的嵌入式系统开发。 在此,嵌入式系统的开发是指在具有操作系统的嵌入式平台上的应用和驱动开发,特别是在嵌入式Linux平台上的开发。

单片机的开发自古以来就非常受欢迎,但现在在一些比较简单的系统中单片机也得到了非常广泛的应用。 随着硬件成本的降低,一些比较复杂的嵌入式设备通常采用嵌入式Linux操作系统,在嵌入式Linux平台上进行开发,可以大大提高嵌入式开发的效率,提高系统的稳定性和可靠性

由于Linux是一个开源操作系统,因此您可以通过阅读Linux内核来了解内核的实现机制,并在必要时修改内核源代码以提高系统性能。 另一方面,世界上参与Linux开发的团队非常多,网络上有大量嵌入式Linux开发资料和源代码。 很多你要实现的功能在网上基本上可以找到相关源代码。 参考别人写的源代码,可以大大提高自己的工作效率和技术能力。

近年来,随着参与Linux开发的人数越来越多,Linux系统的稳定性、实时性大幅提高,Linux系统无论是在服务器还是嵌入式平台上都得到广泛应用,目前包括华为、中兴、朗讯在内的大型通信巨头都在自己公司

基于以上理由,我的建议是学嵌入式开发,就学嵌入式Linux开发

ong>,相对于wince等其他的嵌入式平台,你可以真正学到更多的东西,学到嵌入式技术的精髓,同时他又符合嵌入式产业发 展的方向,不容易被日新月异的技术发展所淘汰。

有了嵌入式开发的基础,又知道了我们为什么要学习嵌入式Linux开发,那我们就要开始动手开始学习了,那如何开始学习嵌入式Linux开发,从哪里开始着手呢?

很多同学这时候就开始买Linux书籍,从图书馆借了一大堆关于Linux的书:什么《Linux使用基础教程》、《Linux源码深度分析》、 《Linux情景分析等》、 《Linux高级使用指南》等等。结果抱着这些图书看了10天半个月还是不知所云,当初学习的激情慢慢就消退了,最后不了了之,终究没有进入嵌入式开发大 门。

究其原因,是因为没有找到合适学习嵌入式开发的方法,做任何事情都有方法可循,找对了学习方法往往就能事半功倍;否则就可能是事倍功半,甚至劳而无 功。

接下来我先分析一下同学们的几种常见的嵌入式Linux学习误区,然后提出一种比较合适的嵌入式Linux学习方法。

误区一:全身投入学习桌面或服务器版本Linux系统

很多想学嵌入式Linux 的同学经常问我,我不会Linux系统,怎么学习嵌入式Linux开发,于是他们就花费了大量的精力和时间去研究学习桌面版本Linux系统的使用,什么 redhat 、federo、ubuntu等等都用过,如何配置Linux,Linux的各种使用命令都背的滚瓜烂熟,Linux各种服务器的配置,还原备份各种操 作非常熟悉,以为这样就学会了嵌入式Linux开发。其实这是一个学习嵌入式Linux开发的误区。

Linux桌面环境只是嵌入式Linux的一个开发工具,开发环境而已。我们的目标不是学习Linux服务器的配置和使用,Linux服务器的高级配置和 使用那是另外一个领域,不属于嵌入式Linux讨论的范畴。我们进行嵌入式Linux开发,只是把Linux桌面环境当作一个工具,在Linux桌面环境 下运行嵌入式Linux开发工具,例如gcc 编译器,make工具来开发我们的嵌入式Linux应用程序而已,对于嵌入式开发工程师来说,没有必要花费那么多的精力和时间去研究Linux桌面版和服 务器的应用,只要能了解最基本的操作即可。现在的桌面Linux系统的图形化界面做的也相当好,跟window具有相同的易用性能,例如ubuntu很多 操作都可以在图形界面下完成,就没有必要去记每个Linux命令了。熟悉Linux桌面系统的使用和基本操作命令,安排1周时间学习基本就可以掌握 了。

误区二:直接阅读Linux内核源代码

很多想学Linux,在连Linux是什么东西,一点都还不会使用的情况下去就阅读Linux内核源代码,花了大量时间去阅读《Linux源码深度分 析》、《 Linux情景分析等》等书。这样的结果很可能就是看的头昏眼花,不知所云,最后只能放弃了。这也是同学们学习嵌入式linux的一个误区,在有 一定嵌入式Linux开发基础后,带着一定的目的去阅读Linux源代码,这样可以极大的提高你的技术能力,但是你在没有任何基础,对Linux一点都不 了解的情况下就去阅读Linux内核源代码,无异于以卵击石,最后只能是撞个头破血流。

以上分析了同学们学习嵌入式linux 开发的2个误区,那么如何正确的嵌入式linux开发呢?

做任何事情都有一个循序渐进的过程,学习嵌入式Linux也一样。在有了一定的嵌入式开发基础后,学习嵌入式Linux开发比较适合的切入点是从嵌入式 Linux应用程序开发开始,即暂时先不去关心嵌入式硬件平台,不去关心Linux的底层驱动,先把精力集中在现有的嵌入式Linux平台上进行嵌入式 Linux应用程序设计开发。

学习嵌入式Linux开发绝不是看看书就可以学好的,需要多实践,编程调试。因为嵌入式开发不同于普通的基于PC机或服务器 的应用程序开发,嵌入式开发的应用程序是要烧写到嵌入式板卡或开发板上运行的,所以首先你要给自己购买一块开发板

有了开发板后,先后开始学习

嵌入式Linux开发环境搭建嵌入式Linux开发模型Linux内核移植和文件系统嵌入式Linux应用程序移植嵌入式Linux多进程、多线程应用程序设计嵌入式Linux网络编程嵌入式Linux数据库开发基于QT的嵌入式Linux图形应用软件设计。

每学一章节都要通过相关实验来验证你从书上学到的东西,同时提高自己编写代码,调试程序的能力。这 个过程根据不同学员的基础不同,大概要花上1 ~ 2个月时间。学完这些课程后,你就有了在现有的嵌入式Linux平台上进行应用程式设计开发的能力,到一些嵌入式软件公司去,能够胜任在现有的嵌入式 Linux平台上进行上层的应用程序开发工作。但是目前你还不能进行嵌入式Linux系统和驱动的开发,也就是说,你现在只能在一个已经构建好的嵌入式 Linux平台上进行应用程序开发,而自己还没有能力根据实际需要去重新构建一个嵌入式Linux平台。要让自己有能力根据实际需要重新构建一个嵌入式 Linux软硬件平台,这时候就需要进行下一阶段的学习了,即嵌入式Linux系统和驱动开发。

三、嵌入式Linux系统和驱动开发

有了嵌入式Linux平台上开发应用程序的基础,你已经对Linux的功能、Linux对应用程序提供的接口和系统调用有了一定的了解,知道如何利用 Linux提供的功能来进行应用程序开发,知道如何来使用设备驱动来进行应用程序设计,有了这些知识后,你就可以更深入的去学习Linux系统原理和基于 Linux驱动的开发,Linux内核的裁剪,文件系统构,bootloader等等底层的知识了。

想要更深入学习嵌入式Linux系统和驱动开发,要学的内容非常多包括计算机软件、硬件、操作系统知识。这时候你可以参照以下的学习思路:

1、嵌入式硬件

因为嵌入式 Linux系统和驱动的开发,和底层硬件联系非常紧密,所以首先我们从学习了解嵌入式硬件开始。

ARM体系架构S3C2440微处理器接口设计时钟系统LCD屏接口存储控制器及系统的存储空间分配NAND FLASH接口和NOR FLASH接口。

2、bootloader
对嵌入式系统硬件有了一定的了解后,接下来就可以开始学习bootloader了,理解bootloader的概念,功能,和原理,重点掌握U-BOOT的使用和移植。

3、嵌入式Linux内核机制

分析嵌入式Linux源码组成内核的模块机制内核进程管理内存管理机制Linux的中断系统Linux内核的移植等。

4、嵌入式Linux设备驱动开发

重点掌握字符设备驱动开发LCD屏设备驱动开发触摸屏设备驱动开发USB设备驱动开发网卡设备驱动开发。

学完这些知识点并通过相关实验验证后,嵌入式Linux系统和驱动的开发就算掌握了差不多了,能够胜任绝大部分基于Linux平台的驱动开发工作了。学完这些知识点,根据个人的不同情况,一般需要花三个月到半年时间。通过这一阶段的 学习,你在嵌入式Linux开发领域已经算是有了一定的功底,已经不再被人称为菜鸟了,已经进入嵌入式Linux开发cdzs行列了。

四、系统性能优化

深入理解了嵌入式内核和驱动开发,这时候写个什么驱动对你已经没有什么问题了,开发过程中一些基本问题都难不倒你了。这时你可能想优化一下系统的性能,比如实时性,提高系统的启动速度,或者优化系统的内存管理机制,要达到修改内核核心机制的境界,你就需要去深入去研读Linux内核源码了,参考 《Linux源码深度分析》《Linux情景分析等》等Linux源码分析的书籍,深入理解Linux各部分的实现机制和原理,以及可能存在的问题。

你只有在深入理解现有代码和实现机制的基础上,才能提出更好的改进方案。如果你能达到这个境界,那你已经是cdzs中的cdzs,可以笑傲群雄了。

--THE END--

以上是笔者结合自己的嵌入式学习经历和嵌入式培训经验总结的一些嵌入式学习方法和步骤,这只是笔者对嵌入式学习的一些看法,希望对那些有兴趣学习嵌入式 Linux又不知道从哪开始学的同学们有所帮助。当然,每个人的基础,各方面的情况都不一样,每个人都有自己适合的学习方式,本文章总结的一些学习方法和思路仅供参考。

===========我是华丽的分割线===========

更多知识:
点击关注专题:嵌入式Linux&ARM

或浏览器打开:https://www.jianshu.com/c/42d33cadb1c1

或扫描二维码:

文章参考微信公众号[嵌入式ARM]

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。