03.06 如何学习嵌入式?


本人研究生阶段是控制工程,现在是硬件工程师,关于作者提问的如何学习嵌入式的问题,我想在回答前,先说一下什么是嵌入式,嵌入式的概念是啥?嵌入式是一个很泛的概念,就是把自己特定需求的代码,嵌入到系统的程序中,然后把生成的这整个软件嵌入式到硬件平台中,凡是与以上工作相关的开发,全部叫做嵌入式开发。比如写自己特定需求的代码,或者移植到系统中的设计过程,系统与自己代码的完全结合,最终的代码与硬件平台的平滑兼容,凡是以上这些工作,都叫嵌入式开发。

接下来我将从一下几个方面对嵌入式做一个详细的介绍,主要包括:学习嵌入式必备知识、嵌入式工作做什么、如何入门嵌入式、大学生如何规划自己的四年,成为合格的嵌入式工程师。

学习嵌入式必备知识

1、C语言  

嵌入式Linux工程师的学习需要具备一定的C语言基础,C语言是嵌入式领域最重要也是最主要的编程语言,通过大量编程实例重点理解C语言的基础编程以及高级编程知识。包括:基本数据类型、数组、指针、结构体、链表、文件操作、队列、栈等。  

2、Linux基础  

Linux操作系统的概念、安装方法,详细了解Linux下的目录结构、基本命令、编辑器VI ,编译器GCC,调试器GDB和 Make 项目管理工具, Shell Makefile脚本编写等知识,嵌入式开发环境的搭建。  

3、Linux系统编程  

重点学习标准I/O库,Linux多任务编程中的多进程和多线程,以及进程间通信(pipe、FIFO、消息队列、共享内存、signal、信号量等),同步与互斥对共享资源访问控制等重要知识,主要提升对Linux应用开发的理解和代码调试的能力。  

4、Linux网络编程  

计算机网络在嵌入式Linux系统应用开发过程中使用非常广泛,通过Linux网络发展、TCP/IP协议、socket编程、TCP网络编程、UDP网络编程、Web编程开发等方面入手,全面了解Linux网络应用程序开发。重点学习网络编程相关API,熟练掌握TCP协议服务器的编程方法和并发服务器的实现,了解HTTP协议及其实现方法,熟悉UDP广播、多播的原理及编程方法,掌握混合C/S架构网络通信系统的设计,熟悉HTML,Javascript等Web编程技术及实现方法。  

5、数据结构与算法  

数据结构及算法在嵌入式底层驱动、通信协议、及各种引擎开发中会得到大量应用,对其掌握的好坏直接影响程序的效率、简洁及健壮性。此阶段的学习要重点理解数据结构与算法的基础内容,包括顺序表、链表、队列、栈、树、图、哈希表、各种查找排序算法等应用及其C语言实现过程。  

6、C++ 、QT  

C++是Linux应用开发主要语言之一,本阶段重点掌握面向对象编程的基本思想以及C++的重要内容。图形界面编程是嵌入式开发中非常重要的一个环节。由于QT具有跨平台、面向对象、丰富API、支持2D/3D渲染、支持XML、多国语等强大功能,在嵌入式领域的GUI开发中得到了广范的应用,在本阶段通过基于QT图形库的学习使学员可以熟练编写GUI程序,并移植QT应用程序到Cortex-A8平台。包括IDE使用、QT部件及布局管理器、信息与槽机制的应用、鼠标、键盘及绘图事件处理及文件处理的应用。  

7、Cortex A8 、Linux 平台开发  

通过基于ARM Cortex-A8处理s5pv210了解芯片手册的基本阅读技巧,掌握s5pv210系统资源、时钟控制器、电源管理、异常中断控制器、nand flash控制器等模块,为底层平台搭建做好准备。Linux平台包括内核裁减、内核移植、交叉编译、GNU工具使用、内核调试、Bootloader介绍、制作与原理分析、根文件系统制作以及向内核中添加自己的模块,并在s5pv210实验平台上运行自己制作的Linux系统,集成部署Linux系统整个流程。同时了解Android操作系统开发流程。Android系统是基于Linux平台的开源操作系统,该平台由操作系统、中间件、用户界面和应用软件组成,是首个为移动终端打造的真正开放和完整的移动软件,目前它的应用不再局限于移动终端,还包括数据电视、机顶盒、PDA等消费类电子产品。  

8、驱动开发  

