信盈达—您身边的嵌入式&人工智能专家
全国免费咨询热线:400-8788-909

嵌入式软件要从哪些方面进行学习_广州嵌入式培训班

时间:2019-07-16 00:00:00 来源:信盈达 作者:信盈达

最近调查发现,对于嵌入式软件方面来说很多用人单位,hr在招人期间,遇到了很大的问题就是:每年毕业的大学生很多,但是就是招不到合适的嵌入式软件开发人员,大部分原因是因为能力不够,不能达到他们的工作需求。你要知道,学习嵌入式就要满足社会的需求,及用人单位的需要,那么问题来了,如何才能成为一个合格的嵌入式软件工程师,嵌入式软件学习方法又有哪些呢,为了自己的将来就业这必须看。


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


现在很多同学也意识到了学校培养模式和社会需求脱节问题,有一部分同学也先行行动起来,开始注重培养自己的实际动手能力,培养自己实际分析问题,解决问题的问题,培养自己在嵌入式专业实际编程,和调试程序的能力。但是嵌入式专业不同于其他学科,嵌入式专业是一门综合性非常强,涉及知识面非常广的学科,对于初学者来说,面对那么多教程,课本,那么多知识点,往往不知道从何处下手,不知道哪些是重点,哪些不是重点,这些知识点之间有什么关联,一脸的茫然,然后东一榔头,西一棒子,折腾了几个月甚至大半年后,还是找不着学习嵌入式的方向,还徘徊在嵌入式开发的大门之外。那么重点来了,嵌入式软件学习在这里告诉你。


首先我们先来嵌入式软件是什么:嵌入式软件就是嵌入在硬件中的操作系统和开发工具软件。那么常用的嵌入式操作系统就是linux了,有很多嵌入式操作系统,说多了会不明白,那么就以嵌入式linux系统为例来了解。


一、安装虚拟机和Linux系统。

一般人用的电脑都会装Windows系统,要想在Windows上跑其它系统,得安装虚拟机。而目前主流的虚拟机有vmware、VirtualBox、hyperV等,你可以随便选一个安装。然后去官网下载个人版的Linux镜像(.iso文件)并把它安装在虚拟机里面即可,这里给出主流Linux系统的官网链接:ubuntu、fedora、centos、debian、suse。如果你没有用过linux的话,推荐使用ubuntu。


二、学会使用Linux常用工具。
1、编辑器(写代码必备的)。有gedit,vim,emacs,sublime等,推荐学vim。
2、gcc和gdb。gcc是编译器,gdb就是代码调试器。
3、makefile、autoconf、automake。这里可不像VC++6.0这种工具,点个鼠标就给你编译好。在Linux下,你得用makefile和make工具,来编译代码。其中autoconf和automake可以自动生成makefile。
4、ssh、tftp。如果你在ARM开发板上弄了个Web服务器,那么,你就可以用这些工具去访问它。其中,ssh工具建议用SecureCRT或者MobaXterm。
5、samba。要想用Linux跟windows交换数据,还可以搭建samba服务器。

6、版本控制器。有svn,cvs,git等,推荐学git。有了git,你就不必手动备份代码了。


三、学会使用Linux常用命令。

linux的命令是你在学习中经常用到的,所以可以在百度上查或者买本linux命令的书来学哦。


四、shell脚本十学嵌入式必备的。

在实际工作中,复杂的系统管理操作,不会一行一行地敲命令,而是用脚本(命令是基础)。脚本也是一种编程语言,只不过是解释型语言。相比C/C++、C#、JAVA这类高级语言,脚本要易学很多(因为增加了语法糖)。在Linux下,shell也有很多种,如:bsh、bash、csh、tcsh、ksh、zsh等,一般是学bash,其它的遇到再学也不迟,因为都是大同小异的。推荐《Linux Shell编程从初学到精通》


五、学会Linux下C编程。

尽管已经明白了很多了,但是不管什么编程都是还会涉及C语言的,所以C语言是必须要好好学的。此外,C语言的执行效率比bash要高,网络编程的Socket也常常用C语言开发。在这里,得掌握基本的文件操作、进程/线程控制、Socket等。推荐《嵌入式Linux C语言开发》


六、了解硬件方面的知识

对硬件方面还是要稍微了解一下的,不然不能和硬件对接哦,这里就不多说硬件方面的知识了,对于硬件你可以从:单片机,数据结构,编译原理,数据库等。

学完上面这些理论之后,得再复习一下linux下C编程,你会有更大的收获。


七、驱动开发。

由于系统还没起来,所以驱动能用到的API(内核的部分API,如:kprintk、kmalloc等)并不多,很多函数还是得自己写的,其中,会经常访问临界资源,所以得掌握自旋锁、睡眠锁。此外,驱动程序出问题的话,整个系统就挂掉了,所以还要掌握各种调试驱动的方法,如:goto语句、日志系统、KDB等。接下来就要熟悉掌握字符设备和块设备的驱动程序了。


八、文件系统。

在学习操作系统原理的时候,已经有介绍文件系统了,而且不需要深入研究文件系统的具体算法,只需要了解其特性再学会使用它就可以了。如:NFS、FAT32、NTFS、yaffs2、ext4、ZFS等。


九、内核裁剪。

一般初学,可以先掌握内核剪裁(具体工作就是填写若干个选项)。剪裁只是去掉内核部分不需要的功能,以减少代码体积。这里只要求你对内核的各个功能选项都很熟悉就可以了。如果剪裁还不能满足要求的话,得阅读内核源码,修改内核了。


十、移植bootloader。

单片机也有bootloader,在keil C下的startup.a51,主要是做一些初始化工作。那么,在ARM上面的bootloader也是一样的功能,同样,也没有那么重要所以把它排在后面。常用的bootloader有vivi和uboot,一般学习uboot,主要掌握uboot的启动流程和移植。在经过前面的学习,那么uboot对你来说已经非常容易的了,一般只需要学会使用uboot或者用已经移植好的uboot,不需要深入研究它。推荐《Ubuntu Linux从初学到精通》


以上就是嵌入式学习的几个重要的知识内容,详细内容可以查看信盈达的嵌入式课程大纲