学习嵌入式,要如何学好嵌入式

学习嵌入式,要如何学好嵌入式,第1张

学习的费用时长不等,根据自己所学习的课程而定。

选择机构最佳的方法就是实地了解,免费上一课体验下才知道好坏和适不适合

→点击了解周末免费试学

室内设计是近年来大火的一个职业,随着人们生活水平提高,人们对于居所的要求越来越高,以前流行批量生产,再到现在流行个性化定制,室内设计工作的重要性得到越来越多人的重视。

就目前来说,我们在学习时最好报一个像天琥教育的大型培训机构来学习,天琥严格把控师资力量,800多名设计讲师都是通过层层考验精挑细选出来的。设计讲师拥有丰富的设计从业经验,熟悉设计工作流程,给学员传授技能知识的同时,还会传授职场工作的技巧,让学员更好地融入职场工作。

程序员如何掌握计算机英语程序员是一项很辛苦的工作,要成为一个高水平的程序员尤为艰难。这是因为计算机软件技术更新的速度越来越快,而这些技术大多来源于英语国家,我们在引进这些技术时往往受到语言障碍的制约,严重影响到对新技术的理解和消化。首先编程本身就依赖于英语,虽然现在技术的发展,可以使得某些开发工具在变量名和字段名中支持中文,但还未发现能够完全使用中文的编程语句。其次,软件开发中的技术文档和资料大都是来自英文,即使有翻译好的,不是晦涩难懂,就是译法混乱,比如:roll back就有"回滚"、"回退"、"返回"、"重算"等多种译法,又如我们遇到翻译后的术语"域",往往不清楚译者是根据"field"、"region"还是"domain"所译(如果阅读原文则不存在这些问题)。还有更重要的一点,这就是等待译文会严重影响我们掌握新技术的时间。通常,一本外版计算机图书从获得版权到翻译出版要一年的时间。就算原作者消化新技术和写作的时间最短为一年,那么加起来这已经超过通常软件版本的更新周期(软件版本的更新周期一般是1年至2年),这意味着当你通过阅读翻译资料掌握这一版本的软件时,可能该版本已经淘汰至少是面临淘汰。当然,这并不是说国内没有好的译者和译文,也不是说不能通过阅读译文来进行学习。而是说通过别人翻译的间接阅读风险较大,如果能掌握计算机英语,利用第一手原文资料进行学习,除了效率之外,被误导的风险较小。比如:国内引进的一部外版好书《Java编程思想》(原书名《Think in Java》),其翻译水平较差,就严重影响了阅读和学习,不少读者深有体会。如果读着有着过硬的计算机英语水平就可以按照书上提供的作者网址下载原文阅读,不但可以获得原汁原味的感受,还可以免费下载该书最新的第二版(据悉机械工业出版社已经取得该最新版本的版权,但该书要到2001年上半年才能面市)。

因此,我们可以得出这样的结论,干程序员这行实在是离不开英语。实际上,可以毫不夸张地说英语是IT的行业语言。由于英语的优势,印度、爱尔兰等国的软件业在国际上比我们更有竞争力,这并不是说我们的程序员在编程和开发能力上不如别人,而是在使用计算机英语水平上差距太大。不久前在南京举办的一次高规格的软件开发交流会上,就遇到过印度专家讲课,英文翻译译不下去的情景,因为太多的IT专用术语和缩略语以及很强的专业知识使得没有计算机背景的英语专业翻译无能为力,而在场的开发人员因为语言障碍又无法和印度专家直接沟通,错过了一次极好的交流学习机会。现在,已经有越来越多的程序员意识到计算机英语的重要性了,这种压力一方面来自进一步向高级程序员或资深IT开发人员发展的需要,一方面来自于后起之秀不断竞争的威胁。对于前者,没有较好的计算机英语,能难进一步发展,晋升到更高的技术职位;对于后者,不少大学已经开始使用原版教科书进行专业授课,毕业生的计算机英语水平实在是后生可畏,挑战是不言而喻的。

那么,一个程序员应该怎样去学习和掌握计算机英语呢?是立即开始背英汉计算机字典还是先考完6级再考"托"考"G"?其实,在下定决心之后最关键的是要搞清6个W,即:为什么学(why)、学什么(what)、怎样学(how)、何时学(when)、何处学(where)、跟谁学(who)。下面我们就谈一谈这6个W。

首先是为什么要学计算机英语。几乎所有的程序员都知道学习计算机英语的重要性,但并不是所有人都具有学习的主动性。这个问题的提出就是要让我们从自身的需求出发,掌握学习的主动性。一旦你有强烈的学习动机,任何学习上的困难都不会认你屈服,而你的每一点进步都将给你带来无比自豪的感觉。

学什么,是死背单词?还是猛抠语法?其实都不是。计算机英语的学习是一项系统工程,需要找到一个适合自己的学习目标,并从词汇、语法、阅读、写作多方面去融汇贯通。用程序员的术语讲,"学什么"的问题本质上是一个"确定系统边界"的问题。应为学习计算机英语是一个很宽泛的概念,若不根据个人的具体情况进行定义,恐怕难以有一个可以管理学习目标。无目标的或边界不清的项目往往是失败的项目,在学计算机英语的问题上也是一样。因此,我们先要根据自己的实际英语水平和工作需要界定计算机英语学习的系统边界。关于实际英语水平,我们可以简单地以大学非英语专业的英语教育作为参考,以通过大学英语四级考试(CET4)作为基线,即如果你通过了CET4,则表明你的英语水平为中高级,词汇量接近5千,不存在基本的语法问题,有一定的读写能力;如果你没有通过CET4,则表明你的英语水平为初中级,词汇量不足4千,可能存在一些语法问题,读写能力较弱。关于工作需要,我们可以将计算机英语学习对象划分成计算机研发人员、泛IT人员。其中计算机研发人员是指从事计算机研究和开发的专业人员,他们又划分为软件研发和硬件研发,显然程序员是属于前者。计算机研发人员要掌握的计算机英语最专业,要求最高,但软件硬件各有侧重。泛IT人员是指在IT行业从业的或与IT行业有密切联系的那些非研发人员,包括 *** 作使用人员、技术管理人员、支持服务人员等等。不难看出,泛IT人员对计算机英语的要求不是太高,也不太专业,一般能够使用英文界面的软件,能够阅读原版的 *** 作手册和说明书即可。针对以上的划分,我在下表中大致给出了计算机英语的学习目标:

