龙空技术网

韦东山老师问答精彩集锦

韦东山嵌入式Linux 796

前言:

如今兄弟们对“周立功 linux”大体比较注意,各位老铁们都需要学习一些“周立功 linux”的相关知识。那么小编同时在网上汇集了一些对于“周立功 linux””的相关文章,希望我们能喜欢,同学们快快来学习一下吧!

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

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布板、画线外包很便宜、很便宜、很便宜!便宜到不需要你去学习。

在公司里定位尴尬,软件组的人认为我是搞硬件的,硬件组的认为我是搞软件的:

答:我猜测你们公司的产品硬件相对固定,核心技术在于APP;你只是做些内核、驱动的维护工作。

在这样的公司,即使我去,也不会得到重用的。

我相信你的时间应该比较充裕,建议如下:如果对公司的产品感兴趣,可以去掌握一下APP、业务;如果没兴趣,可以学一下android

最后,如果做出了这些努力,在公司里还不能上一个台阶,就换工作吧。

要不要学习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看看职位需求量、薪资,再考虑自己的兴趣。

大概率来说,有付出才有收获,要收获更多必须付出更多。

无论是嵌入式,还是大数据、互联网,都需要我们在行业里深耕细作,站在塔尖的收入高的,永远是付出了极大努力的少部分人

另外说一句,别去学习”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一样。

周公的书,再结合杜春蕾的<ARM体系结构与编程>让我对ARM的架构有所了解,

然后开始自学之路:我2005年闭门自学了半年LINUX,然后才到中兴工作。

你看,那时没有更好的教程,学习ARM7是为了熟悉ARM架构;

现在有了更好的教程,再去学习STM32的话,效率就太低了。

理由如下:

1.WINDOWS下好的IDE封装了很多细节,而这些细节在学习LINUX时很重要。

STM32使用iar,keil, mdk等工具,你直接写main函数、直接用C函数写中断。

那么,你只学会了怎么调用函数、只学会了怎么看芯片手册操作寄存器,你无法学习这些:

① 程序从第1条命令开始怎么执行?

② 程序如何布局、怎么写链接脚本

③ 如何重定位代码段、数据段、如何清除BSS段

④ 中断发生时,怎么保护现场、怎么调用C语言写的中断函数、怎么恢复现场

学习STM32时,你无法接触到LINUX;我们后续学习LINUX时,需要用到UBUNTU这些PC LINUX开发环境,在UBUNTU下写程序跟使用IDE写程序有很大不同。

在ubuntu下开发单片机程序,你可以:

① 编译器的各类选项由你控制

② 源文件的管理由你写的Makefile控制

③ 你在WINDOWS下编程,再上传到ubuntu来编译,这套流程跟工作时是一样的

最重要的一点:

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的板子上写出来,

换板子后,你会碰到各类问题,你会把各类教程中讲到的、你未曾深入的知识再思考一次,最终掌握。

换板子后,你能把那些驱动写出来,你的简历一定言之有物了!这就是你的工作经验,你不再是小白,绝对可以找到工作了

拓展阅读:

「重磅推荐」嵌入式Linux经典书单(部分含视频)

韦东山:悦己之作,方能悦人

标签: #周立功 linux #c语言c2440错误