嵌入式学习 订阅
嵌入式学习即嵌入式Linux系统、Android系统开发学习,主要讲述嵌入式学习的方法,嵌入式学习路线、和兴趣学习嵌入式的必要性。 展开全文
嵌入式学习即嵌入式Linux系统、Android系统开发学习,主要讲述嵌入式学习的方法,嵌入式学习路线、和兴趣学习嵌入式的必要性。
信息
兴趣学习
兴趣是学好嵌入式的基本要求
学习路线
学习流程
中文名
嵌入式学习
学习方法
坚持
嵌入式学习基本介绍
什么是嵌入式学习?嵌入式学习是将学习真正“嵌入”到日常工作中,使学习的知识能得到有效的转化。嵌入式学习模式认为如果学习内容与工作相关,员工学习的积极性最大,在今天日益快速变化的学习环境中,传统结构化的课程很难预测员工在工作中遇到的各种复杂问题,因此难以向员工提供最佳的问题解决方法,而员工在工作中遇到困难时能通过内部学习组织很快得到解决问题的方法从而得到知识,就被称为嵌入式学习。嵌入式学习具有提供即时的学习支持、强调合作性、引入学习技术、将学习与工作相结合的特点。
收起全文
精华内容
下载资源
问答
  • 从事嵌入式研发行业十年,认为学习就是要不断的吸纳知识,在研发过程中,经常会遇到一些问题,这种发现问题并解决问题的过程就是进步。 为什么选择学习嵌入式嵌入式系统无疑是当前最热门最有发展前途的IT应用...
  • 包含个人阅读书籍所做的思维导图,包括:《C和指针》、《C缺陷与陷阱》、《深入理解Linux内核》、《Linux设备驱动程序》、《算法与数据结构:C描述》等书籍的思维导图
  • 嵌入式门槛虽然较高,但也跟其他事物一样,并不是牢不可破。只要我们用心去对待,冬雪终将化去,春风定会吹来,详细介绍嵌入式学习方法与参考书籍
  • 希望这些能对想要学习嵌入式、进入嵌入式行业和那些刚学习嵌入式不久的朋友有所帮助。 如果你是一个嵌入式爱好者,在学习和开发之中有什么经验感想,也和大家分享一下!让我们一起提高,共同进步!
  • 嵌入式学习

    2019-05-07 20:01:14
    嵌入式学习路线,对嵌入式的学习,有清晰的描述,让初学者目标明确
  • 嵌入式学习资料

    2018-10-22 23:31:45
    内含《Linux系统编程_v2.0》、《基于嵌入式实时操作系统的程序设计技术》、《鸟哥的Linux私房菜 基础学习篇(第三版)-清晰版》分享给大家~
  • 课程内容:为什么介绍物联网、嵌入式学习路线、常见物联网结构,物联网与嵌入式关系、面向物联网的开发涉及哪些事情、面向物联网的嵌入式开发的课程大纲、怎么学习物联网、嵌入式的这些课程,本课程的宗旨在于指导...
  • 何为嵌入式? 1、单片机相关 1.1 基于单片机的智能小车、智能机器人制作 1.2 基于Arduino的3D打印机制作 2、嵌入式Linux相关 2.1 智能扫地机器人 2.2 智能可穿戴类设备:智能安全头盔 2.3 智能可穿戴类设备:...

    目录:

    0、引言

    何为嵌入式?

    1、单片机相关

    1.1 基于单片机的智能小车、智能机器人制作

    1.2 基于Arduino的3D打印机制作

    2、嵌入式Linux相关

    2.1 智能扫地机器人

    2.2 智能可穿戴类设备:智能安全头盔

    2.3 智能可穿戴类设备:面向空巢老人/病人的智能手环

    2.4 物联网智能控制系统:家居、农业、医疗

    2.5 基于Linux的嵌入式网络视频监控系统

    2.6 移动图像监控系统

    2.7 基于TCP/IP的安全文件传输系统(TLS/SSL)

    2.8 嵌入式MP3播放器

    2.9 基于Qt的新能源汽车电池管理系统

    2.10 嵌入式车载导航定位系统 Qt+GPS+Baidu Map

    2.11 无人机

    2.12 嵌入式VR、AR

    2.13嵌入式结合AI、Machine Learning

    3、嵌入式Android相关

    3.1 物联网智能控制系统:家居、农业、医疗

    3.2 嵌入式家庭保健系统

    3.3 智能电视TV、AR/VR眼镜

    3.4 自己定制的平板电脑、手机等

    4、裸机开发

    4.1 裸机实现串口通信

    4.2 裸机实现DMA方式SD卡读写

    4.3 裸机是实现NANDFlash、EEPROM的操作(擦除、读写)

    5、相关资料分享

    博主热门文章推荐:


    0、引言

    何为嵌入式?

            IEEE官方定义:Devices Used to Control,Monitor Assist the Operation of Equipment,Machinery or Plants。

    翻译过来就是:用于“控制、监视或者辅助操作机器和设备的装置”。

              其实按我理解,嵌入式系统就是“高大上+土豪”版的单片机,因为嵌入式不只带操作系统(OS),并且都是上架构(如ARM)的。其实咱们所用PC机也是一个嵌入式系统,只不过处理器、Bootloader、操作系统OS都是通用化的Intel系列、BIOS、Windows等;而面向具体应用,就需要根据需求,实现硬件资源和软件操作系统的“私人订制”,无非就是先根据需求硬件选型,然后根据硬件资源去裁剪操作系统,把软件不需要的都去掉,只留有用的,这样保证我们用的系统在达到需求目标的同时,还保证了实时性稳定性(没有无关因素干扰)并且小型化具有专用性

           再啰嗦几句,假设大家对单片机已经很熟了,举个栗子:对单片机引脚控制LED,用C编程通过IDE编译个Hex文件,烧写就可以运行实现;那么对嵌入式来说呢,因为处理器引脚太多(如Cortex-A9架构的Exynos4412芯片 有400多引脚),那么自己一个个配(裸机编程)实在麻烦,而且编的程序都与硬件密切相关,没有通用性且很难移植;因此就使用上了操作系统;那么操作系统干了什么呢?其实就是和单片机操作引脚一样,只不过OS将这些操作封装成各种驱动(如GPIO驱动),那么你只要在应用程序上调用这个驱动内的函数,借助OS内核实现机制,就能向单片机一样操作这些引脚,所有嵌入式设计,底层都是这么实现的。

          So, 怎么判断该用嵌入式还是单片机呢:其实就是看需求,单片机处理能力、可扩展性及其有限,涉及到图像监控处理、网络协议就捉襟见肘了;因此这个逻辑很简单:单片机不能实现的,上嵌入式;并且现在是个嵌入式功能都有成型的solution,特别是Linux的开源,资料成堆成堆的。这也是近年嵌入式(包括物联网智能硬件火这么快的原因之一吧。

    以上都是愚见,切入正题:本人不才整理了几个嵌入式比较好的练手项目和小课题,有的是我之前做的项目,有的是网络搜罗,反正都是我个人认为比较综合而且interesting的,这些网上一大堆相关资料,我这里只是提个题目和其中关键点,具体内容不赘述,感兴趣直接百度google,希望给大家一个参照,大家有idea都可以相互交流,有机会共同学习,感谢。

    骚扰方式: Howiexue@gmail.com


    1、单片机相关

          这里主要是推荐嵌入式相关,所以单片机就只简单提几句

    1.1 基于单片机的智能小车、智能机器人制作

         对于大学经常参加一些智能车比赛的童鞋,相信已经做吐了。。。小车目前可以算是相关资料最多的练手项目之一,各种脑洞大开的智能车车,你值得拥有~

    1.2 基于Arduino的3D打印机制作

    需求:使用单片机,通过限位开关和温度等传感器控制步进电机移动、加热头,将打印材料加热挤出后凝固成型。

    硬件:Arduino mega2560开发板,3D打印机套件,打印材料,安装工具等

    软件:Marlini开源程序,上位机软件Print3D,切片软件(推荐Cura),三维制图软件(推荐犀牛)等。

    参考链接:Kossel - RepRap

                Prusa i3 3D printer - Prusa Printers(推荐一开始做Kossel和i3型的)

    800元组装一台3d打印机全教程流程【图片】【项目发起】800元组装一台3d打印机全教程流程【arduino吧】_百度贴吧

    注:这个项目实现很费事,可谓处处是坑,不只是单片机软硬件知识,还要学三维制图、机械原理等等,期间会遇到一系列问题,但是最终调试完,第一次打出自己想要的东西时,感觉真是此生难忘,所以当时一做就做了三台(下图,其中左面上角是 Prusa I3 型,其余那俩都是Kossel 三角洲)。推荐创客们玩玩,比四轴飞行器好玩多了(也省软妹币)。

        3D打印现在是所谓工业4.0的主打,特别是牛炸天的细胞打印(对你没有看错)、器官打印、粉末金属打印等。不过我们做的也就打印些塑料小玩具,现在的SLA光敏树脂打印倒挺不错,能比FDM的快几十倍,只是成本太贵(貌似10w+)。又扯远了。。。咳咳,下面开始划重点:


    2、嵌入式Linux相关

          嵌入式Linux就是在嵌入式硬件平台上使用Linux操作系统。其实嵌入式开发过程就是硬件+软件设计过程,本节推荐的都是在一个目标硬件平台上设计基于linux系统的应用,主要工作一般都是:Bootloader设计与移植、Linux内核裁剪移植、Linux驱动程序开发移植、文件系统制作移植和最后的应用程序开发移植。说了这么多移植它是什么东东?我理解为:拿着别人写好的东西,稍微自己改改放到自己的平台上,其中的“改”和“放”的过程就是移植的过程。这也是嵌入式工程师必须具备的能力,一定要借鉴甚至使用别人做好的,自己闷头写代码只能闭门造车(大神除外)。

             推荐硬件平台树莓派(首推),友善之臂、飞凌等开发板(这些开发板自带很多练手项目课题,网上也很多资料,本文就不再提那些case),架构最好选主流的ARM,像流行的s3c6410(ARM11)、s5pv210(A8)、exynos4412(A9)等。或者自己画板子(使用现有开源出来的修改下,不过成本高,难度大),有兴趣不妨一试,刚开始学习还是老实用开发板吧。

            推荐软件平台Linux2.6以上内核(2.6以下很多系统机制会不同)嵌入式系统,Github、开源中国和ChinaUnix上一堆开源的Linux驱动和小应用,宿主(PC)机最好使用Fedora、Ubuntu系统(如果使用虚拟机VMware版本最好在9.0以上),Bootloader推荐使用U-Boot;文件系统根据使用的Flash支持,用Busybox制作;人机界面用Qt。

    如图:

    嵌入式系统层次结构

    2.1 智能扫地机器人

           深藏不露的“扫地僧”,类似壁障设轨智能小车,只不过有更多人性化功能,网上资料+自由发挥吧

    2.2 智能可穿戴类设备:智能安全头盔

    背景:在工厂或危化品存储等场所,经常发生危害气体泄漏,而由于环境、风力等因素,人们无法直接在固定位置检测,而且有的气体是无色无味,如何解决?其实最终目的还是保证工人的人身安全,这时候就体现出来智能可穿戴设备的价值。

    需求:设计智能安全头盔,当检测到有害气体后震动报警,并将该危险地点通过GPS上传到上位机显示,生成一个有害气体地图(借助Baidu API)以红色标出危险地段。

    2.3 智能可穿戴类设备:面向空巢老人/病人的智能手环

    需求:背景不用说,设计一个智能手环(或其他设备),检测人身体的各项生命特征,并且实时GPS传输老人位置,还具有跌倒报警、遇水报警等突发状况向子女手机、服务器端推送报警信息。自由发挥,有些身体特征检测实现确实困难,但总有方法解决,市面已有这类产品。

    2.4 物联网智能控制系统:家居、农业、医疗

    这就是近年炒的最火的智能家居、智慧农业等物联网项目,其实都是属于嵌入式智能控制系统,无非就是底层传感器网络(如Zigbee)采集环境参数数据,传给嵌入式网关,网关再传给上位机服务器,再加上远程控制、视频监控等。像这样的题目很多很多,例如智能温室大棚控制系统、智能家居系统、智慧医院系统、智能仓储管理系统等等,其实都能归结为一套系统,只不过根据应用领域有些不同细节。

     

    盗图留种:智能农业系统综合项目实训|项目作品演示_华清远见高端IT培训

    注:这类课题难度适中,建议多人合作,分别负责感知层(传感器网络),网关层(嵌入式平台),上位机应用层(Web服务器、安卓App);至于云端架构可以使用乐联网、Yeelink等已实现好的物联网平台。总之多借鉴别人好的案例。

    友情提示:可以先做底层采集温度,传给网关显示并转发到服务器,这一路通了后面程序就好开发了。或者灵活变通,用嵌入式网关采集传感器(需移植传感器驱动到Linux内核),就不需要使用Zigbee等WSN了(如下图)这也可以算是一个题目,都很open的,怎么做你来定,只要脑中有idea,生活处处皆课题(简直是自虐)。

    2.5 基于Linux的嵌入式网络视频监控系统

    面向安防等应用中,具多个摄像头同时视频传输,为减少带宽、提高视频分辨率和帧率,就需要使用编码标准对视频编码后再传输,so做一个软编码器,我做过基于H.265的编码(有兴趣百度Lib265),这里可以使用H.264(资料较多)其实原理很简单,涉及到摄像头驱动和编码库。还有上位机解码软件。

    Linux网络服务器可以使用开源的mjpg-streamer。(可以参照国嵌高级项目班视频)

    2.6 移动图像监控系统

          类似2.4, 例如国嵌高级项目班中就有介绍,多了一个入侵检测。使用摄像头抓取图像,通过Motion库动态监控比对,一旦出现和前一个图像较大变化(如家中进来一个人),则立即拍照将照片传到上位机,并报警等联动。

        后面还包括安全文件传输系统,嵌入式MP3两个都是国嵌教程里的项目,后面都有链接,我也是以前学习时候在网上找的,如有侵权等问题请告知

           另外:视频图像做好了,就可以做很多应用,如现在比较牛的机器视觉,无损检测、缺陷检测等等。

    2.7 基于TCP/IP的安全文件传输系统(TLS/SSL)

        其实就是把Socket包通过OpenSSL的工具加密一下(TLS/SSL),再发送,然后接受端再解密。里面用到了线程池,在企业项目会经常用到。

    2.8 嵌入式MP3播放器

    2.9 基于Qt的新能源汽车电池管理系统

        如题,使用Qt作为GUI显示,实现对电池容量显示和管理操作。较简单,不过可扩展性强,大到汽车管理,再大一点还可以上升到车联网。

    2.10 嵌入式车载导航定位系统 Qt+GPS+Baidu Map

        GPS采集经纬度数据通过GPRS、WiFi无线传输到服务器上,并借助Baidu、Google提供的API进行精确定位。(还是那句话,借鉴网上现有的,自己开发难度Huge)

    2.11 无人机

    好吧,不得不又谈四轴了,现在无人机导航送快递、监控交通可谓前景广大,有兴趣创客可以做一个,网上各类资料,实现不难,但主要是烧钱….烧钱….钱…

    Ps:买就要买好的模块,特别是图传和电调!,要么一摔就….别问我怎么知道的!

    2.12 嵌入式VR、AR

    VR/AR实际没接触过,不过很高大上的样子,最近好多大牛公司在搞虚拟现实。感觉还是嵌入式图像处理+全景映象的应用吧,有兴趣可以看看Google的产品。

    2.13嵌入式结合AI、Machine Learning

    此类课题必火!本质其实就是将机器学习、人工智能等算法,应用在嵌入式领域。AI领域将是嵌入式工程师的又一择业选择!未来必将处处AI,且处处嵌入式AI(如现在市面各类AI电器)。

    因为AI涉及到N多机器学习类算法,学习过程也能极大提高嵌入式er的算法能力(算法一般是广大嵌入式er的一块短板),网上也有各种大神编译好的算法模型可以借鉴并直接使用,不过在学习阶段建议自己从无到有搭建算法模型、找数据集训练、交叉验证最终移植发布,有可能自己搭的模型效果不咋地,但这个过程我觉着还是能学到不少AI的思想。。。

    本人这方面还是纯种小白,目前正在努力学习,找到好的嵌入式AI资料再第一时间奉上。(前期可以看看吴恩达的视频)

    附机器学习算法地图:


    3、嵌入式Android相关

    嵌入式Android开发,就相当于自己定制各种功能的手机一样,因为Android系统发布就是面向移动端设备的,Android系统移植后也保留大量移动设备应用。因为Android系统基于Linux内核,所以底层还是Linux的东西,但应用层就完全不一样了,要在之前的基础上开始学Java、JNI、Android编程,相关嵌入式资料也没有Linux多,所以想开发还是有一些门槛的。

    要说明的是:上述嵌入式Linux的项目,用嵌入式Android一样开发,只不过平台不一样,用的Linux内核不太一样而已,这时候如果真心想学,可以在上面项目做完后的基础上,将你的项目移植到Android平台。这里要注意使用的Linux内核版本,缺少什么就补什么,如驱动、库文件等等,然后重新编译移植内核

    Android系统架构

     推荐硬件平台树莓派、友善之臂、飞凌等开发板,这里一般的处理器就不行了,ARM11以下可能连安卓2.0系统都带不动,So推荐使用Cortex-A9四核处理器或以上,否则系统卡顿…顿….

     推荐软件平台嵌入式Android2.3以上系统,宿主(PC)机最好不要用虚拟机,我用真实Ubuntu,i5+8G内存的主机编译Android5.0.2系统都编译了8个多小时,推荐使用开发板厂家提供的已经编译好的版本,不要重新一点点编译;Bootloader和上章一样,Linux内核3.0以上;人机界面直接用Android自带的(嵌入式Android优势)。

    3.1 物联网智能控制系统:家居、农业、医疗

    同上文一样,只不过网关那一层换成Android平台,个人感觉这个还是很有搞头的,毕竟Android用户群这么大,大家跟熟悉,操作使用更方便。

    这里说到了 ,类似上章的题目,都可以把Linux平台转到Android平台,所以这里关于上面提到的题目就不再赘述。

    3.2 嵌入式家庭保健系统

    借助Android良好的人际交互,开发集成智能心率计、血压计等检查项目的嵌入式系统。

    3.3 智能电视TV、AR/VR眼镜

    就是家里用的互联网电视机顶盒,例如小米、乐视盒子,结合AR技术

    需要支持HDMI音视频输出、VGA输出、AV音视频输出、支持网口与WIFi、支持USB设备(鼠标键盘)、支持红外设备(遥控器)等。

    3.4 自己定制的平板电脑、手机等

    从底层或者上层应用定制自己的移动设备,比如说更改开机界面为你的果照。。


    4、裸机开发

    “裸奔”挺难的,因为不使用操作系统,不光要整天和芯片datasheet打交道,还要深入处理器架构以及各类存储机制。其实严格意义来讲,我们之前搞单片机也是属于裸机开发。

    如果是大神中的大神,上述的一些题目完全也可以用裸机开发出来,我没有奔过,不敢妄自评测,所以只提供几个小题目。

    4.1 裸机实现串口通信

    4.2 裸机实现DMA方式SD卡读写

    4.3 裸机是实现NANDFlash、EEPROM的操作(擦除、读写)


    5、相关资料分享

    福利来也

    注:这些都是我学习嵌入式时候精心整理的资料,其中也有购买或在网上找的资源,如有侵权等问题请告知删除

    链接:http://pan.baidu.com/s/1b0QLOy 密码: 

    链接:http://pan.baidu.com/s/1cDsqp4 密码: (本文提到的很多项目源码和视频)

    链接:http://pan.baidu.com/s/1dFmNHxZ 密码: 

    链接:http://pan.baidu.com/s/1gfFPTIV 密码: 

    PS:一直审核不过,考虑或许有不少涉及版权,就把链接密码去了,所以需要资料的留言邮箱吧~ 别忘了+关注收藏一键三连哦~

    博主热门文章推荐:

    一篇读懂系列:

    LoRa系列:

    网络安全系列:

    嵌入式开发系列:


    友情赞助:

    如果你觉得博主的文章对你那么一点小帮助,恰巧你又有想打赏博主的小冲动,那么事不宜迟,赶紧扫一扫,小额地赞助下,攒个奶粉钱,也是让博主有动力继续努力,写出更好的文章^-^,求赞助哦~~。

        1. 支付宝                2. 微信

                                     

    展开全文
  • 嵌入式学习心得-必看

    2020-08-19 11:48:23
    嵌入式学习心得-必看
  • 嵌入式学习资源

    2015-10-20 15:29:00
    嵌入式学习资源,要在网页上看,放心下载
  • 嵌入式学习步骤及方法(精典)
  • 嵌入式学习过程中,基于ARM核的嵌入式芯片必不可少。那么,在学习ARM嵌入式知识或开发中,嵌入式工程师会遇到哪些不可预知的问题?哪些问题会在嵌入式的学习中成为您的拦路虎?本文系统总结整理了ARM嵌入式学习的...
  • Linux嵌入式学习过程(转载)

    万次阅读 多人点赞 2018-07-09 14:04:41
     ---循序渐进学习嵌入式开发技术最近经常有用人单位给 我打来电话,问我这有没有嵌入式Linux方面的开发人员,他们说他们单位急需要懂得在嵌入式linux环境下的软件开发人员,我回答说,现在每年毕业的 大学生那么多...

    嵌入式时代已经来临,你还在等什么?

     ---循序渐进学习嵌入式开发技术
    最近经常有用人单位给 我打来电话,问我这有没有嵌入式Linux方面的开发人员,他们说他们单位急需要懂得在嵌入式linux环境下的软件开发人员,我回答说,现在每年毕业的 大学生那么多,还招不到合适的软件开发人员吗?他跟我说,毕业大学生虽然多,但大部分都能力不够,不能达到他们的工作的要求。该公司HR的一句话说出来我 们现在的大学教学和大学生就业的现状:一方面每年那么多大学生毕业找不到合适的工作,另一方面很多用人单位和企业又找不到合适的人才。造成这种现象最基本 的原因是学校教育和社会需求的严重脱节。其他的专业和行业我不清楚,但是对于嵌入式专业和嵌入式软件行业来说,通过与多所高校的老师和在校高年级本科生, 研究生交流,我还是有所了解的,高校的嵌入式专业的教学现状我在前一篇文章里仔细分析过,造成很多嵌入式专业的学生在毕业后,还是很难达到用人单位的要求 最主要的原因在于高校在嵌入式教学方面重理论和轻实践,很多嵌入式专业的老师也没有实际的工作经验,这样培养出的学生可能让他讲起来头头是道,但是让他去 真正编写,调试一个应用程序就傻眼了,不知道从何下手,因为他们在学校的学习可能从来就没有老师带着他们实际调试过嵌入式程序,也没有机会让你去调试嵌入 式应用程序,那些看起来非常不错的嵌入式实验箱大部分时间都躺在实验室睡大觉,只有在上实验课的时候搬出来让大家看2眼,摸2下,还没有弄明白怎么回事, 又要收到实验室睡大觉去了。这样的教学模式,如何能培养出一名合格的嵌入式工程师呢?出现企业找不到合适的人,大学毕业生找不到合适的工作也就不奇怪了。
    嵌入式专业是一门实践性非常强的学科,只有多动手,多实践,多编程,多调试,多看书,多思考才能真正掌握好嵌入式开发技术。
    现 在很多同学也意识到了学校培养模式和社会需求脱节问题,有一部分同学也先行行动起来,开始注重培养自己的实际动手能力,培养自己实际分析问题,解决问题的 问题,培养自己在嵌入式专业实际编程,和调试程序的能力。但是嵌入式专业不同于其他学科,嵌入式专业是一门综合性非常强,涉及知识面非常广的学科,对于初 学者来说,面对那么多教程,课本,那么多知识点,往往不知道从何处下手,不知道哪些是重点,哪些不是重点,这些知识点之间有什么关联,一脸的茫然,然后东 一榔头,西一棒子,折腾了几个月甚至大半年后,还是找不着学习嵌入式的方向,还徘徊在嵌入式开发的大门之外。
    那么,如何从零开始学习嵌入式开发技术, 进入嵌入式开发大门呢,笔者根据自己的嵌入式学习经历和多年的嵌入式linux教学经验,谈谈自己对嵌入式学习的一些想法和意见,希望对大家有所帮助。

    一、练好基本功
    嵌入式系统专业是综合了计算机硬件技术,计算机软件技术以及电子电路技术的一门综合学科,所涉及的内涵和知识非常广泛,包括:数字电路,模拟电路,计算机组成原理,单片机基础,C语言基础,操作系统,数据结构,编译原理,计算机控制,计算机网络等知识。
    在真正学习嵌入式开发之前, u。对于C语言,至少能单独编写调试一个3 ~ 500行的程序,能够了解C语言的基本语法规则,基本语句的使用,理解指针概念并能灵活使用各种指针。
    计算机组成原理要能理解组成一个计算机系统的几大部件,计算机系统的结构,理解系统总线,理解处理器和计算机外部设备的关系,处理器和计算机外设是如何协调工作完成某一项功能的,计算机软件和硬件是如何分工协作完成某一项任务的,理解软件是通过寄存器来控制硬件的。
    数字电路,模拟电路要了解其基本原理个概念,能看懂简单模拟、数字电路原理图。理解数字电路中的寄存器,时序的概念,能看懂芯片手册和时序图。对于其他基础课程,重点要理解其中的一些基本概念,如何使用等等。
    对 于电子,自动化,通信,计算机类专业的学生,在大二、大三开设的专业基础或专业课程中基本包含了以上的大部分课程。因为缺乏实践,可能学得不是很深入,但 是一些基本的概念和基本知识应该还是有所了解,针对一些薄弱环节,自己稍微加强学习一下,基本上已经具备了学习嵌入式开发的基础。在嵌入式基本功学习阶 段,最重要的是C语言和单片机基础,最好是能用C语言开发一个小的单片机程序,例如用C语言实现单片机和PC的串口通信,用C语言控制LED等显示,用C 语言控制数码管显示等小程序。在这个期间需要的学习工具就是单片机51学习开发板。推荐飞凌的OK-51学习开发板。详情参考:

    二、嵌入式Linux应用开发
    嵌 入式开发基础知识学习完后,这时候你已经有了一定的嵌入式开发基础了,可以进行基于单片机的嵌入式系统设计了。单片机编程本身也是属于嵌入式编程,但是在 这里我们只是把单片机开发当作嵌入式系统开发的基础,不把单片机开发作为真正的嵌入式系统开发,在这里我们的嵌入式系统开发是指在带有操作系统的嵌入式平 台上的应用和驱动开发,特别指在嵌入式linux平台上的开发。
    单片机开发在很早以前是非常热门的,现在在一些比较简单的系统上单片机也用的非常 广泛,随着硬件的成本不断降低,在一些比较复杂的嵌入式设备一般都采用嵌入式linux操作系统,在嵌入式linux平台上进行开发,这样可以极大的提高 嵌入式开发效率,提高系统的稳定性和可靠性,降低开发成本。由于linux是一个开源的操作系统,你可以通过阅读linux内核来理解内核的实现机制,如 果有需要,你甚至可以通过修改内核源码来提高系统的性能;同时,全球参与linux开发的队伍非常庞大,网上有大量的嵌入式linux开发资料和源代码, 很多你需要实现的功能在网上基本都能找到相关源码,参考一下别人写的源码,这样可以极大的提高自己的工作效率和技术能力,近几年,随着参与linux开发 的人越来越多,linux系统的稳定性、实时性有了很大的提高,linux系统无论在服务器上还是嵌入式设备平台上都应用越来越广泛,现在包括华为、中 兴、朗讯的各大通信巨头都开始把自己设备的底层平台从vxworks操作系统迁移到linux系统,可以说嵌入式linux是嵌入式技术发展一个方向,是 嵌入式技术的一面旗帜。基于以上原因,我的建议是学嵌入式开发,就学嵌入式linux开发,相对于wince等其他的嵌入式平台,你可以真正学到更多的东 西,学到嵌入式技术的精髓,同时他又符合嵌入式产业发展的方向,不容易被日新月异的技术发展所淘汰。
    有了嵌入式开发的基础,又知道了我们为什么要学习嵌入式linux开发,那我们就要开始动手开始学习了,那如何开始学习嵌入式linux开发,从哪里开始着手呢?
    很 多同学这时候就开始买linux书籍,从图书馆借了一大堆关于linux的书:什么《linux使用基础教程》、《linux源码深度分析》、 《linux情景分析等》、 《linux高级使用指南》等等。结果抱着这些图书看了10天半个月还是不知所云,当初学习的激情慢慢就消退了,最后不了了之,终究没有进入嵌入式开发大 门。究其原因,是因为没有找到合适学习嵌入式开发的方法,做任何事情都有方法可循,找对了学习方法往往就能事半功倍;否则就可能是事倍功半,甚至劳而无 功。接下来我先分析一下同学们的几种常见的嵌入式linux学习误区,然后提出一种比较合适的嵌入式linux学习方法。



    误区一、全身投入学习桌面或服务器版本linux系统
    很 多想学嵌入式linux 的同学经常问我,我不会linux系统,怎么学习嵌入式linux开发,于是他们就花费了大量的精力和时间去研究学习桌面版本linux系统的使用,什么 redhat 、federo,、ubuntu等等都用过,如何配置linux,linux的各种使用命令都背的滚瓜烂熟,linux各种服务器的配置,还原备份各种操 作非常熟悉,以为这样就学会了嵌入式linux开发。其实这是一个学习嵌入式Linux开发的误区。
    Linux桌面环境只是嵌入式linux的一 个开发工具,开发环境而已。我们的目标不是学习linux服务器的配置和使用,linux服务器的高级配置和使用那是另外一个领域,不属于嵌入式 linux讨论的范畴。我们进行嵌入式linux开发,只是把linux桌面环境当作一个工具,在linux桌面环境下运行嵌入式linux开发工具,例 如gcc 编译器,make工具来开发我们的嵌入式linux应用程序而已,对于嵌入式开发工程师来说,没有必要花费那么多的精力和时间去研究linux桌面版和服 务器的应用,只要能了解最基本的操作即可。现在的桌面linux系统的图形化界面做的也相当好,跟window具有相同的易用性能,例如ubuntu很多 操作都可以在图形界面下完成,就没有必要去记每个linux命令了。熟悉linux桌面系统的使用和基本操作命令,安排1~2天时间学习基本就可以掌握 了。

    误区二、直接阅读linux内核源代码
     很多想学linux,在连linux是什么东西,一点都还不会使用的情况下去就阅读linux内核源代码,花了大量时间去阅读《linux源码深度分 析》、《linux情景分析等》等书。这样的结果很可能就是看的头昏眼花,不知所云,最后只能放弃了。这也是同学们学习嵌入式linux的一个误区,在有 一定嵌入式linux开发基础后,带着一定的目的去阅读linux源代码,这样可以极大的提高你的技术能力,但是你在没有任何基础,对linux一点都不 了解的情况下就去阅读linux内核源代码,无异于以卵击石,最后只能是撞个头破血流。

    以上分析了同学们学习嵌入式linux 开发的2个误区,那么如何正确的嵌入式linux开发呢?

    u,学习嵌入式linux也一样。在 u, 学习嵌入式linux开发比较适合的切入点是从嵌入式linux应用程序开发开始,即暂时先不去关心嵌入式硬件平台,不去关心linux的底层驱动,先把 精力集中在现有的嵌入式linux平台上进行嵌入式linux应用程序设计开发。学习嵌入式linux开发绝不是看看书就可以学好的,需要多实践,编程调 试;因为嵌入式开发不同于普通的基于PC机或服务器的应用程序开发,嵌入式开发的应用程序是要烧写到嵌入式板卡或开发板上运行的,所以首先你要给自己购买 一块开发板,现在普遍流行的嵌入式开发板都是基于 u星的ARM9 CPU S3C2440,性价比极高,在这里我推荐使用飞凌公司FL-2440 高性价比ARM9学习开发板,开发板资源丰富,稳定,同时配有大量的实验源码,视频教程和实验指导书。
     有了开发板后 先后开始学习嵌入式linux开发环境搭建、嵌入式linux开发模型、linux内核移植和文件系统、嵌入式linux应用程序移植、嵌入式linux 多进程,多线程应用程序设计、嵌入式linux网络编程,如果对嵌入式数据库或图形软件开发有兴趣的,可以进一步学习嵌入式linux数据库开发或基于 QT的嵌入式linux图形应用软件设计。每学一章节都要通过相关实验来来验证你从书上学到的东西,同时提高自己编写代码,调试程序的能力。这个过程根据 不同学员的基础不同,大概要花上1 ~ 2个月时间。学完这些课程后,你就有了在现有的嵌入式linux平台上进行应用程序设计开发的能力,到一些嵌入式软件公司去,能够胜任在现有的嵌入式 linux平台上进行上层的应用程序开发工作。但是目前你还不能进行嵌入式linux系统和驱动的开发,也就是说,你现在只能在一个已经构建好的嵌入式 linux平台上进行应用程序开发,而自己还没有能力根据实际需要去重新构建一个嵌入式linux平台。要让自己有能力根据实际需要重新构建一个嵌入式 linux软硬件平台,这时候就需要进行下一阶段的学习了,即嵌入式linux系统和驱动开发。

    三、嵌入式Linux系统和驱动开发


    有 了嵌入式linux平台上开发应用程序的基础,你已经对linux的功能、linux对应用程序提供的接口和系统调用有了一定的了解,知道如何利用 linux提供的功能来进行应用程序开发,知道如何来使用设备驱动来进行应用程序设计,有了这些知识后,你就可以更深入的去学习Linux系统原理和基于 Linux驱动的开发,Linux内核的裁剪,文件系统构,bootloader等等底层的知识了。
    想要更深入学习嵌入式Linux系统和驱动开发,要学的内容非常多包括计算机软件、硬件、操作系统知识。这时候你可以参照以下的学习思路, u包括:ARM体系架构、S3C2440微处理器接口设计、时钟系统、LCD屏接口、存储控制器及系统的存储空间分配、NAND FLASH接口和NOR FLASH接口等。 u。 学完这些知识点并通过相关实验验证后,嵌入式Linux系统和驱动的开发就算掌握了差不多了,能够胜任绝大部分基于linux平台的驱动开发工作了。学完 这些知识点,根据学员的不同情况,一般需要花三个月到半年时间。通过这一阶段的学习,你在嵌入式Linux开发领域已经算是有了一定的功底,已经不再被人 称为菜鸟了,已经进入嵌入式linux开发高手行列了。

    四、更上一层楼
     深入理解了嵌入式内核和驱动开发,这时候写个什么驱动对你已经没有什么问题了,开发过程中一些基本问题都难不倒你了。这是你可能想优化一下系统的性能,比 如实时性,提高系统的启动速度,或者优化系统的内存管理机制,要达到修改内核核心机制的境界,你就需要去深入去研读linux内核源码了,参考 《linux源码深度分析》、《linux情景分析等》等linux源码分析的书籍,深入理解linux各部分的实现机制和原理,以及可能存在的问题。你 只有在深入理解现有代码和实现机制的基础上,才能提出更好的改进方案。如果你能达到这个境界,那你已经是高手中的高手,可以笑傲群雄了。

    以 上是笔者结合自己的嵌入式学习经历和嵌入式培训经验总结的一些嵌入式学习方法和步骤,这只是笔者对嵌入式学习的一些看法,希望对那些有兴趣学习嵌入式 linux又不知道从哪开始学的同学们有所帮助。当然,每个人,每个同学的基础,各方面的情况都不一样,每个人都有自己适合的学习方式,本文章总结的一些 学习方法和思路仅供参考,希望大家能找到适合自己的学习嵌入式开发的方式,早日进入嵌入式开发大门。
    万丈高楼平地起,心动不如行动,有志从事嵌入式开发的同学不要再犹豫了,赶紧拿出实际行动,好好学习,为实现自己的伟大梦想而努力奋斗吧
    展开全文
  • 大学四年嵌入式学习心得体会

    万次阅读 多人点赞 2018-08-14 00:44:15
    我所在学校是普通的本科院校,从大一开始加入嵌入式实验室,一直在实验室呆了三年半,从大一的懵懂无知,天天看着 C 语言书自己敲代码,到后来学习51单片机,STM32,做过3-4个项目,参加各种比赛,轻轻松松搞定毕业...

    我所在学校是普通的本科院校,从大一开始加入嵌入式实验室,一直在实验室呆了三年半,从大一的懵懂无知,天天看着 C 语言书自己敲代码,到后来学习51单片机,STM32,做过3-4个项目,参加各种比赛,轻轻松松搞定毕业设计。

    在此写的这篇 Chat 主要是针对大学学习嵌入式的童鞋的,嵌入式不容易学,牵扯的内容,知识点太多,你是否不知道如何下手呢?是否在迷茫为什么我学的这么吃力呢?下面作为过来人的我为您解答。

    本场 Chat 您将学到以下内容:

    1. 嵌入式的前景。
    2. 大一新生如何开始学习嵌入式。
    3. 怎么才算是掌握一个单片机,不是说把单片机的书,视频看完了,每个例程都能实现就算学会了。
    4. 在大学里面我们应该掌握哪些嵌入式相关的技能,知识。
    5. 学习一个单片机最快的途径是什么。

    大学四年嵌入式学习心得体会

    一:嵌入式前景

    在讲主要内容之前我说下嵌入式的前景,我想大家对 “ 下一个时代是物联网的时代 ” 这句话不陌生吧,以后的生活一定是智能的,万物互联的,所有你身边的家电,工具,都会集中到一个终端上(应该是手机),我们通过这个终端就可以控制周围的一切,就像扎克伯格为自己家的设备写的一套系统一样,通过一个语音助手就控制整个家,这些智能设备都需要我们嵌入式来做,我们把那些设备嵌入进程序,让他像活的一样,任你怎么控制,是不是很有意思呢?哈哈。

    另一方面大家对最近的中兴事件都有了解吧,偌大一个中兴,仅仅因为芯片不被供应就进入瘫痪状态,多么可悲,国家投入几千亿做这方面可是就是缺人才,阿里今年刚收购了唯一自主嵌入式 CPU IP Core 公司《中天微》,就是想做芯片,解决我们的无 “ 芯 ” 之痛。我们学习嵌入式正好可以用的上。综上所述你感觉嵌入式前景怎么样哪?

    二:大一新生如何开始学习嵌入式

    首先我为什么强调从大一开始那?从大一开始就进入实验室,就像我刚上大一那会,实验室的老师就告诉我们嵌入式不容易学习,嵌入式牵扯的东西太多了,不会像软件那么容易学。

    你听说过很多培训 JAVA,python,大数据,数据库,但很少听到有培训嵌入式的吧,就是因为入门难,既要掌握软件的知识,还要学习硬件的知识,还要学习各种硬件之间通讯的原理,协议。

    下面我来讲讲大一学习的几个关键点还有我遇到的问题。

    1. 从哪个时间点开始学?用不用加入嵌入式实验室?

    大一刚来的话肯定要多参加学校的活动,多交些朋友的,找些自己感兴趣的协会玩玩,期间要留意下实验室什么时候纳新,最好从实验室纳新的时候就进去,当然第一学期不进实验室也可以,大一主要学习的专业课就一个 C 语言,学完就行了。

    在大二的时候一定要进实验室了,非常有必要的,大二要开始学习单片机了,这个要有老师,学长带带,有实验室的环境,还能一起做项目,学的会快很多,想着在宿舍学习的尽早放弃,感觉几乎不可能学好。

    2.兴趣对嵌入式学习重要吗?刚开始读大学不是很重要,后来感兴趣才最重要,而兴趣也无非就这三个问题
    • 嵌入式学习哪些知识?
    • 嵌入式以后做什么样的工作,是你想要的吗?
    • 嵌入式的前景?

    当时我也不知道自己学的计算机是干什么的,我比较喜欢动手,不过在学校天天就学 C 语言,我的第一个志愿是机械,我喜欢动手,想着机械能够发明创造出来东西(那时候的思想停留在爱迪生,瓦特发明出来的各种东西当中。。。),我以为我学习的就是开发 APP,天天敲代码,以后也是做软件,只对着电脑,就非常讨厌,感觉和我的兴趣一点也不一样,都想过要转系了。

    不过后来还好多问问我姐,我姐说先等等看看我们嵌入式专业以后学什么知识,做什么工作,再看看其他的专业,机械,电气他们做什么,慢慢的了解之后,大概在大二才发现自己学嵌入式挺好的。

    1. 嵌入式以后的工作是可以动手做自己想做的东西,而且是很智能的设备,开发出来一款设备岂不是很爽,比如门禁,热敏打印机,电子手表,扫地机器人等等。

    2. 嵌入式学习的有软件知识还有硬件知识,当看到学习的是可以实际操作的单片机后就感觉不错了。

    3. 前景也好,前面说过了,不用担心找不到工作。

    最后真正喜欢嵌入式的话,那么就好好学习吧,后期的学习嵌入式还是有点难度的,这个时候就要发挥兴趣的作用了,既然喜欢,知道他好,那再难也要去学,这样一定能学好的,比的不是谁比谁聪明,比的完全是谁学的时间久,学的知识多。

    3.大一需要学习的东西

    如果大一上学期就加入了实验室,那么上学期就应该把 C 语言学习完的,C 语言在实验室学习的进度一定要比课堂上的快的,不会的就问别人,百度。这样下学期就开始学习单片机,推荐学习的资料是郭天祥的 51 单片机,书,还有配套视频(我学的用的这个,不打广告,也可以找学长借),刚开始学习的时候一套资料是一定要有的,不然很吃力。

    三:怎么才算是掌握一个单片机,不是说把单片机的书,视频看完了,每个例程都能实现就算学会了。

    大一阶段,懵懵懂懂,思维还没有从高中转变过来。总觉得学习就是要把所有的东西看一遍做一遍才叫会。如果是这样的话,那你的上限只会成为一个 “ ”。所谓掌握,就是做到心中有数,那什么样算心中有数?这就很关键了,掌握单片机的核心构架、拥有自己的编程思想。

    我当时学到了大二下学期,把单片机的各个模块都学习过了,但是不太会用,不能把每个模块结合起来做一个项目。

    后来有幸参加蓝桥杯,当时的题目是做一个可以改时间的万年历,我们需要把温湿度模块,时钟模块,按键模块,液晶模块都添加到程序中,并且让他们能够运转正常,最后在主函数里面调用各个模块的功能,做成了一个项目,不一定非要把每一个知识点都吃透,但是你要准确无误的用起来,那么这时候你就算是学会了。

    四:在大学里面我们应该掌握哪些嵌入式相关的技能,知识

    大一:

    应该学习最重要的 C 语言,51 单片机,大二学 51 单片机也可以,高数也应该好好学下,考研或者以后的工作中会有用的。

    大二:

    一定要把 51 单片机学完,做几个小项目,再学习些自己感兴趣的模块,比如红外感应模块,WIFI 模块,蓝牙模块,指纹检测模块......很多很多模块的,你可以实现你自己的想法了,譬如做个跑马灯、动态数码管显示、模拟个 “ 世上只有妈妈好的铃声 ”、又或者弄个难点的时钟计时又或者红外控制,想做什么,都可以问问老师有没有相关的模块,也可以淘宝上买,都不贵。

    大二期间还应该学习画原理图的软件 protel99se 或者 AD(Altium Designer),C++,java,数据结构,数据库,这些都是课堂上的课程,在课堂上好好学习就行。

    英语在以后的工作中也挺重要的,要看英文的文档,四级要好好准备。在大二下学期也可以开始学 stm32 单片机了,我是大二暑假留在学校的实验室学习 STM32 的,就是每天看视频学些基础的知识。

    大三:

    学习一种做上位机的语言 VC 或者 C#,同时 STM32 要学的精通了,可以先在 STM32 上学习 UCOS 实时操作系统,大三的时候要多参加大的项目,多参加比赛,我们实验室就会常参加赛佰特杯,还有挑战杯,蓝桥杯,拿着自己做的东西去参加。

    大三如果还有时间的话,就开始做毕业设计,一般两个月应该就能做好了,我们是选择暑假留在学校做毕业设计,实验室的老师给的题目。做完了就用 ARM 学习 LINUX,当然 LINUX 在学校阶段熟悉就行。如果这些知识都掌握了,那学的一定不错了,以后就去实习吧,尽早去社会磨练磨练。

    看了看怎么这么多东西要学,选一个方向学不就行了吗?这么多有什么用哪?我想告诉大家一句龙应台说的一段话:“ 孩子,我要求你读书用功,不是因为我要你跟别人比成绩,而是因为,我希望你将来会拥有选择的权利,选择有意义、有时间的工作,而不是被迫谋生。当你的工作在你心中有意义,你就有成就感。当你的工作给你时间,不剥夺你的生活,你就有尊严。成就感和尊严,给你快乐!”

    其实大学所学的知识都是基本的知识,所学的知识都是为你以后学习更加深的知识打基础的,当你选择一个新的方向,在大学里面如果还接触过,那么学习起来就没那么难了,如果压根没见过,那么学习起来一定会花费大量的时间,工作的时候可不会给你这么多时间学,所以多学点肯定是有用的。

    五:学习一个单片机最快的途径是什么

    最快的方法就是做项目,当把一个知识,单片机的基础知识看完之后,一定要做项目,做项目才能让你学的更快。

    简单谈一下我从做项目中获取得经验吧。大一期间就对无线控制很感兴趣,觉得无线控制很有意思,响应设备与控制设备之间的数据交互看不见摸不着,但却能精准高速的相互通信。经过一段时间的学习,我选择红外线这一无线通信工具。

    完成的项目是 “ 基于物联网教室空调控制系统 ”,主要实现的功能,学习、发射红外码,加入 WIFI 通信功能、定时功能、温湿度检测等。首先接到这个项目,先了解基本功能,设计一下方案,思考方案可不可行,各个模块如何相互配合工作?具体需要什么模块等等吧,然后选择适合的 MCU,不需要多大够用就行,然后选择要使用的模块硬件。

    准备工作做好之后,就可以从 PCB 构图做起了。当然如果没有条件,可以选择一个带有你需要模块的现有单片机。硬件准备好之后,就可以嵌入式最擅长的软件编程了。编程过程中要多注意细节,以及个人编程习惯都会导致一些很难排查的 bug,过程当中无可避免的会出现各种各样的 bug。

    多回顾自己的代码,从上到下捋一遍程序逻辑,从中发现问题,解决掉。好的编程习惯不仅会让你的程序看起来完美,也能减少你解决 bug 的痛苦。有一点很重要,自己使用的变量加注释,标明变量做什么用,自己的逻辑最好也加上注释,函数功能等等都加上注释。这样能帮助你更快找出 bug 和复习自己的程序。最后最终代码的敲定往往就是修改掉最后一个 bug,实现了最后一个功能!

    我作为一个学生,写内容可能偏于简单,偏于给学生看的,写的不好还请见谅,欢迎大家一起来讨论!


    本文首发于GitChat,未经授权不得转载,转载需与GitChat联系。

    阅读全文: http://gitbook.cn/gitchat/activity/5b63a9163387213cf0e5444a

    您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。

    FtooAtPSkEJwnW-9xkCLqSTRpBKX

    展开全文
  • 嵌入式学习路线 一般的应用开发,例如桌面应用的开发,移动应用的开发,通常都是在一个IDE集成开发环境中完成。 开发者,熟悉了IDE的使用,熟悉了相关应用编程接口API,就能开发应用了。不需要关心系统本身的太多...
  • 嵌入式学习路线图

    千次阅读 多人点赞 2018-12-09 12:42:34
    可能是年前跳槽的比较多,遇到不少同学咨询到嵌入式行业发展和职业规划的问题,这里总结一下嵌入式行业的机遇和选择,希望对读者们有所帮助。 我们暂且宏观上把程序员分为3类:业务类,专业类,系统类。 业务类 ...

    可能是年前跳槽的比较多,遇到不少同学咨询到嵌入式行业发展和职业规划的问题,这里总结一下嵌入式行业的机遇和选择,希望对读者们有所帮助。

    我们暂且宏观上把程序员分为3类:业务类,专业类,系统类。

    • 业务类

    业务类更多的是在应用程序。随着移动互联网的快速发展出现一批 UI 设计师,这里的设计师是指 APP 的界面设计,在注重用户体验的今天对于界面的设计出现水涨船高的需求。一时间 Android, IOS 的 APP 开发者如雨后春笋般涌出,待遇也是不低。高级的应用程序员除了界面的开发外也会涉及程序内部的业务逻辑,现在的 APP 逐渐演化成很多层的架构,比如分为业务逻辑层,基本功能模块层,UI 界面层等,如下图所示:

    一个 APP 就包括了很多内容。如果志向写应用程序的小伙伴,我建议你先练好基本功:数据结构,算法导论,网络编程,数据库等。然后根据兴趣的行业深耕学习。因为这一行的开发者和业务联系比较大,后续换行业就不太吃香,比如美图秀秀开发者更多的是注重在图形显示这一块,网易云音乐更多的就注重在音频这一块。当然不能以偏概全,很多能力是通用的,我这里的举例主要是相对而言。应用程序开发者会随着业务的多变性经常加班 coding,解 bug。所谓的码农更多的是出现在这一领域。

    • 专业类

    应用程序开发者是完成业务的直接执行者,夸张的讲应用程序开发者就是 API 调用者,但这些 API 是如何实现的?不同的专业领域有不同的 API。以上图 APP 框架为例,HTTP 网络请求就是调用了网络领域的 API 接口, SQLITE 就是调用了数据库领域的 API 接口,再比如目前比较火的人工智能,语音识别,图像处理等都属于专业类领域。这一领域的工作者拥有比较强的理论知识,算法知识,多以研究生或者博士生为主。这一领域的优势是待遇高,可替代性低,但也因为研究领域的专一性在找工作时也面临一些局限性。

    • 系统类

    这里系统主要指 linux 系统。系统是个太大的概念,有上层 framework 系统也有底层内核机制,也包括驱动开发,甚至硬件也要知道。这一领域的人更多的是在嵌入式行业。在操作系统领域对知识要求很多:

    1. 看懂电路图

    2. 看懂芯片手册

    3. 有编写,移植驱动的能力

    4. 懂内核的实现机制

    5. 懂C语言,C++, JAVA等

     

     

    这一行的优势是学好后行业通杀,大公司基本都有这方面人才的需求;相对做应用程序的人不会经常因为业务需求的变动搞得天天加班;行业稳定越老越吃香,不太会出现程序员35岁职业生涯问题。另外操作系统是很通用性的知识,夸张的讲只要是 IT 行业,学点操作系统的知识肯定是如虎添翼的作用:

    1. 硬件工程师通过学习可以理解软件的运行原理

    2. APP 工程师学些系统知识更有利于走向全栈

    3. 大学生学习linux对找工作多有益处

    4. 学好 linux 即可以做开发也可以做运维

    5. 永远不会淘汰的技术,只会越老越吃香

    嵌入式 linux 学习路线

    本文把操作系统默认为 linux,讲讲怎么学习嵌入式 linux 系统。简单地说,嵌入式 linux 系统里含有bootloader、内核、驱动程序、根文件系统、应用程序这5大块。而应用程序,我们又可以分为:C/C++、Android。 所以,嵌入式Linux+Android系统包含以下部分内容:

    • ARM

    • Bootloader

    • Linux内核

    • 驱动程序

    • 根文件系统

    • Android Framework

    • 使用C/C++编写的应用程序

    • Android APP

     

    根据以上内容我准备了一系列的达人课程,希望对有志于成为全栈嵌入式开发者有所帮助,这里分享下课目表安排和学习经验:

    1. ARM

    学习硬件知识的目的在于能看懂原理图,看懂通信协议,看懂芯片手册。这里推荐一些书:

    • 《微机原理》,可以理解一个计算机的组成原理

    • 《数字电路》,掌握一些逻辑运算,理解各种门电路的原理

    • 《ARM体系结构与编程》,对ARM的运行原理解释的很到位

     

     

     

    我相信看完这些书对ARM和硬件知识的掌握足够了,对于初学者只想浅尝辄止的了解,我推荐之前的一个chat《一小时教你学会 ARM 架构》。

    2. Bootloader

    bootloader有很多种,vivi、u-boot等等,最常用的是u-boot。 u-boot功能强大、源码比较多,对于编程经验不丰富、阅读代码经验不丰富的人,一开始可能会觉得难以掌握。但是,u-boot的主要功能就是:启动内核。它涉及:读取内核到内存、设置启动参数、启动内核。按照这个主线,我们尝试自己从零编写一个bootloader,这个程序相对简单,可以让我们快速理解u-boot主要功能的实现。相关内容有:

    • u-boot分析之编译体验

    • u-boot分析之Makefile结构分析

    • u-boot分析之源码第1阶段

    • u-boot分析之源码第2阶段

    • u-boot分析之u-boot命令实现

    • u-boot分析_uboot启动内核

    3. Linux内核

    内核在工作中的作用可以说是潜移默化的,虽然看起来没有直接性的工作项目,但绝对是走向架构师的必经之路。本课程会涉及到以下知识点:

    • Linux总线,设备,驱动模型的探究

    • Linux设备树的深入理解

    • Linux的启动流程

    • Linux设备和驱动的相遇

    • 动手定制一个开发板

     

     

     

    我相信通过这些课程的学习可以基本上掌握内核的运行原理,入个门是没有问题的。另外推荐本书给大家《linux内核设计与实现》。

    4. 驱动程序

    驱动程序=Linux驱动程序软件框架+ARM开发板硬件操作,有了ARM的知识和阅读数据手册电路图的能力,再加上Linux内核的运行原理,基本上写驱动就是API调用的体力活了。这里推荐宋宝华老师的《linux设备驱动开发详解》。后续关于驱动的内容暂定如下:

    • LCD驱动程序

    • 触摸屏驱动程序

    • USB驱动程序

    • NAND FLASH驱动程序

    • NOR FLASH驱动程序

    • 网卡驱动程序

    • 声卡驱动程序

    5. 根文件系统

    在开发应用程序时,也需要搭建文件系统,把各种库、配置文件放进去; 在发布产品时,你还需要修改配置文件,使得产品可以自动运行程序; 甚至你想实现插上U盘后自动启动某个程序,这也要要修改配置文件; 这一切,都需要你理解根文件系统的构成,理解内核启动后是根据什么配置文件来启动哪些应用程序。根文件系统相对比较简单,可以根据以下路线学习:

    • Linux根文件系统目录结构

    • 移植Busybox

    • init进程介绍及用户程序启动过程

    • 使用glibc库

    • 制作/使用文件系统映象文件

       

     

    成为全栈嵌入式开发者任重而道远,让我们按照上面的学习路线一步一步行动起来。

     

    轻轻一扫  欢迎关注~

     

    展开全文
  • 非常全面的嵌入式学习资料,个人总结收集很久的,打算很少的积分分享,只为可以一起交流学习成长.文件为分开压缩,全部下载放在同一个文件夹解压第一个即可。
  • 嵌入式学习路线.pdf

    2021-05-20 09:12:25
    嵌入式学习路线,书籍推荐,从业方向划分,免费下载,好使请点赞。
  • 嵌入式学习路线

    千次阅读 多人点赞 2021-02-01 14:11:45
    嵌入式学习路线1.前言2.嵌入式硬件方向3.嵌入式软件方向4.嵌入式软件学习路线4.1.打好软件基础4.2.学习ARM体系结构编程4.3.嵌入式系统的构建4.4.嵌入式驱动程序的开发4.5.嵌入式应用程序的开发4.6.综合项目5.总结 1....
  • 利尔达嵌入式研究中心编写的《大学生嵌入式学习实践——基于MSP430系列》图书的例程及原理图。
  • 从基础学习嵌入式开发 玩转智能硬件、斩获高薪offer Linux基础 作为学习嵌入式的第一步,主要就是搭建嵌入式开发环境。安装虚拟机或者购买云服务器都可以。有了Linux操作系统,下面就是要学会使用Linux,其实就是...
  • 嵌入式学习步骤

    千次阅读 2018-07-25 17:46:33
    做电赛出身的程序猿一名,目前从事嵌入式Linux驱动开发。还有单片机从51到意法Ti都做过,DSP只用过TI的,主要是在开关电源控制方面的应用。建议学习路线: 1 学习51单片机,这个阶段你只需要跟着郭天翔的视频去学...
  • 嵌入式学习书籍推荐

    千次阅读 多人点赞 2017-07-26 09:25:59
    嵌入式学习书籍推荐 转自:http://www.51hei.com/bbs/dpj-26458-1.html 如有侵权,请联系我,我将立即删除。 从事嵌入式研发行业十年,认为学习就是要不断的吸纳知识,在研发过程中,经常会遇到一些问题,这种...
  • 包含了很多资料 学习文件 PDF 应用程序 等等
  • 物联网嵌入式学习路线 嵌入式技术学习路线 ​ 嵌入式技术是各种电子产品的核心技术,也是工业4.0、远程医疗、3D打印等新兴产业的核心技术,具有广阔的发展前景。很多计算机、电子信息类专业的学生都想把...
  • 嵌入式学习路线图.pdf

    2014-07-29 23:47:29
    什么是嵌入式 嵌入式学习路线图.pdf 嵌入式怎么学 事半功倍 好的开始是成公的一半
  • 大学生嵌入式学习实践--基于MSP430系统的好资料

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 164,336
精华内容 65,734
关键字:

嵌入式学习