首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
Pine A64
»
方案分享
» 如何成为一名嵌入式高手--一位过来者的经验分享
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
如何成为一名嵌入式高手--一位过来者的经验分享
发短消息
加为好友
xydyyt
当前离线
UID
1066932
帖子
83
精华
0
积分
42
阅读权限
0
在线时间
4 小时
注册时间
2017-7-25
最后登录
2017-9-29
禁止发言
UID
1066932
1
#
打印
字体大小:
t
T
xydyyt
发表于 2017-8-24 15:57
|
只看该作者
如何成为一名嵌入式高手--一位过来者的经验分享
学嵌入式就像练一门武功一样,要想成为一个高手,首先要打好基础,磨刀不误砍柴工,说的就是这个道理。嵌入式系统涉及到硬件、底层驱动、操作系统以及应用程序各个方面,在系统学习之前,先把基础打好,后面的学习将事半功倍。如果前面的打不牢,今天学点这个,明天学点那个,看到别人学得有声有色,自己貌似折腾了半天,啥也没学会。很容易受到打击,半途而废。
举个简单的例子,同样是练乾坤大挪移,明教教主阳顶天撑死了也就练到第四层,最后走火入魔,惨死在光明顶的隧道中。而张无忌只练了几个时辰,就练到了最高层第六层(第七层该武功发明人也没有练成)。为什么呢?就是因为张无忌内功深厚,有九阳神功护底。有了好的基础和内功,再学习其它招式,那是信手拈来,不费吹灰之力。
对于有志于嵌入式系统开发的新手来说,同样需要深厚的基础和内功,那就是对计算机体系结构和原理的理解,对C语言的掌握。对于嵌入式开发来讲,C语言绝对是必须要掌握的。
计算机运行的基本原理、存储的概念
程序的编译、连接、生成
内存的堆栈、代码分布
指针的高级使用、链表、动态内存的使用、内存泄露的概念
都是必须要掌握的,如果你对这些不熟悉,没搞明白,就直接兴冲冲地买个开发板,一遍喊着,我要努力,我要奋斗,然后开始了嵌入式之旅,折腾了一个月,按照教程走了一遍,你发现你仅仅是做了一遍,不懂的还是不懂,而不是真正掌握了嵌入式的精髓。
所以说,在学习嵌入式之前,一定把C语言搞精通,一定要把C语言搞精通,一定要把C语言搞精通,一定要把C语言搞精通,重要的话说三遍,我已经说了4遍,可见C语言的重要性。
学完了C语言,接着就可以练练ARM的裸机编程,买个开发板,将ARM的模块程序都跑跑,自己改改,增加一些功能。注意,不能所有的模块都跑一遍,这不是个好方法,时间精力有限,可以挑自己感兴趣的几个模块。关键是理解程序的运行原理,通过模块的程序理解ARM的编程方法、控制方法、中断的使用、寄存器的配置使用。这个才是你最终要学到的效果。
掌握了裸机编程,接着就可以玩玩操作系统了。操作系统也是一门比较难理解的课程,尤其对于非计算机类的,可以看看一些操作系统的经典书籍如塔利班母的操作系统设计与实现,挺好,知道任务调度、内核抢占、多任务等基本概念后,可以找个简单的操作系统学习:比如uc/os,代码也就5500多行,但是其完整实现了一个操作系统的基本要素。试着将该操作系统的最新版本源代码移植到你的arm开发板上,然后,试着编写一个多任务程序。等到了这一步,你基本上对操作系统的多任务编程以及进程间通信有个大致的了解了。接着你就可以玩重量级的Linux了。
不要一上来就看内核,看网上推荐的那些大砖头书,看得云里雾里,看来一个月不知道再讲些什么,陷入其中无法自拔,想要放弃,甚至开始怀疑人生,这时候估计你也开始对自己的智商产生了怀疑,觉得自己不是干这块的料。妈的,看了这么久,不知道在干什么。
任何一个复杂的东西都是由简单组成的。我们学习也是这样,一个东西,对它的理解也要遵循有简单到复杂,由表及里的一个认知过程,学习Linux也是这样。首先,我们要学会怎么用?学会Linux的基本命令,打包文件、系统管理等日常操作学习,这些可以看看鸟哥的Linux私房菜,针对初学者的教程,很好。掌握了Linux的使用,接着就可以学习Linux下的C语言应用编程。看到这里,估计很多有嵌入式驱动情怀的同学,肯定会说:NO!我想学驱动,我想搞驱动。其实,驱动开发只是嵌入式开发很小的部分,驱动开发的测试,我们也需要应用程序编写来测试,而且只有掌握了应用程序的编程,你开发驱动时才能更好地与应用成进行交互。所以这一步肯定不能省,这里可以参考Unix环境高级编程,经典的一本书。
驱动开始了!高能量
也许很多做嵌入式开发的都有一种情怀,那就是必须搞驱动,只有搞驱动,才算真正的嵌入式开发。其实在实际工作中,驱动开发的工作需求很低的,我说的是真正的驱动开发,大部分都是做维护和优化的工作。真正做驱动开发的也就是芯片原厂,他们在芯片研发成功后,会一直Linux和Android系统在上面,开发驱动,然后做成解决方案,卖给手机厂商。手机厂商基于这个软硬件平台方案做二次开发。而原厂这些驱动开发真正自己写驱动的也很少,大部分IP都是购买的,IP厂商提供了一些列解决方案。举个简单的例子:GPU驱动。一个芯片原厂在研发一个芯片前,一般会到IP厂商去买GPU的ip,集成到自己的芯片上,IP厂商在提供这个IP的同时,还会提供各个操作系统下的驱动源码,这样,其实真正开发驱动的很少,不是开发不出来,而是时间不允许。所以,驱动开发的实际需求很少。
这时候很多有驱动情怀地可能比较失落了,其实也没必要。现在芯片厂商越来越多,驱动职位也是很多的。外设、模组很多职位也是很大的需求。关键是:嵌入式真正产生价值的地方不一定是在驱动!
现在随着物联网、智能硬件的火热,无线通信、设备与设备之间的连接,才是真正产生价值的地方。整个系统的嵌入式开发,打造一款智能的点子产品,才是产生核心价值的地方。所以说,聪明的人将会往整个方向上开始去储备能量了。如果你能使用一款arm平台,连接到物联网上,比如QQ最近推出的QQ物联,给你的arm平台设备申请一个QQ号,加你为好友,然后你跟你的设备聊天,整个流程走下来,你会发现你对嵌入式整个系统的理解远远比你单纯做一个模块的驱动、配配寄存器深刻得多。
当然还有很多方向,比如内核的虚拟化,云计算开发、嵌入式系统的低功耗、系统稳定、多核编程、系统优化都属于嵌入式系统开发的范畴,不一定非得做驱动。
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议