韦东山:机会总是留给有准备的人(转)

2023-05-16

最近电子发烧友(以下称'发烧友')采访了韦东山老师,本文是采访原稿,展示出来让大家更深入了解韦老师的同时也进一步学习嵌入式Linux经验。

机会总是留给有准备的人

 

发烧友:

为什么要学习掌握ARM裸机?ARM裸机与从事嵌入式工程师职业关联度如何?

韦东山:

我们讲解的ARM裸机,特殊之处在于:不使用IAR/KEIL/MDK等软件,而是在纯粹的linux环境下从0写代码。这些好用的开发工具屏蔽了太多的技术细节,比如:位置无关码、重定位、中断环境的保存与恢复、链接脚本。而这些细节,在后续的bootloader学习中是需要的。

除上述细节外,ARM裸机的学习目的在于:掌握如何编写程序来控制硬件。后续的“Linux驱动=软件框架+硬件操作”,我们先在单纯的裸机学习中掌握硬件操作,在后面的学习中就可以把精力放在驱动软件框架上。

我们学习ARM裸机的目的,是去学习后续的Linux课程,进阶为Linux系统工程师。不是要让你继续从事单片机开发,成为单片机工程师。

在技术层面,Linux系统工程师回头从事单片机开发,轻而易举;但是现在不开始着手Linux的学习,后续转型很麻烦。2004年我们使用51单片机从事车载电话开发,所做的软件已经算是单片机层面顶尖水平了──我们可以在单片机上开发自己的操作系统。

但是,我们同事纷纷感觉到了危机,单片机能做的事情太单一了。当年流行wince,Linux刚起步,我们选择学习Linux,现在wince已经没人提及,而Linux仍如日中天。中兴公司也是在2005年才全面从vxwork切换到Linux的,我有幸进入中兴与他们一起研究Linux。

在收入方面,大家尽可以去51job等招聘网站搜“单片机”、“Linux”,后者一般是前者2倍以上。

在发展方面,有了Linux知识,几乎通吃所有产品。我从事过网络会议系统、监控摄像头、楼宇对讲系统、安防、广告机方面的开发,我只是开发底层系统,不是开发APP,这些产品通通使用Linux。现在兴起的机器人、人工智能,它们要落地的话,运行Linux系统的硬件是必选项。

就身边事例而言,我是2008年离开中兴,随后几年里有几个同科室的同事也都离开了,他们都做Linux系统;现在都做得很不错。有人在联想做Android开发,有人在做POS机,有人自己创业,他们或是团队领导,或是有股份。

 

发烧友:

根据您的经历及见闻,现在ARM嵌入式工程师前途如何?含金量、薪资待遇呢?

韦东山

理想很丰满,现实很骨感。所有行业的从事者都是在一个金字塔里,工作好收入高离家近假期多的人,都只是少数。我只能说,平均而言,ARM嵌入式工程师待遇较好,发展前途不受限。

说好话之前,先说丑话。

ARM嵌入式工程师入门门槛高,职位需求相对APP来说是少的,很多职位需要你有经验。

所以,有一部分同学最终只能转行:转而做单片机或APP开发。

但是,ARM嵌入式工程师所处位置非常好,向下跟硬件工程师打交道,向上跟APP工程师打交道,可以参与整个系统的开发,前途不受限。

我是个宅男,只能举身边的例子:我在中兴时从事嵌入式系统的同事,发展都很不错。

我的科长,拥有专业的Linux底层知识的同时,极具大局观,他向上研究APP的相关知识、相关协议,上下兼通,是中兴的产品经理、总工了。

同事A,早年从因POS机开发(用单片机),在中兴里天天加班深研Linux技术,现在在创业公司里当技术头头,有股份。加班多,但是收入高。

同事B,在中兴里是做APP开发,后跳槽到OPPO后,深研底层开发,早几年单是年终将就是我的年薪,现在自己创业。

同事C,女,跑到IBM做服务器相关的工作去了,嵌入式Linux的知识绝对是帮上大忙了。

同事D,深研Linux系统知识,人称大师,从不加班(羡慕死人了),有大BUG必定请他出马、出差。

对于嵌入式工程师,把Linux知识吃透了,可以游走于几乎所有行业,因为这些产品基本上都要用Linux。

想当领导的话,向上学习一下APP、业务知识,你就可以掌握整个产品的开发全流程了。

想创业的话,向下你知道需要什么样的硬件,向上你知道需要请哪方面的APP工程师。

