问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

要学习嵌入式,现在需要学习哪些基本课程?

发布网友 发布时间:2022-04-23 14:59

我来回答

4个回答

热心网友 时间:2022-05-23 02:08

嵌入式方向很多,这是现在最流行的这个方向。
由于很多人总问这个问题,所以这里做一个总结供大家参考。这里必须先说明,以下的步骤都是针对Linux系统
的,并不面向WinCE。也许你会注意到,现在做嵌入式的人中,做linux研究的人远比做WinCE的人多,很多产家
提供的资料也是以linux为主。我一直很难理解,其实WinCE的界面比linux的界面好看多了,使用起来也很方便
,更为重要的是,WinCE的开发和Windows下的开发基本一样,学起来简单得多,但是学linux或者使用linux做嵌
入式的人就是远比WinCE多。在和很多工作的人交流时我了解到,他们公司从没考虑使用WinCE,因为成本高,都
是使用linux进行开发。我读研究生的的实验室中也没有使用WinCE的,大都研究linux,也有少部分项目使用
vxwork,但是就没有听说过使用WinCE的,原因就是开源!当然现在WinCE6.0听说也开源,不过在成本和资源上
linux已经有了无人能挡的优势。与此相对应的是,越来越多的电子厂商已经开始使用linux开发产品。举个例子
,Google近期开发的智能手机操作系统Android其实就是使用linux-2.6.23内核进行改进得到的。  

  第一,学习基本的裸机编程。
  对于学硬件的人而言,必须先对硬件的基本使用方法有感性的认识,更必须深刻认识该硬件的控制方式,如
果一开始就学linux系统、学移植那么只会马上就陷入一个很深的漩涡。我在刚刚开始学ARM的时候是选择ARM7(
主意是当时ARM9还很贵),学ARM7的时候还是保持着学51单片机的思维,使用ADS去编程,第一个实验就是控制
led。学过一段时间ARM的人都会笑这样很笨,实际上也不是,我倒是觉得有这个过程会好很多,因为无论做多复
杂的系统最终都会落实到这些最底层的硬件控制,因此对这些硬件的控制有了感性的认识就好很多了学习裸机的
编程的同时要好好理解这个硬件的构架、控制原理,这些我称他为理解硬件。所谓的理解硬件就是说,理解这个
硬件是怎么组织这么多资源的,这些资源又是怎么由cpu、由编程进行控制的。比如说,s3c2410中有AD转换器,
有GPIO(通用IO口),还有nandflash控制器,这些东西都有一些寄存器来控制,这些寄存器都有一个地址,那
么这些地址是什么意思?又怎么通过寄存器来控制这些外围设备的运转?还有,norflash内部的每一个单元在这
个芯片的内存中都有一个相应的地址单元,那么这些地址与刚刚说的寄存器地址又有什么关系?他们是一样的吗
?而与norflash相对应的nandflash内部的储存单元并不是线性排放的,那么s3c2410怎么将nandflash的地址映
射在内存空间上进行使用?或者简单地说应该怎么用nandflash?再有,使用ADS进对ARM9行编程时都需要使用到
一个初始化的汇编文件,这个文件究竟有什么用?他里面的代码是什么意思?不要这个可以吗?诸如此类都是对
硬件的理解,理解了这些东西就对硬件有很深的理解了,这对以后更深一步的学习将有很大的帮助,如果跳过这
一步,我相信越往后学越会觉得迷茫,越觉得这写东西深不可测。因为,你的根基没打好。不过先声明一下,本
人并没有使用ADS对ARM9进行编程,我是学完ARM7后直接就使用ARM9学linux系统的,因此涉及使用ADS对ARM9进
行编程的问题我很难回答^_^,自己去研究研究吧。
  对于这部分不久将提供一份教程,这个教程中的例程并不是我为我们所代理的板子写的,是我在我们学院实
验室拿的,英培特为他们自己的实验箱写的,不过很有借鉴意义,可以作为一份有价值的参考。

  第二,使用linux系统进行一些基本的实验。

  在买一套板子的时候一般会提供一些linux的试验例程,好好做一段时间这个吧,这个过程也是很有意义的
,也是为进一步的学习积累感性认识,你能想象一个从没有使用过linux系统的人能学好linux的编程吗?好好按
照手册上的例程做一做里面的实验,虽然有点娃娃学走路,有点弱智,但是我想很多高手都会经历这个过程。
   在这方面我们深蓝科技目前没有计划提供相应的例程,主要是开发板的提供商会提供很丰富的例程,我们
不做重复工作,只提供他们没有的、最有价值的东西给大家。

  第三,研究完整的linux系统的的运行过程。
  所谓完整的linux系统包括哪些部分呢?
  三部分:bootloader、linux kernel(linux内核)、rootfile(根文件系统)。
  那么这3部分是怎么相互协作来构成这个系统的呢?各自有什么用呢?三者有什么联系?怎么联系?系统的