驱动程序设计是嵌入式Linux开发工作中重要的一部分,也是比较困难的一部分。本阶段的学习要熟悉Linux的内核机制、驱动程序与用户级应用程序的接口,掌握系统对设备的并发操作。熟悉所开发硬件的工作原理,具备ARM硬件接口的基础知识,熟悉ARM Cortex-A8处理器s5pv210各资源、掌握Linux设备驱动原理框架,熟悉工程中常见Linux高级字符设备、块设备、网络设备、USB设备等驱动开发,在工作中能独立胜任底层驱动开发。

嵌入式工作做什么

嵌入式的工作是万金油,这个也只是相对来说的,在大企业里面,不可能让一个人从事非常多的任务,这样会导致一个问题,风险非常大,你承担的任务越多,那么风险就越大,所以大企业需要的是在某个领域非常专业的人才,从事的事情也是非常专业的,单一的。 单一的工作需要一个Leader来指挥,这就需要一个架构师,这个架构师需要指导你往哪里天聪你的代码,你拉了一车砖头过来,不能随便就乱扔吧,这就需要规则,需要架构师来制定这个规则,所以就出现了各种软件总工。 大企业需要单一的某个领域的人才,但是小企业,需要的就不是了,他们需要比较全面的人才,他们没有那么多钱来请各个方面的人才,比如你要做一个手环,在小公司,那你就需要把驱动,应用,后台通信,各个功能子模块都一个人来完成。但是如果你在大公司,你可能就只负责手环的功耗部分,如果功耗有问题就来找你,其他的事情,就不是你负责的范围。

如何入门嵌入式

问嵌入式怎么入门,我第一想法和大多数人一样,买块开发板,跟着例程学习,按照步骤学习就行了。其实我自己在这个过程中也是走了不少的弯路,今天我把自己的一点小经验分享给大家,希望大家在学习的过程中少走弯路。

(1)如果还是学生,有条件一定参加大学里面的那些比赛,虽然技术含量不高,但配合软硬件开发调试的经历对于今后的发展很有助益,对于毕业后进入大公司也很有帮助。 (2)开发板一定要购买,且要选择文档资料齐全的(我即使现在手里也有两块开发板,一块单片机,一块嵌入式的,就是在业余学习新知识的时候验证下)

(3)和”hello world”一样,嵌入式是从点亮LED开始的,但后面最好不要按照模块顺序逐个学习的方式,而是先定需求,根据需求反过来学习模块,这一步对于入门门槛是比较高的,但只要花费时间踏过去了,后面其实一片坦途。

如果不知道怎么算需求,那我定个稍显复杂的上位机-下位机需求:

1. 使用串口完成PC和设备通讯

2. 串口使用自定义协议,包含起始位,地址,数据,结束位,crc校验

3. 通过串口能够管理外部设备,如复位,蜂鸣器,设置DA输出,获取AD值,并在界面显示

4. 支持串口在线升级,存储使用外部FLASH,下载支持断点重传,版本检验以及完整性检验,可自定义检验方法,如累加和,crc等。

5. 上位机开发支持自定义串口协议的软件,使用常用能够实现图形界面的语言和框架,如c#, c++或者python皆可以。

6. 如果有能力,支持上述自定义协议替换为FreeModbus协议,使用宏切换

7. 更进一步,将协议和上层应用部分与驱动独立开来设计,利用宏使应用和协议部分支持多平台的移植。

(4)多做总结,可以自己总结记录文档,也可以发表博客,不一定全部做完了才能发,你调试成功了AD,串口通讯协议调试成功,每一步都可以总结,分享自己开发心得和问题解决方式,会写代码调试可能只是把别人的拿来用,但能够写出来讲解给别人,就一定是深入了解过的,这也是我学习过中留下的最大财富,保存至今,另外你可以看看我其它的回答,应该会对嵌入式有更深刻的认识。

大学生如何规划自己的四年,成为合格的嵌入式工程师。

大一:数电 模电 C语言这些都是基础,必不可少了。数电,驱动的逻辑与寄存器的入门;模电,电路图以及外围电路的基础;C语言,这个没啥好说了吧!

大二:数据结构 单片机数据结构这个没学,后来自学的,Linux内核就是大量的数据结构之间的嵌套的派生;单片机,这个已经是嵌入式入门的开始了,可以开始编程设计控制完成一些基本的功能了。