对于暂时找不到嵌入式LINUX职位的同学,不用担心,你总会发现机会的。

做单片机产品的公司,产品升级的话必定要用Linux,到时你就是公司掌握先机的人;做APP的话,如果跟硬件相关,你的嵌入式LINUX知识会提供很多帮忙。

 

发烧友:

一个合格的嵌入式工程师,需要具备哪些性格和职业特征?一些理工科学生或刚毕业不久的工程师老说迷茫,产生迷茫的原因有哪些,为什么?怎么克服?

韦东山:

嵌入式工程师,必须具备的性格和职业特征:

究根究底:操作系统层面的问题,必须彻底弄清楚原因,彻底解决,否则隐患巨大。

绝对耐心:嵌入式工程师的代码量很少,多数时间是在学习新知识、协助调试。我在中兴工作时,曾经花了一个月来捕捉、解决一个BUG,最能只增加了一条指令。BUG随机出现,我不断地重启系统、重启软件;根据新现象不断地现学现用。

大局观:你写的每一个驱动,功能上要实现,性能上也要实现。需要结合产品的实际需要,根据APP的特点,调整你的程序。调试BUG时,从APP到驱动再到硬件,各种可能的问题都要考虑。

迷茫,唯一的原因就是对未来感到不确定。

我的专业是物理,在大一大二时深感迷茫,不知道毕业后能做什么,我选择了学习第2学位:计算机。

我刚工作时用的是51单片机,对所用的落后技术也深感迷茫,我选择辞职自学Linux。

我在中兴工作时,加班多、工资少、房价高,仍然迷茫,选择创业。

创业过程中,我录制Linux视频,期间iOS火曝、androidAPP火曝,很多人趁着风头做ios、Android培训,我也迷茫,最后选择不跟风:现在这些培训很快就冷却了。

我也算工作15年的老工程师了,也接近40岁了,仍不时觉得迷茫。但是我深信两句话:要收获,必须先付出;吃得苦中苦,方为人上人。

对于迷茫的工程师,我建议:

根据自己的兴趣,选择不太偏门的方向,潜心学习;选定方向后,不跟风不追热门。

 

发烧友:

您是否遇到过女嵌入式工程师?在嵌入式工程师职业上女性有什么优势和劣势?

韦东山:

我在中兴时就带过一个女同事,但是在这领域女性不多。

我认为嵌入式工程师特别适合女性,相对于APP开发,嵌入式工程师工作中的需求交化不大,代码量也不大,不需要天天加班。

劣势在于,嵌入式工程师入门门槛高,需要硬件知识、良好的英文阅读能力、多层面的软件知识(操作系统、驱动程序、APP开发),学习强度是挺大的。前期需要付出挺多。

名师引导更容易入门

 

发烧友:

很多新手学习ARM裸机都会很迷茫,请问在学习ARM裸机过程中容易遇到哪些坑?

韦东山:

很多小坑,如果自己去解决的话,估计要花上几个小时,但是有经验的人一眼就能看出来。

最奇葩:拿到开发板,把电源插到耳机孔去了。

大多数:粗心,很多人拼写命令时写错了,结果忙上半天找原因。

储备知识不足:开始学习时,我们只能照着文档写命令,这些命令的作用后面才会说明;如果当场就讲这命令,课程就会又臭又长。

所以,我们都会建议:按着视频学习,不懂的、没讲到的,先放着;后面学完你就全懂了。

 

发烧友:

成为一名具备一定开发能力的嵌入式Linux开发工程师需要具备哪些知识?

韦东山:

我先说合格的标准吧:能在一个新的板能上搭建出Linux系统,能写出需要的驱动程序。

所以,需要以下知识:

硬件知识:能看懂电路图,看懂芯片手册,看懂硬件协议。

英文阅读:上述资料基本是英文的。

C语言:嵌入式工程师常用语言就是C。

操作系统原理:有助于帮助我们理解Linux源码。

常用驱动程序框架:精通几个驱动程序后,领悟原理后,才有能力开发新的驱动程序

纸上得来终觉浅,你学完后,必须找一块不同的开发板,在上面把所学过的程序自己写出来,这样才能真正掌握──这也是我对新同事的要求。

实际上,很多公司招聘时要求有工作经验。对于嵌入式工程师,这个经验非常容易得到:你换一个不同的板子练习就可以了。

 

发烧友

