牛人 就是这样锤炼出来的,中兴资深工程师,嵌入式专家韦东山是这样炼成的!

导读
还在大学的你,不知道未来何去何从?都说迷茫是大事做不了,小事不想做。还在做程序袁的你,是不是也想创业?程序袁好创业吗?
Linux好学吗? 学会了这个能找到咋样的工作?哎,老婆又生第2胎了,跳哪里去好呢?
呵呵,别急。下面 就跟随某知名媒体的采访,揭开上述迷雾,顺便领略嵌入式Linux专家、草根名人、曾多次在中兴获奖,现为百问网公司创始人韦东山大神修炼之路的风采。

先来个简历:

姓名(附照片):韦东山                       



工作经历简介

2003年中国科学技术大学毕业  主修应用物理学,计算机科学与技术

2003年七月任珠海友通科技有限公司技术部软件工程师

2004年任深圳神通行科技有限公司技术总监

2005年任深圳中兴股份有限公司技术部软件工程师

2007年出版著作《嵌入式Linux应用开发完全手册》

2008年任华清远见、尚观科技兼职特级讲师

2012年任深圳百问网科技有限公司董事长,并录制韦东山嵌入式Linux系列视频。


擅长领域 :各平台的嵌入式Linux设计与开发

下面就是采访记录了(表尖叫哦~)





1、 电子发烧友:大家都比较想了解您个人学习的历程与感想,可否与大家分享一下? 

   韦:我从2003年开始工作,那时候的技术真是差劲啊:直到2005年,在硬件方面我只会设计两层板,在软件方面我用的一直是51 单片机 。有一次老板的朋友来做技术指导,聊起 ARM 、wince、Linux、操作系统,让人真是大开眼界。

操作系统才是未来!必须改变!

在硬件方面没人指导很难有长进,但是软件方面我可以自学啊。于是我开始买各种ARM的书,买周立功的2104板和书,用它来学习过UCOS,感觉他们还在延续着单片机的思路。这不行啊!得上操作系统!学WINCE?还是学LINUX?WINCE可是要钱的,咱学个免费的LINUX吧。买个S3C2440开发板,就这样开始了LINUX的自学之路。

多谢友善之臂的老板杨斌,我买的是个二手的2440开发板,他还是认真的提供技术支持,那时我没少请教他问题。他应该发达!

2005年那会,嵌入式LINUX方面的书是没有的,所以我的学习过程完全依赖网络、 论坛 ,大家现在还可以在 http://www.linuxforum.net/ 上搜“thisway_diy”,可以发现我提的很多幼稚问题(特意去试了下,我才发现这个网站已经关闭了,世事难料啊)。

工作后再难有在校时的心态与大段时间……,直到公司倒闭……,我于是回老家闭门学习半年:

在外租房,有家不回;没日没夜,不是在电脑前就是在床上,要不就是去吃饭的路上;自学、翻书、发贴、编程试验、问题解决不了时苦闷得想砸电脑;现在回想起来感觉也挺励志的。就这样,用了半年终于入了门,bootloader完全掌握,基本的Linux驱动会写了,钱也用完了,要出来工作了(想想也挺郁闷,大学4年工作2年,竟然技术不过关要回炉重造)。

我没有Linux工作经验啊,怎么办?那就自己写个操作系统混经验值吧,仿照UCOS、LINUX,写一个简单的操作系统:基于MMU的操作系统(MOS)。就用它作为敲门砖,写到简历上去显得有点料。去面试了三家公司,华为惠通、UT斯达康、中兴,全中!因为钱没了,而中兴的通知来得最早,就去它吧。

说实话,那时我的Linux水平只是刚入门,好在2006年那会中兴也刚从vxwork转为Linux,大家都不懂都在学习,我倒也不显得丢人。在中兴里,又是没日没夜地工作、学习了2年。期间碰到过无数的疑难问题,煅炼了能力。说真的,只有在解决问题的同时,你才会东想西想,把有关、无关的技术都想清楚并掌握得扎实。

