概述
**我的嵌入式学习历程**
写在前面: 关于嵌入式的学习,CSDN或者知乎上的所有有价值的回答几乎都大同小异。我的回答以我自己的亲身经历结合我师兄师姐的经验提炼,希望对有兴趣投身这一行的有所启示。 本人安徽普通一本自动化专业小白一枚,在校学习主修课程是电路,数电模电,plc自控,电力电子技术等,大三一开始就没有考研的打算 就开始琢磨着找工作。在师兄师姐以及一些老师推荐。看我这个基础挺适合走嵌入式这条道路的,于是大三到大四秋招前便开始学习嵌入式技术 。 今年校招进的南京一家通讯公司做嵌入式开发(10k *14)。 本答案有部分引用其他版主回答,欢迎大家在评论留言探讨,一起学习,共同进步。
下面讲的一些都是些知识点概括性东西,让你知道嵌入式这行主要用到哪些知识。 在自学嵌入式这条过程中,我真的首推b站。 我一直认为b站是个学习平台,而非一个视频平台。里面诸如韦东山 华清远见。正点原子野火很多的教育教学视频都是免费的。 跟着后面学能了解不少东西。 最后,牛客力扣还有看准网刷一些大公司的嵌入式开发笔试面试题,看看学长学姐的面经。校招都能进去不错的公司。
嵌入式的技能清单和升级线路
第一部分:Linux平台搭建与环境熟悉
了解linux系统;区分各种版本的Linux系统,以便于拓展 Linux视野。
1、Linux 简介;
2、Linux 系统的主要特点;
3、Linux 的组成;
4、主要的 Linux 版本;
5、嵌入式 Linux简介与发展
第二部分:虚拟机安装和LINUX系统安装
1、虚拟机安装;
2、Linux系统的安装(Ubuntu,Redhat);
3、Linux系统的常用软件的安装;
4、Linux快速入门
5、 熟悉运用 Linux环境下,常用命令的操作与系统设置,如常用的 Shell;掌握基本的Shell(bash) 应用
第三部分:嵌入式LINUX环境搭建
1、 建立嵌入式 Linux开发环境
2、 熟悉嵌入式开发平台
3、 嵌入式 Linux开发工具
4、 Linux下的调试技巧
5、 MAKE工程管理器
6、 硬件环境的搭建;arm-linux-gcc与 gcc安装配置
第四部分: 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环境变量
第五部分:LINUX内核移植 ( 推荐本书孟宁的《庖丁解牛Linux内核分析》,讲的还行还有那本kernel完全注释也不错 )
主要的熟悉内核的原码结构和kbuild Makefile语法;掌握和内核、驱动模块编译相关的原理及方法。
1、Linux内核介绍
2、Linux内核特点
3、Linux内核源代码结构
4、Linux内核选项解析
5、Linux内核编译链接
6、内核模块编译、使用方法
第六部分:LINUX根文件系统
1、busybox 包移植、编译
2、Linux跟文件系统制作过程
3、根文件系统介绍
4. nfs文件服务器系统搭建
第七部分:LINUX驱动开发 (最广最多的就是字符设备了,驱动编写说简单简单说难也难,写多了感觉就挺枯燥的。)
1、了解掌握三大设备字符,块,网络设备具体。首先最简单的 按键 GPIO口控制led灯驱动
2、spi,iic,can三大总线。以及中断驱动,在驱动中中断程序的编写,消息队列的应用
3、ADC驱动开发
4、网卡驱动开发
5、串口uart驱动开发
6、LCD屏,液晶显示器
7、触摸屏驱动+tslib(中间插件移植与设置),
8、USB驱动开发+USB无线网卡移植
9、maplay移植与应用(mp3播放)+mplayer移植与应用(视频播放Mp4/广告机等播放) HDMI接口的使用
10、SD驱动开发
11、RTC驱动开发
12、电源管理
第八部分:Linux 应用学习(感觉部分计算机学院也适合搞这个。我的一些计院朋友走的是嵌入式上层应用 工资也高。)
主要目标是精通嵌入式Linux下的程序设计,熟练掌握嵌入式Linux的开发环境、系统编程以及网络编程,熟悉C++、QT编程并且深刻体会整个嵌入式Linux项目开发流程,强化学员对Linux应用开发的能力。
1、Linux系统中的进程的概念,在应用程序中线程与父子进程的创建与应用
2、线程之间、进程之间的通信
3、进/线程间区别联系。
4、管道(PIPE)
5、信号(SIGNAL)
6、内存映射(MAPPED MEMORY)
7、消息队列(MESSAGE QUEUE)
8、信号量(SEMAPHORE)
9、共享内存(SHARE MEMORY)
10、TCP协议在应用程序中的编程开发(SOCKET套接字编程开发)
10.1. ISO/OSI七层协议模型与IP网络四层模式
10.2.TCP/IP协议簇
10.3. 基于嵌入式Linux的TCP/IP网络结构
10.4. 基于嵌入式Linux的SOCKET编程
10.5.UDP与TCP的区别
10.6. UDP SERVER-CLIENT关系程
11、文件读写与存储
第九部分:QT移植与开发(与c++语言挂钩了,要有语言基础。c++算是面向过程开发中最复杂的语言)
了解嵌入式Linux下的几种常见GUI及其特点,重点能掌握QT的有关内容,具备QT程序设计能力。了解嵌入式数据库的配置与开发
1 、嵌入式Linux GUI介绍
2、嵌入式QT开发包移植
3、QT介绍及其信号插槽机制
4、 QT图形界面编程技术
5、QT应用程序与Linux驱动的衔接
6、 QT在实际项目中具体应用
第十部分:无线通讯应用
1、无线wifi模块应用
2、4G模块应用
第十一分布:嵌入式系统应用程序,驱动程序调试
1、Linux基本工具调试使用。GDB,insight调试等
2、Linux应用程序的编程
下面是一些具体比较细的知识点了
嵌入式LININX开发第一学习阶段,主要打好基础,学好C编程,Linux系统编程。
1、C语言编程基础
2、嵌入式开发基础:Linux概述安装,shell命令,vim编辑器,GCC,GDB,Makefile,交叉开发环境构建
3、嵌入式Linux系统编程:shell编程,文件编程,串口编程,进程编程,线程编程,网络编程
4、嵌入式项目开发:数据采集控制系统,串口服务器
嵌入式LININX开发第二学习阶段,掌握ARM汇编程序设计,驱动程序设计。
1、ARM体系结构:ARM体系,ARM指令,Thumb指令,汇编程序设计,逻辑程序开发
2、Linux内核移植:bootloader,内核配置,文件系统
3、驱动程序开发:驱动架构模型,字符设备驱动,块设备驱动,网络驱动
4、嵌入式项目开发:智能家居系统,视频监控系统
嵌入式LININX开发第三学习阶段,掌握C++面向对象程序设计,Qt编程。
1、C++语言编程基础
2、QT编程开发:QT开发基础,QT布局与控件,QT绘图,QT事件,QT网络通信,QT数据库,QT移植
3、嵌入式项目开发:实时视频流(海康大华等项目),gsm通信,3/4/5g的一些小项目(华为中兴爱立信) git上很多开源的小项目,随便做两个都行,简历上也好写。
我校招简历上技能知识这一块填的是:
熟练掌握C 语言(指针,数组,函数,结构体);
掌握基础数据结构和算法(堆栈,链表,队列,二叉树,哈希表,简单排序等);
熟悉C++编程语言(继承,封装,多态);
熟练掌握Linux 系统编程(文件管理,多进程,多线程,进程通信,Socket编程等);
了解Linux 内核驱动编程,熟悉shell等脚本语言,掌握Ubuntu,RedHat下程序开发;
理解面向过程和对象编程,掌握Eclipse下简单的Java及Android开发。
了解 bootloader,内核配置,文件系统,kernel移植。
最后
以上就是聪明饼干为你收集整理的小白入手嵌入式的一点入门建议的全部内容,希望文章能够帮你解决小白入手嵌入式的一点入门建议所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复