新手集合--嵌入式linux学习路线--三大阶段
微信公众号:二进制人生 专注于嵌入式linux开发。
本文持续更新,第一版先面世,转发请保留出处:二进制人生。这个学习路线是遵照大多数人的认知规律来的,
第一阶段
1.1 C语言入门
入门选一本简单的、薄一点、不要出错的书就可以了,例如谭浩强老爷子
的书,选太厚的容易打击你的信心和学习兴趣,谭老爷子的书虽然被很多人喷,但对于初学者来说还是比较合适的。在入门之后才建议去看C语言的经典教程:
《C Primer Plus》
这本书比较厚,知识点比较全,可以用于查漏补缺。
《C程序设计语言》(The C Programming Language)黑皮书这本书虽然经典,但是我个人觉得不适合初学者去看,个人看来这本书更像是在叙述C语言的标准,所以讲得比较精炼,初学者是看不懂的。
项目实战:
学完C语言之后可以尝试写一个无界面的学生成绩管理系统、图书管理系统。我大学时C语言的课设就是写一个学生成绩管理系统。
1.2 基本的数据结构
单向链表、双向链表、循环队列、循环缓冲区、简单的二叉树
1.3 学会使用linux操作系统
掌握基本的linux命令,ubuntu(或者其他发行版本)操作系统的使用。
1.4 计算机网络基础
-
tcp/ip网络模型、osi参考模型
-
着重掌握tcp、http、udp、ip协议
-
学会使用抓包工具,结合fiddle工具、wireshark等抓包工具学习网络协议。
推荐谢稀仁《计算机网络》这本书,经典的计算机网络教科书。
第二阶段
2.1精通C语言
想要精通C语言并不容易,没有一两年的磨练难谈精通。
推荐书籍:
-
《C专家编程》
-
《C与指针》
-
《C陷阱》
-
《C程序设计语言》(The C Programming Language)黑皮书
C语言的难点在于指针和数组,前面三本书大部分的章节都是围绕这两点展开。
《C程序设计语言》是由C语言的设计者Dennis M. Ritchie和著名计算机科学家Brian W. Kernighan编写的一部介绍标准C语言及其程序设计方法的权威性经典著作。整本书有种提纲挈领的感觉,适合在学完C语言之后再来慢慢品读,这本书很简练,废话很少,可以看成是一种标准。
2.2 最好掌握C++(不是必须,但推荐)
有了C语言的基础,学习C语言是非常容易的,难点在于从面向过程到面向对象编程的转变,掌握面向对象的设计规则和设计思想。
入门书籍:
-
《C++ Primer Plus》
-
《C++ Primer》
C++进阶书籍:
-
《C++沉思录》
-
《Effictive C++》
-
《More Effictive C++》
-
《深度探索C++对象模型》
-
...
2.3 掌握linux C(linux应用程序开发)
学习上层的嵌入式linux应用程序开发和编译调试(gcc、gdb的使用)。
《UNIX环境高级编程》
《UNIX网络编程》
练手项目
-
实现一个最基本的tcp服务器/客户端程序
-
实现一个简单的http服务器
-
实现一个多人聊天室
-
实现一个多任务线程池
-
实现一个多进程通信
-
实现一个web服务器多进程并发测试工具
-
实现一个多进程
2.4 shell脚本
《linux命令行于shell脚本编程大全》
《linux shell脚本攻略》
其实也不用看书,找个系统的知识网站或者博客看下,比如菜鸟教程,再动手写下也可以。
2.5 Makefile语法
推荐 陈皓的系列文章,自行百度。
2.6 学习arm
认识arm体系结构
掌握基本的arm汇编
2.7 嵌入式系统的构建
建议买一个开发板。
交叉编译
ssh、telnet等工具的使用
samba服务器搭建
nfs文件系统挂载
kernel裁剪、编译、烧写。
基本的uboot命令、uboot编译烧写、尝试自己添加一个uboot命令。
文件系统制作、裁剪、烧写(busybox使用)。
第三阶段
3.1 学习内核
从事应用层、驱动层的都应深入学习内核,驱动层的工作对于内核的要求更高一些。
三大主题:
-
进程管理与调用
进程、线程
-
内存管理
进程的内存布局
-
文件系统
推荐书籍:
-
《深入理解Linux内核》(第三版)
-
《Linux内核源代码情景分析》
3.2 操作系统原理
很多的高校把这个课放在了大一来教,个人觉得在没有编程基础和学习linux操作系统之前来学习操作系统原理,有点枯燥和难以理解,很多的知识点不能引起学生的共鸣。按照很多人的学习路线,也是在有了一定的开发经验之后才来弥补操作系统的知识。
-
《深入理解计算机系统》
-
《操作系统概念》
这个属于内功心法,学了和没学的人在认知上是不一样的,学完操作系统原理,看待问题能够看得透彻一些。譬如,老生常谈进程和线程的概念,每一个人能讲出的深度都是不一样的。
3.3 学习行业相关的东西(稀缺人才)
到了这个阶段,你需要学习行业相关的东西,这取决于你想从事的行业,
-
流媒体 ---- rtsp、rtmp、onvif等协议
-
路由器 ---- 网络协议
-
机器人 ---- 实时操作系统
-
android
-
Qt
-
底层驱动开发
-
....
3.4 终生学习
学习是一生的事情,技术永远学不完,保持终生学习的态度才能不被社会所淘汰!
深夜码字不易,喜欢的点个赞,关注我的微信公众号:二进制人生,是对我最大的支持。加入我的知识分享圈,我将致力于嵌入式linux知识的分享。
每天进步一点点......