表1 计算机英语的学习目标

初中级 中高级

泛IT行业人员 掌握计算机英语的基本术语;

了解计算机英语中常用的语法和惯用法;

能借助字典阅读英文界面和在线帮助以及简单的 *** 作手册,阅读熟读在70-90词/分钟。 掌握计算机英语的常用术语和缩略语; 掌握计算机英语中语法和惯用法的表达方式和功能;

能借助字典阅读英文文档和技术资料,阅读熟读在100词/分钟以上;

能使用英文编写简单的文档。

计算机研发人员 掌握计算机英语的常用术语和缩略语;

熟悉计算机英语中的语法和惯用法;

能阅读英文界面和在线帮助以及简单的 *** 作手册,阅读熟读在80-100词/分钟。 掌握大量的计算机英语术语和缩略语;

熟练掌握计算机英语中语法和惯用法的表达方式和功能;

能阅读英文文档和技术资料,阅读熟读在100词/分钟以上;能借助字典翻译专业技术图书。

能使用英文编写简单的技术文档和程序注释。

知己知彼,百战不殆。在了解了学习计算机英语的一般要求之后,接下来就需要对自己的具体情况进行具体分析,制定一个学习计划或简单地定一个学习方向。作为程序员学习计算机英语的根本目的是为了提高自己在英语环境中掌握计算机技术的能力,所以学习的内容应该是围绕本专业的领域展开。对于没有上过计算机专业英语课程的程序员来说,学习的重点应该是掌握专业词汇和术语,了解计算机英语的一些规范译法和习惯用法。对于有一定计算机英语基础的程序员则应该把重点放在提高阅读速度和阅读质量上,并逐渐习惯使用英语注释程序撰写文档。

在明确学习目的和学习方向之后,还必须有一个好的学习方法,"怎样学"就是一个学习方法问题。这其中还包含了何时学、何处学、跟谁学等一系列问题。

在这里我建议把短期的系统学习和长期的日常学习结合起来,这样做的效果最好,也最科学。所谓短期的系统学习是指集中一段时间系统地学习计算机英语,这对于没有参加过大学计算机英语课程学习程序员尤为重要。而日常的学习则是指在日常工作用有意识地多接触和多使用计算机英语,边用边学,持续不断地积累提高。下面我就从这两个方面来具体谈一谈。

要系统地学习计算机英语,最好是参加专门的计算机英语课程培训班。培训班的选择非常重要,好的老师、成功的办学经验和系统的课程设置都是选择的重要依据。然而大多数程序员工作繁忙,可能采取的方式多是自学了。如果不能选择一位好老师,那就只能选择一本好教材了。一本好的计算机英语教材对系统地学习计算机英语帮助极大。目前市面上的计算机英语教材多达30种,在选择教材时不少程序员往往无从下手,大家不妨从以下几方面进行考虑:

教材的难易程度--对于不同学历层次有不同的教材,选择教材是一定要看清该教材的培训对象是中专、大专、本科还是研究生。选择难易程度适合自己的教材,太简单则不利于提高、太难则容易使学习受挫。

教材的专业侧重--有的计算机英语教材偏重于硬件,有的偏重于软件,还有的教材是信息电子类的计算机英语,侧重于通信电子方面,比如:汇编语言、单片机等。另外有的教材侧重于理论,如:数据结构、离散数学;而有的则侧重于应用,如:软件工程、数据库开发。所以程序员在选择计算机英语教材时,应仔细察看书中的内容,以免偏离软件开发的实际工作需要。

教材的体系结构--目前计算机英语教材主要分为按语法体系组织和按计算机体系组织的两种结构。如果你是初中级的英语水平建议使用前者,如果你是中高级的英语水平建议使用后者。

教材的易用性--教材的易用性是指教材的编排是否符合人们的学习习惯。虽然计算机英语是专业课程教材,但如果编排活泼、图文并茂、注解查阅方便肯定能调动学习的兴趣,降低阅读的难度。这方面国内的教材应该多向国外的教材学习。

然而国内许多大学的计算机英语课程作为专业英语教学起步较晚,而早期出版的计算机英语教材大多出自于任课老师收集的计算机英文资料,教材规划不够系统,编排也比较简单。这些教材虽然使用的学校较多,为早期的计算机英语教学做出过不可磨灭的贡献,但致命的弱点是内容陈旧、与时代脱节。最典型的代表是清华大学出版社的《计算机英语》,该书最新版本是1997年更新的,里面还充斥着Dos这样的陈旧内容。有些老师苦于没有新颖实用的计算机英语教材,于是一本国外的计算机入门读物《Computing Essentials》(McGraw-Hill出版公司)被许多大学选用为计算机英语教材,效果极佳。这本书现在已经由高等教育出版社影印发行,书名是《计算机专业英语》。该书的特点是:时效性强(版本更新快),新颖实用,编排活泼。但对于中高级英语水平的专业开发人员未免有点太浅。