执行流程又是怎么样的呢?搞清楚这个问题你对整个系统的运行就很清楚了,对于下一步制作这个linux系统就
打下了另一个重要的根基。介绍这方面的资料网上可以挖掘到几吨,自己好好研究吧。

第四,开始做系统移植。
  上面说到完整的linux有3部分,而且你也知道了他们之间的关系和作用,那么现在你要做的便是自己动手学
会制作这些东西。
  当然我不可能叫你编写这些代码,这不实现。事实上这个3者都能在网下载到相应的源代码,但是这个源代
码不可能下载编译后就能在你的系统上运行,需要很多的修改,直到他能运行在你的板子上,这个修改的过程就
叫移植。在进行移植的过程中你要学的东西很多,要懂的相关知识也很多,等你完成了这个过程你会发现你已经
算是一个初出茅庐的高手了。
  在这个过程中如果你很有研究精神的话你必然会想到看源代码。很多书介绍你怎么阅读linux源代码,我不
提倡无目的地去看linux源代码,用许三多的话说,这没有意义。等你在做移植的时候你觉得你必须去看源代码
时再去找基本好书看看,这里我推荐一本好书倪继利的《linux内核的分析与编程》,这是一本针对linux-
2.6.11内核的书,说得很深,建议先提高自己的C语言编程水平再去看。
  至于每个部分的移植网上也可以找到好多吨的资料,自己研究研究吧,不过要提醒的是,很多介绍自己经验
的东西都或多或少有所保留,你按照他说的去做总有一些问题,但是他不会告诉你怎么解决,这时就要靠自己,
如果自己都靠不住就找我一起研究研究吧,我也不能保证能解决你的问题,因为我未必遇到过你的问题,不过我
相信能给你一点建议,也许有助你解决问题。
  这一步的最终目的是,从源代码的官方主页上(都是外国的,悲哀)下载标准的源代码包,然后进行修改,
最终运行在板子上。
  盗用阿基米德的一句话:“给我一根网线,我能将linux搞定”。  

第五,研究linux驱动程序的编写。
  移植系统并不是最终的目的,最终的目的是开发产品,做项目,这些都要进行驱动程序的开发。
  Linux的驱动程序可以说是五花八门,linux2.4和linux2.6的编写有相当大的区别,就是同为linux2.6但是
不同版本间的驱动程序也有区别,因此编写linux的驱动程序变都不是那么容易的事情,对于最新版本的驱动程
序的编写甚至还没有足够的参考资料。那么我的建议就是使用、移植一个不算很新的版本内核,这样到时学驱动
的编程就有足够的资料了。这部分的推荐书籍可以参考另一篇文章《推荐几本学习嵌入式linux的书籍》。  

第六,研究应用程序的编写。
  做作品做项目除了编写驱动程序,最后还要编写应用程序。现在的趋势是图形应用程序的开发,而图形应用
程序中用得最多的还是qt/e函数库。我一直就使用这个函数库来开发自己的应用程序,不过我希望你能使用国产
的MiniGUI函数库。盗用周杰伦的广告词就是“支持国产,支持MiniGUI”。MiniGUI的编程比较相似Windows下的
VC编程,比较容易上手,效果应该说是相当不错的,我曾使用过来开发ARM7的程序。不过MiniGUI最大的不好就
是没有像qtopia这样的图形操作平台,这大大*了他的推广,我曾经幻想过与北京飞漫公司(就是MiniGUI的
版权拥有者)合作使用MiniGUI函数库开发像qtopia这样的图形操作平台,不过由于水平有限这只能是幻想了,
呵呵。完成这一步你基本就学完了嵌入式linux的全部内容了。
  还有一个小小的经验想和大家分享。我在学习嵌入式linux的过程中很少问人,客观原因是身边的老师、同
学师兄都没有这方面的高手,主观原因是我不喜欢问人,喜欢自己研究解决问题。这样做有个好处,就是可以提
高自己解决问题的能力,因为做这些东西总有很多问题你难以理解,别人也没有这方面的经验,也不是所有问题
都有人给你答案,这时必须要自己解决问题,这样,个人的解决问题能力就显得非常关键了。因此我的建议就是
一般的问题到网上搜索一下,确实找不到答案了就问问高手,还是不行了就自己去研究,不要一味去等别人帮你
解决问题。记住,问题是学习的最好机会。另外笔者推荐你可以用嵌视科技qs-pte9

热心网友 时间:2022-05-23 03:26

嵌入式主要内容包括linux系统,C语言开发,数据库等,JAVA部分的安卓开发等,学成后可以开发应用软件的,内核开发,驱动开发等工作,做项目。目前国内零基础的入门性课程较多,如果自己是软件开发相关专业或有较好的基础的,应该考虑星创客这样的专为培养中高级工程师的课程

热心网友 时间:2022-05-23 05:01