2007年从中兴辞职开始写书。不要笑我只有2年Linux工作经验就敢写书,自学半年工作两年,是这辈子最用功的时刻,远比高考时努力。这2年半所学到的东西远超大学4年。工作和写书对技术的要求完全不同,工作上你能写出程序解决问题就可以,而写书则要求你对知识理解透彻。书写了1年,也可以认为继续学习了1年。2008年那会还没有手把手教、从零搭系统开始学习嵌入式Linux的书,这本书《嵌入式Linux应用开发完全手册》又火了一把。

书出了,我也稍有点名气,于是从2009年开始在几个培训机构讲课,去过华清远见、尚观,都是兼职,因为我当时还想着自己创业呢。业没创好钱又没了,只能去兼职。这样又持续了2年,这又是一个煅炼:怎么讲,别人才容易学会。

这就是我的学习工作经历,生活推着我在Linux上历炼了9年。如果你还是学生,劝你尽早找到自己的兴趣,全力钻研;如果你已经进入社会,最好能找到相关的工作,白天上班也是煅炼,晚上继续学习。



2、 电子发烧友:自从业以来,遇到最大的困难与挑战是什么?能否给我们分享些您的经验以及心路历程?(最好能有实例说明)

韦:转行!转行是最困难的,这意味着你前面积累的经验几乎没用了,还需要学习全新的知识──这需要大量的时间。我的第1份工作是做硬件的,后来由于工作需要也写一下单片机程序,但是软件水平是很低的。决定转行学习Linux时,这需要有操作系统的概念知识、全新的ARM体系架构知识、完全没接触过的软件设计理念(写单片机时就是一个while循环,Linux里都是面向对象的思想)。

这千头万绪,要学习的知识很多,从哪里入手,从哪里抽出时间,这就是2个最大的困难。

对于时间,我是暂停工作闭门自学了半年;

对于从哪里学习,我是先学习了赵炯的《LINUX内核完全注释》,这让我对操作系统有比较深的认识;接着把ARM开发板当作单片机学习裸板,把bootloader涉及的硬件操作单独写程序试验;最后开始学习驱动程序的编写。从裸板程序开始,直到Linux驱动,这就是我的主要学习方法,这也是《嵌入式Linux应用开发完全手册》的章节顺序。


3、 电子发烧友:IP Camera带音频视频功能、可以联网互动,因此可能会被恶意入侵、隐私泄密,工程师如何做到保护?

韦:IP Camera的使用涉及3个部件:用来录像录音的IP Camera、提供数据传输或存储的服务器、观看音视频的客户端(PC或手机等)。

我们会根据IP Camera的使用场景,为每一个阶段提供数据保护,比如:

a. 客户拿到IP Camera时,要登录服务器注册帐号,并绑定设备。在服务器上的WEB服务就要注意隐私保护,必要时引入手机验证。

b. 客户端向服务器提出请求时,要输入用户名和密码,这可以参考Linux的远程登录密码验证功能。比如使用ssh协议登录Linux服务器时,会提示你输入用户名和密码。相信这一套机制非常可靠,我们可以直接引用。

c. 三者之间传输数据时,数据要先加密再传输。可以使用公用密钥等加密方式。

d. 在服务器上存储的数据,如果你对安全保护不在行,可以使用大公司提供的云服务。

我只是泛泛而谈,我只做过1个涉及安全保护的项目,经验不丰富。



4、电子发烧友:IP Camera运动控制部分可以实现拍摄角度的调节,能否通过自动控制摄像头的角度实现人脸、头部信息的锁定、实时运动捕捉,大概怎么实现的,能否介绍一下?

韦:术业有专攻,图像处理不是我们的专长。但是要做这一块,我们会这样做:先使用开源软件比如OpenCV,如果它达不到要求,再求助于专业人士。