我们在分析和研究了市面上大量计算机英语教材的基础上,又结合计算机英语教学和学习经验,编写了一本非常适合于软件开发人员的《计算机英语》,该书已经由机械工业出版社出版,是该社"重点大学计算机教材"系列中的一本。需要说明的是该书最适合的读者对象为英语达到CET4的程序员,因为该书的选材直接来自国外计算机教材和出版物、技术文档和专业论文、IT精英的言论以及计算机方面的大百科全书,这样的选材在保持原汁原味的同时使学习者更能接触到计算机英语的真实语境和主流思想,虽然有一定的难度,但非常实用和专业。同时为便于学习,我们为超出CET4的词汇和一些专业术语都进行了注释,而且注释就在课文旁边,免去了翻查生词表的麻烦。这本书适合于程序员的另一条重要原因是全书侧重于软件和应用,没有枯燥繁琐的理论。计算机英语是用来学习专业英语的,而不是用来学习计算机理论的。我们没有像其他的计算机英语教材那样,充斥了大量难懂的计算机理论文章,而这些理论本身就非常难学。这本教材与其它计算机英语教材不同的地方还在于它更关注计算机素养、计算机应用以及IT对社会和生活的深刻影响。在这里我们可以聆听到IT精英比尔·盖茨和IBM公司CEO郭士纳的精彩演讲,也能拜读到英特尔公司前总裁葛洛夫的惊世之作《只有偏执狂才能生存》的序言。

系统学习计算机英语,这里的系统性包括了计算机体系的系统性和英语语言的系统性,我们在学习时必须时刻牢记。除了借助计算机英语教材系统地了解计算机硬件软件、 *** 作系统、软件工程、编程语言、网络通信、信息安全、应用系统等诸方面的英语表达和专业词汇外,还要对英语语言本身从听、说、读、写四个方面下功夫,以免出现偏废。有些程序员就是因为在听和说方面偏废,以至于影响到出国发展。如何加强听和说的训练,这是关于英语学习的话题,我自己的一个经验是多看原版**(VCD/DVD)以提高听力(当然不能看字幕),多参加英语聊天(英语角)以提高口语。

计算机英语的学习不同于考"托"考"G",无法靠短期的突击来完成。长期的日常学习尤为重要。所谓的日常学习并不需要你抛开工作,安排专门的时间,而是边用边学。比如,你为了解决编程上的一个问题,查阅英文的帮助或技术资料。然而,不少程序员不太喜欢看英文,他们喜欢使用中文版的软件,喜欢汉化的帮助,喜欢读翻译好的书。这实际上就错过了许多日常学习计算机英语的机会。不可否认,读中文肯定比读英文方便,节省时间,但从长期的发展来看,弊大于利。这种对翻译的依赖使许多程序员失去了获取一手资料的宝贵机会。

其实,既然你已经通过对计算机英语的系统学习掌握了一定数量的专业词汇,就完全可以借助字典去使用那些原文资料和在线帮助,加上有金山词霸这样的工具,阅读原文并不很困难,关键是一个习惯问题。我有一个朋友,在自己的电脑里从不装任何中文版或汉化软件,连上网聊天也坚持用英文。几年下来英语突飞猛进,效果甚佳,有志者不妨一试。

在日常工作中大量阅读英文书籍和资料是提高计算机英语水平的最佳途径。目前市场上大量的计算机原版影印图书为我们提供了绝好的机会。阅读英文计算机图书一开始是"啃"的感觉,比较费时费力,对于不太好读的地方,不妨拿起笔来逐行逐字翻译出来,这样对提高英语水平很有帮助。对于有经验的程序员可以利用自己的专业背景知识和上下文(Context)进行大胆推测,这样有利于提高阅读速度。即使是不求甚解,也不要紧,你可以通过多读同类书来弥补。原版计算机书读多了,你会发现一些很有规律的东西和一些常用的词汇,这些来自实践的经验非常宝贵,并让你终生受益。一般在完整阅读2-3本原版书以后,你就能发现读原版书的乐趣。值得一提的是读原版书的真正乐趣并非只是在于提高英语水平,而更是在于获得一种和西方人一致的思维方式,这种思维方式对学习计算机技术极为有益,因为计算机技术甚至现代科学体系都是建立在这种思维方式的基础之上的。坚持阅读英文计算机图书可以达到"品"的感觉,这种感觉是指在阅读时无需将英文转换为中文,而是直接用英文和作者在同一个水平线上进行思考和交流。至此,我们获得的不仅是英语水平的突破,更是计算机水平的突破。这也是许多计算机高手成功的秘密。

如果你有一定的英语基础,并希望突破计算机英语的障碍并成为高手,从现在起就养成一个学用计算机英语的良好习惯吧。下面是你可以立即选择的努力方式:

1、 给自己起一个英文名字。并用作网名和登录名。

2、 立即将自己电脑中的所有中文版或汉化软件换成英文版。连Windows也用英文的。

3、 选一本适合自己的计算机英语教材。

4、 保证一年至少读1-2本原版影印的计算机书,并坚持读完。

5、 上网尽量多访问英文的技术论坛和网站。不使用汉化的帮助。

6、 在程序中使用英文注释。坚决不用中文或汉语拼音作变量名、字段名、文件和文件夹名。

7、 每月至少看1-2部原版**(VCD/DVD),尽量不看字幕,提高语感和听力。

8、 不看中英文对照读物,但可以看注释读物。多使用英英字典,少使用英汉字典。

9、 每天坚持记录和复习遇到的生词。对于缩略语,一定搞清每个字母的英文含义。