大三:STM32 uCOS 操作系统原理这些东西我都已经是自学了,因为没有课程,STM32这个玩意主要是他在市场应用领域广泛,因为他性价比高嘛!外围资源丰富,稳定,cortex M3的先驱者,学习的话,买个开发板,找个视频看起来,同时自己也要扩展性的学习编码。uCOS这个操作系统入门简单,资料丰富,完全可以自学,同时通过书籍学习阅读源码,但是当你懂得怎么用之后我建议你看RT Thread这款操作系统,非常Linux,强大的组件,只有你想不到,没有你看不到的。操作系统 这个书,我看了一小小部分,不好评价,但是已经加入我的必看书单了。

大四:ubuntu POSIX接口应用 socket等此时,你已经真正进入嵌入式大门领域了,到了这步,或许不用我说你也有你自己的目标了。

以上为本人对此问题的回答,感谢留言、评论、转发。更多电子电路、嵌入式、DSP、FPGA、电机控制等等相关内容请关注@弱电小工。感谢大家。


弱电小工


我来发表一下我的观点。说下我的方法,适合在校大学生,大家有什么见解欢迎纠正讨论。


为什么说适合在校大学生呢,因为在校大学生时间充裕。而参加工作的人,时间就是金钱,与其花费太长时间自学,还不如报个培训班速成,但是培训班的缺点可能就是基础不牢(这个是个人见解,如有不同意见也可以看看我写的自学经历,根据自己的基础跳过相应的步骤即可)。


我认为学习任何东西都是需要分模块的。各个模块熟悉了最后串起来(个人经验)


提醒!!

提醒!!

提醒!!


玩嵌入式是有点费钱的。但是有舍有得,这个看你们自己把握了。



下面我说下我的方法

一、嵌入式分为几个模块(给自己学的勇气)

二、起步学什么(打基础)

三、进阶学什么(给自己坚持下去的动力)


一、嵌入式分几个模块

嵌入式分为软件、硬件(简单吧)。软件,其实可以分的更详细,但是我们不需要分这么详细,后面学习的过程中你就明白了。


二 、起步学什么


首先,你最好是计算机、电子、电气、微电子、电子信息、通信、自动化、信息工程等相关专业。


可能有人会问为什么必须这些专业。因为这些专业要么编程能力强,要么硬件基础很熟悉,学习嵌入式是天然的优势。比如自动化专业,他们学习过电路,模电,数电,电力电子这些课能让你们有牢固的硬件基础;还有C++,51单片机,微机让你们有一定的软件基础。特别是51单片机,一旦学会了,后面学习嵌入式会更容易。


接下来仔细说说如何起步(基础不劳,地动山摇)

第一步,你要懂得硬件的基本知识,这些硬件知识能帮你更好的理解51单片机的内部原理,硬件的管脚配置,引脚功能,更重要的是帮你理解放大电路,滤波电路等。(第三步推荐一本我认为比价好的关于51的书,里面有51的内部原理)这些懂了,在用51C语言写程序的时候就会发现so easy。至于为什么先学51呢,因为大学大部分还是开设51的课,再者51容易理解,教学视频丰富。


第二步,你要懂C/C++,c语言是学习嵌入式的灵魂。因为大学都开设有C课程,所以大家从C开始学会相对方便和节约时间。


第三步,有了相关基础后开始看51单片机系列的书(见下图),网上各种各样的视频多的很,对着网络上的视频学习,效果会更好。但是不能只学不练,买个开发板(当初我们是自己焊的),自己对着视频练习。理论和实际结合效果最好。

当然需要用到相应的烧录软件,和编程软件。我在这里统一说一下。

烧录软件就用STC-ISP(好用),编程的用KEIL c51(keil3也能用),后面玩32了再用KEIL5。


三、进阶学什么


第一步、51单片机玩差不多半个学期就行啦,半个学期够你掌握了,太长浪费时间。我们已经玩过51了,已经是大孩子了,哈哈哈。但是我们没有玩过32位的,直接上arm是不行的。

所以我们要开始学习32,其实32比51 简单的多,因为他们有丰富的库,各种库。市面上的教学资源非常非常的丰富,产品也比较成熟,某宝上面各种开发板(价格300以内),自己选一个买就行了。

其实你也可以跳过51学32,毕竟51太老了,太陈旧了,但是我觉得你学习51会帮你牢固知识,帮你形成写程序的习惯等。

学习32 的周期,根据自己情况安排,一般一个到一个半学期。


