粤嵌创客训练营

时间:2024-08-29 21:19:18编辑:小松

linux嵌入式培训机构怎么样?有必要去吗?

个别机构还是不错的,比如:华清远见、星创客。

给你分享一下别人的培训学习linux的心得吧,看完对你的选择肯定有帮助。

学习嵌入式linux之前必须要做好心理准备:

第一,要明白学好嵌入式linux不是一件一蹴而就的事,一定要能坚持使用它,特别是在使用初期,由于在linux中,用户权限很大,做任何事情都很自由,所以,你往往需要知道你做的每一步在干什么,系统做了些什么,这需要时间去掌握,(背命令不是一件好的学习方法,相信我你一定会在你背完之前全部忘光),尽量掌握常用命令;

第二,在学习初期,你一定会遇到很多困难,或者说各种困难,所以你最好先将你linux中的重要内容备份,因为,在你学习的过程中,很可能将系统搞废(eg:源混乱等);

第三,如果你想在以后的生涯中在软件行业工作的话,学习linux是一项基本技能,所以打从你打算学习linux那天起,放弃windows吧!因为它除了能给你带来片刻的娱乐,别无其他;

第四,如果你只是想应付一下操作系统的课程,劝你最好别学,或者说不要指望能用的怎么样,原因我说了,这很耗时间,而且如果你学不好的话,你在linux中开发的机会就很少,或者说几乎没有,它的优势就消失了,然后随着时间的流逝,你就会全部忘记她。

培训的话,个人觉得华清远见-星创客还不错,你可以看看。

要学好嵌入式linux需要做些什么:

第一,要多google,因为我不可能,也不可以给你解答所有内容,我只能告诉你一些关键点,甚至我会故意隐瞒答案,因为在寻找答案的过程中,你会学到更多的知识,学习linux,更要学习一种geek的精神,python之禅中也说过:以总结分享为荣,以跪*求其解为耻;

第二,要多动手,不要怕什么搞坏了怎么办,你不搞坏,不去动手,就永远不会有收获,既然你在linux中是自由的,那就发挥自己的权利;

第三,学习linux,就意味着更快的开发效率,等更多关于软件本身或者说操作系统本身的理解,(给你装的系统里为ubuntu12.04,它已经封装的很臃肿了,但是考虑到你没有很多时间投入其中,所以给你装了它),但是怎么用它提高开发效率,需要你在学习的过程中不断总结。


参加嵌入式linux培训有用吗?怎么选培训机构?苦恼中……

进入嵌入式行业有2个大途径,一是就读大学设置的相关专业,二是参加培训,这个行业前景很好,现在就业也非常容易,薪资又高,显然,参加培训是有意义的。如何挑选培训机构呢?
首先,师资方面。要了解清楚上课的老师跟培训机构宣传的老师是不是一致。很多培训机构放在网上宣传的老师都是很牛的人,确实很牛,但是以后这些人是不会来给你上课,特别是那些各地有分中心的培训机构,宣传的是总部的师资,上课的却是滥竽充数。
硬件设备方面,很多培训机构linux管理方面的课程硬件只有教学电脑!教学电脑啊!有木有!实验,实验你妹!
教学环境,很多培训机构租个写字楼,一百多平方格3-4个教室外加办公室加仓库,感觉就像一个袋袋里面装10颗蛋蛋有木有!又挤又闷,这样的环境,哪里学的好.
很多培训机构都打着“推介入名企”,推介而已,有推就行,去不去由你。这不是坑爹吗?现在只有一家培训机构“签合同保就业保底薪”,这才可靠。
总结起来,在广州学linux,只有去广东工业实训中心栢图linux培训学校最保险。老师都是有实际工作经验、教学经验的,硬件是省政府投资几千万的,环境呢,就更不用说了,在广东技术师范学院里面,鸟语花香啊


嵌入式开发培训都有哪些课程