如果你还有什么更好的方法不妨也提出来和我们交流,以便使更多的程序员收益。

原文链接:网页链接

嵌入式Linux学习路线图

我是1999年上的大学,物理专业。在大一时,我们班里普遍弥漫着对未来的不安,不知道学习了物理后出去能做什么。你当下的经历、当下的学习,在未来的一天肯定会影响到你。毕业后我们也各自找到了自己的职业:出国深造转行做金融、留校任教做科研、设计芯片、写程序、创办公司等等,这一切都离不开在校时学到的基础技能(数学、IT、电子电路)、受过煅炼的自学能力。

所以,各位正在迷茫的在校生,各位正在尝试转行的程序员,未来一定有你的位置,是好是坏取决于你当下的努力与积累。

我不能预言几年后什么行业会热门,也不能保证你照着本文学习可以发财。我只是一个有十几年经验的程序员,给对编程有兴趣的你,提供一些建议。

1程序员的三大方向

程序员的方向,一般可以分为3类:专业领域、业务领域、 *** 作系统领域。你了解它们后,按兴趣选择吧。

对于专业领域,我提供不了建议。

业务,也就是应用程序,它跟 *** 作系统并不是截然分开的:

①开发实体产品时,应用程序写得好的人,有时候需要 *** 作系统的知识,比如调度优先级的设置、知道某些函数可能会令进程休眠。

②写应用程序的人进阶为系统工程师时,他需要从上到下都了解,这时候就需要有 *** 作系统领域的知识了,否则,你怎么设计整个系统的方案呢?

③做应用程序的人,需要了解行业的需求,理解业务的逻辑。所以,当领导的人,多是做应用的。一旦钻入了某个行业,很难换行业。

④而 *** 作系统领域,做好了这是通杀各行业:他只负责底层系统,在上面开发什么业务跟他没关系。这行很多是技术宅,行业专家。

⑤ *** 作系统和业务之间并没有一个界线。有 *** 作系统经验,再去做应用,你会对系统知根知底,碰到问题时都有解决思路。有了业务经验,你再了解一下 *** 作系统,很快就可以组成一个团队自立门户,至少做个CTO没问题。

11 专业领域

它又可以分为下面2类。

111 学术研究

比如语音、图像处理、人工智能,这类工作需要你有比较强的理论知识,我倾向于认为这类人是“科学家”,他们钻研多年,很多时候是在做学术研究。

在嵌入式领域,需要把他们的成果用某种算法表达出来,针对某种芯片进行优化,这部分工作也许有专人来做。

112 工程实现

也有这样一类人,他们懂得这些专业领域的概念,但是没有深入钻研。可以使用各类开源资料实现某个目标,做出产品。比如图像处理,他懂得用opencv里几百个复杂函数来实现头像识别。有时候还可以根据具体芯片来优化这些函数。

“专业领域”不是我的菜,如果你要做这一块,我想最好的入门方法是在学校学习研究生、博士课程。

12 业务领域

换句话说,就是应用程序,这又可以分为下面2类。

121 界面显示

做产品当然需要好的界面,但是,不是说它不重要,是没什么发展后劲。

现在的热门词是Android APP和IOS APP开发。你不要被Android、IOS两个词骗了,它们跟以前的VC、VB是同一路货色,只是、仅仅是一套GUI控件的实现。

希望没有冒犯到你,我有理由。

一个程序需要有GUI界面,但是程序的内在逻辑才是核心。Android、IOS的开发工具给我们简化了GUI的开发,并提供了这些控件的交互机制,封装并提供了一些服务(比如网络传输)。但是程序内部的业务逻辑、对视频图像声音的处理等等,这才是核心。另外别忘了服务器那边的后台程序:怎样更安全地保存数据、保护客户的隐私,怎样处理成千上万上百万的并发访问,等等,这也是核心。

但是,从Android、IOS APP入门入行,这很快!如果你是大四,急于找到一份工作,那么花上1、2个月去学习Android或IOS,应该容易找到工作,毕竟APP的需求永远是最大的,现在这两门技术还算热门。在2011、2012年左右,Android程序员的起薪挺高,然后开始下滑。Android APP的入门基本只要1个月,所以懂的人也越来越多。2013、2014年,IOS开发的工资明显比Android高了,于是各类IOS培训也火曝起来。中华大地向来不缺速成人才,估计再过一阵子IOS工程师也是白菜价了。

会Android、IOS只是基本要求,不信去51job搜搜Android或IOS,职位要求里肯定其他要求。

122 业务逻辑

举个简单例子,做一个打卡软件,你需要考虑这些东西:

①正常流程是上班下班时都要打卡

②有人忘记了怎么办?作为异常记录在案,推送给管理员

③请假时怎么处理?

④加班怎么处理?

对于更复杂的例子,视频会议系统里,各个模块怎么对接,各类协议怎么兼容,你不深入这个行业,你根本搞不清楚。

应用开发的职位永远是最多的,入门门槛也低。基本上只要你会C语言,面试时表现比较得体,一般公司都会给你机会。因为:

①你进公司后,还需要重新培训你:熟悉它们的业务逻辑。

②你要做的,基本也就是一个个模块,框架都有人给你定好了,你去填代码就可以了。

说点让你高兴的事:软件公司里,做领导的基本都是写应用程序的(当然还有做市场的)。写应用程序的人,对外可以研究市场接待客户,对内可以管理程序员完成开发,不让他做领导让谁做?

如果你的志向是写应用程序,那么我建议你先练好基本功:数据结构、算法是必备,然后凭兴趣选择数据库、网络编程等等进行深入钻研。

最后,选择你看好的、感兴趣的行业深耕个10年吧。做应用开发的人选择了某个行业,后面是很难换行业的,选行很重要!