5、电子发烧友:传统的Linux驱动开发和Android驱动开发有何区别?现在android那么火,它跟LINUX是什么关系?学好了你们的视频,对学习android有何帮助?你们后续有无录制android视频的计划?

答:简单地说,Android驱动=Linux驱动+封装。Android应用程序是使用java编写的,Linux内核和驱动程序是使用C语言编写的,java APP要访问驱动程序,这中间需要插入一个封装接口。核心还是底下的Linux驱动程序;对于封装,你只要了解了封装规则,基本就可以一通百通了。所以,如果你的目标是掌握Android驱动,那么我们的视频很适合你。我们后面也会讲讲Android驱动的封装,它不会太难。

对于Android应用程序,可以认为它跟Linux的关系不大。即使你没有Linux知识,也可以在1个月内入门Android应用开发──我只是说,你会开发简单的界面。程序的核心永远是在界面之后,所以不要沾沾自得。比如手机游戏,背后的图像处理算法、游戏的逻辑,这才是重点。如果你的目标是掌握Android应用,我反而觉得你应该跳出“Android”来学习。应用程序的领域实在太多,有网络、图像处理、安全、搜索等等,由你的兴趣来选择方向吧。Android应用只是一个人机界面,把背后的复杂系统展示给客户来使用,如果你只满足于“写界面”,好吧,1个月速成,再花几个月深入理解Android的框架。容易上手的,就容易掉价。前几年Android应用开发由于会的人还不多,工资挺高;这两年就开始往下掉了;要保住你的薪资水平,除了界面你还需要掌握“核心技能”:界面背后的支撑。

我没有打击Android应用的意思,对于急于找到工作的人,我反而建议去学习Android应用。你应聘到工作后,公司自然会压着你去了解产品的相关知识,否则你也写不出界面啊。

6、电子发烧友:工程师一般时间都是比较紧张的,您是在什么情况下写的《嵌入式LINUX应用开发完全手册》这本书呢?这本书是想给大家分享些什么呢?

韦:辞职写的。我2005年自学Linux时在网上发布了“S3C2410完全开发流程”的学习笔记,被出版社的编辑看到。他们在2006年联系我写书,那时我在中兴上班。在公司上班期间,根本没有时间写书:工作累个半死,回来哪有精力写。于是决定2007年辞职专门写书。

我学习时,大部分的知识都是从网上搜索得来,这需要耗费巨大的精力去寻找,并且不系统。作为初学者,不知道去搜什么来入门,也不知道搜什么来深入。所以,我想出一套“完全教程”,让零基础的入只看这本书,就可以入门并掌握比较深的、工作中可以使用的知识。

好吧,其实也是被编辑以名利相诱,然后催我写写写!


7、电子发烧友:“电子从业人员的发展方向”大概分为两类:软件工程师、硬件工程师,软件工程师一般又可以分为:底层系统、上层应用。您如何看待这三种方向的职业发展呢?

韦:我刚工作时也曾是个硬件工程师,但是发现没人带的话很难有进步,于是转行做软件了。对于他的职业发展,我也只能简单说说。

不少人问我,到底是学驱动还是学应用?

我只能说凭兴趣,并且驱动和应用并不是截然分开的

a. 我们说的驱动,其实并不局限于硬件的操作,还有操作系统的原理、进程的休眠唤醒调度等概念。想写出一个好的应用,想比较好的解决应用碰到的问题,这些知识你应该懂

b. 做应用门槛低,特别是现在的ANDROID,纯JAVA。做应用的发展路径个人认为有两个方向:一是业务纯熟,二是成为某个专业领域的专家。比如在通信行业、IPTV行业、手机行业,你了解行业的业务需求。所以,当领导的人,多是做业务应用的。另一个方面就是在网络传输、图像处理、人工智能等等领域的钻研,这更多的时候像是在研究学术问题,而不仅仅是写程序。

c. 做驱动,其实我不想称为“做驱动”,而是想称为“做底层系统”,做好了这是通杀各行业。我工作几年,做过手机、IPTV、会议电视,但是这些产品对我毫无差别,因为我只做底层。他们的业务跟我没关系。

