嵌入式学习

发布于 2020-04-23  492 次阅读


写在文章前面

自从学习单片机以来,就一直有深入学习嵌入式的想法,期间也断断续续学过很多,甚至做过一些运维相关的工作和学习。

自己的学习架构也比较凌乱,想到什么学什么,手头有什么资料就去学什么,也一直没有一个ARM的项目去系统的接触。

在微信公众号玩转单片机上看到了一篇关于嵌入式学习路线的文章,看内容可能是某培训机构的学习大纲,正好整理记录以下,用来给自己当一个学习指导。

嵌入式学习内容

第一部分:Linux平台搭建与环境熟悉

了解linux系统;区分各种版本的Linux系统,以便于拓展 Linux视野。

  1. Linux 简介;
  2. Linux 系统的主要特点;
  3. Linux 的组成;
  4. 主要的 Linux 版本;
  5. 嵌入式 Linux简介与发展。

第二部分:虚拟机安装与Linux系统安装

  1. 虚拟机安装;
  2. Linux系统的安装;
  3. Linux系统的常用软件的安装;
  4. Linux快速入门;
  5. 熟悉运用 Linux环境下,常用命令的操作与系统设置,如常用的 Shell,掌握基本的 Shell 应用。

第三部分:嵌入式Linux环境搭建

  1. 建立嵌入式 Linux开发环境;
  2. 熟悉嵌入式开发平台;
  3. 熟悉嵌入式 Linux开发工具;
  4. Linux下的调试技巧;
  5. MAKE工程管理器;
  6. 硬件环境的搭建,arm-linux-gccgcc安装配置。

第四部分:U-Boot

了解 U-Boot 的作用及工作流程;了解Bootloader 的代码结构、编译过程;移植U-Boot;掌握常用的U-Boot命令。

  1. Bootloader介绍;
  2. u-boot工程介绍;
  3. u-boot的编译使用;
  4. u-boot源码分析;
  5. u-boot资源分配;
  6. 配置编译u-boot;
  7. u-boot移植过程;
  8. u-boot常用命令操作;
  9. 添加u-boot新命令;
  10. 设置u-boot环境变量;
  11. u-boot驱动添加,如网卡:DM9000。

第五部分:Linux内核移植

熟悉内核Kernel的原码结构和kbuild Makefile语法;掌握和内核、驱动模块编译相关的原理及方法。

  1. Linux内核介绍;
  2. Linux内核特点;
  3. Linux内核源代码结构;
  4. Linux内核选项解析;
  5. Linux内核编译链接;
  6. 内核模块编译、使用方法。

第六部分:Linux跟文件系统

  1. busybox 包移植、编译;
  2. Linux跟文件系统制作过程;
  3. 根文件系统介绍;
  4. nfs文件服务器系统搭建。

第七部分:Linux驱动开发

驱动开发是嵌入式Linux开发难度最高的内容,。需要数字嵌入式Linux驱动开发相关概念及开发流程,了解驱动开发的关键技术点,掌握嵌入式Linux下常用接口驱动的编写方法,包括

  1. 字符型LED驱动开发(GPIO口驱动);
  2. 按键驱动开发(中断驱动,在驱动中中断程序的编写,消息队列的应用);
  3. ADC驱动开发;
  4. 网卡驱动开发;
  5. UART驱动开发;
  6. 液晶屏(TFT彩屏驱动开发);
  7. 触摸屏驱动+tslib(中间插件移植与设置);
  8. USB驱动开发 + USB无线网卡移植;
  9. IIS驱动开发 +maplay移植与应用(mp3播放)+ mplayer移植与应用(视频播放Mp4/广告机等播放);
  10. SD驱动开发;
  11. RTC驱动开发;
  12. 电源管理方法。

第八部分:Linux应用学习

嵌入式Linux应用开发和系统开发是嵌入式Linux中最重要的一部分。主要目标是精通嵌入式Linux下的程序设计,熟练掌握嵌入式Linux的开发环境、系统编程以及网络编程,深刻体会整个嵌入式Linux项目开发流程,强化对Linux应用开发的能力。

  1. Linux系统中的进程的概念,在应用程序中线程与父子进程的创建与应用;
  2. 线程之间、进程之间的通信;
  3. 进程间通信基本概念;
  4. 管道(PIPE);
  5. 信号(SIGNAL);
  6. 内存映射(MAPPED MEMORY);
  7. 消息队列(MESSAGE QUEUE);
  8. 信号量(SEMAPHORE);
  9. 共享内存(SHARE MEMORY);
  10. TCP/IP协议在应用程序中的编程开发(SOCKET套接字编程开发);
  11. ISO/OSI七层协议模型与IP网络四层模式;
  12. TCP/IP协议簇;
  13. 基于嵌入式Linux的TCP/IP网络结构;
  14. 基于嵌入式Linux的SOCKET编程;
  15. 10..5.UDP与TCP的区别;
  16. UDP SERVER-CLIENT关系程;
  17. 文件读写与存储。

第九部分:

了解嵌入式Linux下的几种常见GUI及其特点,重点能掌握QT的有关内容,具备QT程序设计能力。了解嵌入式数据库的配置与开发

  1. 嵌入式Linux GUI介绍;
  2. 嵌入式QT开发包移植;
  3. QT介绍及其信号插槽机制;
  4. QT图形界面编程技;
  5. QT应用程序与Linux驱动的衔接;
  6. QT在实际项目中具体应用。

第十部分:

  1. 无线wifi模块应用;
  2. 3G、4G模块应用.

第十一部分:

  1. Linux基本工具调试使用,GDB,insight调试等;
  2. Linux应用程序的编程;
  3. 嵌入式产品程序打包与发布。

嵌入式开发学习计划

第一学习阶段

主要打好基础,学好C编程,Linux系统编程。

  1. C语言编程基础;
  2. 嵌入式开发基础:Linux概述安装,shell命令,vim编辑器,GCC,GDB,Makefile,交叉开发环境构建;
  3. 嵌入式Linux系统编程:shell编程,文件编程,串口编程,进程编程,线程编程,网络编程;
  4. 嵌入式项目开发:数据采集控制系统,串口服务器。

第二学习阶段

掌握ARM汇编程序设计,驱动程序设计。

  1. ARM体系结构:ARM体系,ARM指令,Thumb指令,汇编程序设计,逻辑程序开发;
  2. Linux内核移植:bootloader,内核配置,文件系统;
  3. 驱动程序开发:驱动架构模型,字符设备驱动,块设备驱动,网络驱动;
  4. 嵌入式项目开发:智能家居系统,视频监控系统。

第三学习阶段

掌握C++面向对象程序设计,Qt编程。

  1. C++语言编程基础;
  2. QT编程开发:QT开发基础,QT布局与控件,QT绘图,QT事件,QT网络通信,QT数据库,QT移植;
  3. 嵌入式项目开发:车载监控管理系统,工业能源管理系统。

这是一个记录个人学习笔记的博客,如果内容涉嫌侵权,请及时联系我删改。