13 *** 作系统领域

UCOS太简单,VxWorks太贵太专业,Windows不玩嵌入式了,IOS不开源,所以对于 *** 作系统领域我们也只能玩Linux了。

在嵌入式领域Linux一家独大!

Android呢?Android跟QT一样,都是一套GUI系统。只是Google的实力太强了,现在Android无处不在,所以很多时候Linux+Android成了标配。注意,在这里我们关心的是Android的整个系统、里面的机制,而不是学习几个API然后开发界面程序。 *** 作系统领域所包含的内容,简单地说,就是制作出一台装好系统的专用“电脑”,可以分为:

①为产品规划硬件:

按需求、性能、成本选择主芯片,搭配周边外设,交由硬件开发人员设计。

②给单板制作、安装 *** 作系统、编写驱动

③定制维护、升级等系统方案

④还可能要配置、安装Android等GUI系统:

⑤为应用开发人员配置开发环境

⑥从系统角度解决疑难问题

这个领域,通常被称为“底层系统”或是“驱动开发”。

先解决2个常见误区:

①这份工作是写驱动程序吗?

看看上面罗列的6点,应该说,它包含驱动开发,但远远不只有驱动开发。

②我们还需要写驱动吗?不是有原厂吗?或者只需要改改就可以?

经常有人说,芯片原厂都做好驱动了,拿过来改改就可以了。如果,你的硬件跟原厂的公板完全一样,原厂源码毫无BUG,不想优化性能、削减成本,不想做一些有特色的产品,那这话是正确的。

但是在这个不创新就是找死的年代,可能吗?!原因有二:

①即使只是修改代码,能修改的前提是能理解;能理解的最好煅炼方法是从零写出若干驱动程序。

②很多时候,需要你深度定制系统。

以前做联发科手机只需要改改界面就可以出货了,现在山寨厂一批批倒下。大家都使用原厂的方案而不加修改时,最后只能拼成本。

举个例子,深圳有2家做交通摄像头、监控摄像头的厂家,他们曾经找我做过4个项目:

①改进厂家给的SD卡驱动性能,使用DMA。

②换了Flash型号后,系统经常出问题,需要修改驱动BUG。

③触摸屏点击不准,找原因,后来发现是旁路电容导致的。

④裁减成本,把4片DDR换为2片DDR,需要改bootloader对DDR的初始化。

这些项目都很急,搞不定就无法出货,这时候找原厂?除非你是中兴华为等大客户,否则谁理你?

我在中兴公司上班时,写驱动的时间其实是很少的,大部分时间是调试:系统调优,上帮APP工程师、下帮硬件工程师查找问题。我们从厂家、网上得到的源码,很多都是标准的,当然可以直接用。但是在你的产品上也许优化一下更好。比如我们可以把摄像头驱动和DMA驱动揉合起来,让摄像头的数据直接通过DMA发到DSP去。我们可以在软件和硬件之间起桥梁作用,对于实体产品,有可能是软件出问题也可能是硬件出问题,一般是底层系统工程师比较容易找出问题。

当硬件、软件应用出现问题,他们解决不了时,从底层软件角度给他们出主意,给他们提供工具。再比如方案选择:芯片性能能否达标、可用的BSP是否完善等等,这只能由负责整个方案的人来考虑,他必须懂底层。

在 *** 作系统领域,对知识的要求很多:

①懂硬件知识才能看懂电路图

②英文好会看芯片手册

③有编写、移植驱动程序的能力

④对 *** 作系统本身有一定的理解,才能解决各类疑难问题

⑤理解Android内部机制

⑥懂汇编、C语言、C++、JAVA

它绝对是一个大坑,没有兴趣、没有毅力的人慎选。

①这行的入门,绝对需要半年以上,即使全天学习也要半年。

②它的职位,绝对比APP的职位少

③并且你没有1、2年经验,招你到公司后一开始你做的还是APP。

优点就是:

①学好后,行业通杀,想换行就换行;想自己做产品就自己做产品。

②相比做应用程序的人,不会被经常变动的需求搞得天天加班。

③门槛高,当然薪水相对就高。

*** 作系统领域,我认为适合于这些人:

①硬件工程师想转软件工程师,从底层软件入门会比较好

②单片机工程师,想升级一下。会Linux底层的人肯定会单片机,会单片机的人不一定会Linux。

③时间充足的学生:如果你正读大二大三,那么花上半年学习嵌入式Linux底层多有益处。

④想掌握整个系统的人,比如你正在公司里写APP,但是想升为系统工程师,那么底层不得不学。

⑤想自己创业做实体产品的工程师,你有钱的话什么技术都不用学,但是如果没钱又想做产品,那么Linux底层不得不学。

⑥做Linux APP的人,没错,他们也要学习。

这部分人不需要深入,了解个大概就可以:bootloader是用来启动内核,Linux的文件系统(第1个程序是什么、做什么、各目录干嘛用)、APP跟驱动程序的调用关系、工具链,有这些概念就可以了

本文中,就把 *** 作系统默认为Linux,讲讲怎么学习嵌入式Linux+Android系统。

14 嵌入式Linux+Android系统包含哪些内容

嵌入式Linux系统包含哪些东西?不要急,举一个例子你就知道了。

①电脑一开机,那些界面是谁显示的?

是BIOS,它做什么?一些自检,然后从硬盘上读入windows,并启动它。

类似的,这个BIOS对应于嵌入式Linux里的bootloader。这个bootloader要去Flash上读入Linux内核,并启动它。

②启动windows的目的是什么?

当然运行应用程序以便上网、聊天什么的了。