在学习ARM裸机或ARM Linux过程中,得到资深名师或导师的指引有哪些好处?

韦东山:

学习过程中,很多因为粗心导致的问题层出不穷,自己去解决的话很花时间;

嵌入式学习过程中,需要的知识非常广,自己临时去学习的话,进度很慢;能否跳过,自己也不知道。这时候如果能有人指引,效率会很高。

我在2005年学习时,市面上基本没有资料,我学非常痛苦,在论坛上疯狂发贴,那些问题现在回头看非常弱智,但是当时就把我卡住了:茶饭不思,时不时想砸电脑。

 

发烧友:

请问韦东山老师最终为何选择嵌入式授课教育?

韦东山:

生活与兴趣推着我走上这条路,没什么情怀。

我2005年适职自学Linux时,过程痛苦,把自己的学习所得写了一篇文章:S3C2410完全开发流程,发布在网上;然后就去中兴上班了。

此文流传甚广,人民邮电的编辑联系我,要我出书。

我答应下来,但是因为一边上班一边写书进度缓慢,于是在2007年辞职专心写书。

2008年书出版了,钱花光了,于是接受华清远见的邀请,去做兼职讲师。

讲课过程中,我采用完全不同的风格:从0写代码,边讲边写,大受欢迎,效果超好;慢慢有了名气后,游走于多家培训机构,天天讲课,天天现场写代码。

这样天天做同一件事,天天写同样的代码,实在是烦死人,决定自己录视频算了。

于是2011年底,发布第1套视频,承蒙学生们、工程师们厚爱,他们帮我一起打击盗版,口口传播,于是也就一直坚持到现在。

我发现,我有讲课的能力,可以把复杂的问题讲得非常清楚,非常形象。

我希望,众多像我当年初出校园的学生,他们有学习的渴望,我能帮他们一把。

所以,一直以来,我不吹牛,不强拉人学习,想适合学习的人不强求。

如果你要学习嵌入式系统,而我恰好经验丰富,你愿意的话我就教你。

悦已之作,方能悦人。这是我们公司的格言,如果做出来的产品你自己都不喜欢,别人怎么会喜欢呢。

在工作中,我就经常回头去重看视频(我也会忘记),从未感到脸红,因为我都是用心录制的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

韦东山:机会总是留给有准备的人(转) 的相关文章

  • ROS_Dynamic Reconfig 动态参数调节

    创建功能包 package cd catkin ws src catkin create pkg dynamic refg roscpp dynamic reconfigure cd catkin make 向功能包添加动态重配置文件 cf
  • BGA“焊点”虚焊原因分析及控制方法

    电路板调试过程中 xff0c 会出现 BGA器件外力按压有信号 xff0c 否则没有信号 的现象 xff0c 我们称之为 虚焊 本文通过对这种典型缺陷进行原因分析认为 xff1a 焊接温度曲线 焊膏量 器件及PCB板焊盘表面情况以及印制板设
  • Python中的列表(清晰易懂)

    列表是用来存放数据的 Python中的列表关键字是list 我们来定义一个列表 lista 61 34 a 34 34 b 34 34 c 34 666 34 a 34 可以看到列表lista中 有字符型数据 34 a 34 34 b 34
  • VR技术类毕业论文文献有哪些?

    本文是为大家整理的VR技术主题相关的10篇毕业论文文献 xff0c 包括5篇期刊论文和5篇学位论文 xff0c 为VR技术选题相关人员撰写毕业论文提供参考 1 期刊论文 运动炫科技 智慧赢未来 VR技术在体育领域内的应用与展望 期刊 xff
  • Haar特征类有哪些最新发表的毕业论文呢?

    一 总体简介 Haar特征的相关文献在2006年到2020年内共计132篇 xff0c 主要集中在自动化技术 计算机技术 无线电电子学 电信技术 公路运输 等领域 xff0c 其中期刊论文100篇 会议论文4篇 专利文献28篇 xff1b
  • 查阅国外文献的网站有哪些?

    毕业季不知道小伙伴们有没有为了论文感到头秃 xff0c 参考文献在我们的论文中有着举足轻重的作用 xff0c 每年这个时候都有大批小伙伴为这个寻找参考文献发愁 有些专业的小伙伴由于专业的特殊性很多需要的文献还是外文文献 xff0c 对他们来
  • 使用Python和C++的写数据结构和算法

    使用Python和C 43 43 的写数据结构和算法 1 数据结构和算法简介2 数据结构2 1 堆栈2 2 队列2 3 散列表2 4 二叉树2 5 线性搜索2 6 二进制搜索2 7 递归2 8 递归二进制搜索2 9 QuickSort2 1
  • Hive与Hbase的区别与联系

    一 概念 1 xff0c Hive hive是基于Hadoop的一个数据仓库工具 xff0c 用来进行数据提取 转化 加载 xff0c 这是一种可以存储 查询和分析存储在Hadoop中的大规模数据的机制 hive数据仓库工具能将结构化的数据
  • ros 命名空间

    文章目录 全局命名空间相对名称私有名称节点命名空间 全局命名空间 rosout前面的反斜杠 表明该节点名称属于全局命名空间 之所以叫做全局名称因为它们在任何地方 xff08 包括代码 命令行工具 图形界面工具等的任何地方 xff09 都可以
  • DenseNet及torchvision中的实现

    ResNets Highway Networks Stochastic depth DenseNet他们的共同的特点是 They create short paths from early layers to later layers 他们
  • Xmanager5用Xstart连接CentOS7

    今天安装了Xmanager5 xff0c 原本已经有了Xshell5 xff0c 没有冲突 xff0c 测试Xftp Xshell使用上均无问题 到了Xstart却出错了 xff0c 客户端设置完后点击运行 xff0c 出现报错 查找了许多
  • CAN总线入门学习(一)

    今天带着大家学习 xff0c CAN总线 1 概要 本资料是面向 CAN 总线初学者的 CAN 入门 对 CAN 是什么 CAN 的特征 标准规格下的位置分布等 CAN 的概要及 CAN 的协议进行了说明 2 使用注意事项 本资料对博世 B
  • java调用接口

    long dateStr 61 System currentTimeMillis 1000 String url 61 34 34 创建参数 JSONObject jsonObject 61 new JSONObject jsonObjec
  • 英特尔NUC 11板载USB3.0座子接口定义

    规格书没有座子PIN定义 xff0c 于是我找技术支持提供了定义
  • 宝塔配置Workerman

    map span class token variable http upgrade span span class token variable connection upgrade span span class token punct