很多朋友想知道嵌入式开发培训都有哪些课程,下面就让我们来看看吧。嵌入式开发培训有很多学习的方向,所学的课程也有差异,但是不管你学的是哪个方向,嵌入式开发一些基础的必学课程是不会变的,基础课程有:1、C、C++语言;2、linux编程;3、arm;4、硬件编程语言(FPGA);5、操作系统;6、51单片机;7、计算机组成原理;8、模拟电路&数字电路。嵌入式开发是什么意思嵌入式开发的意思是指利用分立元件或集成器件进行电路的设计和结构的设计,然后进行软件编程与实验,再经过多次设计修改与制作,最终完成整个系统的开发。嵌入式开发就业前景嵌入式开发前景是非常广阔的,由于嵌入式开发的入门门槛比较高,所需开发人才也相对的紧缺,其待遇相比其他行业也要高出许多,而想成为高级嵌入式开发工程师不仅需要各种语言编程、系统操作、驱动程序等方面的经验,还要能独立完成项目系统方案,解决系统故障与问题。嵌入式开发工程师需要掌握的技能懂得C、C++语言和一些简单的编程;至少熟悉一种嵌入系统软件开发环境;熟悉一种嵌入式软件系统的开发过程和常见原理;能够读懂一般嵌入式的原理图。


嵌入式开发培训都有哪些内容_嵌入式培训是什么意思

职业专家介绍,目前培养嵌入式人才的主要通过两种途径:一种是高校开设嵌入式专业课程,另一种是通过专业的嵌入式培训机构培养企业所需的人才本课程是为了适应目前发展迅速的嵌入式linux需求而设计,课程目标是让学员达到适应嵌入式应用软件开发、嵌入式系统开发或嵌入式驱动开发的基本素质课程循序渐进的带领你进入嵌入式开发的世界,采用了目前应用最广泛的软硬件开发平台(Linux和Arm),可以保证你尽量贴近目前企业的需求嵌入式培训课程内容:第一阶段:嵌入式C高级编程1嵌入式C语言高级编程2嵌入式C语言经典数据结构及算法编程3项目实战(一)《lrc歌词解析器》在嵌入式领域中大部分开发都会用到C语言C语言简洁、紧凑、使用方便灵活加上GNU在实际项目开发中所做的扩展,使得C语言在整个嵌入式开发过程中起着至关重要的作用更重要的是用C语言开发的程序在嵌入式平台下可移植性比较强一个精通C语言程序设计的程序员,可以很容易地从事Linux、WinCE、Vxworks、μc/os等嵌入式操作系统下的软件开发工作本阶段学习目标是掌握C语言基本知识、巩固C编程语法基础,以及深入C语言高级编程和数据结构与算法,为将来的程序设计工作打下坚实的基础第二阶段:Linux应用及系统编程1Linux操作系统应用开发2嵌入式Linux高级系统编程3嵌入式数据库--SQLite4项目实战(二)《Mplayer播放器》5Linux网络编程6项目实战(三)《基于Linux的信息交换系统》7C及基于QT的GUI开发8项目实战(四)《网络游戏对战平台》嵌入式Linux应用开发和系统开发是嵌入式Linux中非常重要的一部分,也是企业人才需求最广的一部分本阶段学习的主要目标是精通嵌入式Linux下的应用程序设计,熟练掌握嵌入式Linux的开发环境、常用Linux命令,精通Linux系统编程、网络编程、QTGUI编开发,熟练掌握整个嵌入式Linux项目开发流程,提升学员对Linux应用开发的能力第三阶段:嵌入式Linux平台开发1ARM体系结构原理分析及其移植2ARM处理器编程原理分析及其移植3基于ARM裸机驱动开发原理分析及其移植4嵌入式Bootloader原理分析及其移植5自制嵌入式系统启动代码(Bootloader)6嵌入式Linux内核工作原理分析及其移植7Linux内核调试技术8嵌入式Linux根文件系统组成分析及其制作8嵌入式Linux开源工程源码分析及其编程9项目实战(五)《Web应用开发技术》本阶段将使学员掌握从零开始搭建嵌入式Linux运行环境首先通过基于ARMCortex-A8处理器S5pv210了解芯片手册的基本阅读技巧,掌握S5pv210系统资源、时钟控制器、电源管理、异常中断控制器、nandflash控制器等模块,为底层平台搭建做好准备Linux平台包括内核裁减、内核移植、交叉编译、GNU工具使用、内核调试、Bootloader介绍、制作与原理分析、根文件系统制作以及向内核中添加自己的模块,并在s5pv210实验平台上运行自己制作的Linux系统,集成部署Linux系统整个流程同时了解Android操作系统开发流程Android系统是基于Linux平台的开源操作系统,该平台由操作系统、中间件、用户界面和应用软件组成,是首个为移动终端打造的真正开放和完整的移动软件,目前它的应用不再局限于移动终端,还包括数据电视、机顶盒、PDA等消费类电子产品第四阶段:嵌入式微处理器及Linux设备驱动开发1ARM硬件接口原理2嵌入式Linux设备驱动开发3嵌入式Linux高级驱动程序设计4项目实战(六)《重力感应实战系统》驱动程序设计是嵌入式Linux开发工作中重要的一部分,也是比较困难的一部分本阶段课程让学员熟悉Linux的内核机制、驱动程序与用户级应用程序的接口,掌握系统对设备的并发操作熟悉所开发硬件的工作原理,具备ARM硬件接口的基础知识,熟悉ARMCortex-A8处理器s5pv210各资源、掌握Linux设备驱动原理框架,熟悉工程中常见Linux高级字符设备、块设备、网络设备、USB设备等驱动开发,在工作中能独立胜任底层驱动开发相关标签:嵌入式培训、嵌入式学习、北京嵌入式培训