这些上网程序、聊天程序在哪?

在C盘、D盘上。

所以,windows要先识别出C盘、D盘。在Linux下我们称之为根文件系统。

③windows能识别出C盘、D盘,那么肯定有读写硬盘的能力。

这个能力我们称之为驱动程序。当然不仅仅是 *** 作硬盘,还有网卡、USB等等其他硬件。嵌入式Linux能从Flash上读出并执行应用程序,肯定也得有Flash的驱动程序啊,当然也不仅仅是Flash。

简单地说,嵌入式LINUX系统里含有bootloader、内核、驱动程序、根文件系统、应用程序这5大块。而应用程序,我们又可以分为:C/C++、Android。

所以,嵌入式Linux+Android系统包含以下6部分内容:

①bootloader

②Linux内核

③驱动程序

④使用C/C++编写的应用程序

⑤Android系统本身

⑥Android应用程序

Android跟Linux的联系实在太大了,它的应用是如此广泛,学习了Linux之后没有理由停下来不学习Android。在大多数智能设备中,运行的是Linux *** 作系统;它上面要么安装有Android,要么可以跟Android手机互联。现在,Linux+Android已成标配。

2 怎么学习嵌入式Linux *** 作系统

本文假设您是零基础,以实用为主,用最快的时间让你入门;后面也会附上想深入学习时可以参考的资料。

在实际工作中,我们从事的是“ *** 作系统”周边的开发,并不会太深入学习、修改 *** 作系统本身。

① *** 作系统具有进程管理、存储管理、文件管理和设备管理等功能,这些核心功能非常稳定可靠,基本上不需要我们修改代码。我们只需要针对自己的硬件完善驱动程序

②学习驱动时必定会涉及其他知识,比如存储管理、进程调度。当你深入理解了驱动程序后,也会加深对 *** 作系统其他部分的理解

③Linux内核中大部分代码都是设备驱动程序,可以认为Linux内核由各类驱动构成

但是,要成为该领域的高手,一定要深入理解Linux *** 作系统本身,要去研读它的源代码。

在忙完工作,闲暇之余,可以看看这些书:

①赵炯的《linux内核完全注释》,这本比较薄,推荐这本。他后来又出了《Linux 内核完全剖析》,太厚了,搞不好看了后面就忘记前面了。

②毛德 *** 、胡希明的《LINUX核心源代码情景分析》,此书分上下册,巨厚无比。当作字典看即可:想深入理解某方面的知识,就去看某章节。

③其他好书还有很多,我没怎么看,没有更多建议

基于快速入门,上手工作的目的,您先不用看上面的书,先按本文学习。

21 入门路线图

假设您是零基础,我们规划了如下入门路线图。前面的知识,是后面知识的基础,建议按顺序学习。每一部分,不一定需要学得很深入透彻,下面分章节描述。

22 学习驱动程序之前的基础知识

221 C语言

只要是理工科专业的,似乎都会教C语言。我见过很多C语言考试90、100分的,一上机就傻了,我怀疑他们都没在电脑上写过程序。

理论再好,没有实践不能干活的话,公司招你去干嘛?

反过来,实践出真知,学习C语言,必须练练练、写写写!

当你掌握基本语法后,就可以在电脑上练习一些C语言习题了;

当你写过几个C程序后,就可以进入下一阶段的裸机开发了。

①不需要太深入

作为快速入门,只要你会编写“Hello, world!”,会写冒泡排序,会一些基础的语法 *** 作,暂时就够了。

指针 *** 作是重点,多练习;

不需要去学习过多的数据结构知识,只需要掌握链表 *** 作,其他不用学习,比如:队列、二叉树等等都不用学;不需要去学习任何的函数使用,比如文件 *** 作、多线程编程、网络编程等等;这些知识,在编写Linux应用程序时会用,但是在 *** 作系统特别是驱动学习时,用不着!

永往直前吧,以后碰到不懂的C语言问题,我们再回过头来学习。

在后续的“裸机开发”中,会让你继续练习C语言,那会更实战化。

C语言是在写代码中精进的。

②可以在Visual Studio下学习,也可以在Linux下学习,后者需要掌握一些编译命令,我们暂时没有提供C语言的教程,找一本C语言书,网上找找免费的C语言视频(主要看怎么搭建环境),就可以自学了。

222 PC Linux基本 *** 作:

对于PC Linux,我们推荐使用Ubuntu,在它上面安装软件非常简便。

我们的工作模式通常是这样:在Windows下阅读、编写代码,然后把代码上传到PC Linux去编译。实际上,Ubuntu的桌面系统已经很好用了,我们拿到各种智能机可以很快上手,相信Ubuntu的桌面系统也可以让你很快上手。为了提高工作效率,我们通常使用命令行来 *** 作Ubuntu。

不用担心,你前期只需要掌握这几条命令就可以了,它们是如此简单,我干脆列出它们:

①cd : Change Directory(改变目录)

cd 目录名          // 进入某个目录cd            // cd “两个点”:返回上一级目录cd -             // cd “短横”:返回上一次所在目录

②pwd : Print Work Directory(打印当前目录 显示出当前工作目录的绝对路径)

③mkdir : Make Directory(创建目录)

mkdir abc         // 创建文件夹abcmkdir -p a/b/c    // 创建文件夹a,再a下创建文件夹b,再在b下创建文件夹c

④rm : Remove(删除目录或文件)

rm  file     // 删除名为file的文件rm -rf dir   // 删除名为dir的目录

⑤ls : List(列出目录内容)

⑥mount : 挂载

mount -t nfs -o nolock,vers=2 1921681123:/work/nfs_root /mntmount -t yaffs /dev/mtdblock3 /mnt

