网校课程

移动资讯

扫一扫
关注
掌握一手资料
免费试听
  • 今天
    环球网校二级建造师单科强化班

    今日 免费试听

    立即试听
  • 今天
    环球网校二级建造师考点精讲班

    今日 免费试听

    立即试听
  • 今天
    环球网校二级建造师精品VIP班

    今日 免费试听

    立即试听
  • 今天
    环球网校二级建造师高端签约班

    今日 免费试听

    立即试听
  • 今天
    环球网校二级建造师试听课程送大礼

    今日 免费试听

    立即试听
  • 今天
    建设工程教育网二级建造师单科基础

    今日 免费试听

    立即试听
  • 今天
    建设工程教育网二级建造师超值精品班

    今日 免费试听

    立即试听
  • 今天
    建设工程教育网二级建造师高效取证班

    今日 免费试听

    立即试听
  • 今天
    建设工程教育网二级建造师无忧通关班

    今日 免费试听

    立即试听
  • 今天
    建设工程教育网二级建造师试听课程送大礼

    今日 免费试听

    立即试听
开课流程: 注册会员 → 免费试听 → 选课报名 → 支付学费 → 再登陆听课

您现在的位置: > 二级建造师 > 嵌入式Linux培训:新手学底层还是应用?一文讲清

嵌入式Linux培训:新手学底层还是应用?一文讲清

来源:网络整理 2026-03-29 09:13:53

100ask.taobao.com

作为新人,该如何去学习嵌入式Linux呢,被问了太多好多次,特意写上这篇文章,来给出一下答案。

在开启嵌入式Linux学习之旅以前,必定得拥有C语言方面的基础。汇编基础有无并不重要(毕竟仅有那寥寥几条汇编指令,一旦用到瞅一眼便会)。那C语言需要学到何种程度呢?自然是越熟练越好啦,倘若不熟练的话起码也得具备基本的技能才行。就像去编写一个数组排序程序、进行输入数字求和之类的。学习C语言唯一的途径便是多多编写程序并加以练习,编译出现错误没什么大不了的,自己动手去解决;执行出现错误也没关系,自己去剖析。以往我是借助VC来练习C语言的,常常去试着撰写一些C语言竞赛所涉及的题目。这些题目是单纯关于C的,是纯粹数学相关的,是完全逻辑方面的题目,和界面这类事物没有关联,极其适合锻炼你的编程能力。先前开办训练营时,有学员反馈C语言学习进度跟不上,因而在周末举办了一回C语言提高篇的公开课活动,提供给大家免费进行观看。

转而回归主题,首先,我们就得清楚你所意图达成的目的究竟是什么,大致来讲,那所谓被称作嵌入式Linux的概念能够划分成两个部分,分别是底层系统以及应用开发,情形就是这样。要是你打算去从事应用开发方面的工作,那么你就着手把C语言、数据结构、JAVA之类的知识学好弄明白。处于嵌入式领域中的应用开发跟在PC上所进行的应用开发并无什么特别需要留意关注之处可讲。或许你会提到在嵌入式环境下要开展一些优化工作,没错,确实是要进行优化,然而尚未经过优化处理的程序跟在PC上的程序开发相比实在没什么差异可言。另外,当你自身具备能够开展优化处理的能力之时,你其实已经用不着再来询问这个问题。针对于某一个示例来讲,就好比是进行界面开发,在个人计算机上我们会运用VC,在嵌入式Linux这里,或许我们会采用QT,又或许会采用Android,在这个时候你应当去学习关于QT、Android的编程,然而基础依旧是C或者JAVA,在这个基础之上再去熟悉它们的接口,要是你学过VC的话,同样是需要花费时间去了解那些类、控件的。

要是你的目标是打算去学习底层系统,而这是属于我的专长范畴,那倒是能够讲上一些的。

不少人问我,到底是学驱动还是学应用呢,在回答这个问题之前,我先回答。

我只能说凭兴趣,并且驱动和应用并不是截然分开的

1. 咱们所讲的驱动,实际上并非仅仅局限于硬件方面的操作,还涵盖操作系统的原理,以及进程的休眠唤醒调度等诸多概念。要想写出一个出色的应用,且想相对较好地解决应用所遭遇的问题,这些知识你理应知晓。

2. 制作应用的门槛较为低下,尤其是当下的安卓系统,它是纯粹的Java,制作应用的发展途径依个人看法而言便是业务娴熟,比如在通信领域、IPTV范畴、手机领域,你知晓行业的需求,所以,身为领导的那些人,大多是从事制作应用的。

