zoukankan      html  css  js  c++  java
  • 转载河畔:嵌入式Linux入门之路

    非计算机专业,导师基本做单片机的项目,所以基本靠自学,经过两年实践,证明该学习路线基本可靠 
    所以分亨给对嵌入式Linux感兴趣的学弟学妹 
    要学的东西真的很多,这里仅提供入门之道,分为基础知识和实践两个部分 

    第一部分,专业知识 
    C语言学习 
    《C和指针》 
    《C专家编程》 
    《C陷阱与缺陷》 
    上面三本书,认真看吧,特别是C和指针,可以当教材看,认真做做书后习题,我从这本书中受益菲浅 
    后两本用于提高,比如可以知道: char * const*(*next)() 是个啥东西, i+++j为什么是 (i++)+j之类 
    还有一些常见的面试试如判断一个链表是否有环, 怎么判断一个数是有符号数还是无符号数,书中都有涉及 
    打好C语言基础,不管是以后读源代码,还是写程序,或者应付笔试都是很重要的 

    数据结构与算法 
    《数据结构基础(C语言版)》 
    《算法设计与分析》 王晓东 
    数据结构那本书对我最大的帮助应该在于理解递归吧,这对以后学习动态规化和分治算法都很有帮助 
    当然也熟悉了树,链表,栈,排序算法等 
    个人比较得意的是有一次笔试中出现了字符串匹配算法,自己写了个KMP算法,所以学的时侯认真学,不要总想学这个到底有没有用。 
    嵌入式对算法要求不是很高,理解动态规划和分治即可 

    计算机系统结构 
    《深入理解计算机系统》 
    两个面试问题:程序优化有哪些方法, 一个while循环里有很多if语句,对程序有什么影响,看完这本书,你可以找到答案 
    另外,书中对有符号数无符号数,汇编,程序的链接,caceh,流水线,虚拟存储管理都得介绍得比较详细 
    最后书里有个栈溢出的实验,值得一试 

    Linux编程入门 
    《Unix操作系统设计》 Maurice J.bach著 陈葆珏 等译  
    《Unix/Linux编程实践教程》  Burce Molay著  杨宗源 等译  
    这两本书虽然都比较老了,但是都相当经典 
    一个操作系统理论,一个编程实践,对我帮助最大的是对文件系统的描述及一些相关的系统调用,fifo,信号的编程等等 
    可以说是这本书带我走进了Linux 的大门 
    如果以上两本书找不到,市面上新出了一些Linux编程的书,貌似很多都不错,自己上China-pub上看看 

    Linux 编程进阶 
    《Unix环境高级编程》 
    《Unix 网络编程》 
    过于经典,不多作介绍 

    内核学习 
    《Linux内核设计与实现》 
    《深入理解Linux内核》 第三版
    过于经典,不多作介绍,只强调一点,多读几遍 

    驱动学习 
    《Linux设备驱动程序》 
    《Linux设备驱动开发详解》 
    一本国外的经典,最注重驱动整体框架的分析,同时包括与驱动程序相关的东西,如同步机制,内存管理,中断等等 
    一本国内人的经典,前面一部分对上一本书作了一个总结,后面一部分是具体的外设驱动 

    arm学习 
    《ARM体系结构与编程》 
    《ARM嵌入式系统开发-软件设计与优化》 
    第一本书的ARM指令讲得很好,第二本的中断及内存管理很到位,书中还介绍了一些程序优化的方法 

    另外还有一些书籍,可以根据自己兴趣看看: 
    《C++ Primer》讲得很全,适合当参考书 
    《TCP/IP 详解 (卷一)》个人觉得比《用TCP/IP进行网际互联》更适合程序员读,作者做了很多实验,并且贴出了实验结果,相当直观 
    《程序员的自我修养-链接、装载与库》我从中学到一些位置无关代码还有动态库的装载的知识 
    《编程珠玑》、《编程之美》开拓思维,还有一些常见的算法题,都可以从中找到原型 

    第二部分,实践 
    你可以不参加培训班,但你必须得有开发板,我是自己买的mini2440开发板 
    学习过程如下: 
    1.理解ELF文件格式:代码段,数据段之类,理解链接地址,运行地址(记不太清了),网上有经典的资料,名字好像是《arm学习报告一二三》 
    2.按照 《2410开发完全流程》走一遍,就是把2440当单片机用,里面有SDRAM,MMU,GPIO,NADN Flash, 中断的实验,比较不错 
    3.学习vivi, uboot, 最经典的资料就是《vivi开发笔记》 
       上面提到的资料,网上都可以免费下载,在这里感谢作者们的无私奉献 
    4.终于可以从事内核的移植,驱动的开发了,推荐的教程是韦东山的《嵌入式Linux应用开发完全手册》这本书相当实用,所谓实用,就是你按照它的步骤编译内核,根文件系统,移植Uboot是可以成功的(不要以为这些东西很简单,一些莫名其妙的错误会让你束手无策) 
    5.最后就是不断的编程,看源代码,最好参与些相关的项目 

    以上只是我个人的方法,大家学习习惯可能不一样,情况也不一样,所以仅供参考 
    但所列的书籍都是相当经典的 

    最后,把口语练好,要不,你将错过以下公司:intel,AMD, Marvell 
    成绩能考好点就考好点吧,在找工作时还是很有用的,基本上说找工作成绩不重要的,大部分都是成绩不好的,所以他们体会不到这个的重要性(这么说可能也有些偏激,但基本是实事)

  • 相关阅读:
    SQL Server创建复合索引时,复合索引列顺序对查询的性能影响
    SQL 查询性能优化----解决书签查找
    从源码分析 Spring 基于注解的事务
    jQuery最佳实践(不断更新中...)
    Java 8 LongAdders:管理并发计数器的正确方式
    Java中的显示锁 ReentrantLock 和 ReentrantReadWriteLock
    在IE8等不支持placeholder属性的浏览器中模拟placeholder效果
    颠覆式前端UI开发框架:React
    Whitecoin区块链钱包高级功能使用命令
    消息队列使用的四种场景介绍
  • 原文地址:https://www.cnblogs.com/AcmenLiang/p/6364314.html
Copyright © 2011-2022 走看看