⑦chown : Change owner(改变文件的属主,即拥有者)

chown book:book /work -R  //对/work目录及其下所有内容,属主改为book用户,组改为book

⑧chmod : Change mode(改变权限),下面的例子很简单粗暴

chmod 777 /work -R  // 对/work目录及其下所有内容,权限改为可读、可写、可执行

⑨vi : Linux下最常用的编辑命令,使用稍微复杂,请自己搜索用法。

要练习这些命令,你可以进入Ubuntu桌面系统后,打开终端输入那些命令;或是用SecureCRT、putty等工具远程登录Ubuntu后练习。

223 硬件知识

我们学习硬件知识的目的在于能看懂原理图,看懂通信协议,看懂芯片手册;不求能设计原理图,更不求能设计电路板。

对于正统的方法,你应该这样学习:

①学习《微机原理》,理解一个计算机的组成及各个部件的交互原理。

②学习《数字电路》,理解各种门电路的原理及使用,还可以掌握一些逻辑运算(与、或等)。

③《模拟电路》?好吧,这个不用学,至少我在工作中基本用不到它,现在全忘光了。

就我个人经验来说,这些课程是有用的,但是:

①原理有用,实战性不强。

比如《微机原理》是基于x86系统,跟ARM板子有很大差别,当然原理相通。

我是在接触嵌入式编程后,才理解了这些课程。

②每本书都那么厚,内容都很多,学习时间过长,自学有难度。

针对这些校园教材的不足,并结合实际开发过程中要用到的知识点,我们推出了《学前班_怎么看原理图》的系列视频:

学前班第1课第1节___怎么看原理图之GPIO和门电路wmv

学前班第1课第21节_怎么看原理图之协议类接口之UARTwmv

学前班第1课第22节_怎么看原理图之协议类接口之I2Cwmv

学前班第1课第23节_怎么看原理图之协议类接口之SPIwmv

学前班第1课第24节_怎么看原理图之协议类接口之NAND Flashwmv

学前班第1课第25节_怎么看原理图之协议类接口之LCDwmv

学前班第1课第3节___怎么看原理图之内存类接口wmv

学前班第1课第41节_怎么看原理图之分析S3C2410开发板wmv

学前班第1课第42节_怎么看原理图之分析S3C2440开发板wmv

学前班第1课第43节_怎么看原理图之分析S3C6410开发板wmv

即使你只具备初中物理课的电路知识,我也希望能通过这些视频,让你可以看懂原理图,理解一些常见的通信协议;如果你想掌握更多的硬件知识,这些视频也可以起个索引作用,让你知道缺乏什么知识。

这些视频所讲到的硬件知识,将在《裸板开发》系列视频中用到,到时可以相互对照着看,加深理解。

224 要不要专门学习Windows下的单片机开发

很多学校都开通了单片机的课程,很多人都是从51单片机、AVR单片机,现在比较新的STM32单片机开始接触嵌入式领域,并且使用Windows下的开发软件,比如keil、MDK等。

问题来了,要不要专门学习Windows下的单片机开发?

①如果这是你们专业的必修课,那就学吧

②如果你的专业跟单片机密切相关,比如机械控制等,那就学吧

③如果你只是想从单片机入门,然后学习更广阔的嵌入式Linux,那么放弃在Windows下学习单片机吧!

理由如下:

①Windows下的单片机学习,深度不够

Windows下有很好的图形界面单片机开发软件,比如keil、MDK等。

它们封装了很多技术细节,比如:

你只会从main函数开始编写代码,却不知道上电后第1条代码是怎么执行的;

你可以编写中断处理函数,但是却不知道它是怎么被调用的;

你不知道程序怎么从Flash上被读入内存;

也不知道内存是怎么划分使用的,不知道栈在哪、堆在哪;

当你想裁剪程序降低对Flash、内存的使用时,你无从下手;

当你新建一个文件时,它被自动加入到工程里,但是其中的机理你完全不懂;

等等等。

②基于ARM+Linux裸机学习,可以学得更深,并且更贴合后续的Linux学习。实际上它就是Linux下的单片机学习,只是一切更加原始:所有的代码需要你自己来编写;哪些文件加入工程,需要你自己来管理。

在工作中,我们当然倾向于使用Windows下更便利的工具,但是在学习阶段,我们更想学习到程序的本质。

一切从零编写代码、管理代码,可以让我们学习到更多知识:

你需要了解芯片的上电启动过程,知道第1条代码如何运行;

你需要掌握怎么把程序从Flash上读入内存;

需要理解内存怎么规划使用,比如栈在哪,堆在哪;

需要理解代码重定位;

需要知道中断发生后,软硬件怎么保护现场、跳到中断入口、调用中断程序、恢复现场;

你会知道,main函数不是我们编写的第1个函数;

你会知道,芯片从上电开始,程序是怎么被搬运执行的;

你会知道,函数调用过程中,参数是如何传递的;

你会知道,中断发生时,每一个寄存器的值都要小心对待;

等等等。

你掌握了ARM+Linux的裸机开发,再回去看Windows下的单片机开发,会惊呼:怎么那么简单!并且你会完全明白这些工具没有向你展示的技术细节。

驱动程序=Linux驱动程序软件框架+ARM开发板硬件 *** 作,我们可以从简单的裸机开发入手,先掌握硬件 *** 作,并且还可以:

①掌握如何在PC Linux下编译程序、把程序烧录到板子上并运行它

②为学习bootloader打基础:掌握了各种硬件 *** 作后,后面一组合就是一个bootloader

225 为什么选择ARM9 S3C2440开发板,而不是其他性能更好的?

有一个错误的概念:S3C2440过时了、ARM9过时了。