第二步、现在咱们对32比较了解了,轮到学习嵌入式系统了,对,没错就是系统,是不是很兴奋。。

想学习嵌入式系统Linux/WIN等 ,首先你需要买个arm学习版,在淘宝上面买的话,不太贵S3C2440,500+元。资料非常多,建议买arm9,因为ram11的资料太少,不适于自学。或者你们预算非常充足,可以考虑Cortex-A8/A9的开发板。

我相信你们学到这里已经有了自己的想法和见解了。到这个过程的时候,知乎上的大佬回答的很详细和网上的资源也非常丰富,多看看大家写的共同学习。


最后,做下总结


看懂电路图、看懂芯片手册(更牛皮的要求是会自己绘制PCB板,会器件选型,会自己调试自己设计板子,直至可以量产)

有编写,移植驱动的能力

懂内核的实现机制

懂C语言,C++等

下面列有详细的要求,你们自己把握下。


等到找工作的时候,有嵌入式硬件,嵌入式软件,嵌入式等,甚至可以触类旁通,要看你们的学习水平了, 哈哈哈。


嵌入式硬件要求:

1、熟练使用Allegro Cadence等EDA工具进行硬件原理图及PCB的设计,精通PCB布线流程、具备多层板布线经验规范及信号完整性分析,熟悉至少一种高速通信接口,如PCIE、SRIO、10GBE等。

2、精通嵌入式处理器设计,具有大型CPU或者DSP的板级硬件设计调试经验,例如P系列或者T系列PowerPC,C6678、C6655等DSP,以及FPGA设计经验者等。

3、负责硬件产品的需求调研、方案设计,熟练使用各类电子仪器仪表进行测试。

。。。。。。


嵌入式软件要求:

1、熟悉Linux操作系统内核,有Linux内核和驱动开发经验。

2、精通C/C++开发语言,shell脚本。

3、精通C语言,能独立编写、调试硬件驱动程序和功能程序。

4、熟悉多线程的开发,精通ucosII嵌入式系统移植、驱动和应用开发。

。。。。。。


嵌入式硬件的工作:

嵌入式软件的工作:

嵌入式的工作:

那你可以以“低端单片机-高端单片机-低端ARM-高端ARM”来学。我现在就是工作中用STM32,晚上回去自学ARM9。


究极体工程师


嵌入式系统由硬件+软件构成。我们分别从硬件和软件这两个方面来讲述一下学习要点。

一、我们来看硬件部分:

我们都有使用个人桌面电脑的经历,而个人电脑系统属于通用计算机系统。那嵌入式系统跟通用系统在硬件设计上有什么区别呢?

1. 通用计算机系统

这里所讲的通用计算机系统,主要指的是intel x86系统。这种系统基本由intel cpu + 南北桥芯片组成。cpu通过南桥连接到低速外设,比如:实时时钟、usb、以太网、wifi、蓝牙等;通过北桥连接到高速外设,比如:内存,显卡等。

这样设计的通用系统性能非常强大。比如,我们可以在个人电脑上办公、运行大型软件、玩游戏、运行photoshop等。

我们在使用个人PC的时候也从来不关注能耗的问题,反正我们玩电脑都要插电源的。

以上是通用系统(以个人电脑为例)的硬件架构和使用场景。

2. 嵌入式系统

跟通用计算机系统不同,嵌入式系统使用所谓的soc实现硬件的最大集成。具体来讲就是把cpu和外设都封装在同一个芯片上,也叫soc,或者叫片上系统。

这样设计有什么好处呢?最大的好处就是减小系统尺寸、节能省电。

尺寸问题好理解,因为很多嵌入式设备是手持的,甚至是可穿戴的。

为什么要考虑节能省电的问题呢?因为嵌入式系统一般都无法做到像个人pc一样持续供电。举个例子:大疆的无人机,就是一个典型的嵌入式系统,你能想象让它拖着一根电源线上天吗?显然不可能。所以,无人机系统必须要考虑电能的供给和消耗的问题。供给靠电池,消耗就是系统的事情了,所以低功耗的硬件才能工作更长的时间,而只有嵌入式专用系统才能做到低功耗。能耗和性能是嵌入式系统设计者需要不断优化和改善的两个指标。

另外有些外设和接口也是传统的通用系统所不支持的,所以就需要嵌入式系统来做定制了。

二、再来看软件部分:

