要想学好嵌入式Linux,首先要解决两个重要问题:

1. 学什么?

2. 怎么学?

首先解决第一个问题。

嵌入式Linux的系统架构包括软件和硬件两个部分,如下图:

再来看看一个成熟的嵌入式产品的开发流程是怎么一个过程:

  • 1.硬件开发
  • 责任人: 硬件工程师
  • 负责部分:基于EVM板, 添加、修改、删除硬件
  • 2.Bootloader移植
  • 责任人:系统工程师或驱动工程师
  • 负责部分:将Bootloader移植到流程1所开发出来的硬件平台
  • 3. Linux内核
  • 责任人:系统工程师或驱动工程师
  • 负责部分:将Linux内核移植到流程1所开发出来的硬件平台
  • 4.根文件系统制作
  • 责任人:系统工程师
  • 负责部分:制作供内核启动的根文件系统
  • 5.1 业务相关的应用程序
  • 责任人:应用工程师
  • 负责部分:开发和产品密切相关的应用程序
  • 5.2 业务相关的驱动程序
  • 责任人:驱动工程师
  • 负责部分:开发和产品密切相关的驱动程序,如触摸屏、无线网卡
  • 6. 功能测试,性能测试,系统集成测、实验局(系统设备)、发布

看完上面这些,你应该对嵌入式Linux有一个大概的认识了。我们再来理清一下知识结构,再对其进行细分。先来看预览一下“学什么”知识结构:

  • 1.嵌入式处理器与裸机程序
  • 2.Linux系统管理
  • 3.Linux应用程序开发
  • 4.Linux驱动程序开发
  • 5.Linux内核开发与系统移植

再来对每一项要学习的东西进行汇集:

处理器:

1. ARM处理器工作模式 
2. ARM系统寄存器 
3. ARM寻址方式 
4. ARM 汇编指令集 
5. ARM环境C语言编程 
6. ARM中断与异常 
7. ADS集成开发环境 
8. 裸机程序开发(串口、LCD、时钟、LED、按键……)

系统管理:

1. Linux定制安装 
2. Linux命令详解 
3. samba、nfs、tftp、wireshark使用 
4. Shell编程

应用程序开发:

1. GCC、GDB、Makefile 
2. 文件、时间编程 
3. 多进程、多线程程序设计 
4. 进程间通讯 
5. 网络编程 
6. QT图形化应用程序开发 
7. Android图形化应用程序开发

内核开发:

1. Linux内核配置与裁剪 
2. Linux内核模块开发 
3. 根文件系统制作 
4. 进程子系统 
5. 内存子系统 
6. Proc文件系统 
7. 系统调用 
8. 内核定时器 
9. 内核异常分析

驱动程序开发:

1. 字符设备驱动程序 
2. 总线、设备、驱动模型 
3. 硬件访问技术 
4. 中断处理 
5. Input设备驱动 
6. Platform驱动程序 
7. PCI、USB驱动程序 
8. 网卡驱动程序 
9. 触摸屏驱动程序 
10. 串口驱动程序

参考资料:国嵌嵌入式Linux