当应用出现问题,他们解决不了时,我就会从内核角度给他们出主意,给他们提供工具。

在实际工作中,写驱动的活反而不多,更多的是从系统的角度解决难题。

底层涉及的绝不仅仅是驱动,更多在于"系统": 它上接应用,下接硬件。很多疑难问题只能由底层的人解决。

做底层的发展方向,个人认为是着眼于整个系统的技术专家。

d. 其实,做底层还是做应用,之间并没有一个界线,有底层经验,再去做应用,你会感觉很踏实。

有了业务经验或是掌握某项核心技术,你再了解一下底层,很快就可以组成一个团队。

e. 我建议你上下兼通,做应用让你视野更广阔,做底层让你技术扎实。

f. 就职位而言,永远是应用的职位多于底层的职位。所以,如果你找不到底层的工作,完全可以先做应用。

在工作中把底层的本领也学会。

在公司中,那些被称为"系统工程师"的人绝对是上下兼通的


8、电子发烧友:工程师经常在谈如何找一个好的平台,您是如何看待这个问题的? 您现在从事讲师的工作还会有时间进行产品开发嘛?

韦:找平台,这是个技术活,或是个运气活。我有同学一直在腾迅做游戏,估计身家丰厚;也有朋友在公司分股票之前离职。

就我个人经验来说,我先是在小公司上班,后来到大公司,各有利蔽:

对于技术能力:在小公司里你会成为多面手,软件硬件生产调试你都会插上一脚,如果能潜心学习,对往后发展有好处。我在小公司里设计过硬件,到中兴做驱动时,可以跟硬件工程师一起研究原理图。现在创业了,还可以自己设计产品。在大公司里,每人专门负责一小块,你可以学得深入,并且有各种设计规范。

对于人际关系:在大公司里,你会认识更多的人,认识各个部门的人,这对今后发展也有帮助。我辞职后接到的猎头电话,都是中兴的同事推荐的。现在缺乏哪方面的技能,也可以向原来的同事请教。

对于收入:呵呵,看运气吧。有人被微软拒绝后成为了亿万富翁,有人则终身在微软里写代码;有人创业失败,有人单凭公司年终奖就资产丰厚。

根据你的需求,能承担风险的能力,来选择平台──这似乎是废话,确实是。



