前言
本文章仅供个人学习使用,不可用于商业用途;
其中涉及到的开源教程仅仅是个人感觉合适并经典,不是打广告。
如有侵权,请发邮件songkun315@163.com,我会修改。
自我介绍
自动化专业,15年毕业,一晃从事嵌入式软件开发两年了,两年的时间让我在嵌入式软件开发这个行业上由菜鸟走向入门,自己在学习过程中走了很多弯路,懂得越多越感觉自己渺小,特此做“嵌入式linux路线图”用来给那些准备投入嵌入式行业的童鞋们提供正确的方向。
以前因为工作需要,用到什么就去学什么知识,掌握的知识点特别碎片化。来北京后决定系统、全面整理这两年的收获以及掌握不是很了解的知识点,并会把笔记发博客供大家挑错与学习。
整理以前的笔记以及把未完全掌握的知识掌握,预计需要花费1年,预计18年年底结束。
生命不息,学习不止,与君共勉之,2017-10-24
嵌入式工程师行业简要介绍
大家可以去招聘网上搜索
嵌入式,不同的公司对于这个岗位要求不一样。
嵌入式工程师的职责是研发产品。而产品肯定有软硬件组成(这里不算结构、不讨论互联网相关内容)。
所以嵌入式工程师分为嵌入式软件和嵌入式硬件(
这个嵌入式硬件也可以理解为硬件工程师)两大方向。
嵌入式软件开发是一个很广泛的话题,不管是m
系列还是a系列的芯片都可以称为arm,就好比你买一块stm32开发板进行学习开发,也可以说是嵌入式开发。
个人感觉,arm
的a系列的linux产品开发可以说是最复杂的(个人见解),所以本部分的线路图称为“嵌入式linux路线图”。
对于嵌入式软件开发人员来说
也是需要了解硬件知识,了解芯片结构等。当然了,对于有些很复杂功能的产品而言,嵌入式软件又再次分为应用和驱动
(一般情况是大公司或者产品功能很复杂的情况下才会进一步细分,驱动开发与最底层硬件打交道,而应用开发则是实现功能,通过驱动控制硬件,不在设计硬件知识)。
对于很多小公司而言,所有这一切都是同一个人开发。,个人建议,还是学生的亲们,刚毕业要去大公司锻炼。
学习方法
视频入门,入门后以看书为主学习。
学习新知识,看视频是很快入门的方式,但是当你入门后必须看书从头看书,因为讲课者是带有个人情感 {MOD}彩去讲解知识,有些简单的知识忘记讲了,而对于初学者,这些简单的知识恰恰是基石。
线路图
根据我掌握的信息,系统整体规划下嵌入式Linux
学习路线((*^__^*)嘻嘻……,我就是这样好为人师)若哪里不对,请挑错指导。
我会按照这个线路图系统、全面整理学习笔记,并发博客,尽请关注博客。
我把嵌入式linux
学习比作一颗大树的主干,“主干”掌握了,再去弄其他的枝枝叉叉就很容易了。主干主要有以下几个方面。
C语言
书籍
推荐 “
C Primer Plus”、“程序员的自我修养”
在大学中,学习C
语言一般的老师只会讲书籍前一大部分,但是如果期望从事嵌入式开发,必须精通,指针 与数组、结构体、宏定义使用等。这些内容在书籍的后半部分。
Makefile
书籍推荐“Gnu Make”
一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。(百度百科)
对于职业发展而言,不掌握makefile,那是很吃亏。
请关注我的博客,会发由浅入深的教程。或者百度自行查找教程。
数据结构
书籍推荐严蔚敏老师的“数据结构”
如果说C语言相当于文字,那么数据结构就相当于在造句、写文章。优秀的代码质量有一部分取决于对数据结构的掌握程度。在数据结构部分要把、链表、树、排序作为学习重点,具体请看博客,其他内容不做推荐
Linux 系统
书籍推荐:鸟哥的Linux
私房菜-基础学习篇
视频推荐:兄弟连基础篇(可网络搜索)
这两个推荐的内容有点偏向运维linux了,具体请看我的博客。若是有时间和精力都研究也可以。
UNIX环境高级编程
书籍推荐:unix环境高级编程
学习嵌入式linux,离不开“UNIX环境高级编程v3”(简称apue)这本书,对于非计算机专业的童鞋们来说,
这本书学习很吃力,并且网上视频很少(反正我是没有找到视频)。
后期我会做一套视频,用c与c++实现(视频发放时间预计在18年10月之前)。
对于这套视频我的想法是,以“UNIX高级环境编程”书籍为主线,结合工作以及网络遇到的问题,全面的讲解,
争取让大家看视频就能入门并掌握会开发程序。
脚本语言
脚本语言比较多,暂时推荐bash脚本、这里可以去“鸟哥的Linux私房菜-基础学习篇”中学习入门。
也可以去招聘网站上,搜索嵌入式,看看哪些工作需要脚本语言,需要何种。自己了解感兴趣后可以去学习。
Linux内核驱动
这里包括系统移植,字符设备等。
这我推荐大家去购书网,搜索关键词 如“Linux内核” 驱动 等关,看网上评论以及销售量购买书籍。
内核有不同的版本,不同的公司使用内核版本也不同,但是要明白,知识是相同的,大部分是新版本兼容旧版本。所以我个人建议去买最新内核。
其他
主干说完了,再说下侧重点
大家要知道,嵌入式linux是详细分为应用开发和驱动开发,而以上讲的则是基础主干。根据不同方向,这里再说说。
若选择应用开发,则需要深入研究C++语言、熟悉网络知识(入门的话选择大学的网络教材即可)、界面处理,比如qt或者Android(就需要学习java语言),对于linux内核就不需要了解了。
若是选择驱动开发,那就不需要研究C++了。数据结构就行,多多看书。