赞
踩
嵌入式是一个泛的概念,涉及的知识很多,涉及领域很广。很多人认为学个单片机就是学了嵌入式,这样说也没错,但是单片机仅仅是嵌入式基础,学习单片机仅仅是学习嵌入式的开始。
嵌入式包括什么:51单片机,STM32单片机,小型实时操作系统(UCOSIII,FreeRTOS),TCP/IP协议栈(LWIP),文件系统,linux系统移植和驱动开发,QT开发等等。嵌入式是有很多方向的其中包括单片机开发,嵌入式驱动开发,嵌入式应用开发,嵌入式系统开发,大致分为以上四类,但又分为很多方向的,有的是做音频,图像,算法,系统等。选择一个方向,做好,做精,都是有前途的。
学习嵌入式的路上必定困难重重,很多时候也会迷茫,只要自己认准的事情,无论再难,只要自己坚持下去,必定会有所成长和收获!在我学习嵌入式的路上,自己走过非常多的弯路,因此希望看完这篇文章的人,能少走一些弯路!非常感谢曾经帮助过自己的人,感谢在我最迷茫的时候给我指明方向!下面讲述一下,自己的学习四年半嵌入式的经验和经历!
学习嵌入式的编程语言有三种语言,汇编语言(了解),C语言(熟练),C++语言(掌握)。一定要牢记,编程语言是一门工具和技能,编程语言用的越多也就越熟悉,一定要多用编程语言编写程序!现在编程语言很多,但只要把一门编程语言学精学通了,其他的编程语言看了基本语法,你就能直接拿过来用。在这里我推荐的是把C语言给学好,千万不要以为学了判断和循环语句,你就把C语言给学会了,C语言的灵魂所在是指针,耐下心来把指针给吃透了,然后再学习数据结构与算法。另外,切记学习编程语言绝不是一蹴而就,学的越快,忘的越快,一定一定要多看多练多写多改程序!
目前市面上的单片机有很多,8位的51单片机,16位的AVR单片机,32位的RAM单片机。首先值得提的是,在现在的嵌入式体系中,单片机是实现的载体,算是属于硬件范畴!千万不要以为学会了单片机,用C语言编写程序就是软件了,严格意义还是属于硬件。其中我推荐学习的单片机有两款,51单片机和STM32单片机,51单片机可以跟着郭天祥老师学习,STM32单片机可以跟着正点原子学习!很多人认为51单片机不用学,可以直接从STM32单片机开始学习,我个人的见解,如果你是只是为了参加个比赛做个毕设,你可以直接学STM32单片机,但是你若准备以后嵌入式工作的话,应该从51单片机开始学习。
为何要学51单片机,因为51单片机属于八位单片机,架构简单易学易掌握。最好还是学习一下51单片机的架构和汇编语言指令集,我推荐的是单片机原理与应用(哈工大),学好这本书可以为你以后学习其他知识打好基础。应用的话,可以跟着郭天祥老师学习,一定要购买开发版,多在开发板上时间。
接下来就要学习STM32单片机,正点原子讲的比较基础,其实都是一些驱动开发的例子,例程讲的更多的是如何驱动外设。你需要掌握的是,写驱动外设的过程,没必要深究细节,STM32官方库函数以不再更新,目前更新的STM32CUBEMX,可以图形化配置STM32外设寄存器。但这不代表不用学了,如果外设驱动出了问题,你也找不到问题所在。
单片机中最重要的是定时器和中断,尤其是中断,无必要明白是如何工作的。至此上面跑的都是裸机,没有操作系统的!
至此,应该补充一些基础知识了,因为往上再学就会涉及一些软件的知识,如果你不是计算机系,仅是相关专业,那么你就需要补充一些必要的知识。这里只列举相关课程名称,不列举学习方法。
需要补充的课程知识:数据结构与算法,操作系统,计算机组成原理,计算机网络,linux系统。这几门是基础的,其他的可根据需要自己添加!
系统包括操作系统,文件系统,TCP/IP协议栈等。从这里开始,才是真正进入软件开发。操作系统可以先学习一些小型实时操作系统(FreeTOS和UCOSIII),主要学习的内容有移植任务调度,为何能称为实时操作系统,时间片轮转,优先级调度。学了这两款操作系统,你也可以尝试着使用几个国产的操作系统,和裸机进行对比一下。文件系统主要是FATFS,移植并可以试着操作SD卡的读写。TCP/IP协议栈,这个是网络上面使用的,不要认为网络开发不重要,只是在学校里面用到的少,网络通信是很重要的,用途非常广泛。
在现在的社会工作招聘中,嵌入式软件工程师,很多公司都要求会linux开发,可见linux开发的重要性。linux开发首先做的就是linux的移植,其中包括uboot的移植,linux内核移植和文件系统的移植,linux系统中一切皆文件,这个单片机开发有很大的区别。其中,务必熟悉移植流程,千万不要省事,嵌入式在硬件和软件上都具有可裁剪性,你在移植的过程中,肯定会深刻体会这句话。若你想以后从事嵌入式工作,务必了解一下uboot的启动流程和linux启动流程,你会在其中学到很多有用的东西。
linux驱动开发,主要包括字符驱动开发,块驱动开发,网络驱动开发。你可以跟着网上的教程,买个开发板来学习驱动开发,驱动开发代码架构模板务必熟悉。
应用开发推荐QT开发,你可以使用QT开发在嵌入式开发板上制作绚丽的界面。不过应用开发属于纯软件开发,使用的语言为C++,这里我推荐的是可以掌握一下QT应用开发,但不推荐把这当成一份工作。在这里我给出理由,嵌入式开发是属于软硬结合的开发,是需要拥有软件和硬件的知识的,但是QT开发是纯软件开发,和计算机纯软件的相比,我们没有优势。一般接触到嵌入式学生的专业都是电子相关专业,属于软硬结合的学科,所以我建议可以把自身学科的优势给发挥出来。无论考研工作,对自己都是十分有利的!
非常感谢你能看完这篇文章,若你能在本科做完上述这些,相信你在本科生活一定很充实!无论考研还是工作,对你一定有很大的帮助!下面给出我学习中认为重要的书籍照片,可供参考!
最后,再送给你几句话,希望在你想放弃的时候,会因为这几句话的影响坚持下去。
1.自己的努力不会背叛自己,自己付出多少肯定会回报自己多少!
2.要想成为人上人,必须吃得苦中苦!
3.选择远大于努力,努力是为了有更多的选择!
4.在你最想放弃的时候,往往是你最不能放弃的时候!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。