3. 实际上,我不情愿将其说是”做驱动“,而是更倾向唤作”做底层系统“,一旦这方面做好了,那就能在各个行业通行无阻。我工作好些年了,涉足过手机、IPTV、会议电视等领域,然而这些产品于我而言没什么不同,毕竟我专注的是底层工作。它们的业务与我并无关联。一旦应用撞上问题,当它们自己无法解决之时,我便会从内核的角度提供思路,给予工具 support。在我看来,做底层后续进展的取向堪称是技术专家。

4. 其实,到底是做底层呢还是去做应用,这两者之间是不存在一条界线的,要是拥有底层经验的时候,再去做那个应用,你就会感觉到特别踏实。要是有了业务经验之后,你再去了解一下底层方面,很快就能组建起一个团队。

往回返到属于怎么去学的那个问题的方向上,嵌入式Linux底层系统涵盖着什么样的一些东西呢,别着急去做别的,单单举出一个例子,你就能够知道是怎么回事了。

1. 开启电脑电源后,出现的那些界面是由谁来进行显示的?答案是BIOS,它究竟做些什么?它会执行一系列的自检操作,之后从硬盘当中读入windows相关内容,并进一步启动它。与之相类似的是,这个BIOS所处的地位等同于嵌入式Linux里面的bootloader。那么这个bootloader又要做什么?它需要前往Flash上去读入Linux内核,并且启动它。

2. 让windows启动起来的目的究竟是什么呢,那自然是诸如上网进行聊天之类的事情了。在哪里能够找到那些用于上网以及聊天的工具呢?

分别处于C盘以及D盘之上,所以呢,windows需要率先识别出C盘,还有D盘,在Linux环境下,我们将其称作根文件系统。

3. Windows若能识别出称作C盘、D盘的磁盘,那必然是能够对硬盘进行读写操作才行的。这里所涉及到一系列的东西被叫做驱动程序。当然,其涵盖的范围可不单单只是硬盘,还包括网卡、USB等设备。

学习嵌入式Linux_嵌入式Linux入门教程_嵌入式linux培训

嵌入式Linux具备从Flash将应用程序读取出来进而执行的能力,那么必然需要存在关于Flash的驱动程序,当然所涉及的也不单单只是Flash这一方面,是包含其他方面的。

就先讲到这儿,在嵌入式LINUX里面,有着bootloader,还有内核,并包含驱动程序,以及根文件系统,这是四大块。

一、bootloader:

它是一个在复杂程度上稍有体现的、纯粹的板子程序,然而,想要将这纯粹的板子程序理解透彻、撰写得较为出色,没有丝毫容易可言,在Windows系统环境下具备良好使用效果的工具,使得我们自身的编程能力受到了削弱。

好多人一旦开始玩嵌入式,就会使用ADS、KEIL。你可不可以回答这几个提问呢?

1. 一上电,CPU从哪里取指令执行?

答:一般从Flash上指令。

2. 但是,Flash通常情况下是仅仅能够读取而不能够直接进行写入操作的,要是我运用到了全局变量,那么这些全局变量究竟处于哪里呢?

答:全局变量应该在内存里

3. 那么谁把全局变量放到内存里去?

问:长期使用ADS、KEIL的友人,那你能够予以回应不?这是需要进行“重定位”的。于ADS或者KEIL当中,重定位的代码乃是制作这些工具的公司为你编写完成的。你可曾有过前去阅读它的经历?

4. 内存这般大,我怎样晓得将“往昔存于Flash之上的内容”读取至内存的“哪一个地址处”呢?

回答称,该地址借助“链接脚本”予以确定,于ADS当中存在scatter文件,在KEIL里同样有类似的文件。然而,你是否有去进行研究呢?

5. 你讲重定位是将程序从Flash拷贝至内存,那么此程序能够读取Flash呀?

回覆是肯定的,需具备Flash的操控能力。当然只言此并非全部,还存在调校让时序变得更加敏捷等若干情况。

这会儿先把自问自答停在这儿,bootloader这个裸板程序,实际上存在着3部分要点。

1. 对硬件的操作

嵌入式Linux入门教程_学习嵌入式Linux_嵌入式linux培训

2. 对ARM体系处理器的了解

3. 程序的基本概念:重定位、栈、代码段数据段BSS段什么的。

面对硬件的相关操作,得去查看原理图以及芯片手册,这可是需要具备一定硬件知识的,并非要求你能够设计硬件,不过起码得能够看懂,并非指望能理解模拟电路,然而一定要能明白数字电路,这方面的能力我是于学校里学到的,微机原理以及数字电路这两本书(书名记不得了)就已然足够,但是我心存疑虑你有没有那份耐心将这两本书看完,我不清楚当下是否存在更具快捷性的书籍,若想实现速成,那就暂且搁置这块,要是不懂就去询问Google,bing,baidu。

