学习知识|如何学习嵌入式开发( 四 )


①电脑一开机 , 那些界面是谁显示的?
是BIOS , 它做什么?一些自检 , 然后从硬盘上读入windows , 并启动它 。
类似的 , 这个BIOS对应于嵌入式Linux里的bootloader 。 这个bootloader要去Flash上读入Linux内核 , 并启动它 。
②启动windows的目的是什么?
当然运行应用程序以便上网、聊天什么的了 。
这些上网程序、聊天程序在哪?
在C盘、D盘上 。
所以 , windows要先识别出C盘、D盘 。 在Linux下我们称之为根文件系统 。
③windows能识别出C盘、D盘 , 那么肯定有读写硬盘的能力 。
这个能力我们称之为驱动程序 。 当然不仅仅是操作硬盘 , 还有网卡、USB等等其他硬件 。 嵌入式Linux能从Flash上读出并执行应用程序 , 肯定也得有Flash的驱动程序啊 , 当然也不仅仅是Flash 。
简单地说 , 嵌入式LINUX系统里含有bootloader、内核、驱动程序、根文件系统、应用程序这5大块 。 而应用程序 , 我们又可以分为:C/C++、Android 。
所以 , 嵌入式Linux+Android系统包含以下6部分内容:
①bootloader
②Linux内核
③驱动程序
④使用C/C++编写的应用程序
⑤Android系统本身
⑥Android应用程序
Android跟Linux的联系实在太大了 , 它的应用是如此广泛 , 学习了Linux之后没有理由停下来不学习Android 。 在大多数智能设备中 , 运行的是Linux操作系统;它上面要么安装有Android , 要么可以跟Android手机互联 。 现在 , Linux+Android已成标配 。
2. 怎么学习嵌入式Linux操作系统本文假设您是零基础 , 以实用为主 , 用最快的时间让你入门;后面也会附上想深入学习时可以参考的资料 。
在实际工作中 , 我们从事的是“操作系统”周边的开发 , 并不会太深入学习、修改操作系统本身 。
①操作系统具有进程管理、存储管理、文件管理和设备管理等功能 , 这些核心功能非常稳定可靠 , 基本上不需要我们修改代码 。 我们只需要针对自己的硬件完善驱动程序
②学习驱动时必定会涉及其他知识 , 比如存储管理、进程调度 。 当你深入理解了驱动程序后 , 也会加深对操作系统其他部分的理解
③Linux内核中大部分代码都是设备驱动程序 , 可以认为Linux内核由各类驱动构成
但是 , 要成为该领域的高手 , 一定要深入理解Linux操作系统本身 , 要去研读它的源代码 。
在忙完工作 , 闲暇之余 , 可以看看这些书:
①赵炯的《linux内核完全注释》 , 这本比较薄 , 推荐这本 。 他后来又出了《Linux 内核完全剖析》 , 太厚了 , 搞不好看了后面就忘记前面了 。
②毛德操、胡希明的《LINUX核心源代码情景分析》 , 此书分上下册 , 巨厚无比 。 当作字典看即可:想深入理解某方面的知识 , 就去看某章节 。
③其他好书还有很多 , 我没怎么看 , 没有更多建议
基于快速入门 , 上手工作的目的 , 您先不用看上面的书 , 先按本文学习 。
2.1 入门路线图假设您是零基础 , 我们规划了如下入门路线图 。 前面的知识 , 是后面知识的基础 , 建议按顺序学习 。 每一部分 , 不一定需要学得很深入透彻 , 下面分章节描述 。
2.2 学习驱动程序之前的基础知识2.2.1 C语言
只要是理工科专业的 , 似乎都会教C语言 。 我见过很多C语言考试90、100分的 , 一上机就傻了 , 我怀疑他们都没在电脑上写过程序 。
理论再好 , 没有实践不能干活的话 , 公司招你去干嘛?
反过来 , 实践出真知 , 学习C语言 , 必须练练练、写写写!
当你掌握基本语法后 , 就可以在电脑上练习一些C语言习题了;

推荐阅读