嵌入式系统发展的这么快,很多人都开始投身都这一行业中来,有些人选择培训来学习,而有些人选择自学,对于选择培训的人来说,一般培训机构是会很清楚的来讲解嵌入式linux学习方法步骤的,但是对于一些自学的人来说,是有一定的难度的,但也不需要烦恼,在这里手把手教你怎么去学。
在学习嵌入式linux时,你先了解一下自己有哪些基础,一般学习嵌入式linux,你必须要
1、精通c语言、数据结构 、计算机原理(包括汇编的)、编译原理 、操作系统
刚开始没有基础的话,就需要先做上面我说的这些,你可以在网上找书或者去书店买书,主攻书籍:the c programming language、数据结构。
你学习完上面这些以后,那你就需要检测一下自己了,看看都掌握了没有,你可以去找一些题,比如链表?树的遍历?图的最短路径怎么实现?能自己写小型抢占式内核吗?如何用c实现语法分析,词法分析? 这些来测试一下自己的掌握程度。
2、接下来我们需要用到开发板了,刚开始学的时候要先学裸机的,linux接触越早越好,命令越熟越好,vim操作越眼花缭乱越好…,在这一阶段你就是需要了解IO、串口通信、中断等,最好用模拟时序的方式用IO引脚写个iic和spi的驱动,在这里不要花费太长的时间,规定自己一个月完成,这是最好的。
3、然后你可以学习一下mcu或处理器了,建议是ARM,因为你用别的架构会发现板子少的可怜,且价格也贵。建议先玩裸机,还是和51一样,从点灯开始熟悉。请注意:最好不要一上来就钻到里面把所有的模块都整一遍,因为那样好费时间(这里说的不是浪费),不是不可以,但效果我感觉不一定是最好的。学裸机编程其实就是学CPU编程思想,因为你后面肯定不只是用一种CPU,怎么控制引脚,怎么配置寄存器可能每款CPU都不一样。要学到的是这种方法,这种原理。还是像上面所说的,先把cpu本身的资源搞懂!!IO、中断(就单片机编程来说相当重要)、UART、内存寻址方式等等。如果可以,学一下它的汇编。如果汇编你也学了,好!!请基于这个cpu写个时间片的调度器,不用太复杂,运行个多任务就可以了。(这里重点不是写调度器,而是写它的时候会涉及到各种栈操作,现场的保护与恢复,用到大量汇编)然后再根据外围的器件做些实验,这就不说了,你会接触到一个东西:datasheet,如果英国话不好,它会让你头疼。
4、上面这些都掌握好了以后,那就是数模模数,语音,lcd屏,按键,时钟芯片,等根据板子的资源放开学,记住一点就是要理论与实践相结合的来,不然你会越学越迷茫的。
这些都是嵌入式linux自学需要学习的知识点,你要好好掌握好上面的这些点,那么你就可以更深层的学习了:
1:掌握至少50个以上的常用命令。
2:系统编程
3:就是驱动的学习了,学习添加外设,安装设备驱动程序(比如网卡)
4:掌握vi,gcc,gdb等常用编辑器,编译器,调试器
5:vim
6:熟悉Linux文件系统和目录结构
7:理解shell别名、管道、I/O重定向、输入和输出以及shell脚本编程
还有很多,都是需要你学的,这些都是一环套一环的,你可以慢慢来,记住学linux一定不要只看书,一定要多用,多用!多用!熟能生巧。
关于掌握至少50个以上的常用命令
当然是知道的越多越好,用的越熟越好,但别只为了练命令而练命令:搜linux常用命令,得到一堆结果,对着敲!枯燥!效率低!易忘!我的建议是从使用中学习,比如你要配samba,你就要安装samba:yum ,aptget或make install,你会学到安装命令及用法,关防火墙,你要学到sudo service iptables stop 如果你有心,你肯定不只想知道这句话是关防火墙,你还想知道每个单词的意思及用法linux可以做很多东西,你从中可以学很多东西!主攻书籍:linux内核完全剖析、unix环境高级编程、深入理解linux内核、情景分析和源代。
关于系统编程
不建议直接整APUE,因为如果基础不好很可能有些地方看不懂, linux系统编程其实就是函数调用,就是io 进程线程,ipc(进程通信),网络编程,可能还会有UI。快速了解Linux编程是什么东西,快速知道如何写一个简单的程序,如文件拷贝程序(想想是不是很多时候你整了一大堆理论,却还是写不出程序来,是不是清楚知道函数的功能,却不知道怎么调用,xxx从入门到精通系列正好解决这个问题,它俨然就是带实例的中文man手册,讲解参数,讲返回,然后给个例程…)。可以找一家大书店,去计算机分类中找到这方面的书,可以在书店里看,也可以买下来。快速的了解linux编程是何物。然后再看apue 这类书会很好上手。另外,经常试写下系统命令:ls cd cp 等,经常看man。
关于驱动
众所周知嵌入式开发包含至少两个级别,一个是嵌入式内核驱动级别,另外一个是嵌入式应用层开发,而薪酬高的、最具价值的无疑是嵌入式内核驱动级别的开发者。真正的嵌入式高手或者企业中的核心开发人员,一定是嵌入式底层的内核驱动开发工程师,这些工程师成长比较缓慢,造成对内核驱动人才的大量需求,所以这些人才是真正企业需要的香饽饽。掌握驱动开发会让自己的核心能力有极大的飞跃,真正实现嵌入式最有价值的就业。
学驱动不要只限于驱动框架,一定要知道它每个功能的实现原理,比如你给驱动添加了poll功能,不要只知道这样写就可以实现poll,以后按这个写就可以了,你还要知道它的原理!!就是到内核里看它是怎样一步步调用过来的,中间经历了什么?!
学驱动要多看内核原码!了解内核子系统!不要说你看不懂,一开始谁也看不懂。必须有块开发板(arm9及以上),有条件可参加培训(进步快,能认识些朋友)。主攻书籍:毛德操的《嵌入式系统》及其他arm9手册与arm汇编指令等
勤于实践:
要增加自己Linux 的技能,只有通过实践来实现了。所以,赶快找一部计算机,赶快安装一个 Linux 发行版本,然后进入精彩的Linux世界。相信对于你自己的 Linux 能力必然大有斩获。
其实,一般学习嵌入式linux,我建议你可以去培训一下,培训会比自学又好,因为培训会根据企业的需求来教会你,而自学的话,一般很难去跟随企业的需求,不能满足企业的需求,这样的话,自学完也会很迷茫的,这都是看你个人的想法了。
相关推荐:嵌入式linux各方面知识图书都有