星创客建议至少学会以下基础内容:C语言过关(为linux系统环境下的开发),linux系统,JAVA开发语言(为了安卓系统环境下的开发)。——这部分是基础能力,需要做扎实。

热心网友 时间:2022-05-23 06:52

1.1 有哪些设备使用单片机或Linux

所有的电子产品,所用技术都可以认为要么是单片机,要么是Linux;GUI方面主要是QT/Android,它们都是运行于Linux之上的。我们说的单片机不使用操作系统,但是使用单片机设备肯定远远超过Linux。很多人也是先学习单片机,从单片机进入电子工程师行业,日常生活中,有哪些产品使用单片机、Linux呢?下面举一些例子:

我们设计一个产品时,是使用单片机还是Linux,取决于成本:硬件成本、软件成本、维护成本、升级成本。而不应该根据个人偏好来选择:我喜欢单片机,所以就排斥使用Linux;我喜欢Linux,就排斥使用单片机。为了有更多的选择,我们需要既懂单片机,又懂Linux。

1.2 在硬件操作上单片机和Linux是类似的

1.3 在单片机中点灯、使用LCD

使用单片机开发程序时,我们一上来就写一个main函数,下面是一些简化的代码:

1.4 在Linux中点灯、使用LCD

第2章 嵌入式Linux快速入门

这几天在群里跟学员聊天,有一位学员的学习方法很好:先观其广,再究其深。有时候要“不求甚解”,很多时候保持疑问先学下去,这些疑问就自然解决了。

比如课程中涉及汇编知识,如果你要彻底弄清楚,你需要去学习《ARM架构与编程》;当你学完这本书,你的同学搞不好已经可以上手工作了。

2.1 短期的目标是什么

我们先把学习目标定下来:快速了解嵌入式Linux开发的流程,知道要学什么,具备跟从业者交流的能力。

2.2 一个嵌入式Linux系统的组成

2.3 要学习bootloader吗

2.4 要学习Linux内核、要学习驱动程序吗

2.5,要学习Linux应用程序吗?先学一些基础技能

2.6,应用程序是怎么启动的?要了解一下根文件系统

第3章 学习方法

3.1 先不要打破砂锅问到底

3.2 思路要清晰,不怕抄代码

3.3 对自己的方向很了解,我只能带你到这里了

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
京珠高速与连霍高速的比较?(各个方面~) 请问在衡阳衡东107国道往京珠高度的交叉路口下车后怎么去武广高铁?有... 衡炎高速公路简介 请新领导吃饭高情商开场白 公司上了黑名单后,注册过的商标还能用吗 ...配 卡其色牛仔裤的话好看么? 如果好看,鞋子应该配什么颜色呢_百度知 ... 我室友很喜欢我该怎么办 cf巨人城废墟第31关怎么打才能刷过去 巨大城废墟31关怎么打? 困难巨人城废墟31关怎么关? 京东白条可以在商场购物吗? 京东白条可以在别的地方用吗? 京东白条可以在超市用吗?急~~ 京东白条只可以在京东消费吗? 铁路12306注册样板? 京东白条只能在京东上用吗? 京东白条,只能在京东商城消费吗? 给我一个12306注册样本 想学习嵌入式,不知道怎么入手,如果在外面参加培训价格大概是多少?花... 怎么注册12306账户有样板吗 股票分什么股? 推荐几本小说, 穿越小说女主穿越就被强暴 男主叫闻人殇 求搞笑的小说或经典的穿越文!!! 求一部穿越小说名字。。。 推荐几本小说 要求是能教授怎样处理人际关系 职场关系的 Moby dick 这本英文小说大概内容是什么? 人情世故,勾心斗角小说 有没有什么原耽小说推荐的? 跪求一本小说! 用纯凉水与凉开水做冰粉会影响质量吗? 冰粉水是30的温开水可以不 冰粉粉怎么做木莲豆腐 手工制冰粉可以用冷水吗? 手工制冰粉可以用冷水吗 四川的冰粉和白凉粉是同一种东西么? 冰粉用开水搓行吗,冷水搓来冷置就这样食用行吗? 水凉粉(冰粉)怎么做 制做冰粉的时侯把冰粉粉和开水一起煮吗 (跪求)重庆冰粉和凉虾的做法??(要详细资料:配方,步骤,注意事项,分开说... 冰粉和糖水的区别? 我微信用银行卡转账给别人,可以去银行查流水查到收款人的名字吗? 请问知道流水账单可以查到转账给谁吗? 你好,从微信绑定的银行卡里转给别人钱,银行流水能查到转给谁吗? 微信转账算银行流水吗? 银行卡用微信转账给别人在流水账上能查到转账给了谁吗? 在微信转账用银行卡转账给别人,在银行可以查到到转给谁吗? 银行流水会显示微信转账给谁么 微信转账银行流水显示收款方微信名吗? 怎么查询注册时间