嵌入式linux路线图

2019-07-12 16:07发布

前言

本文章仅供个人学习使用,不可用于商业用途; 其中涉及到的开源教程仅仅是个人感觉合适经典,不是打广告。 如有侵权,请发邮件songkun315@163.com,我会修改。

自我介绍

    自动化专业,15年毕业,一晃从事嵌入式软件开发两年了,两年的时间让我在嵌入式软件开发这个行业上由菜鸟走向入门,自己在学习过程中走了很多弯路,懂得越多越感觉自己渺小,特此做“嵌入式linux路线图”用来给那些准备投入嵌入式行业的童鞋们提供正确的方向。           以前因为工作需要,用到什么就去学什么知识,掌握的知识点特别碎片化。来北京后决定系统、全面整理这两年的收获以及掌握不是很了解的知识点,并会把笔记发博客供大家挑错与学习。         整理以前的笔记以及把未完全掌握的知识掌握,预计需要花费1年,预计18年年底结束。                                     生命不息,学习不止,与君共勉之,2017-10-24

嵌入式工程师行业简要介绍

       大家可以去招聘网上搜索嵌入式,不同的公司对于这个岗位要求不一样。          嵌入式工程师的职责是研发产品。而产品肯定有软硬件组成(这里不算结构、不讨论互联网相关内容)。 所以嵌入式工程师分为嵌入式软件和嵌入式硬件(这个嵌入式硬件也可以理解为硬件工程师)两大方向。       嵌入式软件开发是一个很广泛的话题,不管是m系列还是a系列的芯片都可以称为arm,就好比你买一块stm32开发板进行学习开发,也可以说是嵌入式开发。
    个人感觉,arma系列的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)这本书,对于非计算机专业的童鞋们来说, 这本书学习很吃力,并且网上视频很少(反正我是没有找到视频)。
后期我会做一套视频,用cc++实现(视频发放时间预计在1810月之前)。 对于这套视频我的想法是,以“UNIX高级环境编程”书籍为主线,结合工作以及网络遇到的问题,全面的讲解, 争取让大家看视频就能入门并掌握会开发程序。 
脚本语言 脚本语言比较多,暂时推荐bash脚本、这里可以去“鸟哥的Linux私房菜-基础学习篇”中学习入门。 也可以去招聘网站上,搜索嵌入式,看看哪些工作需要脚本语言,需要何种。自己了解感兴趣后可以去学习。 Linux内核驱动 这里包括系统移植,字符设备等。 这我推荐大家去购书网,搜索关键词  如“Linux内核” 驱动 等关,看网上评论以及销售量购买书籍。 内核有不同的版本,不同的公司使用内核版本也不同,但是要明白,知识是相同的,大部分是新版本兼容旧版本。所以我个人建议去买最新内核。
其他         主干说完了,再说下侧重点         大家要知道,嵌入式linux是详细分为应用开发和驱动开发,而以上讲的则是基础主干。根据不同方向,这里再说说。         若选择应用开发,则需要深入研究C++语言、熟悉网络知识(入门的话选择大学的网络教材即可)、界面处理,比如qt或者Android(就需要学习java语言),对于linux内核就不需要了解了。
        若是选择驱动开发,那就不需要研究C++了。数据结构就行,多多看书。