嵌入式学习步骤[通俗易懂]

嵌入式学习步骤[通俗易懂]作者:李Brooks链接:https://www.zhihu.com/question/22252234/answer/75026117来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。占坑先。——————————————————————-第一次修改咯。不请自来。做电赛…

大家好,又见面了,我是你们的朋友全栈君。

作者:李Brooks
链接:https://www.zhihu.com/question/22252234/answer/75026117
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

占坑先。
——————————————————————-
第一次修改咯。
不请自来。做电赛出身的程序猿一名,目前从事嵌入式Linux驱动开发。还有单片机从51到意法Ti都做过,DSP只用过TI的,主要是在开关电源控制方面的应用。建议学习路线:
1 学习51单片机,这个阶段你只需要跟着郭天翔的视频去学,只要求实现功能,不求甚解。但建议能够提出问题,比如“为什么往IO控制寄存器写入特定值能点亮LED灯?”“IO口的电路结构是什么样子的?”“什么是上拉下啦,灌电流拉电流?”,这一阶段主要是熟悉单片机的使用,并且在使用中思考发现问题,还能熟悉一些基本概念。
2 开始查资料看书,看模拟电路数字电路等等,开始去弄明白1中所提出的问题。这时候问题主要集中在电路方面。
3 开始学习STM32,随便买个板子,看原子的书跟着一步步去做。这时候你会遇到很多计算机方面的问题,这时候一边学习教程,一边学习:微机原理,编译原理,操作系统。你要弄清楚ARM架构,弄明白CPU如何取指,译码,执行,知道地址总线,控制总线,数据总线如何工作。要弄明白你编译各个阶段产生的各个文件是什么,什么是分散加载,什么是重定位,什么是代码段,什么是数据段,等等。还要能弄明白CPU如何启动,程序镜像在内存中如何布局。要知道中断的原理,以及现场保护等等。最后你了解了各个知识点之后,转向GCC开发STM32,这时候你如果知识掌握得不错,你应该可以很快地学会编写链接器脚本并且明白每一条语句所代表的含义。
4 开始增强C语言,深入挖掘C语言的各个死角。最好可以做到当你写下一条语句的时候知道编译器会如何处理。还需要数据结构和软件工程,建议最好还要学习一下设计模式。开始学习养成良好的代码风格,开始思考代码的结构。可以说设计模式如果能学好,在往后学习LINUX内核时大有裨益。你会发现LINUX的输入子系统有点像职责链模式,会发现ASOC音频系统有点像模板方法模式。私以为,如果能在两个以上不同方面考察同一种编程思想,你会得到更加深刻的理解,更能领会其精华。
5 认真研读OS方面的书,各个知识点都要弄明白,进程是什么程序是什么线程是什么,竞争死锁优先级反转,虚拟地址空间物理地址空间,用户空间内核空间等等。开始学习ucos,这个没什么可说的,如果在2中能熟练掌握各种知识点,知道CPU如何中断如何保护恢复现场,那么读ucos的源码时候,在原理上就不会有什么疑惑。如果能在4中养成把握代码整体结构的能力并且学习好数据结构和基本的算法,读源码就没有什么障碍。一旦原理弄通了,源码也能读懂,那么吃透ucos就是顺理成章的事情。
6 自己仿照ucos写一个stm32上的实时os出来。
7 进军LINUX。学习LINUX的基本使用,看赵炯那本内核剖析,啃LINUX内核设计与实现,把握总体的内核架构。之后可以学习驱动,看建议陈学松老师的书,弄明白基本的驱动架构和如何编写简单的驱动,认真对待,这里强调一下设备驱动模型。最后啃LINUX内核源码情景分析,上下两册用心读,这里着重强调一下内核中的VFS部分。之后就是看宋宝华老师的书,进一步学习驱动开发。最后。。。。。。。看内核源码看内核源码看内核源码。
8 其它的什么SPI,IIC,什么DMA,都只是技能问题,只要知识学的好,技能想咋点就咋点。
9 暂时没想到其它的了。想到再说

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133058.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 线程 ManualResetEvent 类「建议收藏」

    线程 ManualResetEvent 类「建议收藏」Reset():当一个线程开始一个活动(此活动必须完成后,其他线程才能开始)时, 它调用Reset以将ManualResetEvent置于非终止状态。此线程可被视为控制ManualResetEvent。为了把状态修改为无信号的,必须调用ReSet()方法。WaitOne():调用ManualResetEvent上的WaitOne的线程将阻止,并等待信号。  Se

    2022年7月13日
    12
  • listview排序功能_vba listview 控件

    listview排序功能_vba listview 控件usingSystem.Collections; privatevoidlistView2_ColumnClick(objectsender,ColumnClickEventArgse)//排序{   this.listView2.ListView

    2022年10月4日
    0
  • spring中aop实现原理_Spring底层原理

    spring中aop实现原理_Spring底层原理写在前面:对于一个java程序员来说,相信绝大多数都有这样的面试经历,面试官问:你知道什么是aop吗?谈谈你是怎么理解aop的?等等诸如此类关于aop的问题。当然对于一些小白可能会一脸懵逼;对于一些工作一两年的,可能知道,哦!aop就是面向切面变成,打印日志啊,什么什么的,要是有点学习深度的呢可能会说aop底层实现利用了jdk动态代理,cglib啊什么的。很多时候可能面试就到此打住了,当然,然后也…

    2022年8月11日
    3
  • 算法设计克林伯格pdf_LSTM算法

    算法设计克林伯格pdf_LSTM算法第一部分 levmar的安装与使用 Levenberg-Marquardt算法是求解非线性问题的一个非常好用的算法。该算法属于信赖域算法的一种,关于信赖域算法的解释可以参考这一博主的解释:关于信赖域算法理解,个人感觉很好。    Levenberg-Marquardt算法是一个开源的算法,其文件下载地址如下:http://www.netlib.org/clapack/C

    2022年10月1日
    0
  • python自动补全设置_python代码补全

    python自动补全设置_python代码补全Hello,大家好,我是橘子呀~前几期橘子给大家介绍了Python是什么以及如何安装Python软件。也分享了如何系统的以及高效率的去学习Python这门课程,还有一些避雷建议,今天橘子就分享给大伙一点宝藏干货!!!藏不住的东西,不如扬了它!请大家把它收入囊中~不要辜负我的一片苦心~一、Pycharm常用快捷键(Windows)Ctrl+Q快速查看文档Ctrl+鼠标左键简介及代码定义…

    2022年8月26日
    5
  • 谷粒商城官网_尚硅谷谷粒商城电商项目

    谷粒商城官网_尚硅谷谷粒商城电商项目后端编写、前端展示、服务注册、配置网关、503问题、跨域、解决跨域、服务注册配置网关、删除数据、后端接口、逻辑删除

    2022年7月28日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号