这是不对的,如果你是软件工程师,无论是ARM9、ARM11、A8还是A9,对我们来说是没有差别的。

一款芯片,上面有CPU,还有众多的片上设备(比如UART、USB、LCD控制器)。我们写程序时,并不涉及CPU,只是去 *** 作那些片上设备。

所以:差别在于片上设备,不在于CPU核;差别在于寄存器 *** 作不一样。

因为我们写驱动并不涉及CPU的核心,只是 *** 作CPU之外的设备,只是读写这些设备的寄存器。

之所以推荐S3C2440,是因为它的Linux学习资料最丰富,并有配套的第1、2期视频。

226 怎么学习ARM+Linux的裸机开发

学习裸机开发的目的有两个:

①掌握裸机程序的结构,为后续的u-boot作准备

②练习硬件知识,即:怎么看原理图、芯片手册,怎么写代码来 *** 作硬件

后面的u-boot可以认为是裸机程序的集合,我们在裸机开发中逐个掌握各个部件,再集合起来就可以得到一个u-boot了。

后续的驱动开发,也涉及硬件 *** 作,你可以在裸机开发中学习硬件知识。

注意:如果你并不关心裸机的程序结构,不关心bootloader的实现,这部分是可以先略过的。在后面的驱动视频中,我们也会重新讲解所涉及的硬件知识。

推荐两本书:杜春蕾的《ARM体系结构与编程》,韦东山的《嵌入式Linux应用开发完全手册》。后者也许是国内第1本涉及在PC Linux环境下开发的ARM裸机程序的书,如果我说错了,请原谅我书读得少。

对于裸机开发,我们提供有2部分视频:

①环境搭建

第0课第1节_刚接触开发板之接口接线wmv

第0课第2节_刚接触开发板之烧写裸板程序wmv

第0课第3节_刚接触开发板之重烧整个系统wmv

第0课第4节_刚接触开发板之使用vmwae和预先做好的ubuntuwmv

第0课第5节_刚接触开发板之u-boot打补丁编译使用及建sourceinsight工程wmv

第0课第6节_刚接触开发板之内核u-boot打补丁编译使用及建sourceinsight工程wmv

第0课第7节_刚接触开发板之制作根文件系统及初试驱动wmv

第0课第8节_在TQ2440,MINI2440上搭建视频所用系统wmv

第0课第9节_win7下不能使用dnw烧写的替代方法wmv

未完

原文链接:网页链接

最适合大学生的学习网站: 论文网[ >

你说的电脑,好笼统啊。

如果利用电脑作为工具赚钱,那就卖电脑或者开网吧了

如果跟电脑硬件有关系,那就学习电路维修了,当然也要学会基本的软件维修

如果是跟电脑软件有关,那就很广泛了,例举下面几类

IT行业,IT就是信息技术的意思,大概就是应用计算机来统筹信息,做出优化管理。比如公司员工工作分配怎样才能充分利用资源,工程怎么施工才能最节约成本等等这些问题应用相关知识通过电脑来优化

软件开发行业,就是专门开发软件的,比如腾讯公司开发出QQ来就可以大家一起视频一起聊天了,这个需要比较专业的数学跟逻辑知识,要精通你起码还要学七八年。

软件设计行业,比如用软件来处理,用软件来设计样品,设计服装款式,动漫设计,网页设计等等,这需要对数学几何知识跟美术知识有一定的功底。

电子商务,就是通过网络做生意做买卖了,淘宝网是目前最火爆的。

前面看到你说喜欢软件开发,少年,如果你高中都没毕业,真不建议你往这方面发展,如果你到学校里面攻读软件开发,没有三四年你很难熟练的,没有七八年很难精通。自学没有五六年很难熟练的,没有十年很难精通,当然,如果你是天才就是例外了。软件开发需要比较深的数学跟逻辑能力功底。要知道软件工程师需要高中读三年,完了大学读四年,完了再读研究生深造。

新手自学linux,需要制定详细的学习路线和学习内容,可以按照以下思路学习:

第一阶段:linux基础入门

Linux基础入门主要包括: Linux硬件基础、Linux发展历史、Linux系统安装、xshell连接、xshell优化、SSH远程连接故障问题排查、L inux基础优化、Linux目录结构知识、Linux文件属性、Linux通配符、正则表达式、Linux系统权限等

第二阶段:linux系统管理进阶

linux系统管理进阶包括:Linux定时任务、Linux用户管理、Linux磁盘与文件系统、Linux三剑客之sed命令等。

第三阶段:Linux Shell基础

Linux Shell基础包括:Shell编程基础、Linux三剑客之awk命令等。

第四阶段:Linux网络基础

第五阶段:Linux网络服务

Linux网络服务包括:集群实战架构开始及环境准备、rsync数据同步服务、Linux全网备份项目、nfs网络存储服务精讲、inotify/sersync实时数据同步/nfs存储实时备份项目等。

第六阶段:Linux重要网络服务

Linux重要网络服务包括:>

要注册网站域名,购买或者租用到网站的空间。上传内容,上传图文和视频等内容就可以创建自己的网站了。

现在市场上很多各式各样的网站搭建工具,网站制作平台,任意找一个自己用起来易上手的工具即可。网站搭建工具中一般都有模板提供,可以按照行业、风格、类型来选择自己中意的模板。选好后就可以套用,网站随即成功创建。

以上就是关于3dmax培训要多少钱全部的内容,包括:3dmax培训要多少钱、程序员英语词汇、学习嵌入式,要如何学好嵌入式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/8860241.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-22
下一篇 2023-04-22

发表评论

登录后才能评论

评论列表(0条)

保存