我们现在已经发布了3期视频:第1期讲裸板,第2期讲驱动,第3期讲项目。以前也会做些产品,但是不能投入太多的精力,所以做的都是些比较小的、配套产品,比如摄像头、WIFI小车。现在开始讲第4期:拆解产品、实现产品,所以现在有时间进行产品开发了。我们应该会开发一些消费电子产品。
韦东山老师为啥要录升级版嵌入式视频?200x年左右,嵌入式Linux在全世界、在中国刚刚兴起。我记得我2005年进入中兴时,全部门的人正在努力学习Linux。在2008年,我写了一本书《嵌入式Linux应用开发完全手册》。它的大概内容是:裸机、U-boot、Linux内核、Linux设备驱动。那时还没有这样讲解整个系统的书,芯片厂家Linux开发包也还不完善,从bootloader到内核,再到设备驱动都不完善。有全系统开发能力的人也很少。于是这书也就恰逢其时,变成了畅销书。我也根据这个思路录制了视频:裸机、U-boot、Linux内核、Linux设备驱动。收获些许名声,带领很多人进入Linux世界。11年过去了,嵌入式Linux世界发生了翻天覆地的变化① 基本系统能用芯片厂家都会提供完整的U-boot、Linux内核、芯片上硬件资源的驱动。方案厂家会做一些定制,比如加上某个WIFI模块,会添加这个WIFI模块的驱动。你可以使用厂家的原始方案,或是使用/借鉴方案商的方案,做出一个“能用”的产品。② 基础驱动弱化;高级驱动专业化基础的驱动,比如GPIO、UART、SPI、I2C、LCD、MMC等,有了太多的书籍、视频、示例代码,修修改改总是可以用的。很多所谓的驱动工程师,实际上就是“调参工程师”。我们群里有名的火哥,提出了一个概念:这些驱动就起一个“hardware enable”的作用。高级的驱动,比如USB、PCIE、HDMI、MIPI、GPU、WIFI、蓝牙、摄像头、声卡。体系非常复杂,很少有人能讲清楚,很多时候只是一笔带过。配置一下应用层工具就了事,能用就成。这些高级驱动,工作中需要专门的人来负责,非常专业。他们是某一块的专家,比如摄像头专家、音频专家。③ 项目为王你到一个公司,目的是把产品做出来,会涉及APP到内核到驱动全流程。中小公司玩不起华为中兴的配置,需要的是全面手。大公司里,只负责很小很小一块的镙丝钉,位置也不太稳固啊。所以,如果你不是立志成为某方面的专家,那就做一个全栈工程师吧。④ 调试很重要都说代码是3分写7分调,各种调试调优技术,可以为你的升职加薪加一把火。基于上述4点,我录制的全新视频将有这些特点:1. 快速入门,2. 实战项目,3. 驱动大全,4. 专题,5. 授人以渔,6. 要做任务另外,我们会使用多款芯片同时录制,先讲通用的原理,再单独讲各个板子的操作。这些芯片涵盖主流芯片公司的主流芯片,让你学习工作无缝对接。1.快速入门入门讲究的是快速,入门之后再慢慢深入,特别是对于急着找工作的学生,对于业余时间挑灯夜读的工作了的人,一定要快!再从裸机、U-boot、内核、驱动这样的路线学习就不适合了,时间就拉得太长了。搞不好学了后面忘了前面。并且实际工作中并不需要你去弄懂U-boot,会用就行:U-boot比驱动还复杂。讲哪些内容?怎么讲呢?混着讲比如先讲LED APP,知道APP怎么调用驱动,再讲LED硬件原理和裸机,最后讲驱动的编写。这样可以快速掌握嵌入式Linux的整套开发流程,不必像以前那样光学习裸机就花上1、2个月。而里面的裸机课程,也会让你在掌握硬件操作的同时,把单片机也学会了。讲基础技能中断、休眠-唤醒、异步通知、阻塞、内存映射等等机制,会配合驱动和APP来讲解。这些技能是嵌入式Linux开发的基础。而这些驱动,只会涉及LED、按制、LCD等几个驱动。掌握了这些输入、输出的驱动和对应的APP后,你已经具备基本的开发能力了。讲配置我们从厂家、从方案公司基本上都可以拿到一套完整的开发环境,怎么去配置它?需要懂shell和python等配置脚本。效果效率优先以前我都是现场写代码、现场写文档,字写得慢,降低了学习效率。这次,效果与效率统一考虑,不再追求所有东西都现场写。容易的地方可先写好代码文档,难的地方现场写。2.实战项目会讲解这样的涉及linux网关/服务器相关项目(不限于,请多提建议):                   定位为:快速掌握项目开发经验,丰满简历。涉及的每一部分都会讲,比如如果涉及蓝牙,在这里只会讲怎么使用,让你能写出程序;如果要深入,可以看后面的蓝牙专题。3. 驱动大全包括基础驱动、高级驱动。这些驱动都是独立成章,深入讲解。虽然基础驱动弱化了,但是作为Linux系统开发人员,这是必备技能,并且从驱动去理解内核是一个好方法。在讲解这些驱动时,会把驱动的运行环境,比如内核调度,进程线程等概念也讲出来,这样就可以搭建一个知识体系。没有这些知识体系的话,对驱动的理解就太肤浅了,等于在Linux框架下写裸机,一叶障目,不见泰山。定位为:工具、字典,用到再学习。4. 专题想深入学习的任何内容,都可独立为专题。比如U-boot专题、内核内存管理专题、systemtap调试专题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值