作为一个新人,怎样学习嵌入式 Linux?被问过太多次,特写
这
作为一个新人,怎样学习嵌入式 Linux?被问过太多次,特写这篇文章来
回答一下。
在学习嵌入式 Linux 之前,肯定要有 C 语言基础。汇编基础有没有无所谓
(就那么几条汇编指令,用到了一看就会)。C 语言要学到什么程度呢?越熟当
然越好,不熟的话也要具备基本技能。比如写一个数组排序、输入数字求和什
么的。学 C 语言唯一的方法是多写程序多练习,编译出错没关系,自己去解决;
执行出错没关系,自己去分析。以前我是用 VC 来练习 C 语言的,经常去尝试
着写一些 C 语言竞赛的题目。它们是纯 C、纯数学、纯逻辑的题目,不涉及界
面这些东西,很适合煅炼你的编程能力。
回到主题,首先我们要明白你的目的是什么,大概来说所谓嵌入式 Linux
可以分为两部分:底层系统、应用开发。
如果你是想做应用开发,那么你去把 C 语言、JAVA、数据结构什么的学好吧。
嵌入式应用开发和 PC 上的应用开发并没有什么特别要注意的。也许你说在嵌
入式上要做些优化,是的,要优化,但是未经优化的程序和 PC 上的程序开发
没什么差别。另外,当你有能力去优化时,你已经不用来问这个问题了。具体
到某个例子,比如说开发界面,在 PC 上我们用 VC;在嵌入式 Linux 里也许我
们用 QT 也许用 Android,这个时候你应该去学学 QT、Android 的编程。但是
基础还是 C 或 JAVA,在此基础上去熟悉它们的接口。你学过 VC 的话,也是要
花时间去了解那些类、控件的。
如果你的目的是想学习底层系统,这是我的专长,倒是可以说一点。
在回答这个问题之前,我先回答:不少人问我,到底是学驱动还是学应用?
我只能说凭兴趣,并且驱动和应用并不是截然分开的。
1. 我们说的驱动,其实并不局限于硬件的操作,还有操作系统的原理、进程的
休眠唤醒调度等概念。想写出一个好的应用,想比较好的解决应用碰到的问题,
这些知识你应该懂。
2. 做应用门槛低,特别是现在的 ANDROID,纯 JAVA。做应用的发展路径个
人认为就是业务纯熟。比如在通信行业、IPTV 行业、手机行业,你了解行业的
需求。所以,当领导的人,多是做应用出身的。
3. 做驱动,其实我不想称为“做驱动”,而是想称为“做底层系统”,做好了这是
通杀各行业。我工作几年,做过手机、IPTV、会议电视,但是这些产品对我毫
无差别,因为我只做底层。他们的业务跟我没关系。当应用出现问题,他们解
决不了时,我就会从内核角度给他们出主意,给他们提供工具。做底层的发展
方向,个人认为是技术专家。
4. 其实,做底层还是做应用,之间并没有一个界线,有底层经验,再去做应用,
你会感觉很踏实。有了业务经验,你再了解一下底层,很快就可以组成一个团
队。
回到怎么学的问题上。嵌入式 Linux 底层系统包含哪些东西?不要急,举