请教zynqzynq 嵌入式式linux高手

ARM与嵌入式linux入门建议
> ARM与嵌入式linux入门建议
ARM与嵌入式linux入门建议
  由于很多人总问这个问题,所以这里做一个总结文档供大家参考。这里必须先说明,以下的步骤都是针对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系统、学移植那么只会马上就陷入一个很深的漩涡。我在刚刚开始学的时候是选择7(主意是当时9还很贵),学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的驱动程序变都不是那么容易的事情,对于最新版本的驱动程序的编写甚至还没有足够的参考资料。那么我的建议就是使用、移植一个不算很新的版本内核,这样到时学驱动的编程就有足够的资料了。
  这部分的推荐书籍可以参考另一篇文章《推荐几本学习的书籍》。
  第六,研究应用程序的编写。
  做作品做项目除了编写驱动程序,最后还要编写应用程序。现在的趋势是图形应用程序的开发,而图形应用程序中用得最多的还是qt/e函数库。我一直就使用这个函数库来开发自己的应用程序,不过我希望你能使用国产的MiniGUI函数库。盗用周杰伦的广告词就是&支持国产,支持MiniGUI&。MiniGUI的编程比较相似Windows下的VC编程,比较容易上手,效果应该说是相当不错的,我曾使用过来开发ARM7的程序。不过MiniGUI最大的不好就是没有像qtopia这样的图形操作平台,这大大限制了他的推广,我曾经幻想过与北京飞漫公司(就是MiniGUI的版权拥有者)合作使用MiniGUI函数库开发像qtopia这样的图形操作平台,不过由于水平有限这只能是幻想了,呵呵。
  完成这一步你基本就学完了的全部内容了。
  还有一个小小的经验想和大家分享。我在学习的过程中很少问人,客观原因是身边的老师、同学师兄都没有这方面的高手,主观原因是我不喜欢问人,喜欢自己研究解决问题。这样做有个好处,就是可以提高自己解决问题的能力,因为做这些东西总有很多问题你难以理解,别人也没有这方面的经验,也不是所有问题都有人给你答案,这时必须要自己解决问题,这样,个人的解决问题能力就显得非常关键了。因此我的建议就是一般的问题到网上搜索一下,确实找不到答案了就问问高手,还是不行了就自己去研究,不要一味去等别人帮你解决问题。
  记住,问题是学习的最好机会。
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一Digilent的OOB设计给出了一个ZedBoard上完整的运行的linux系统所需要的所有文件,包括配置FPGA的bit文件、配置ARMPS系统的First-Stagebootloader(FSBL)和引导linux需要的Second-Stagebootloader(SSBL)、Linux内核zImage、设备树文件devicetree_ramdisk.dtb以及根文件系
从本小节开始,讲着重介绍Zedboard上的嵌入式linux应用,包括使用SDK设计最简单的linux应用程序、linux交叉编译环境搭建、设备驱动编写等内容。本小节使用的linux系统是Digilent官方提供的OOB设计,它是Digilent官网给出的一个完整的、Zedboard可运行的linux系统,包含
本小节通过使用XPS中的定制IP向导(ipwiz),为已经存在的ARMPS系统添加用户自定IP(CustomIP),了解AXILiteIP基本结构,并掌握AXILiteIP的定制方法,为后续编写复杂AXIIP打下基础。同时本小节IP定制方法同样适用于MicroBlaze处理系统。本小节定制的是简单LED的IP,只有一
找工作已经告一段落,今天捡起之前丢下的东西,接着做ZedBoard。这一节的目的是使用XPS为ARMPS处理系统添加额外的IP。从IPCatalog标签添加GPIO,并与ZedBoard板子上的8个LED灯相连。当系统建立完后,产生bitstream,并对外设进行测试。更多更新请关注我的博客:@超群天
《一步一步学ZedBoard&Zynq》系列第二篇,目的是为了学习不使用ARMPS情况下,只对ZynqPL的编程方法,同时学习XilinxPlanAhead工具的使用方法更多更新请关注我的博客:@超群天晴/surpassal/硬件平台:DigilentZedBoard开发环境:WindowsXP32bi
Zed板上的Zynq是一个ARMPS(processingsystem,双核A9+存储管理+外设)+PL(programableLogic)结构,如果不使用PL,zynq的开发和普通的ARM开发一样。不同的是ARMPS是可配置,因而硬件信息是不固定的。这也是zynq灵活性的一个表现。这是本系列的第一篇,因而会给出详细步骤的
在(原创)基于ZedBoard的Webcam设计(四):MJPG编码和AVI封装中,我们在zed上完成了视频的采集和存储,但是MJPG只是对一帧一帧图片进行编码,编码效率只有10%。x264-snapshot提供了开源x264源代码,已经广泛用于嵌入式解决方案中。本小节将介绍zed上x264-snapshot源码的配
在前几篇博客中,我们用ZED平台完成了对USB摄像头的视频采集,Qt的视频显示。在此基础上,我们更希望能把视频存储成视频文件,像DV机一样。MJPG是一种比较简单且易于实现的视频视频编码格式,而AVI封装则是非常流行的视频封装。本篇将介绍MJPG的编码格式和视频的AVI封装
在(原创)基于ZedBoard的Webcam设计(一):USB摄像头(V4L2接口)的图片采集和(原创)基于ZedBoard的Webcam设计(二):USB摄像头图片采集+QT显示两篇博客中,我们完成了ZedBoard上USB摄像头的图片采集,以及将图片显示到Qt界面上。可是毕竟采集和显示到只是一帧图像,并非动态
在(原创基于ZedBoard的Webcam设计(一):Zedboard上的USB摄像头(V4L2接口)的图片采集中,我们完成了ZedBoard上USB摄像头的单幅图片采集,采集到的图片是存储在文件系统中的“image_bmp.bmp”中的。这一小节将完成的是QT界面显示,将采集到的图像数据通过QT显示到HDMI显示
一直想把USB摄像头接到Zedboard上,搭建一个简易视频监控系统方便后续做视频处理。Xilinx官方给出了一个Webcam摄像头监控的例子,跑的是linaro,不知道是我的SD卡问题还是摄像头的问题,播放视频的时候总是会很卡,而且突然系统就死掉了。还是很喜欢自己动手,能学到新
使用了XPS中建立和导入IP向导(简称ipwiz),默认的源码文件只有hdl/verilog目录下的&userlogic.v&和hdl/vhdl目录下的&ipname.vhd&文件。当我们的设计变复杂了,需要更多的设计文件如.v、.vhd、.ngc等文件和多个模块/实体的时候,如果不进行一些设置,编译器会提示找不到m
板子好cool
—面向阳光
@超群天睛,你好,可以加你不,我是在校研究生,在做一个ZYNQ的项目,求交流,QQ
—dragen1860
linux是最原始的OOB,也就是SD卡自带的。摄像头驱动咋Ubuntu中可以加载,在OOB中不一定。建议更换摄像头。可执行程...
—超群天晴
你好,下载了你提供的源代码,在PC机上效果非常好。我想请教几个问题,你在ZED板子上跑的Linux是什么版本,我使用的是原来SD卡自...
关注微信公众号自动化步进电机控制器ZRW_A7
LORA技术在无线IOT领域的系统结构和应用,分为三个部分:LoRa技术和LoRaWAN系统架构,基站服务器的功能和特性,行业应用的数据实例。 中电网 &&&&日&&&&
OpenCV库正被广泛地应用于算法原型设计,许多业界领先的厂商和计算机视觉研究机构都在使用。FPGA 可以为复杂的算法提供无与伦比的计算效率的优势,比如密集光流算法和立体视觉算法等...... 赛灵思 &&&&日&&&&
机器学习的研究正因新的网络架构而日新月异,因此为特定的应用选择最佳的 CNN 算法变成一项困难的工作。鉴于算法的飞速发展变化,高性能且低功耗的需求大幅增加,因此越来越多嵌入式系统开发人员...... 赛灵思 &&&&日&&&&}

我要回帖

更多关于 zynq petalinux 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信