嵌入式需要学习什么

嵌入式Linux操作系统学习规划\x0d\x0aARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标: \x0d\x0a(1) 掌握主流嵌入式微处理器的结构与原理(初步定为arm9) \x0d\x0a(2) 必须掌握一个嵌入式操作系统 (初步定为uclinux或linux,版本待定) \x0d\x0a(3) 必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。 \x0d\x0a从事嵌入式软件开发的好处是: \x0d\x0a(1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,大多数人无条件接触。 \x0d\x0a(2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。 \x0d\x0a(3)哪天若想创业,搞自已的产品,嵌入式不像应用软件那样容易被盗版。硬件设计一般都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。 \x0d\x0a(4)兴趣所在,这是最主要的。 \x0d\x0a从事嵌入式软件开发的缺点是: \x0d\x0a(1)入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。 \x0d\x0a(2)这方面的企业数量要远少于企业计算类企业。 \x0d\x0a(3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。 \x0d\x0a(4)平台依托强,换平台比较辛苦。 \x0d\x0a兴趣的由来: \x0d\x0a1、成功观念不同,不虚度此生,就是我的成功。 \x0d\x0a2、喜欢思考,挑战逻辑思维。 \x0d\x0a3、喜欢C \x0d\x0aC是一种能发挥思维极限的语言。关于C的精神的一些方面可以被概述成短句如下: \x0d\x0a相信程序员。 \x0d\x0a不要阻止程序员做那些需要去做的。 \x0d\x0a保持语言短小精干。 \x0d\x0a一种方法做一个操作。 \x0d\x0a使得它运行的够快,尽管它并不能保证将是可移植的。 \x0d\x0a4、喜欢底层开发,讨厌vb类开发工具(并不是说vb不好)。 \x0d\x0a5、发展前景好,适合创业,不想自己要死了的时候还是一个工程师。 \x0d\x0a方法步骤: \x0d\x0a1、基础知识: \x0d\x0a目的:能看懂硬件工作原理,但重点在嵌入式软件,特别是操作系统级软件,那将是我的优势。 \x0d\x0a科目:数字电路、计算机组成原理、嵌入式微处理器结构。 \x0d\x0a汇编语言、C/C++、编译原理、离散数学。 \x0d\x0a数据结构和算法、操作系统、软件工程、网络、数据库。 \x0d\x0a方法:虽科目众多,但都是较简单的基础,且大部分已掌握。不一定全学,可根据需要选修。 \x0d\x0a主攻书籍:the c++ programming language(一直没时间读)、数据结构-C2。 \x0d\x0a\x0d\x0a2、学习linux: \x0d\x0a目的:深入掌握linux系统。 \x0d\x0a 方法:使用linux—〉linxu系统编程开发—〉驱动开发和分析linux内核。先看深,那主讲原理。看几遍后,看情景分析,对照深看,两本交叉,深是纲,情是目。剖析则是0.11版,适合学习。最后深入代码。 \x0d\x0a主攻书籍:linux内核完全剖析、unix环境高级编程、深入理解linux内核、情景分析和源代。 \x0d\x0a3、学习嵌入式linux: \x0d\x0a目的:掌握嵌入式处理器其及系统。 \x0d\x0a方法:(1)嵌入式微处理器结构与应用:直接arm原理及汇编即可,不要重复x86。 \x0d\x0a (2)嵌入式操作系统类:ucOS/II简单,开源,可供入门。而后深入研究uClinux。 \x0d\x0a (3)必须有块开发板(arm9以上),有条件可参加培训(进步快,能认识些朋友)。 \x0d\x0a 主攻书籍:毛德操的《嵌入式系统》及其他arm9手册与arm汇编指令等。 \x0d\x0a\x0d\x0a4、深入学习: \x0d\x0a A、数字图像压缩技术:主要是应掌握MPEG、mp3等编解码算法和技术。 \x0d\x0a B、通信协议及编程技术:TCP/IP协议、802.11,Bluetooth,GPRS、GSM、CDMA等。 \x0d\x0a\x0d\x0a2010-8-21 16:46 回复 \x0d\x0a122.90.173.* 2楼\x0d\x0a\x0d\x0a C、网络与信息安全技术:如加密技术,数字证书CA等。 \x0d\x0a D、DSP技术:Digital Signal Process,DSP处理器通过硬件实现数字信号处理算法。 \x0d\x0a 说明:太多细节未说明,可根据实际情况调整。重点在于1、3,不必完全按照顺序作。对于学习c++,理由是c++不只是一种语言,一种工具,她还是一种艺术,一种文化,一种哲学理念、但不是拿来炫耀得东西。对于linux内核,学习编程,读一些优秀代码也是有必要的。 \x0d\x0a 注意: 要学会举一反多,有强大的基础,很多东西简单看看就能会。想成为合格的程序员,前提是必须熟练至少一种编程语言,并具有良好的逻辑思维。一定要理论结合实践。 \x0d\x0a 不要一味钻研技术,虽然挤出时间是很难做到的,但还是要留点余地去完善其他的爱好,比如宇宙,素描、机械、管理,心理学、游戏、科幻电影。还有一些不愿意做但必须要做的! \x0d\x0a 技术是通过编程编程在编程编出来的。永远不要梦想一步登天,不要做浮躁的人,不要觉得路途漫上。而是要编程编程在编程,完了在编程,在编程!等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功,即便成功了发展空间也不一定很大)。 \x0d\x0a\x0d\x0a 嵌入式书籍推荐 \x0d\x0a Linux基础 \x0d\x0a 1、《Linux与Unix Shell 编程指南》 \x0d\x0a C语言基础 \x0d\x0a 1、《C Primer Plus,5th Edition》【美】Stephen Prata着 \x0d\x0a 2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)着 \x0d\x0a 3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE) \x0d\x0a 4、《嵌入式Linux应用程序开发详解》 \x0d\x0a Linux内核 \x0d\x0a 1、《深入理解Linux内核》(第三版) \x0d\x0a 2、《Linux内核源代码情景分析》毛德操 胡希明著 \x0d\x0a 研发方向 \x0d\x0a 1、《UNIX Network Programming》(UNP) \x0d\x0a 2、《TCP/IP详解》 \x0d\x0a 3、《Linux内核编程》 \x0d\x0a 4、《Linux设备驱动开发》(LDD) \x0d\x0a 5、《Linux高级程序设计》 杨宗德著\x0d\x0a 硬件基础 \x0d\x0a 1、《ARM体系结构与编程》杜春雷着 \x0d\x0a 2、S3C2410 Datasheet \x0d\x0a 英语基础 \x0d\x0a 1、《计算机与通信专业英语》 \x0d\x0a 系统教程 \x0d\x0a 1、《嵌入式系统——体系结构、编程与设计》 \x0d\x0a 2、《嵌入式系统——采用公开源代码和StrongARM/Xscale处理器》毛德操 胡希明着 \x0d\x0a 3、《Building Embedded Linux Systems》 \x0d\x0a 4、《嵌入式ARM系统原理与实例开发》 杨宗德著\x0d\x0a 理论基础 \x0d\x0a 1、《算法导论》 \x0d\x0a 2、《数据结构(C语言版)》 \x0d\x0a 3、《计算机组织与体系结构?性能分析》 \x0d\x0a 4、《深入理解计算机系统》【美】Randal E. Bryant David O''Hallaron着 \x0d\x0a 5、《操作系统:精髓与设计原理》 \x0d\x0a 6、《编译原理》 \x0d\x0a 7、《数据通信与计算机网络》 \x0d\x0a 8、《数据压缩原理与应用》 \x0d\x0a\x0d\x0a C语言书籍推荐 \x0d\x0a 1. The C programming language 《C程序设计语言》 \x0d\x0a 2. Pointers on C 《C和指针》 \x0d\x0a 3. C traps and pitfalls 《C陷阱与缺陷》 \x0d\x0a 4. Expert C Lanuage 《专家C编程》 \x0d\x0a 5. Writing Clean Code -----Microsoft Techiniques for Developing Bug-free C Programs \x0d\x0a 《编程精粹--Microsoft 编写优质无错C程序秘诀》 \x0d\x0a 6. Programming Embedded Systems in C and C++ 《嵌入式系统编程》 \x0d\x0a 7.《C语言嵌入式系统编程修炼》 \x0d\x0a 8.《高质量C++/C编程指南》林锐 \x0d\x0a 尽可能多的编码,要学好C,不能只注重C本身。算法,架构方式等都很重要。 \x0d\x0a\x0d\x0a这里很多书其实是推荐而已,不必太在意,关键还是基础,才是重中之重!!!


