| |
|
开发:
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例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/26 2:55:46- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |