zoukankan      html  css  js  c++  java
  • 韦东山老师百度贴吧问答精彩集锦

    很多人都知道前段时间韦老师在百度贴吧"嵌入式吧"开贴,与大家互动交流,集中回答大家比较关心的技术,职业选择等问题,今天小编把贴吧中比较经典的一些问题和答案整理出来,希望对你有所助益。

     更多干货关注威信baiwenkeji

    1韦老师你年薪多少?

    :男人不问钱数,女人不问岁数;不过看你年轻,我就回答一下。
    我2003年开始工作,已经工作了14年。
    2003年刚毕业时是2000、3000;
    2004年跳槽到小公司后变成6000;
    2005年抱着学习的心态到中兴开始做linux,也还只有6000,后面招进来的徒弟工资都比我高;
    2007年写书,2009年开始游荡在各家培训公司做特聘讲师,日薪1000
    2011年到现在开始录视频,一开始是单干,只有我一个人,2011、2012年还可以,年薪30万上下吧,只是感觉,没具体计算过。
    2013、2014年招了几个人,支出增多、新录视频进展慢,亏本,靠淘宝信用贷款发工资;
    2015年出了android稍好点:我们的视频定价太低了,第2、3期一直都是280,还不断有人盗版;
    2016年、2017年,平平淡淡,
    自己开公司很苦逼的,你看我现在不得不录新的第1期,
    为啥?老的第1期门槛高啊,学不下第1期,就不会学第2期,第2、3期才是绝对的精华

    我走了创业这条路,回头看原来跟我同时出来的中兴同事,没有他们滋润:
    有人进了创业公司,现在是CTO,有股份,我也猜不出他的薪水,不过豪宅、豪车都有了;有人进了成熟的公司,比如OPPO,有一年光是年终奖就是18万;现在也是创业中。做底层系统的,处于一个挺好的位置,向下了解硬件,向上了解业务,最终可以掌握整个系统;很多人最后要么成为大拿,要么自己创业。

    如果运气一般,没有进到好的创业公司、没有进到大方的公司,估计我们这类人作为普通程序员的话,2万、3万每月吧;再上升到管理岗、技术架构师,4万、5万?我也不知道。

    我发现我只是一个程序员,可以写出好程序、录出好视频,但是在推销方面很弱很弱啊。以我们视频的质量,早就应该一统江湖、过上美好生活了....

    附上部分贷款清单,以资鼓励:

     

    2看伟老师的视频收获真的很大,自己是做STM32单片机的,工作了两年后感觉单片机真的有点不够用,公司都开始用ARM平台,所以为了自己以后有口饭吃买了伟老师的开发板,到手以后刚开始确实有点蒙,感觉东西好多,也不知道怎么个学习顺序,但是耐下心来看视频感觉收获真的很大,看完裸机视频学到了好多东西,对自己原来的单片机都有很大的帮助,原来没太深究的东西也有了答案,后来慢慢看uboot,看了第一期,写简单uboot,移植全新的uboot,反复看了几遍,慢慢的明白了一些(也许是我接收能力差),现在刚准备看内核,本来想把1期视频看完了买2期,现在老师又重新出了1期,那我是不是应该再看一遍1期然后再看2期,效果是不是更好?

    第1期的学习目的有2:熟悉LINUX开发环境、掌握硬件编程原理。这是为了后续第2期驱动学习作准备的。第2期驱动=软件框架+硬件操作,你在第1期里掌握了硬件操作后,在学习第2期时就可以把精力放在软件框架上。所以,如果你已经有了单片机基础,并且已经在学习第2期了,就没必要重新学习新的第1期视频。

    3以前觉得嵌入式很有钱途,也很有兴趣,现在发现和想的完全不一样啊。论难度说第二基本没什么敢说第一吧,但是和专门搞软件的比工资完全不够看,而且感觉地位很尴尬啊,公司就一个人搞这个,软件组的人认为我是搞硬件的,硬件组的人为我是搞软件的,真是尴尬。。。最尴尬的看到什么都想学啊,画板子,安卓什么的,软件什么的都装了,但是就是一直没动力开始学。老师给个意见啊,专门看这一行的发展的话,我是多学一门安卓比价好呢,还是画pcb比较好啊。我自己感觉应该都学,也没那么多精力搞这么多,暂时只能偏重一个了。除了安卓之后所有视频都买了,这行发展趋势和建议我还是很相信老师的。

    :1.我不建议专门学习PCB:硬件工程师需求 < 底层工程师 < APP工程师
    对于硬件,你只需要具备这些能力就够了:看得懂原理图、看得懂芯片手册。
    我本人也是从硬件入门,在学校时就做过PCI板卡,但是也就局限于2层板,现在让我画4层板,我也没那个能力。
    PCB开发经验使得我具备了分析原理图、阅读芯片手册的能力,也就这2个能力对后续工作有帮助。

    我现在做产品,简单的原理图自己画,复杂的就找专业的开发板厂家做,但是对于PCB布板、画线都是直接外包的。PCB布板、画线外包很便宜、很便宜、很便宜!便宜到不需要你去学习。

    2. 在公司里定位尴尬,软件组的人认为我是搞硬件的,硬件组的人为我是搞软件的:
    :我猜测你们公司的产品硬件相对固定,核心技术在于APP;你只是做些内核、驱动的维护工作。
    在这样的公司,即使我去,也不会得到重用的。
    我相信你的时间应该比较充裕,建议如下:如果对公司的产品感兴趣,可以去掌握一下APP、业务;如果没兴趣,可以学一下android
    最后,如果做出了这些努力,在公司里还不能上一个台阶,就换工作吧。


    3. 要不要学习python,AI, 大数据、互联网开发?
    :这是APP的范畴了
    这个问题真是非常难回答,简单来说就是学习嵌入式、还是学习APP?
    我无法给你们建议,只能列一些经历过的现象;
    我也不能保证你学了嵌入式就发财,只能保证你可以学会、学会了肯定有工作。
    a. 2009,2010年那会,Android开始兴起,Android APP需求大、会的人少。
    那时大学里整天打游戏的人、总是挂科的人,毕业后去培训3、4个月,然后去工作,工资就上万
    现在你可以在51CTO搜"android开发",薪资水平也就一般般。

    b. 2015轮到IOS兴起,一大堆做IOS,培训IOS的公司遍地开花,现在也都纷纷倒闭了。互联网也是类似的,现在也没人提了。

    c. 现在很少人说大数据了,转而说起AI

    雷军的"站在风口,猪都可以起飞",从好的方面说是人要借势,从坏的方面说就是太急功近利。
    要保持长久竞争力,必须不断付出、不断学习。我现在都还在学习android呢
    我们需要结合现有基础、兴趣、专长、就业来选择学习方向。
    1. 如果是嵌入式相关专业的,有C语言基础、有单片机基础、有硬件基础,那可以选择在嵌入式方面深造,
    后续可以再向上延伸到APP、整个产品的架构设计


    2.对于什么基础都还没有的人,你就要慎重选择,多上51CTO看看职位需求量、薪资,再考虑自己的兴趣。


    3. 大概率来说,有付出才有收获,要收获更多必须付出更多。
    无论是嵌入式,还是大数据、互联网,都需要我们在行业里深耕细作,站在塔尖的收入高的,永远是付出了极大努力的少部分人 
    另外说一句,别去学习"Linux运维",它不是嵌入式。

    附上今天查的51CTO的职位与薪水,给大家看看,嵌入式没那么神话,似乎薪水是要高点。

     

     


    再结合嵌入式的工作量,单位时间收入绝对高于APP开发。
    我在中兴时加班是为了学习,不是为了工作;而其他做APP的同事加班是为了赶工。

    4.刚买开发板不久,在学习嵌入式,想从机械转嵌入式,有点编程和电子基础,觉得以我的耐心和决心是可以进入这一行的,只是时间问题。而且老师教的很不错,喜欢老师的语言精简,思路清晰。教学方式很有原则,唯利是图的事情做不出,感同身受
    如果计划顺利的话我还会买老师的第二期第三期第四期。请教老师,我想从嵌入式软件进发,渐渐贯穿嵌入式,该怎么做比较好,一直没有清晰的思路。 

    答:贯穿嵌入式,这个想法很好。从两条路出发:底层系统、APP开发。先说底层系统,你有编程和电子基础,那么沿着我们的第1期、第2期学习是很好的,要注意的是看视频时一定要自己写代码,学完第2期,你已经俱备了底层开发能力,这时你还缺实际经验,需要换不一样的板子来实践,比如TI的板子,这样才能深入

    5、韦老师好,我玩过51、stm32单片机,有这些基础,然后现在想开始学arm、linux这些,想问在以后看视频学完后,怎样可以提高我的实践应用水平呢?

    :2个办法:一是看视频时,看完一个视频就关掉,尝试自己写出代码;二是学完后,换一个板子写出代码。如果换了板子还可以把视频中的程序写出来,绝对可以直接参加工作。换,比如选TI、全志的,这是为了练手;Linux驱动=软件框架+硬件操作;我们的视频已经讲清楚了软件框架,这个通用;视频中也演示了怎么操作2440硬件,换板子就是要练习怎么操作其他板子的硬件,并练习框架。

    6、学了51了想入手嵌入式,原本想继续学32但看了你回复其他人的贴,我应该怎么走接下来的路?因为是一路踏踏实实走下来的,感觉51和c学的都还过得去,

    答:就我本人的经历:
    51单片机-->周立功的ARM7-->最后上手了ARM9开始LINUX学习。
    现在很多人还是用这套路线:
    51单片机-->STM32-->再换一个板子学习LINUX。
    这条路线不能说错,但是今时不同往日,现在有更好的选择;再用老路线效率太低。

    我先说200x年左右嵌入式Linux的教程状况:
    2005年左右,嵌入式Linux才兴起,那时wince还占主流;市面上嵌入式Linux的书是很缺乏的,不要说好书,连相关的书都没有。
    市面上能找到的,只有周立功的ARM7书、开发板,使用IAR这些工具开发单片机程序,就跟现在的STM32一样。
    那时学习LINUX的人,只能靠论坛: http://www.linuxforum.net倒闭了,http://www.chinaunix.net转型了;以前你们可以在这些论坛上看到我以"dswei"为名疯狂发贴,现在看起来都是些弱智问题。

    周公的书,再结合杜春蕾的<ARM体系结构与编程>让我对ARM的架构有所了解,
    然后开始自学之路:我2005年闭门自学了半年LINUX,然后才到中兴工作。
    你看,那时没有更好的教程,学习ARM7是为了熟悉ARM架构;
    现在有了更好的教程,再去学习STM32的话,效率就太低了。

    理由如下:
    1.WINDOWS下好的IDE封装了很多细节,而这些细节在学习LINUX时很重要
    STM32使用iar,keil, mdk等工具,你直接写main函数、直接用C函数写中断。
    那么,你只学会了怎么调用函数、只学会了怎么看芯片手册操作寄存器,你无法学习这些:
    ① 程序从第1条命令开始怎么执行?
    ② 程序如何布局、怎么写链接脚本
    ③ 如何重定位代码段、数据段、如何清除BSS段
    ④ 中断发生时,怎么保护现场、怎么调用C语言写的中断函数、怎么恢复现场


    2. 学习STM32时,你无法接触到LINUX;我们后续学习LINUX时,需要用到UBUNTU这些PC LINUX开发环境,在UBUNTU下写程序跟使用IDE写程序有很大不同。
    在ubuntu下开发单片机程序,你可以:
    ① 编译器的各类选项由你控制
    ② 源文件的管理由你写的Makefile控制
    ③ 你在WINDOWS下编程,再上传到ubuntu来编译,这套流程跟工作时是一样的


    3. 最重要的一点:
    STM32无法运行LINUX,你学习LINUX时需要再换一套板子。
    STM32的知识对学习LINUX有一丁点帮助,
    但是我直接使用能运行LINUX的板子来学习LINUX裸机开发,再回头看STM32那简直是小菜一碟。
    学习LINUX裸机/单片机开发的所得,远超 STM32单片机开发

    以上回复基于这个假设:嵌入式Linux是目前嵌入式发展的大方向。如果你觉得单片机可以打天下,那当我没说。
    就技术来说,会嵌入式LINUX的人,肯定会单片机。Linux中用到的u-boot,就是单片机程序的集大成者。而单片机再牛的人,入门LINUX还至少需要半年,很多概念、观念完全不同。

    我在2005年已经用单片机自己写了操作系统,你们可以在百度上搜mmuos ,应该可以看到这句话:mmuos 这是一个不到2000行的操作系统,巧妙地利用ARM9 CPU的内存管理单元(MMU)实现进程的切换。
    那时我对单片机已经很熟很熟很熟了,还是要闭关学习半年LINUX。

    我开发产品时,会基于性价比选择方案,该用单片机就不会用LINUX,该用LINUX就不会用单片机。
    小米智能插座用的就是单片机,如果强上LINUX只能亏本;
    智能网关只能用LINUX,用单片机你永远做不出来,在网络方面单片机永远是阉割版。大疆无人机就是单片机+LINUX的组合。

    我不希望51单片机、STM32的从业者来攻击我,就单片机领域,重点在于丰富的实际经验,怎么更快、更稳定、更精确、成本更低地解决问题,一个经验丰富的单片机工程师工资也不会低。实时性单片机的强项,是LINUX的弱点,两都都懂,饭碗才牢靠。比如:一个机器手臂中有一大堆单片机,LINUX可能只是主控。

    技术归技术,市场归市场,
    就技术来说,嵌入式Linux包含了单片机。

    工作时,
    如果要用单片机,我会选择IAR、MDK这些工具,选择合适的芯片,调用厂家实现的库;
    如果要用LINUX,我会选择全志、瑞芯微这些国产芯片,不在乎它们芯片手册是否开放,最好他们已经做好所有驱动。
    工作时,成本第一、效率第一。但是学习时,我要追根究底,学得更多。

    7,学您的三期大约需要多长时间呀?按照一天三个小时的话,在看您的裸机视频,前面的还好,特别是后面,也要重复的看,才能明白。我是先看一遍,然后再边看你的视频,然后再敲代码,之后再离开视频,重新来一遍,可能急功近利吧,有时候操作完了,真得就不想写了,我以前的同学们,用32,感觉他们就是移植代码,网上去找一个就好了。然后把几个程序拼在一起。我也想学的踏实点,但是感觉学的太慢。是不是花在上面的时间不够呀?

    答:新的第1期用时1到2个月;第2期至少3个月;第3期也要2、3个月。 整个LINUX的入门需要6个月以上,全天学习。 我是辞职半年闭门自学的,当然那时资料没现在丰富,你也许可以加快1、2个月吧。

    8我只是个普通的专科生,在嵌入式就业这方面会不会有点困难,根据您的经验,要是我在没有任何开发经验,只是学完了您的课程,在深圳,成都,这两个地方就业怎么样啊?

    :实际上,我的视频实战性很强,因为是现场写代码、现场调试。但是纸上得来终觉浅,你得实践。我们不好找到实习岗位,但是可以换一个板子来把视频中的程序写出来。这样,你简历就有底气写上经验了。嵌入式大本营非广东莫属,成都近来发展也不错,最好直接上招聘网站看看哪个城市需求多。

      

    9学嵌入式怎么选择开发板?

    答:1.不要追赶新的芯片、不用在乎CPU架构
    2.主要看芯片手册开放程度、学习资料是否丰富
    先说第1点,看图说话:

     

    一个芯片的结构如上,除了CPU,芯片里还有很多设备(UART、I2C、USB等),芯片外还可以接很多设备(网卡、GPS等)。
    有一个错误的概念:
    S3C2440过时了、ARM9过时了,现在4核都出来了,ARM9没用了!
    一款芯片,上面有CPU,还有众多的片上设备、片外设备
    写程序时并不涉及CPU,只是去操作这些设备。
    所以:
    差别在于片上设备,在于外接的设备, 不在于CPU核;
    差别在于芯片上寄存器操作不一样, 不在于CPU核;
    写程序并不涉及CPU的核心,只是操作CPU之外的设备,
    只是读写这些设备的寄存器。
    写程序, 无论CPU是ARM9、ARM11、A8还是A9,对我们来说是没有差别的。

    现在我们知道了,CPU架构不应该是选择开发板进行学习时的参考条件
    即使你现在选择了最先进了芯片,到你工作时,还会有更先进的芯片面市,追赶不及的。
    我使用S3C2440入门,在工作中用过TI的达芬奇、君正的JZ4775、全志的H3,甚至还用过MIPS架构的芯片(型号忘记了),
    原理相通!我在S3C2440上学习到的知识都可以用在这些芯片上。

    再来说第2点,现在哪款芯片的LINUX学习资料最丰富?
    先否决国产芯片,因为资料不开放。
    我曾经去拜访全志公司,想用它们的芯片写书,但是连NAND控制器的操作都不开放啊。
    做产品时用国产芯片,学习时还是选择资料开放的芯片吧。
    国外芯片有三家开放程序比较高:三星、TI、Freescale。
    谁的资料最丰富?还是看图说话,说话要有证据:

    S3C2440的CPU频率高于S3C2410,除了CPU频率有所不同,其他操作几乎一样。
    国内学习LINUX的人,从200x年开始都是用s3c2410/s3c2440入门的,
    所以它们的学习资料最丰富!
    三星系列芯片有个特点,短命!
    S3C2410/S3C2440停产了,
    S3C6410也停产了,
    S5PV210也停产了,
    exynos4412也停产了!
    但是,挡不住市场存货大啊,s3c2440还一直有货,作为学习完全没问题;
    做产品的话还是选择国产芯片吧。
    s3c6410、s5pv210这些就算了,大家都是停产的命,资料远没有s3c2440多。

    为什么不选择TI?
    TI以前资料并不开放,最近几年才开放的,所以在网上它的学习资料比不了s3c2440。
    以后我也许会选择TI吧,但是教程的系统化、教程的完善至少还需要2年,有这2年你都学会了。
    现在建议你还是用S3C2440,S3C2440资料最成系统,有书有视频,遇到问题一百度就解决了。

    为什么不选Freescale?
    i.mx6性能强大,但是贵!复杂!!资料更缺乏!!!算了吧

    终点结论:
    1.学习:用s3c2440,因为资料最系统、最丰富
    2.实践:换TI的am3358或am437x,把教程中s3c2440的驱动在TI的板子上写出来,
    换板子后,你会碰到各类问题,你会把各类教程中讲到的、你未曾深入的知识再思考一次,最终掌握。
    换板子后,你能把那些驱动写出来,你的简历一定言之有物了!这就是你的工作经验,你不再是小白,绝对可以找到工作了。

  • 相关阅读:
    Windows服务的安装及配合定时器编写简单的程序
    关于VS2019使用Git时遇到的Bug
    记一次工作中的小BUG
    .Net WebApi接口Swagger集成简单使用
    kettle 创建数据库资源库
    C# 语法 i++;++i;i--;--i
    MSDN
    Jenkins持续集成(下)-Jenkins部署Asp.Net网站自动发布
    Jenkins持续集成(上)-Windows下安装Jenkins
    自动发布-asp.net自动发布、IIS站点自动发布(集成SLB、配置管理、Jenkins)
  • 原文地址:https://www.cnblogs.com/weidongshan/p/7885053.html
Copyright © 2011-2022 走看看