嵌入式需要学什么?嵌入式需要学哪些课程和内容?

1.1 有哪些设备使用单片机或Linux所有的电子产品,所用技术都可以认为要么是单片机,要么是Linux;GUI方面主要是QT/Android,它们都是运行于Linux之上的。我们说的单片机不使用操作系统,但是使用单片机设备肯定远远超过Linux。很多人也是先学习单片机,从单片机进入电子工程师行业,日常生活中,有哪些产品使用单片机、Linux呢?下面举一些例子:我们设计一个产品时,是使用单片机还是Linux,取决于成本:硬件成本、软件成本、维护成本、升级成本。而不应该根据个人偏好来选择:我喜欢单片机,所以就排斥使用Linux;我喜欢Linux,就排斥使用单片机。为了有更多的选择,我们需要既懂单片机,又懂Linux。1.2 在硬件操作上单片机和Linux是类似的以点灯为例,无论是单片机还是Linux,我们要做的事情都一样:看原理图,确定引脚是哪一个,确定它输出什么电平才可以看芯片手册,确定要怎么操作寄存器写程序但是,怎么编写程序,单片机和Linux有很大不同。1.3 在单片机中点灯、使用LCD使用单片机开发程序时,我们一上来就写一个main函数,下面是一些简化的代码:请点击输入图片描述LED程序里面的init_led、led_on、led_off函数是你一个人写的,爱取什么名就取什么名,爱怎么写就怎么写。LCD程序里的函数也是你写的,完全是自由发挥。很多单片机项目不是很复杂,2、3个人从上到下统统搞定,里面的函数大多时间是直接去读写寄存器。很多单片机项目严重依赖于硬件,换一个芯片后怎么办?重写一套代码呗。在单片机程序里,没有应用程序、驱动程序的概念,很可能一个人包揽了硬件设计、模块调试(或称之为驱动)、功能开发(或称之为应用)的全部活。1.4 在Linux中点灯、使用LCD在Linux中,不允许应用开发人员直接去操作硬件,比如你想点个灯,不好意思,你无法直接访问寄存器;你需要通过驱动程序来访问寄存器。为什么?有几大原因:Linux系统中运行着众多程序,必须保证质量差的程序无法破坏系统:假设你写的程序比较烂,那我不能让你去随便访问寄存器,把系统搞崩溃了怎么办?你本意是去点灯,但是你看错了寄存器,你把电源关了怎么办?所以这些操作硬件的活,还是交给信得过的人来做吧:交给驱动工程师,他既懂硬件又懂软件。保证程序的可移植性:编写应用程序时,大家都使用统一的函数,以后换一个芯片时,应用程序不用变;只需要根据这个接口提供驱动程序就可以了。团队协作:使用Linux系统的项目一般比较大,术业有专攻,一个人不太可能从上到下都全部掌握。比如做人脸识别项目,有擅长做图像处理的,他可不管你要用多少种摄像头,有图像给他就可以。而多种摄像头的硬件操作方法各有不同,这些交给驱动程序工程师。所以,在Linux中应用程序和驱动程序是分开的。以LED、LCD程序为例,简化的代码如下请点击输入图片描述也许你已经大概猜出来了,应用程序怎么调用驱动程序?通过标准的接口:open:打开驱动程序。read/write:读、写数据。ioctl:传入各种参数,获得各种参数。mmap:内存映射,比如映射之后,应用程序可以直接读写LCD的显存。你看!从这些接口里,我们根本看不到寄存器的操作。底层的程序驱动会根据这些调用,去设置寄存器、操作硬件。所以,我高大上的应用工程师,干嘛苦哈哈地去看原理图、看在片手册、读写寄存器,搞不好还要去调试硬件BUG。这些脏活、累活就交给驱动工程师吧。客户的需求千变万化,我996时间都不够用了。我上懂软件、下懂硬件的驱动工程师,肯定不能把这么重要的活交给你去做了,把我的系统搞崩溃了怎么办。开玩笑、开玩笑、开玩笑的,有应用工程师、驱动工程师的优劣之分,大家都是为了做出产品。现在有一个趋势,一个任务从上到下你都需要懂,这就是所谓的全栈工程师。还是以LED为例,应用程序和驱动程序的协作如下图所示:在Linux中,“一切皆文件”,要访问某个硬件,也是要打开文件、读写文件。应用程序要根据标准的文件接口:open/read/write/ioctl/mmap等来访问驱动程序。既然如此,怎么写驱动程序呢?最简单的方法就是:APP要调用open来打开驱动程序,那驱动‘程序里就提供一个xxx_open函数来初始化硬件;APP要调用write来写数据,驱动程序里就提供一个xxx_write函数来接收数据并操作硬件。用xxx_open、xxx_write来构成一个驱动程序,这就是驱动框架。怎么实现这些xxx_open、xxx_write函数?我们要做的事情跟单片机是类似的,一样要去看电路图、看芯片手册,然后在这些函数里读写寄存器:这称为硬件操作。所以,Linux驱动程序= 驱动框架 + 硬件操作。有单片机基础的人,对硬件操作比较熟悉了,把重点放在驱动框架上就可以。高能预警:驱动框架可不简单,对于LED来说是简单,但是还有更复杂的驱动程序,它要考虑“通用”,这很要命。第2章 嵌入式Linux快速入门这几天在群里跟学员聊天,有一位学员的学习方法很好:先观其广,再究其深。有时候要“不求甚解”,很多时候保持疑问先学下去,这些疑问就自然解决了。比如课程中涉及汇编知识,如果你要彻底弄清楚,你需要去学习《ARM架构与编程》;当你学完这本书,你的同学搞不好已经可以上手工作了。2.1 短期的目标是什么我们先把学习目标定下来:快速了解嵌入式Linux开发的流程,知道要学什么,具备跟从业者交流的能力。2.2 一个嵌入式Linux系统的组成请点击输入图片描述请点击输入图片描述下面我们用类比和逻辑推导出嵌入式Linux系统的组成,没错,“推导”。从上图可以知道:组成:嵌入式Linux系统= bootloader + linux内核 + 根文件系统(里面含有APP)。bootloader:它的目的是启动内核,去哪等读内核?读到哪里?去Flash等外设读内核,存到内存里去。所以需要有Flash里外设的驱动能力,为了调试方便还会有网络功能。所以,可以认为 booloader = 裸机集合,它就是一个复杂的单片机程序。Linux内核:Linux内核的最主要目的是去启动APP,APP保存在哪里?保存在“根文件系统”里。“根文件系统”又保存在哪里?在Flash、SD卡等设备里,甚至可能在网络上。所以Linux内核要有这些Flash、SD卡里设备的驱动能力。不仅如此,Linux内核还有进程调度能力、内存管理等功能。所以:Linux内核 = 驱动集合 + 进程调度 + 内存管理等。2.3 要学习bootloader吗Bootloader有很多种,常用的叫u-boot。在实际工作中,对于u-boot基本上是修修改改,甚至不改。但是u-boot本身是很复杂的,比如为了便于调试,它支持网络功能;有些内核是保存在FAT32分区里,于是它要能解析FAT32分区,读FAT32分区的文件。花那么多精力去学习u-boot,但是工作中基本用不到,这对初学者很不友善。所以,对于初学者,我建议:理解u-boot的作用、会使用u-boot的命令,这就可以了。如果你的工作就是修改、完善bootloader,那么再去研究它吧。2.4 要学习Linux内核、要学习驱动程序吗之前我们说过Linux内核 = 驱动集合 + 进程调度 + 内存管理等,如果要学习Linux内核,从驱动程序入手是一个好办法。但是人人都要学习Linux内核、人人都要学习Linux驱动吗?显然不是。作为初学者,懂几个简单的驱动程序,有利于工作交流;理解中断、进程、线程的概念,无论是对驱动开发、应用程序开发,都是很有好处的。所以对于初学者,建议前期只学习这几个驱动:LED、按键、中断。LED驱动程序:这是最简单的驱动程序。按键驱动程序:它也比较简单,从它引入“中断”。中断:从“中断”它可以引入:休眠-唤醒、进程/线程、POLL机制、异步通知等概念。这些概念无论是对驱动开发,还是对应用开发,都很重要。所以,对于初学者,我建议必须学习这几个驱动:LED、按键、中断。入门之后,如果你想从事内核开发、驱动开发,那么可以去钻研几个驱动程序(输入系统、I2C总线、SPI总线等),掌握若干个大型驱动程序后,你对内核的套路就有所了解了,再去研究其他部分(比如进程管理、文件系统)时你会发现套路是如此通用。摄像头(VL42)、声卡ALSA驱动是Linux中比较复杂的2类驱动,它们是很难的,如果工作与此相关再去研究。2.5,要学习Linux应用程序吗?先学一些基础技能要学,即使以后你只想研究内核,一些基本的应用开发编写能力也是需要的:基本设备的访问,比如LCD、输入设备进程、线程、进程通信、线程同步与互斥休眠-唤醒、POLL机制、信号网络编程①②③部分的知识,跟驱动有密切的关系,它们是相辅相承的。掌握了基本驱动开发能力、基本应用开发能力之后,在工作中你就可以跟别人友好沟通了,不至于一脸懵逼。2.6,应用程序是怎么启动的?要了解一下根文件系统你辛辛苦苦写出了应用程序,怎么把它放到板子上,让它开机就自动启动?你写的程序,它依赖于哪些库,这些库放到板子上哪个目录?怎么做一个可升级的系统?即使升级中途断电了,也要保证程序至少还可以运行老的版本?这些都需要我们了解一下根文件系统。先了解一下init进程:它要读取配置文件,根据配置文件启动各个APP。了解了init进程,你就了解了根文件系统的组成,就可以随心所欲裁剪系统,为你的项目制作出最精简的系统。第3章 学习方法3.1 先不要打破砂锅问到底嵌入式涉及的东西太多太杂了,如果心里没有主线,碰到什么都要去研究个透彻,最终反而忘记自己要学什么了。嵌入式涉及硬件知识、软件知识,软件里涉及汇编、ARM架构、C语言、Makefile、Shell;又分为bootloader、内核、驱动、基本的APP、GUI。比如我们会用到Makefile,了解它的基本规则,会用我们提供的Makefile就可以。不需要深入研究那些make函数,因为在工作中都有现成的Makefile给你使用,不需要自己去编写一套Makefile。何必花上好几天去深入研究它呢?比如我们会用到bootloader,难道又要花上几个月来深入研究u-boot吗?工作中基本不需要改u-boot,会用那几个命令就可以。甚至有些学员先去买本shell的书来学习shell命令,何必?我们在视频中用到什么命令,你不懂时再去百度一下这些命令就可以了。不要脱离初学者的主线:应用基础、驱动基础。有了这2个基础后,你想深入研究某部分时,再去花时间吧。3.2 思路要清晰,不怕抄代码视频里的代码,请你一定要自己去写一次、写多次。为什么我现在写驱动那么熟?我2009年在华清远见上课时,每次上课我都要给学生写一次那些驱动,十几次下来闭着眼睛都知道内核的套路了。记不住那些函数?我也记不住,我都是去参考同类的驱动程序,这又不是闭卷考试。但是要理清楚思路,你写这个程序要完成什么功能、怎么实现这些功能?这个要弄清楚。有了思路后再写代码,不知道怎么写?没关系,看看视频,看看示例,然后关闭视频看看能否自己写出来。3.3 对自己的方向很了解,我只能带你到这里了我的专长是操作系统,是快速地带领大家掌握一些项目开发的基础知识。如果你决定深入研究某方面时,我并不能带你多久。你要去看源码,去看这方面的专业书籍。比如想深入钻研内核的内存管理时,它有页表映射(你需要阅读ARM架构的手册)、SLAB分配器、vmalloc/malloc实现、mmap实现、缺页中断、父进程子进程之间的页面管理等等,内容非常多。有时候连书籍都没有,你需要直接啃代码。当你想从事某个行业时,就需要深入研究行业相关的知识。比如CAN总线,它可以写成一本书:CAN协议、CAN报文、Socket CAN、车身网络拓扑结构,CAN应用报文,CAN网络管理报文,CAN诊断报文。想做物联网网关,需要深入研究MQTT,MQTT协议相对简单,但是MQTT英文原版协议有130多页,中文版有近100页,是一本小书了。每个行业都有自己的业务逻辑,在掌握基本的编程能力之一,你需要结合具体的业务去深入学习。

上一篇:正者无敌迅雷下载

下一篇:四川造价咨询公司排名