嵌入式学习的一些个人理解

来源:互联网 发布:js分页代码 编辑:程序博客网 时间:2024/05/20 22:29

对单片机感兴趣的同学可能最终都会走上嵌入式这条路线。接触单片机,基本上都是从51开始的,相信学完51单片机之后对I/O操作、定时器、中断、AD/DA这些东西都有比较深的理解,也基本上学会了如何通过单片机去控制一些外围设备。

基本上到这个时候,都接触过ARM的概念了。确实,接下来该学习ARM了,如何选择一款ARM芯片,如果周围有一个比较不错的学习团队,比如说XX老师的实验室,那就跟实验室的保持一致就OK了,如果遇到什么问题,眼前就有现成的师兄或者老师可以问。如果是一个人自学,网上查查,选择一个比较热门的,这样的话,网上的资料比较多,学习起来也容易。我们实验室用stm32系列的ARM芯片有好几年了,所以我就直接去学习stm32。个人感觉stm32系列的单片机还是不错的,有专门的库,网上的资料也非常多。网上三星s3c24xx单片机资料也非常多。不管学什么东西,一定要是理论和实践相结合的,所以一块开发板是必备的,甚至如果是做通信实验的话,需要好几块。这段时期,感觉学习的重点还是各种通信协议的接口,比如I2C、SPI、串口、SDIO、CAN等等,结合一些具体接口的模块,用MCU去操作这些设备,学习起来还是比较快的,同时也能加深对IO、定时器、中断等等在51单片机时代学到的概念的理解。比如我们项目上有用到射频无线通信的功能,在网上买个无线通信的模块,SPI接口的。调通这个模块,以后碰见SPI接口的设备都就不怕了。如法炮制,像i2c、串口这些东西都可以按照这种模式去学习。一定不要怕在网上买一些学习的模块,对知识的投资绝对是一本万利的。像LCD、摄像头模块、以太网通信模块、wifi模块、射频模块等等还有好多。这些东西买回来,自己写程序,调通了,那印象是非常深刻的,以后遇到同类的设备绝对会很快就上手。这个阶段学习完之后,相信对用MCU去操作一些外设这种事绝对是轻车熟路。

接下来有个非常重要的东西就是操作系统,相比与操作系统,那前面的学习真的是小巫见大巫,如果仅仅是应付一般的中小项目,裸机感觉应该是够了,前提是嵌入式在你的项目中扮演的是非核心角色。比如我们正在做的一个项目,单片机在里面扮演的只是数据采样、通信和算法的实现手段的角色,那不带操作系统是够用了,因为项目最核心的东西是控制算法。如果是要学习操作系统,那么uCOS绝对是个非常好的学习资料,结合邵贝贝《嵌入式实时操作系统uCOS-II》这本书。因为uCOS整个源码就不是很大,阅读起来也比较轻松,结合一些移植手册,移植到你的MCU上,再自己写一些测试的程序,相信会对操作系统中调度、抢占、挂起、并发、竞争、进程间通信等等这些概念有个非常深入的理解。学习uCOS只是对操作系统这个东西有个比较感性的认识,最终还是要走上linux这条路。

本着学什么一定要有什么的理念,还是在自己电脑上装个Linux比较好,也不用卸载掉windows去重装linux,在VM虚拟机上装个linux来练习就足够了。linux打基础的话,还是主要学习bootloader、文件系统、linux系统编程、linux命令、shell编程、makefile、gun等等。对linux有个比较清晰地认识之后,感觉就需要有个发展的方向了。个人感觉一个比较好的方向就是linux驱动,安卓的火爆不必多言,安卓驱动中的核心就是linux驱动,一些开发手机、智能设备的厂家对这些人才还是蛮需求的。如果是往这个方向发展,一定是对C语言、数据结构非常熟悉,对linux内核理解比较深入。剩下一个方向就是应用,但是个人感觉从嵌入式走到这个方向比较尴尬,MCU+Linux+Qt确实能做出一些基于图形界面的应用,但是这些东西这些年全让安卓占领了,很明显的一个现象就是学校里面学习Qt的人非常少,图书馆中Qt方面的书都非常少。如果走到这一步去转型做安卓app,又有一大堆东西等着你学习,java、数据库、jsp、html、xml还有好多我不知道的,相比于计算机专业的学生,缺点太明显,同时又放弃了对硬件比较擅长这一优点。如果是计算机专业的学生,走到linux这一步,运维、网络、服务器、安全等等都是非常好的方向,很明显,这些东西对于嵌入式的学生来说又很陌生。所以说驱动是一个不错的方向,如果驱动也不想做,那么就趁早不要接触操作系统,只是把单片机当作你的一种控制手段,学好电子方面的知识,不管是做电源、控制电机或者别的什么开发,单片机只作为一种控制手段,如果需要的话再学学DPS、FPGA等等。

推荐几本阅读过比较好的书

《数据结构C++语言描述-应用标准模板库(STL)》照着书上的例子,自己实现一些数据结构,相信会对数据结构有很好的理解,800多页的书,看起来一点都不枯燥,看了两遍,以后用到了再翻。

《剑指offer》数据结构和算法学的好不好,做做上面的题就知道啦,有些编程小技巧真的是不看不知道。

《UNIX系统编程》读起来不像《UNIX环境高级编程》那么吃力,会对UNIX的进程、线程、IPC、互斥、文件系统等等有比较好的理解,例子很多。

《鸟哥的Linux私房菜》Linux入门必备。

《嵌入式实时操作系统uCOS-II》+阅读源码  真的是可以零距离接触一下操作系统。

《计算机网络》互联网这么发达,不了解一下你的数据是怎么从互联网走出去的怎么行?

《例说8051》+郭天祥《10天搞定单片机》视频+51开发板   51入门,个人感觉最快最容易的方式。

还有很多太经典的书就算了,经典巨著,不到一定火候,看起来会非常吃力,《UNIX环境高级编程》《深入理解linux内核》等等,太多了。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 银行不让开u盾怎么办 手机u盾识别不了怎么办 绿森商城不退款怎么办 电信手机号码过户积分清零怎么办 被电话诈骗骗了怎么办 诈骗电话骗了钱怎么办 被网友骗了一千块钱怎么办 被网友骗了1000块怎么办 微信红包被骗100怎么办 3m投资钱要不回来怎么办 手机照片超过3m怎么办 小说大于3m看不了怎么办 携程订单删除了怎么办 绿叶会员密码忘了怎么办 账号对名错了怎么办 lv双肩包肩带短了怎么办 微信充q币被骗了怎么办 qq隐私密码忘了怎么办 qq锁屏密码忘了怎么办 qq手势密码忘记了怎么办 qq红包的密码忘了怎么办 qq密码被改了怎么办啊 手机qq密码忘了怎么办 腾讯安全中心冻结解冻进不去怎么办 qq钱包充值限额怎么办 qq没绑卡支付密码忘了怎么办 手机qq停止运行该怎么办 手机不支持qq软件运行怎么办 王者传奇冲元宝不到账怎么办 支付宝充值地下城点卷冲错了怎么办 dnf点券冲错了怎么办 百家号改了手机绑定找不到了怎么办 银行卡换了网银怎么办 qq没有银行卡转不出钱怎么办 qq钱包限制一万怎么办 qq余额超过20万怎么办 扣扣忘记了密码怎么办 qq钱包发不出来怎么办 qq支付密码忘了怎么办? 扣扣上转账错了怎么办 qq绑卡存在异常怎么办