学习知识|如何学习嵌入式开发( 六 )


就我个人经验来说 , 这些课程是有用的 , 但是:
①原理有用 , 实战性不强 。
比如《微机原理》是基于x86系统 , 跟ARM板子有很大差别 , 当然原理相通 。
我是在接触嵌入式编程后 , 才理解了这些课程 。
②每本书都那么厚 , 内容都很多 , 学习时间过长 , 自学有难度 。
针对这些校园教材的不足 , 并结合实际开发过程中要用到的知识点 , 我们推出了《学前班_怎么看原理图》的系列视频:
学前班第1课第1节___怎么看原理图之GPIO和门电路.wmv
学前班第1课第2.1节_怎么看原理图之协议类接口之UART.wmv
学前班第1课第2.2节_怎么看原理图之协议类接口之I2C.wmv
学前班第1课第2.3节_怎么看原理图之协议类接口之SPI.wmv
学前班第1课第2.4节_怎么看原理图之协议类接口之NAND Flash.wmv
学前班第1课第2.5节_怎么看原理图之协议类接口之LCD.wmv
学前班第1课第3节___怎么看原理图之内存类接口.wmv
学前班第1课第4.1节_怎么看原理图之分析S3C2410开发板.wmv
学前班第1课第4.2节_怎么看原理图之分析S3C2440开发板.wmv
学前班第1课第4.3节_怎么看原理图之分析S3C6410开发板.wmv
即使你只具备初中物理课的电路知识 , 我也希望能通过这些视频 , 让你可以看懂原理图 , 理解一些常见的通信协议;如果你想掌握更多的硬件知识 , 这些视频也可以起个索引作用 , 让你知道缺乏什么知识 。
这些视频所讲到的硬件知识 , 将在《裸板开发》系列视频中用到 , 到时可以相互对照着看 , 加深理解 。
2.2.4 要不要专门学习Windows下的单片机开发
很多学校都开通了单片机的课程 , 很多人都是从51单片机、AVR单片机 , 现在比较新的STM32单片机开始接触嵌入式领域 , 并且使用Windows下的开发软件 , 比如keil、MDK等 。
问题来了 , 要不要专门学习Windows下的单片机开发?
①如果这是你们专业的必修课 , 那就学吧
②如果你的专业跟单片机密切相关 , 比如机械控制等 , 那就学吧
③如果你只是想从单片机入门 , 然后学习更广阔的嵌入式Linux , 那么放弃在Windows下学习单片机吧!
理由如下:
①Windows下的单片机学习 , 深度不够
Windows下有很好的图形界面单片机开发软件 , 比如keil、MDK等 。
它们封装了很多技术细节 , 比如:
你只会从main函数开始编写代码 , 却不知道上电后第1条代码是怎么执行的;
你可以编写中断处理函数 , 但是却不知道它是怎么被调用的;
你不知道程序怎么从Flash上被读入内存;
也不知道内存是怎么划分使用的 , 不知道栈在哪、堆在哪;
当你想裁剪程序降低对Flash、内存的使用时 , 你无从下手;
当你新建一个文件时 , 它被自动加入到工程里 , 但是其中的机理你完全不懂;
等等等 。
②基于ARM+Linux裸机学习 , 可以学得更深 , 并且更贴合后续的Linux学习 。 实际上它就是Linux下的单片机学习 , 只是一切更加原始:所有的代码需要你自己来编写;哪些文件加入工程 , 需要你自己来管理 。
在工作中 , 我们当然倾向于使用Windows下更便利的工具 , 但是在学习阶段 , 我们更想学习到程序的本质 。
一切从零编写代码、管理代码 , 可以让我们学习到更多知识:
你需要了解芯片的上电启动过程 , 知道第1条代码如何运行;
你需要掌握怎么把程序从Flash上读入内存;
需要理解内存怎么规划使用 , 比如栈在哪 , 堆在哪;
需要理解代码重定位;

推荐阅读