如何自学嵌入式?

姓名:李声源          学号:19020100177          学院:电子工程学院

转自https://www.zhihu.com/question/332475450/answer/736953643

【嵌牛导读】在IT领域,嵌入式系统占有着举足轻重的地位,本文主要介绍自学嵌入式系统的基本方法。

【嵌牛鼻子】自学嵌入式

【嵌牛提问】你知道如何自学嵌入式系统吗?

【嵌牛正文】

没有实际项目开发经历,就去零散的去学习UART,SPI,I2C这些模块,或者RTOS知识,当然也包括嵌入式Linux时,完全不知道学习他们的意义,看视频一段时间就很迷茫,这是正常的,也是普遍存在的,当你在工作实际参与1-2个项目后,就可以很容易解决这些问题,不过这大概对你的现状意义不大,下面是我花了些时间精简的局域网管理方案(单片机方案),如果能对这个框图有着清晰的认知,那么如何学习嵌入式你自然能够理解。

下面先列出方案框架图:

先大致介绍下这张图,这是比较常见的局域网工控方案,下位机负责现场的采集和处理,上位机通过RS485/RS232/CAN/RF等通讯通道使用modbus协议进行数据交互,LCD应用负责界面显示和触摸操作控制,将内部数据在本地呈现处理。Web/MQTT应用将数据转化成网络数据包,通过TCP/IP协议栈,完成PC端通过软件(C/S架构)或者浏览器(B/S)架构访问。这属于在单片机端比较复杂的应用了,其实用嵌入式Linux实现起来会更简单,不过我觉得从单片机角度分析的更清晰。

1.驱动层

SPI-FLASH用于数据/网页/图像存储或者在线升级实现时对于扩展容量时是需要的,就就需要SPI接口的移植和调试,考虑到管理方便,一般还会移植fatfs文件系统。

LCD 主要应用于图形界面显示和触摸/按键的逻辑操作,这部分除了底层驱动,还要了解Emwin图形界面,中断输入的知识,

RTC 不一定需要,但某些芯片不自带RTC,或者RTC精度不高,需要外挂,这就需要I2C接口的调试

USART/CAN 主从机多机通讯,则就需要实现硬件接口驱动,根据选择的不同自己处理,当然还有很多其它未提到的外设如AD,GPIO,DMA等,这些在实际应用中都是独立的需要用到的模块。

2.系统层

RTOS的移植,任务创建,管理,删除,消息队列,信号量,互斥量,如果用到了网络复杂应用,RTOS一般是需要的,不然管理图形+网络在主循环中十分困难

3.协议层

处理网络相关的LWIP,处理多机通讯相关的Modbus,这些网上资料很多,甚至拿来用的可以,但符合自己应用,且调试稳定,不能够完全理清楚内部流程机制是很难做到的

4.应用层

支持前端网页访问的web服务器,支持客户端访问的MQTT服务器,管理数据的图形界面,支持多机通讯的数据整体管理,这些都是应用端的实现

上面基本就构成了一个相当复杂的单片机项目,这看似讲的是项目开发的事,其实也是如何学习单片机的流程和重点,就是对驱动,RTOS,协议和应用,就是至少有1-2个有自己的"闪光点",这些东西其实是应该系统学习的,也就是从实际应用项目为目的,拆分成各小模块来逐步掌握,不过这种方法需要很多的前置知识和资料收集,问题解决能力。如果按照大部分开发板视频来学习的话,就会发现往往驱动外设是几十个视频,RTOS又是几十个视频,协议部分和应用部分同样,按照分类的方法顺序学习,前后知识基本关联不大,最后往往学了前面忘了后面,而且不理解学习的意义,最后大部分时间都半途而废,但是如果上来就去看提供的综合项目的应用代码,又过于复杂,找不到头绪,这也是我刚入门时的真实写照,这里我以上面提到的项目为例,先抛砖引玉下我总结的学习方法,当然这并不一定适合大多数人。

1.进行简单驱动的开发,调试和整合,如RTC,RS232,调试接口实现

2.移植RTOS,将上述驱动整合到系统中实现

3.移植和实现Modbus协议,在和驱动,系统整合,如果没有下位机,可以用PC代替模拟(这是很重要的能力,事实很多时候开发都是分工的,在别人未完成前,自己用其它方法代替模拟对端可以大幅度提高效率)

至于后续可以做图形界面,从LTDC驱动,图形界面实现,操作部分学习,也可以从ETH驱动,lwip/web实现,mqtt实现,这样穿插学习,在学习中肯定会遇到各种问题,这时候视频,开发板售后,网络论坛,甚至你的老师都可以提供给你帮助,当然你可以上来不做这么复杂的项目,也可以从简单的开始,参考我这篇回答:

https://www.zhihu.com/question/322341076/answer/682578055

如果你想知道单片机需要什么知识,也可以参考我这篇回答:

https://www.zhihu.com/question/326187420/answer/717982311

当然如果你希望学习的嵌入式Linux开发,虽然技术要求上差别很多,就是网络部分使用socket+web/mqtt,图形方面使用QT或者Android+JAVA, 底层驱动不只是操作寄存器,还要理解platform总线,设备/驱动注册这部分知识,但其实思路是相同的,不过在了解这些知识之前,你要熟悉Linux环境,编译原理基础,bash语法和makefile,menuconfig配置和内核/文件系统的编译下载,还要掌握Linux平台的系统接口函数如fork,exec等。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,277评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,689评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,624评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,356评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,402评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,292评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,135评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,992评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,429评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,636评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,785评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,492评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,092评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,723评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,858评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,891评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,713评论 2 354

推荐阅读更多精彩内容