另外,芯片手册是一定要去读的,千万别去找中文的,只看英文的。刚开始的时候会极其痛苦,往后就会发觉只要那些语法、词汇一旦熟悉了之后,再去读任何芯片手册都会变得很容易。对于ARM 体系处理器的了解,去看杜春蕾写的那本吧,里面讲述了有汇编指令,有异常模式以及MMU 等相关内容。也就只有这三块内容是需要你去了解的。

首先,程序的基本概念,王道是去看编译原理,可叹呀,这类书绝对属于天书级别的,奉劝你要是并非超级天才那么还是别去翻看了,那就去看我录制的视频课程吧,有三套视频教程,任选其一就好,依据视频把硬件相关的实验做了,如此这些概念就明晰了。

针对bootloader,我在学习期间,其过程是先进行了查看,之后凭借自身之所为编写程序,进而将各个硬件的实验逐个都做了一回,像GPIO、时钟、SDRAM、UART、NAND这些方面。待把这些全弄明白之后,将它们组合起来时,就极易看懂u-boot了。

概括来讲,弄明白硬件原理图,查看芯片手册,这得靠你自己去寻觅资料。其余的,那就依据视频课程的章节目录开展学习吧。

二、内核:

想速成的人,先跨过内核的学习,直接学习怎么写驱动。

期待成就高手之姿,内核务必深入知悉,请注意,此乃知悉之意,我未曾奢望撰写出一个内核。

得对其中的调度机制,有所知晓,对内存管理机制,有所知悉,还得对文件管理机制,有所明白等等。

推荐两本书:

1. 通读,请看薄的那本(浮燥的社会讲求速度, 呵),

2. 选读, 想了解哪一块就读哪一节

三、驱动:

驱动包含两部分:硬件本身的操作、驱动程序的框架。

嵌入式Linux入门教程_学习嵌入式Linux_嵌入式linux培训

又是硬件,还是要看得懂原理图、读得懂芯片手册,多练吧。

探讨到驱动框架,存在一些书籍可供介绍,LDD3,也就是老外所撰写的那本,其中阐述了不少概念,具备值得阅读的价值,然而,它的作用仅仅局限于对概念作出介绍罢了。我大体上在入门之前借助它来熟悉一番概念,入门之后便将其舍弃了。

进行驱动方面较为全面具体的介绍的,应当算是宋宝华所著的那本了,说实话我仅仅只是翻阅过其目录而已,有相当多的人评价说很不错,在此向大家推荐一番。要是想要深入透彻地去了解其中某一个部分的,那绝对是给予超5星级别的推荐。你根本就别幻想能够将它完整读完,它足足有1800多页的篇幅,是分为上下两册的呢。我是在对某一个部分不太明晰的时候,就会去把它拿出来翻阅一下。这本书对于任意的某一个部分,都能够详细地讲述上2、3百页,真的是极为详尽。而且它是围绕着某一个目标带引大伙儿去剖析内核源码的。它是以linux 2.4作为范例的,然而其原理却是相通的,同样也是适用于其他版本的linux的。

还有没有其他介绍?

那是肯定存在的呀,存在着免费的那种助力驱动开发起步历程部分,还存在着收费的、以IMX6ULL以及STM32MP157为基础构建出来的Linux驱动全部内容集合呢。

不但教你如何去写驱动,怎样改驱动,还会教你因何这般写,这般改驱动。

每一个驱动都是现场编写:

1. 利用绘图板展开画图讲授,这等同于在学校里,老师于黑板之上进行画图讲授,具备很强的直观性。

绝对不是对着PPT念。

2. 于source insight之中,当场着手去写程序,自第1行起始书写,每一门课程皆是如此这般。比如说,我总共讲述了20多个驱动,随之也就撰写了20多个程序。

3. 写完就编译、测试。

4. 极具全面性,字符设备驱动这一类完备,块设备这一类完备,网卡驱动在这三大类中同样齐全,硬件介绍这一类完备,驱动框架分析这一类完备,测试在这三大类里也齐全。

在培训机构所教授的内容,远比不了这期视频那般丰富。我曾于多个培训机构授课,未曾见到有哪个老师敢于在每一堂课上,当场进行讲解,当场编写代码,当场予以测试,除我之外!也未曾见到有哪个培训机构能够讲完这些内容──缘由是时间不足,讲完至少得一个月,然而这部分内容基本仅有两周的授课时间。

