FMUSER更轻松地传输视频和音频!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org ->荷兰语
sq.fmuser.org ->阿尔巴尼亚人
ar.fmuser.org ->阿拉伯语
hy.fmuser.org - >亚美尼亚
az.fmuser.org ->阿塞拜疆
eu.fmuser.org ->巴斯克
be.fmuser.org ->白俄罗斯语
bg.fmuser.org - >保加利亚
ca.fmuser.org ->加泰罗尼亚语
zh-CN.fmuser.org ->中文(简体)
zh-TW.fmuser.org - >中国(繁体)
hr.fmuser.org ->克罗地亚语
cs.fmuser.org ->捷克
da.fmuser.org ->丹麦语
nl.fmuser.org - >荷兰
et.fmuser.org ->爱沙尼亚语
tl.fmuser.org ->菲律宾
fi.fmuser.org ->芬兰语
fr.fmuser.org - >法国
gl.fmuser.org ->加利西亚语
ka.fmuser.org ->乔治亚
de.fmuser.org ->德语
el.fmuser.org - >希腊
ht.fmuser.org ->海地克里奥尔语
iw.fmuser.org ->希伯来语
hi.fmuser.org ->印地语
hu.fmuser.org - >匈牙利
is.fmuser.org ->冰岛语
id.fmuser.org ->印尼语
ga.fmuser.org ->爱尔兰
it.fmuser.org - >意大利
ja.fmuser.org ->日语
ko.fmuser.org ->韩文
lv.fmuser.org ->拉脱维亚
lt.fmuser.org - >立陶宛
mk.fmuser.org ->马其顿语
ms.fmuser.org ->马来语
mt.fmuser.org ->马耳他语
no.fmuser.org - >挪威
fa.fmuser.org ->波斯语
pl.fmuser.org ->波兰语
pt.fmuser.org ->葡萄牙语
ro.fmuser.org - >罗马尼亚
ru.fmuser.org ->俄语
sr.fmuser.org ->塞尔维亚语
sk.fmuser.org ->斯洛伐克
sl.fmuser.org - >斯洛文尼亚
es.fmuser.org ->西班牙语
sw.fmuser.org ->斯瓦希里语
sv.fmuser.org ->瑞典语
th.fmuser.org - >泰国
tr.fmuser.org ->土耳其语
uk.fmuser.org ->乌克兰语
ur.fmuser.org ->乌尔都语
vi.fmuser.org - >越南
cy.fmuser.org ->威尔士语
yi.fmuser.org - >意第绪语
对于应用程序开发:需要很好地学习C语言,数据结构,JAVA等。 在嵌入式应用程序开发和PC上的应用程序开发中,没有什么特别需要注意的。 也许您说您需要优化嵌入式系统,是的,您需要优化,但是未优化的程序与PC上的程序开发没有什么不同。 另外,当您具有优化能力时,您将不再习惯问这个问题。 对于一个特定的例子,例如开发接口,我们在PC上使用VC;在开发环境中,我们使用VC。 在嵌入式Linux中,我们可能会使用QT和Android。 这时,您应该学习QT和Android编程。 但是基础仍然是C或JAVA,并在此基础上熟悉它们的接口。 如果您学习过VC,则需要花费一些时间来理解这些类和控件。
如果您想学习基础系统,这是我的专长,但是我可以说一点。
在回答这个问题之前,让我先回答:很多人问我,是学习驾驶还是学会申请? 我只能说这是基于兴趣的,并且驱动程序和应用程序不是完全分开的。
1.我们所讨论的驱动程序不仅限于硬件操作,还包括诸如操作系统原理以及进程睡眠和唤醒调度之类的概念。 如果您想编写一个好的应用程序,并且想要更好地解决该应用程序遇到的问题,则应该了解此知识。
2.较低的应用障碍,尤其是当前的ANDROID纯JAVA。 我个人认为应用程序开发路径精通业务。 例如,在通信行业,IPTV行业和移动电话行业中,您了解该行业的需求。 因此,领导者主要是应用程序。
3.被驱动。 实际上,我不想将其称为“成为驱动程序”,但我想将其称为“成为底层系统”。 一旦完成,这将杀死所有行业。 我已经工作了几年,已经制造了手机,IPTV和会议电视,但是这些产品对我来说并没有什么不同,因为我只做底层工作。 他们的事与我无关。 当应用程序出现问题并且他们无法解决时,我将从内核的角度为他们提供一个想法,并为他们提供工具。 我个人认为我是底层开发方向的技术专家。
4.实际上,在执行底层或执行应用程序之间没有界限。 如果您有底层的经验,那么在执行应用程序时会感到很自在。 凭借业务经验,您可以了解底层知识,并且很快就可以组建团队。
回到如何学习的问题。 嵌入式Linux底层系统包含什么? 不用担心,您将通过举例来了解它。
1.打开计算机电源后,谁会显示这些界面? 它是BIOS,它有什么作用? 进行一些自检,然后从硬盘读取窗口并启动它。 同样,此BIOS对应于嵌入式Linux中的引导程序。 该引导程序需要读取Flash上的Linux内核并启动它。
2.启动Windows的目的是什么? 当然是在线聊天之类的。 这些互联网和聊天工具在哪里? 在C驱动器和D驱动器上。 因此,Windows必须首先识别C驱动器和D驱动器。 我们称其为Linux下的根文件系统。
3. Windows可以识别C驱动器和D驱动器,因此它必须能够读写硬盘驱动器。 所涉及的事物称为驱动程序。 当然,它不仅是硬盘,而且是网卡,USB等。 嵌入式Linux可以从Flash读取和执行应用程序,并且还必须具有Flash驱动程序。 当然,不只是Flash。
首先让我们谈谈它,嵌入式LINUX包含四个主要部分:引导加载程序,内核,驱动程序和根文件系统。
一,引导程序
这是一个稍微复杂的裸板程序。 但是,要理解和编写此裸板程序并不容易。 Windows下有用的工具削弱了我们的编程能力。
许多人在玩嵌入式游戏时会立即使用ADS和KEIL。 你能回答这些问题吗?
1.接通电源后,CPU在哪里取指令执行?
答:通常,指令来自Flash。
2.但是Flash只能读取,不能直接写入。 如果我使用全局变量,这些全局变量在哪里?
答:全局变量应该在内存中
3.那么谁将全局变量存储在内存中呢?
答:您能回答长期使用ADS和KEIL的朋友吗? 这需要“重定位”。 在ADS或KEIL中,重定位代码由制造这些工具的公司为您编写。 你读过吗?
4.内存太大,如何知道将“最初存储在Flash中的内容”读取到内存的地址?
答:此地址由“链接脚本”确定,ADS中有分散文件,KEIL中有类似文件。 但是,您研究过吗?
5.您说的重定位是将程序从Flash复制到内存中,以便该程序可以读取Flash? 答:是的,您需要能够操作Flash。 当然,不仅这些,而且还设置时钟以使系统运行更快等等。 首先让我们在这里提问和回答,引导加载程序是一个裸板程序,实际上具有三个要点:
1.硬件操作
2.了解ARM系统处理器
3.程序的基本概念:重定位,堆栈,代码段,数据段,BSS段等。
对于硬件的操作,您需要查看原理图和芯片手册。 这需要一定数量的硬件知识。 它并不需要您能够设计硬件,但至少需要了解它。 它不需要能够理解模拟电路,而能够理解数字电路。 我在学校学习了这种能力。 两本书(我忘了这本书的书名)就足够了。 但是我怀疑您是否有足够的耐心来完成这两本书的阅读。 我不知道现在有没有更快的书。 如果您想使其快速运行,请先放开它,如果您不了解,只需询问Google并发布即可。
另外,必须阅读芯片手册,不要看中文,只看英文。 刚开始时非常痛苦,但是后来,一旦熟悉了语法和词汇,就很容易阅读任何芯片手册。
要了解ARM系统处理器,请参阅Du Chunlei。 它讨论汇编指令,异常模式,MMU等。仅这三部分内容需要您理解。
该程序的基本概念,当然是王者,要看汇编的原理。 不幸的是,这种类型的书肯定是天上的书。 我建议您不要看,除非您是超级天才。 只是看还有我写的第一个视频,不用担心,不要花钱。 在观看视频并进行与硬件相关的实验之后,这些概念将变得清晰。 我还没有找到关于这些概念的第二本书或视频集,这让我盲目自夸。 对于引导加载程序,我在学习时首先观看了它,然后我自己编写了程序,并在各种硬件(例如GPIO,时钟,SDRAM,UART和NAND)上进行了所有实验。 如果您将它们弄清楚,则通过组合在一起很容易理解u-boot。 综上所述,要了解硬件原理图和芯片手册,您需要自己查找信息。 其余的,只需按照以及要学习的视频的第一阶段。
二,内核
想要入门的人应该先跳过内核学习,然后学习如何直接编写驱动程序。
要成为高手,内核必须具有深刻的理解。 请注意,我在谈论理解,我并不希望编写内核。
了解内部的调度机制,内存管理机制,文件管理机制等。
推荐两本书:
1.通读,请仔细阅读本书(浮动社会强调速度)
2.选择阅读,想知道哪个部分阅读哪个部分
三,开车
驱动程序由两部分组成:硬件本身的操作和驱动程序的框架。
再次是硬件。 仍然有必要了解原理图和芯片手册。 多加练习。 说到驱动程序框架,有一些书籍对其进行了介绍。 LDD3是一本由外国人写的书,介绍了许多概念,值得一读。 但是,其作用仅限于引入概念。 我基本上是用它来熟悉入门之前的概念的,然后在开始使用后将其丢弃。
关于驱动程序的更全面的介绍应该是宋宝华的。 老实说,我只阅读目录。 很多人说是的,我在这里推荐。
如果您想深入了解某个区域,绝对是超五星级的推荐。 您不希望阅读它,超过5页,上下两册。 当我不确定某个区域时,我会仔细检查一下。 本书的任何部分都可以涵盖两三百页,这非常详细。 并带您分析具有特定目标的内核源代码。 它以linux 1,800为例,但原理相同,也适用于其他版本的linux。 还有其他介绍吗? 当然,还有第二期《魏东山Linux视频》。 “嵌入式Linux应用程序开发的完整手册”对驱动程序的讨论不多,并且不够深入。
尝试为开发板中涉及的所有硬件编写驱动程序。 如果您有问题,应该首先“痛苦地思考”。 在思考的过程中,您将连接很多不相关的知识,并最终将其理解。
四,根文件系统
您是否考虑过以下两个问题:
1.对于Linux生产的产品,有些用于监视,有些用作手机,有些用作平板电脑。 那么,在启动内核之后,在挂载根文件系统之后,应该启动哪个应用程序?
答:内核不知道或不在乎应该启动哪个用户程序。 它仅启动与/ sbin / init对应的init应用程序。
显然,此应用程序必须读取配置文件并根据配置文件启动用户程序(监视,手动界面,平板电脑界面等)。 这个问题提醒我们文件系统的内容具有某些约定,例如/ sbin / init,因此需要一个配置文件。
2.您是否考虑过谁实现了您编写的hello和world程序中使用的printf?
答:该功能不是由您实现的,而是由库函数实现的。 当它运行时,它必须找到该库。
这个问题提醒我们文件系统中仍然存在库。 这是一个简单的问题和答案。 如果您想了解更多信息,可以查看busybox的init.c来了解init进程的作用。 当然,您也可以在。
我的学习经历
1.在学校的时候,我主修物理和电子学。 实际上,我没有在本课程中教过如何设计电路,而只是教了一些有关电子电路的知识。 PCB的设计由我自己在实验室里教过。 我只设计了一个2层板,现在我几乎忘了它。 但是它保留了读取原理图和芯片手册的能力。
2.我获得了软件学位,并且对软件设计非常感兴趣,但是我只学习C语言和数据库。 我很感兴趣地做了很多比赛问题。 我不能参加比赛,但是我有扎实的C语言练习。
3.在第一家公司的实验室中,我设计了一些简单的PCI卡并编写了Windows驱动程序
4.在第二家公司中,使用51单片机作为车载电话,开始走上纯软件之路。
5.我开始感到单片机的缺点。 我辞职了半年,秘密学习Linux,从如何操作红帽开始。 首先要看一下它,然后编写裸板程序来操作硬件,然后分析u-boot。 同时,我对LINUX框架有了一些了解。
在编写裸板时,建议您加深对中断的理解。 内核使用中断来完成各种功能。
6.分析u-boot之后,开始简单的驱动程序编程。 这时候,能力还是很弱的。
7.开始在中兴通讯工作,工作了2年,编写了各种驱动程序,解决了各种问题(驾驶问题,帮助定位应用程序问题),并且能力得到了锻炼。
|
输入电子邮件以获取惊喜
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org ->荷兰语
sq.fmuser.org ->阿尔巴尼亚人
ar.fmuser.org ->阿拉伯语
hy.fmuser.org - >亚美尼亚
az.fmuser.org ->阿塞拜疆
eu.fmuser.org ->巴斯克
be.fmuser.org ->白俄罗斯语
bg.fmuser.org - >保加利亚
ca.fmuser.org ->加泰罗尼亚语
zh-CN.fmuser.org ->中文(简体)
zh-TW.fmuser.org - >中国(繁体)
hr.fmuser.org ->克罗地亚语
cs.fmuser.org ->捷克
da.fmuser.org ->丹麦语
nl.fmuser.org - >荷兰
et.fmuser.org ->爱沙尼亚语
tl.fmuser.org ->菲律宾
fi.fmuser.org ->芬兰语
fr.fmuser.org - >法国
gl.fmuser.org ->加利西亚语
ka.fmuser.org ->乔治亚
de.fmuser.org ->德语
el.fmuser.org - >希腊
ht.fmuser.org ->海地克里奥尔语
iw.fmuser.org ->希伯来语
hi.fmuser.org ->印地语
hu.fmuser.org - >匈牙利
is.fmuser.org ->冰岛语
id.fmuser.org ->印尼语
ga.fmuser.org ->爱尔兰
it.fmuser.org - >意大利
ja.fmuser.org ->日语
ko.fmuser.org ->韩文
lv.fmuser.org ->拉脱维亚
lt.fmuser.org - >立陶宛
mk.fmuser.org ->马其顿语
ms.fmuser.org ->马来语
mt.fmuser.org ->马耳他语
no.fmuser.org - >挪威
fa.fmuser.org ->波斯语
pl.fmuser.org ->波兰语
pt.fmuser.org ->葡萄牙语
ro.fmuser.org - >罗马尼亚
ru.fmuser.org ->俄语
sr.fmuser.org ->塞尔维亚语
sk.fmuser.org ->斯洛伐克
sl.fmuser.org - >斯洛文尼亚
es.fmuser.org ->西班牙语
sw.fmuser.org ->斯瓦希里语
sv.fmuser.org ->瑞典语
th.fmuser.org - >泰国
tr.fmuser.org ->土耳其语
uk.fmuser.org ->乌克兰语
ur.fmuser.org ->乌尔都语
vi.fmuser.org - >越南
cy.fmuser.org ->威尔士语
yi.fmuser.org - >意第绪语
FMUSER更轻松地传输视频和音频!
联系我们
分类目录
订阅电子邮件