嵌入式系统一般采用linux系统(也有wince,vxworks,ucos等),开发语言一般用c语言。因为c语言的效率高、性能优,这样可以最大程度的节省能耗、提升性能。我们在PC上做开发的时候可以选择java,c#等开发语言,这些语言在开发上给我们提供了很大的便利性,但是代码的执行效率并不高。但是,在嵌入式系统上开发应用软件需要考虑的最大的因素就是性能,所以最佳的开发语言是c语言。这也是嵌入式系统和通用系统在软件开发上的的差异。

以上,我从硬件和软件这两个方面讲述了嵌入式系统的学习要点和开发事项,希望对你有所帮助!


云平台架构


以下均为个人想法,有问题欢迎讨论指教

建议从单片机搞起

说真的

如果你学过单片机再学嵌入式的话,会有更多收获

没学过就算了(假的,还是去学学吧,学了对自己有好处)

嵌入式开发分带操作系统和不带的

既然楼主问的是Linux,那么不带操作系统的咱就直接过了

直接上带操作系统的

带操作系统的嵌入式主要是ARM方向的开发

此方向又分应用开发和底层开发

应用开发主要是一些功能应用程序,了如视频监控,网络通信,编译软件,汇编软件,评估板,在线仿真器等等

底层开发对技术要求较高

不管是什么方向,大神都是从基础打过来的,凭的就是他们对每一个接口驱动都了解

重点:

不管做哪个方向

C语言一定要学好!!

C语言一定要学好!!

C语言一定要学好!!

C语言一定要学好!!

C语言一定要学好!!


推荐一个网站:GitHub


一.打好软件编程的基础

第一阶段的基础包括以下步骤

C语言编程基础,数据结构,计算机原理,编译原理,操作系统,Linux系统的基本应用,Linux的常用命令(越熟越好)

(敲黑板)以上真的要好好学,都是基础都是基础!学不好下面就别继续了!

觉得以上基础已经打好了,没问题了,往下看

某宝弄一台裸机(!!!)

个人认为,如果想真正的了解驱动程序的过程。

还是要优先考虑裸机的驱动程序,他可以让你清楚地知道各个接口是怎么进行驱动的

自己从零开始动手肯定比死记硬背或者啥都不知道要好。

至少到了最后你知道怎么写操作系统。(23333)

二.ARM体系结构编程(边玩边学)

包括 模拟电路,数字电路,微机原理,单片机(没错还是要学)

咱们从电灯开始熟悉,不懂就翻书(看视频),弄不来就翻书(看视频),觉得不熟再翻一遍书(看视频),就是这么简单粗暴(打住)

弄清楚ARM架构,CPU 怎么取指译码,以及三个总线怎么工作balabalabala

以及搞清楚cpu怎么启动的程序镜像怎么布局的,还有中断以及保护现场等等等等

这一块学的主要就是CPU编程思想,目的是为了之后不要一碰上别款CPU就直接懵逼了

推荐书籍:《自己百度,找经典就成》(个人觉得看视频比看书效果要好,视频自己找,MOOC和网易云课堂啥的有很多)

单片机开发板还是有的好(真的!)

Ps:认真学习操作系统

认真学习操作系统

认真学习操作系统

(个人建议)

三.Linux应用程序开发

重头戏来了(敲黑板!)

此项目分以下几个步骤

1.命令(多试,多记,多练)这个书籍就不用推荐了,百度上很多

2.系统编程(推荐书籍《嵌入式系统》毛德操)

3.驱动(推荐书籍《Linux设备驱动开发详解》)

5.服务器(同上不熟不会)

6.内核(推荐书籍a、《深入理解Linux内核》b、《Linux内核源代码情景分析》毛德操)

7……..(不行,说不下去了)


Linux命令一开始就说了,

越熟越好越多越好

越熟越好越多越好

越熟越好越多越好

当然死记硬背肯定是没用的。

所以要把实践和理论结合起来

多试试,多做做实例。各个类型都撸一遍(尽力吧hhh)



总结:

计算机这个方向

有兴趣能坚持就没啥大问题

毕竟网上视频很多

自学会累,但是也不是没可能

加油!

打字真.脑阔疼


一碗派大星


作为一个从事车载嵌入式行业的程序员,废话不多说,总结有以下几条:

1. C语言是基础,因为很多操作系统以及底层驱动都是基于C语言写的。比如Linux操作系统以及其驱动。我说的基础并不是简单只是简单的了解一些C语言,而是要深入的学习。比如:指针的使用等。

2.要熟悉主流的操作系统,比如Linux为例。

