把你手上的开发板所涉及的硬件,都去尝试写一个驱动吧 。有问题就先"痛苦地思考",思考的过程中你会把很多不相关的知识串联起来,最终贯通 。
四、根文件系统:大家有没有想过这2个问题:
- 对于Linux做出来的产品,有些用作监控、有些做手机、有些做平板 。那么内核启动后,挂载根文件系统后,应该启动哪一个应用程序呢? 答:内核不知道也不管应该启动哪一个用户程序 。它只启动init这一个应用程序,它对应/sbin/init 。显然,这个应用程序就要读取配置文件,根据配置文件去启动用户程序(监控、手册界面、平板界面等等) 这个问题提示我们,文件系统的内容是有一些约定的,比如要有/sbin/init,要有配置文件
- 你写的hello,world程序,有没有想过里面用到的printf是谁实现的? 答:这个函数不是你实现的,是库函数实现的 。它运行时,得找到库 。这个问题提示我们,文件系统里还要有库 。简单的自问自答到这里,要想深入了解,可以看一下busybox的init.c,就可以知道init进程做的事情了 。当然,也可以看<嵌入式Linux应用开发完全手册>里构建根文件系统那章 。
文章插图
说一下我的学习经历吧 。
- 我在学校时读的是物理电子专业,其实课程里没有教怎么设计电路,只是教了些电子电路方面的知识 。PCB的设计是在实验室里自学的,只设计过2层板,现在忘记得差不多了 。但是保留了看原理图、看芯片手册的能力 。
- 选修了软件学位,对软件设计挺感兴趣,但是也只是学了C语言、数据库而已 。凭着兴趣做了不少竞赛题 。没能力去参加竞赛,但是把C语言练得很扎实 。
- 在实验室、在第1家公司,就是设计些简单的PCI卡,写一下windows的驱动程序
- 在第2家公司,用51单片机做车载电话,开始走上纯软件的道路 。
- 开始感到单片机的不足,辞职半年闭门学Linux,从red hat怎么操作开始 。步骤就是先看<ARM体系架构与编程>,再自己写裸板程序操作硬件,接着到分析u-boot 。同时看<linux内核完全注释>,对LINUX框架有所了解 。在写裸板时,建议各位加强对中断的理解,内核就是用中断来完成各种功能的 。
- 分析完u-boot,就开始进行简单的驱动编程了,这时候,能力还很弱 。
- 开始去中兴上班,工作2年,编写各类驱动、解决各类问题(驱动问题、帮助定位应用问题),能力得到煅炼 。
2. Linux方面的书:
- <ARM体系架构与编程>
- <嵌入式Linux应用开发完全手册>
- <Linux设备驱动>,老外写的那本
- <linux设备驱动开发详解>
- <linux内核完全注释>
- <Linux内核情景分析>
韦东山Linux视频第1期(基于S3C2440录制): ARM实验,u-boot,文件系统,初级驱动
韦东山Linux视频第1期(基于S3C6410录制): 裸板程序韦东山Linux视频第2期: 高级驱动
韦东山Linux视频第3期:项目实战
韦东山Linux视频第4期:Android驱动
【作为一个新人 怎样学习嵌入式Linux】
推荐阅读
- 怎么制作微信小程序店铺
- 一个老程序员在互联网寒冬下的感悟
- 淘宝店老店新开一个访客都没有怎么办 淘宝新开店一个访客都没有
- 淘宝直通车怎么收费的 开淘宝直通车一个月最少花多少钱
- 淘宝运营注意事项 如何做好淘宝运营这几点至关重要
- 第一个对《红楼梦》作出美学评价的是谁?
- 一个淘宝店铺可以上架两个一样的产品吗 淘宝店铺可以卖不同类目的产品吗
- 淘宝客服转化率达到70 淘宝客服转化率怎么看
- MYSQL 由一个锁问题,带出MYSQL事务错误不回滚的问题
- 淘宝联盟怎么看佣金 淘宝联盟怎么设置佣金