尝试为你手上开发板所关联的硬件,去撰写一个驱动,有问题就先进行“痛苦地思考”,在思考进程里,你会将诸多不相关的知识串联起来,最终达成贯通。

四、根文件系统和应用:

大家有没有想过这2个问题:

学习嵌入式Linux_嵌入式linux培训_嵌入式Linux入门教程

1. 有的Linux所产出的商品,一部分被做成监控用途,一部分被做成手机,一部分则被做成平板。那么在内核启动之后,在挂载根文件系统之后,究竟应当启动哪一款应用程序呢?

答:内核对于该启动哪一个用户程序,既不知道也不会去管。它仅仅启动init这么一个应用程序,而这个启动的应用程序是/sbin/init。

明显地,这个应用程式需读取配置档案,依据配置档案来启动用户程式,包含监控,手册界面,平板界面等。

这个问题向我们发出提示,文件系统的内容存在着一些约定,像是得有/sbin/init,还得有配置文件。

2. 你所编写的那个hello嵌入式linux培训,world程序,可曾思考过其中所运用到的printf究竟是由谁去实现的呢?

答:并非是你去进行这个函数的实现,而是由库函数来予以实现的。在其运行之际,是需要找到库的。

这个问题提示我们,文件系统里还要有库。

到这里,简单的自问自答结束,若想开展深入了解,能够看一看busybox的init.c,如此便能晓得init进程所做的事情了。

供大家参考学习的,是对应应用的,我录制的,免费的,嵌入式Linux应用开发基础。

说一下我的学习经历吧。

1. 我于学校就读期间所学专业乃物理电子专业,实际上课程并未教授如何进行电路设计,仅仅传授了一些关于电子电路方面的知识,PCB的设计是于实验室中通过自学达成的,仅设计过2层板,如今已遗忘得差不多了,不过依然保留了查看原理图、查看芯片手册的能力。

2. 选修了软件方面的学位,对于软件设计是挺感兴趣的,然而真正就等于只学了C语言,还有数据库罢了。凭借着兴趣做了数量不少的竞赛题。其实并没有能力前去参加竞赛,不过倒是把C语言练习得极为扎实。

3. 于实验室之中,于第1家公司里面,所做之事乃是设计一些简单的PCI卡,还要撰写一下windows的驱动程序。

4. 在第二家公司之时,运用51单片机去制作车载电话,由此开启踏上纯软件的路径之旅。

5. 深感单片机存在不足,遂辞职,闭门钻研Linux半年,起始自red hat如何操作。其步骤,先是观看,而后自行编写裸板程序操控硬件,随后再深入剖析u-boot。与此同时,同步进行学习,以求对LINUX框架有所认识知晓。于撰写裸板程序之过程中,提议诸位强化对中断的理解认知,毕竟内核乃是藉由中断达成各类功能的。

6. 将u-boot分析完毕之后,紧接着就开启了简单的驱动编程,处于这个阶段的时候,自身能力尚十分薄弱。

学习嵌入式Linux_嵌入式linux培训_嵌入式Linux入门教程

7. 起头前往中兴展开工作,历经两年之际,书写各种不同类型的驱动篇章,化解各种各样的问题局面,其中涵盖驱动相关问题以及助力定位应用方面的问题,自身能力由此获得了锻炼提升。

总结一下:

1. 有关硬件方面的书籍,像微机原理,还有数字电路,这些是在高校里所使用的教材嵌入式linux培训,毕业已经多年了贝语网校,把名字给忘掉了。

2. Linux方面的书:

,老外写的那本

3.我们开发板配套的资料手册

4. 视频:

【第1篇】全新的学习的路线,作视频介绍内容,进行资料下载行为,开展开发板基础操作活动 【全部不收取费用 绝对纯免费】。

【第2篇】Linux基本操作【全部免费】

【第3篇】开发板使用手册【全部免费】

【第4篇】嵌入式Linux应用开发基础知识【全部免费】

【第5篇】嵌入式Linux驱动开发基础知识【全部免费】

依托IMX6ULL开发板开展的,嵌入式Linux全新系列教程里的驱动大全教程。

适用于STM32MP157开发板,针对于嵌入式Linux全新系列教程的一款驱动大全。

要查看视频信息,可前往www.100ask.net 的网址,在该网址里面存在着所有视频以及资料的下载选项。

名师辅导 环球网校 建工网校 会计网校 新东方 医学教育 中小学学历



星级网校推荐

排行推荐 频道最新