这篇文章不长,建议大家直接阅读。 如果你还没有读完,就没有必要保存它,因为你以后不会再读它。 。 .感谢您阅读后的辛苦付出
我是微控制器的新生。 作为一名本科生,我已经研究嵌入式系统好几年了。 我干过智能家居、智能汽车、示波器、开关电源等,后来开始工作(芯片行业)就不再干了。 但这段时间积累的经验,可以让你的整个职业生涯受益匪浅。
微控制器相对更容易理解计算机的底层事物以及硬件。 玩过单片机的人对IT行业上下游的了解不是普通软件专业可以比的。 下面介绍一下学习路线。
学习嵌入式最大的乐趣在于,当我构建一些东西时,我知道里面的每一个细节,并且整个事情是透明的。 不像写应用软件或者做web开发,底层都给你搞定了,你只是一个用户。 。 。
但如果你把每一个细节都追求得太清楚,你就会死得很惨。 。 。 因为你做的很多工作没有价值,别人可以做得更好,比你更稳健。
所以了解你的学习目标很重要。 不要太沉迷于弄清楚每个细节。 。 。 学会站在巨人的肩膀上很重要。
1、软件应用
0.要学习单片机,首先要明白单片机不能做任何事。 学习单片机的目的是学习如何使用单片机来驱动外部设备,比如数码管、电机、液晶屏等,这需要外围电路的配合,所以学习单片机就到了一个层次,它可以相当于学习如何使用单片机的开发板(开发板就是由单片机及其外围电路组成的电路板,如果你不懂,可以在淘宝上找到),即学习如何编写在微控制器上运行的软件。
1、刚开始学习51单片机。 观看郭天翔的视频,了解如何在十天内学会单片机。 网上有很多。 跟着走吧。 不懂C语言也没关系。 学完之后你一定会擅长的。 注意不要买开发板。 买一个和郭天翔视频里的针脚一模一样的,给自己制造一些困难,这样才能学得更扎实。 主要是了解如何驱动外设,如何配置单片机的功能寄存器,如何使用中断,以及在while中如何进行(1)任务调度和时间片分配。
2、接下来学习STM32,一种更高端的单片机。 有一个很好的教程,叫做Zhengdian Atom。 如果你遵循它,你的软件水平将会得到很大的提高。 你可以想一个项目来做,比如智能家居、智能汽车。 这很简单。 ,看完之后,感觉单片机都差不多,唯一的区别就是功耗和性能。 如果想进阶,可以买一些电路模块来学习,比如液晶屏、步进电机、红外、语音、以太网等。理论上,你可以学习任何单片机产品的使用,只要它可以点亮跑马灯(使用GPIO),即使你已经迈出了半只脚,剩下的就是学会如何使用外设寄存器了。 常见的有UART、i2c、spi、Adc/dac、DMA、usb、以太网、外部总线等,其中uart串口是必须要掌握的,但是其他暂时需要的东西都可以学。 当然如果你能全部掌握那就太好了^_^
3.学习ucos-ii时,首先不要担心它是如何实现的。 首先你可以使用它,学习编写任务,最后了解这个系统是如何实现的。 阅读作者的经典作品,你将受益终生。
4.学习嵌入式Linux。 Linux 开发有两种类型。 一是开发用户程序,比如腾讯QQ。 这与Windows下编写程序类似。 您还可以使用 C++ 或 Java。 另一个是开发内核驱动程序。 ,只能用C写,比如USB驱动或者摄像头驱动等,单独学这些就可以了。
Linux开发和微控制器开发是完全不同的事情。 微控制器借用底层协议,例如 i2c、uart 和 spi。 如果没有协议,可以使用gpio创建一个; 但是linux下的开发大多使用通用的网络协议,这些协议都是建立在一堆软件库之上的,比如tcpip、ssh、telnet、ftp、http等,学习Linux应用程序开发基本上是纯软件。 它可以在任何Linux下运行,但不能用与硬件紧密耦合的微控制器来完成。
如果你只是想玩Linux下的应用开发,你可以弄个Raspberry Pi,学习Linux下的shell、python、C开发、makefile等。如果你不想花钱,就用虚拟机安装Ubuntu吧。 如果你是学习内核驱动开发,想了解uboot和内核底层,可以买一块Linux开发板,大概500新台币左右。 可以使用Linux写一个流水灯驱动来上手。 内核驱动与硬件紧耦合,同事还要了解内核调度机制,难度稍大。这时候你其实已经进入房间了,应该能找到回去的路了。
5.C语言! c语言! c语言! 真的很重要,好好学习,会让你受用半辈子。 当然,如果能学一门脚本语言那就更好了,比如Python,这是人工智能时代的最佳选择。 基本上学C语言半天就可以轻松上手python。 建议:初学者不用担心单片机是学汇编语言好还是C语言好。 每个都有其自己的用途。 现在您可以使用Python来开发微控制器。
语言只是一种工具,就像锄头和拖拉机都可以用来耕地一样。 拖拉机效率很高,但在角落和缝隙中必须使用锄头。 每一种都有其神奇的功效。 只要能耕好地,用什么工具就看心情了。 首先,要小心。 学好C语言可以起到承前启后的作用。 以后学习汇编和高级语言会非常容易。 学习汇编的同事最好也学习计算机原理,掌握地址译码、二进制、CPU结构等基础知识。
6.进阶:LWip(嵌入式轻量级tcpip协议栈实现)、ucgui嵌入式图形界面实现、QT(Linux下图形界面设计)、javascript/html/css(网页界面设计)、PHP动态网站搭建、sql数据库实现等.,软件之路永无止境。 本文所列出的内容就是你在实在没什么可学的时候努力的方向。 。 。
2、硬件电路
1、如果把单片机看作电脑的CPU,那么单片机的开发板大致就相当于电脑主板。 那么这款主板是如何设计的呢?
2、首先要有一定的电子电路基础知识,比如数字电路、模拟电路。 你不需要精通,但你必须了解基础知识,比如组合电路、时序电路、二极管、晶体管的常见经典电路。 好像有一个日本人写了一系列关于电子电路的书。 各种插图都比较容易理解。 我忘了名字了。 。 。
3.了解基本元件的特性,电阻,电容,二极管,三极管,74系列芯片,有哪些类型,有哪些参数,如果不知道请查淘宝,有很多电子元件店
4、以上是基础电路知识。 当然,单片机的开发板还需要了解单片机典型外围电路的设计。 一般datasheet上都有图片,照着连接就可以了。
5、软件工具:设计电路板首先要画电路图,然后设计PCB板,最后交给工厂生产(请使用淘宝)。 你可以按照难度从高到低的顺序学习protel99、aultim Designer和candle之一。 。 。
6、如果对画板不感兴趣,可以用穿孔板(请使用淘宝)进行焊接,或者用面包板直接连接。 如果你想焊接,请去优酷观看视频学习。 焊接技巧非常重要,请注意安全。
7.先进:高频电路设计、抗干扰电路设计、极低成本电路设计
8.画板和焊接工作,我个人觉得职业道路比较难(不喜欢就别批评),因为你教哪个高中生两三个月,他都能糊弄人。 当然,各个领域都有nb的人。 ,在单板涂装上做到顶尖,可以赚很多钱,但是很难!
3、芯片设计
0. 等等,我们不是在讨论如何学习单片机吗? 学习芯片设计怎么样? 这是因为很多人都被骗了。 学习完单片机之后,还需要学习FPGA这种更强大的单片机。 这基本上是无稽之谈。 。 .这完全是两个领域的问题
1、我们先来说说芯片(SOC)是如何制作的。 首先,需要设计电路。 现在数字电路基本上都是用verilog实现的。 模拟电路基本就是AD和DA,万年不变,所以现在芯片设计公司大量的人都是数字电路设计工程师。 设计完成后,需要有人检查。 这是验证,确保电路能够达到指定的规格。 经过验证后,对后端进行全面的布局和布线,最后呈现结果。 它将被送到代工厂进行 OEM。 生产完成后,就会进行封装和测试。
2.这里的重点是数字电路设计。 所谓SOC,基本上就是把CPU和一堆外设,比如uart、spi、Ethernet、usb等外设IP挂在apb/ahb/axi或者其他总线上。 一个好的地址,加上一些片上ram就构成了一个soc。所以芯片设计基本上就是设计外设,外设具有各种功能。 这是学习数字电路设计和verilog语言。 深入一点就是状态机、低功耗、异步电路等。
3.那么fpga是怎么回事? 这个黑色大块是通用芯片。 您可以将用verilog编写的电路编程到fpga上。 这样fpga就和你写的电路有同样的功能了。 主要用于芯片验证。 ,也用于硬件加速。
4、关于芯片设计,这是芯片行业更深层次的故事。 稍后有时间我会写一下。
最后,在手机上编码并不容易。 如果你路过,请给我一个赞。 谢谢。
如果您还有嵌入式、Python入门等方面的问题,可以到我的咨询主页。