嵌入式Linux学习方法——给那些彷徨者(上)的更多相关文章

  1. 嵌入式Linux学习方法——给那些彷徨者(下)

    上一章解决了嵌入式Linux的“学什么”问题,这一章则具体来说一下“怎么学”. 只要做好以下3点: 1.学习顺序.学习任何东西都应该由浅入深,不能一口吃下一个大胖子,得循序渐进.很多刚开始想学习Lin ...

  2. 【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)

    深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的,能够加我的QQ2059055336和我联系 ...

  3. 嵌入式Linux上通过boa服务器实现cgi/html的web上网【转】

    转自:http://blog.csdn.net/tianmohust/article/details/6595996 版权声明:本文为博主原创文章,未经博主允许不得转载. 嵌入式Linux上通过boa ...

  4. 嵌入式Linux开发——内容介绍与开发环境的搭建

    嵌入式Linux开发步骤 设计自己的硬件系统 编写Bootloader 裁剪自己的Linux内核 开发移植设备驱动 构建根文件系统 开发应用程序 嵌入式Linux学习要点 熟练使用开发工具和相关指令集 ...

  5. 嵌入式Linux学习(一)

    嵌入式系统 嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分.通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板.事实上,所有带有数字接口的设备,如手表.微波炉.录像机.汽车等, ...

  6. 嵌入式Linux驱动案例之中的一个

    前几天解决一个嵌入式Linux驱动问题,做为一个案例进行记录. 本案例是一个CPU通过LocalBus总线訪问外围一个设备,详细设备是一个DSP器件.在实际应用中,性能要求非常高,对数据訪问速度提出比 ...

  7. 良许Linux | Linux学习方法及学习资料汇总

    很多人想学习Linux,却不知道怎么着手,甚至不知道Linux有哪些方向,非常迷茫.基于此,我特地写了篇文章介绍Linux方向性问题,没想到一不小心成了爆款: 到什么程度才叫精通 Linux?​ 看完 ...

  8. 嵌入式 Linux下永久生效环境变量bashrc

    嵌入式 Linux下永久生效环境变量bashrc 1) .bashrc文件 在linux系统普通用户目录(cd /home/xxx)或root用户目录(cd /root)下,用指令ls -al可以看到 ...

  9. Ice-E(Embedded Internet Communications Engine)移植到s3c2440A(arm9)linux(2.6.12)上的

    2009-03-26 18:31:31 原文链接 1.前言 ICE-E是ICE在嵌入式上运行的一个版本,与ICE比较如下: Category Ice 3.3.0 Ice-E 1.3.0 Thread ...

随机推荐

  1. BZOJ——1606: [Usaco2008 Dec]Hay For Sale 购买干草

    http://www.lydsy.com/JudgeOnline/problem.php?id=1606 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1 ...

  2. Java并发编程关键字synchronized的总结

    一.对synchronized的了解 synchronized关键字解决的是多个线程之间访问资源的同步性,synchronized关键字可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行. ...

  3. Ubuntu下Deb软件包相关安装与卸载

    安装deb软件包 sudo dpkg -i xxx.deb 删除软件包 sudo dpkg -r xxx.deb 连同配置文件一起删除 sudo dpkg -r --purge xxx.deb 查看软 ...

  4. JNI基础知识

    JNI是在学习Android HAL时必须要面临一个知识点,假设你不了解它的机制,不了解它的使用方式,你会被本地代码绕的晕头转向,JNI作为一个中间语言的翻译官在运行Java代码的Android中有着 ...

  5. Android:图片中叠加文字,支持拖动改变位置

    之所以做了这么一个Demo,是由于近期项目中有一个奇葩的需求:用户拍摄照片后,分享到微信的同一时候加入备注,想获取用户在微信的弹出框输入的内容.保存在自己的server上.而其实,这个内容程序是无法获 ...

  6. 忘掉VNC/RDP,拿起手中的MobaXterm轻松上手远程桌面

    前言 原创文章,转载引用务必注明链接. 这期属于番外篇,随便写写.吐槽一下自己,关于"减少eMMC擦写,延长NAND寿命提升性能"的坑还没填完,都不好愉快地写点轻松的小项目灌水了. ...

  7. python之入门,你好,中国

    print("你好,中国") 可以运行py文件实现一样的效果(py文件编码一定要是utf-8编码) 你好中国基础教程结束!

  8. firebug console说明

    控制台(Console)是Firebug的第一个面板,也是最重要的面板,主要作用是显示网页加载过程中产生各类信息. 一.显示信息的命令 Firebug内置一个console对象,提供5种方法,用来显示 ...

  9. Linux在本地使用yum安装软件(转)

    经常遇到有的linux服务器由于特殊原因,不能连接外网,但是经常需要安装一些软件,尤其是在编译一些包的时候经常由于没有安装一些依存包而报的各种各样的错误,当你找到依存的rpm包去安装的时候,又提示你有 ...

  10. ActiveMQ(一) 转

    package pfs.y2017.m11.mq.activemq.demo01; import javax.jms.Connection; import javax.jms.DeliveryMode ...