IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 嵌入式学习历程 -> 正文阅读

[嵌入式]嵌入式学习历程

从事嵌入式软件开发也有很多年了,从最初的被人带也逐渐成长为了带人开发的状态,中间经历了无数次困难与迷茫,同时也总结了很多的开发笔记。之前一直想要分享出来与大家共勉,但是由于自己的懒惰一直没有执行,后面希望自己能够逐渐把所学的内容总结出来分享给大家,望大家批评指正,共同进步,一起来玩嵌入式。

关于这篇文章先简单介绍下我理解的嵌入式开发所需要的过程,希望对大家有所帮助,我认为嵌入式开发的知识体系主要包含如下内容:

1. 硬件知识:

????????主要是能够理解基础的外设接口与信号定义,如I2C/SPI/USB/ETH/MDIO等,同时要了解EMMC/DDR/FALSH等外设组件,在调试的过程避免不了要抓信号来Debug, 所以示波器,万用表,逻辑分析仪等基础技能都要掌握,方便自己的开发与调试。

2. 外设通讯协议:

? ? ? ? 既然要做硬件信号分析,那么就要对基础的信号协议有所了解,能够分析示波器抓出来的信号,如I2C的信号,CAN的信号,RGMII的信号等,所以要对基础的通讯协议有所了解

3. 芯片核心架构:

? ? ? ? 要做嵌入式开发首先要了解你需要开发的芯片平台,如主流的ARM, PowerPC等,其中ARM又有ARM32与ARM64的架构,确定了架构就确定了编译器的版本,因为编译器一般是和芯片架构挂钩的。另外芯片架构也决定了芯片的烧写和启动方式,这是在做嵌入式开发首先要了解的内容,就是搭建开发和调试环境。

4. 芯片手册:

? ? ? ? 做嵌入式开发芯片手册是最需要了解的文档,现在很多嵌入式开发工程师都不怎么看芯片手册,直接在芯片厂商的SDK上做更改,这会造成对芯片的了解太浅,很多bug无法解决,所以一定要仔细看芯片手册,当然也不需要全部看一遍,主要看芯片的架构,内存地址映射,时钟树,启动模式和烧写模式等内容。

? ? ? ? 另外芯片其实就是在核心的外侧搭建外设控制期,就像我们的板子在芯片外部搭建外设是一个道理,所以关于核心的内容还需要去核心厂家的官网去了解,如ARM,但现在一般不需要深入了解,因为芯片厂家基本把核心的内容都封装了,对芯片的使用者是无感的。如果想要深了解的同学可以去看芯片架构

5. Bootloader:

? ? ? ? 如果做嵌入式linux开发的同学,都会和bootloader打交道,最常用的就是uboot,新的uboot的编译体系越来越像linux了,所以bootloader在我们的开发中也扮演很重要的角色,如硬件简单调试,启动系统的逻辑,做备份分区等。

6. 操作系统

? ? ? ? 不论是做RTOS开发还是Linux开发,嵌入式软件开发者都要对操作系统有基础的了解,当然如果对技术有更高的追求,可以去看操作系统源码或者自己写一个小的操作系统。

? ? ? ? 另外对于LINUX开发者来说,linux驱动开发的技能需要掌握,linux驱动架构要深入了解,有兴趣的同学可以看看linux的源码,很多设计思想还是很值得参考的。

7.协议站

? ? ? ? 协议站也需要有基础的了解,特别是做网络的同学,TCP/IP, DBUS, SOMEIP, DDS等根据自己的需求去做简单的了解

8. 系统管理和测试工具

? ? ? ? 另外需要熟练使用简单的系统测试工具,如linux上的ping,netstat,top,route,iperf等系统测试工具,可以快速验证嵌入式的接口是否正常,linux这一块的工具比较全面,几乎涵盖了所有的接口测试。

? ? ? ? 对于主流系统管理工具如systemd需要有基础的了解

9. 其他:

? ? ? ? 另外对于其他的一些基础知识可以在需要的时候去学习,如makefile, cmake, git, 交叉编译,链接文件格式等。

暂时能想到的主要模块就这些,欢迎大家补充评论

Note:

? ? ? ? 关于嵌入式的学习我建议大家结合开发板来学习,我后面的内容分享也会结合开发板来讲解,MCU就基于比较热的STM32, Linux学习就基于IMX6这两块市场上比较火的开发板来展开内容,有条件的同学可以自己买个板子学习。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-18 10:20:30  更:2021-09-18 10:22:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/30 2:20:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码