3.熟悉硬件相关知识,至少知道如何配置寄存器等。

4.如果是小白的话,开始最好还是买个嵌入式开发板吧,具体实践一下。

5.嵌入式行业变化太快了,要有持续的学习能力,不断学习。


一个尚未秃顶的程序员


1)先选择一个主流的平台,比如NXP I.MX6UL,买一块好的厂家(用户多,资料多、技术支持好)的开发板。

2)对照着提供的实验动手操作

建议

i) 初学者先做应用层,以完成某个应用功能为导向。不要过早的陷入到某个具体的不懂的知识点中,因为Linux太复杂深奥了,你想完全的搞明白一个知识点太难了。

ii) 随着逐步的熟悉,可以慢慢的去了解和学习驱动、移植、裁剪等相关内容


TopSemic


嵌入式的学习主要包括两个方面。

其一,是称为硬件部分。1. 看懂以及绘制电路原理图,绘制PCB,注意器件原理图与器件PCB对应关系,熟悉电路绘制自动化软件,比较通用的是AltiumDesign, PowerPCB等。2. 读懂器件,IC datasheet,注重电气特性部分。3. 了解各种电阻与电容等使用方法,使用场景。4. 熟悉烙铁的使用方法,会焊接电路板。5. 熟悉测试工具的使用,对电路板进行测试。

其二,是称为软件部分。1. 学习C语言基础,有可能的话,可以熟悉一下汇编语言。2. 数字基本电路驱动,如LED驱动,闪灯驱动。3. 研究网上通用驱动软件的学习。4. 很重要的是读懂器件datasheet里面器件的使用。5. 了解软件开发工具以及debug方法。


Mr涟水二少爷


物联网越来越火热,随着人工智能的发展,物联网行业将是接下来高薪就业的趋势,物联网技术培训课程学哪些内容呢?接下来让你全方面了解物联网,学到时下新潮的技术。

一、嵌入式高级C语言

linux系统,恰如是C语言高级编程,数据结构及算法

二、嵌入式设备及GUI开发

嵌入式环境配置与开发工具学习,GUI图形界面开发

三、嵌入式linux高级程序设计

嵌入式linux系统编程

四、linux高级网络程序设计

linux高级网络编程

五、数据库开发

数据库开发

六、C++面向对象高级语言程序设计

C++语言高级语言开发

七、物联网

物联网开发

八、CotexA53linux平台驱动开发

物联网开发

物联网开发学科实战项目内容包括:

1、智能家居项目

2、智能人脸识别项目

3、RFID智能门禁项目

4、多媒体播放项目

5、智能手机设计项目

6、智慧教室项目


千锋长沙


学习嵌入式Linux一般有两个方向一个是应用层,另一个是底层。

应用层是在嵌入式设备上实现一些功能(此时设备已经将系统跑起来),像网络通信,人机交互界面,设备管理和监控等等。

底层要做的是将系统在设备上跑起来,我们需要移植bootloader、Linux内核、文件系统,编写外设驱动等。

学习嵌入式Linux的话,以我个人经历来说的话,我觉得你最好有单片机开发的经历这样你对于底层的知识有更容易理解。

首先选择一款Linux系统的发行版作为平台来学习基本的系统操作和一些应用层知识,进程间通信,时间编程,网络编程等,平台可以选择redhat,Ubuntu,debian等。此时我们就可以做一些系统应用层的练习,玩一些开源项目。

之后就看你的意愿了,喜欢做应用层就继续做应用层,学习一门高级语言,了解下内核机制就可以,可以不用更深入的了解底层。

如果要做底层,可以选择一个一款arm板来学习底层,推荐经典的s3c2440,资料丰富,容易入门。可以先从bootloader、内核、文件系统的移植开始,然后再学习驱动的编写。


GGZ40


首先要有一点的英语和电路基础,然后再一步步学习深入。

1.先学习单片机,c语言。可从51单片机书籍或视频或开发板入手。有了一定的编程和电路驱动概念。

2.对MCU的运行和寄存器有所理解之后,可以进一步学习性能强大一点的单片机。STM32之类的ARM单片机。

3.开始接触嵌入式系统,ucos或freeRTOS之类,掌握一定的嵌入式系统概念。

4.有了嵌入式系统概念之后,可以研究市场上的电子产品,借鉴别人的设计思路。如果需要更强大的系统可学习Linux或Android


分享到:


相關文章: