新手集合--嵌入式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和嵌入式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知识的分享

 

每天进步一点点......  图 二进制人生公众号

  • 13
    点赞
  • 103
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值