随机推荐

  • px4飞控和机载电脑通信:机载电脑接收飞控的自定义px4消息

    机载电脑接收飞控的自定义px4消息 mavros功能包能够实现px4飞控和机载电脑之间的实时通信 而对于大部分的消息通信mavros都已经有相应接口可以调用 xff0c 例如 xff1a 位置 期望位置 速度 四元素等消息都可以通过C 43
  • px4飞控和机载电脑通信:飞控接收机载电脑的自定义mavlink消息

    前面一篇讲了机载电脑怎么接受飞控的px4消息 这一篇讲解如何飞控怎么接收从机载电脑传过来的消息 分成两部分 机载电脑发送消息 飞控接收消息 pixhawk版本 pixhawk4 px4版本 1 11 2 ros版本 1 14 10 机载电脑
  • 多无人机通信-路由器实现

    多无人机通信 多无人机之间相互通信是实现编队飞行的基础 而想要实现通信就需要组建网络 在网络之间实现数据信息的互相传输 按结构分成两大类 中心节点网络和无中心节点网络 我们这里所用的路由器就是中心节点网络 所有的数据的传输都要经过中心节点
  • js做文件分片上传

    js做文件分片上传 分片上传视频 xff0c 图片 xff0c 音频 xff0c 转base64 64 Layout 61 null lt DOCTYPE html gt lt html gt lt head gt lt meta name
  • 锐捷交换机基本配置命令

    锐捷交换机基本配置命令 锐捷交换机 xff0c 忘记colsole口的en密码 xff0c 重启交换机 xff0c 立即按ctrl 43 c xff0c 进入bootloader 菜单 xff0c 再按ctrl 43 q xff0c 然后输
  • 驱动设计思想(机制、策略、分离、分层)

    1 机制和策略 1 机制就是提供什么功能 xff0c 策略就是怎么使用这些功能 在编写驱动时需要在编程时间和驱动的灵活性之间取一个可接受的折中 xff0c 驱动提供机制 xff0c 尽量不提供策略 xff0c 策略让上层应用去做 2 机制和
  • debian重启没办法进入图形界面

    在遇到重启有时候没办法进入图形界面的情况下 xff0c 你可以考虑是自己电脑或者服务器显卡的问题 xff0c 如果你进入了命令行的界面 xff0c 执行 etc init d kdm restart 可以重新启动图形界面的话那么就可以肯定时
  • linux线程详解:线程概念、线程调度、线程安全、线程模型

    1 线程与进程的区别 1 线程是轻量级的进程 xff0c 是程序执行流的最小单位 xff1b 2 进程是资源分配的最小单位 xff0c 线程是调度的最小单位 xff1b 3 进程可以创建线程 xff0c 线程不可以创建进程 xff1b 4
  • ARM架构的中断机制详解(S5PV210芯片)

    1 中断介绍 1 中断是指计算机运行过程中 xff0c 出现某些意外情况需主机干预时 xff0c 机器能自动停止正在运行的程序并转入处理新情况的程序 xff0c 处理完毕后又返回原被暂停的程序继续运行 2 中断是为了实现宏观上的并发 比如我
  • USB接口WIFI(MT7601芯片)的驱动源码移植过程详解(驱动源码编译、wpa_supplicant工具交叉编译、文件系统移植)

    1 MT7601的移植步骤 1 确认你的WT7601网卡硬件是正常的 xff1b 2 修改驱动源码 xff0c 依赖内核源码树编译并加载 xff1b 3 交叉编译wpa supplicant工具 xff0c 移植到根文件系统里 xff1b
  • 时钟芯片DS1302时序分析、读写代码解析

    1 DS1302芯片原理图分析 引脚名称功能X1 X2外接32 768kHz 晶振 xff0c 用于内部计时SCLK和主控通信的时钟线I O数据输入输出引脚CE使能引脚VCC1接电池供电 xff0c 保证主板掉电时间能继续走VCC2主板的电
  • 服务器重启后vncserver无法启动、连接不上问题解决

    解决方案 xff1a 1 终端输入 xff1a vncserver xff0c 那么可能出现如下结果 xff1a root 64 hadoop vncserver Warning hadoop 1 is taken because of t
  • 课堂笔记之大数据技术基础——NoSQL数据库

    本文概要 NoSQL与关系数据库的比较NoSQL的四大类型 三大基石NoSQL和NewSQL数据库的区别文档数据库MongoDB编程实践 一 NoSQL概述 NoSQL 61 Not Only SQL 关系型数据库不可能被完全取代 xff0
  • ros 安装及卸载 gazebo7/8/9,gazebo版本升级与降级

    相关安装 xff1a ros python3 tf2参考他人博客 xff1a gazebo 7 0 升级到7 15 1 rqt sudo apt get install ros kinetic rqt sudo apt get instal
  • ST-LINK 到 SWD接线图

    1 ST LINK的外形图如下图所示 xff1a 2 接口引脚顺序定义如下图所示 xff0c 注意缺口位置 3 具体引脚定义如下图所示 4 ST LINK 到 SWD接线 SWD接口一般4个引脚 xff0c 分别为 xff1a 电源正 TC
  • MSCKF-vio源码阅读

    作为一个菜狗来说 xff0c 一开始弄明白kf ekf等滤波方法实属不易 xff0c 但是一旦理解原理之后再发散到基于滤波的状态估计方法 xff0c 学习起来就会事半功倍 xff0c 就像导航包中的robot pose ekf xff0c
  • R3Live系列学习(二)FAST-LIO源码阅读

    在上一篇我们提到 xff0c livox雷达给业界内的3D激光领域提供了一大补充 xff0c 而loam livox在温柔的使用下表现也还不错 xff0c 但在比较颠簸激烈的环境下也难以维持高精度 xff0c 因此lidar与imu的结合使
  • mkdir -m 777 tt 创建777属性的文件

    mkdir m 777 tt 创建777属性的文件 转载于 https www cnblogs com todayORtomorrow p 10486514 html
  • 妄图用多线程控制ROS的消息回调函数的输出-_-!

    今天需要用一个标志位来决定回调函数是否执行 xff0c 那这边先写一个chatter的publish xff0c 10Hz外发 xff1b 这边准备额外多一个线程控制唤醒回调函数 首先在接收节点程序中 xff0c 写一个互斥锁和条件变量 x
  • 韦东山:机会总是留给有准备的人(转)

    最近电子发烧友 xff08 以下称 39 发烧友 39 xff09 采访了韦东山老师 xff0c 本文是采访原稿 xff0c 展示出来让大家更深入了解韦老师的同时也进一步学习嵌入式Linux经验 机会总是留给有准备的人 发烧友 为什么要学习