嵌入式系统开发实验一

2024-07-28

嵌入式系统开发实验一(精选9篇)

嵌入式系统开发实验一 篇1

嵌入式Linux系统开发教程实验报告

组员:武易 金鹏飞 周长升

实验一 熟悉嵌入式系统开发环境

一实验目的

1.熟悉嵌入式系统硬件实验平台 2.掌握超级终端配置方法。

3.掌握嵌入式系统开发环境配置,ARM-Linux下NFS服务器的配置方法 4.掌握常用的 Linux下shell命令

二实验设备及工具

硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。

软件:PC机操作系统REDHAT LINUX 9.0、MINICOM、AMRLINUX开发环境

三实验内容

(1)掌握嵌入式系统实验平台上的各类借接口的位置;

(2)配置windows的超级终端,熟悉vivi的命令行,bootload、kernel、root和用户程序的介绍;

(3)配置linux的终端,配置网络服、Ip地址,开发目录共享,挂载等。

四实验结果

实验二嵌入式Linux程序设计

一实验目的

1.掌握嵌入式Linux软件设计方法原理 2.掌握Makefile文件设计方法。

3.熟悉Linux下静态库和共享库的设计

二实验设备及工具

硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。

软件:PC机操作系统REDHAT LINUX 9.0、MINICOM、AMRLINUX开发环境

三实验内容

(1)编写一个带输入、输出的由5个文件组成的嵌入式软件;(2)写好makefile文件,并上机调试;(3)用变量指明两种编译器。

四实验结果

实验三

kernel与root的设计和烧写

一实验目的

1.掌握Linux内核配置与裁剪的方法 2.理解根文件系统配置。

3.掌握嵌入式系统内核和根文件系统的烧写的过程

二实验设备及工具

硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。

软件:PC机操作系统REDHAT LINUX 9.0、MINICOM、AMRLINUX开发环境

三实验内容

对嵌入式Linux系统进行裁剪、配置和编译,生成自己需要的操作系统映像文件,并将其烧写到flash中。

四实验结果

实验四搭建嵌入式系统开发环境

一实验目的

1.掌握嵌入式开发环境的配置 2.掌握开发工具链的安装与配置。

3.掌握嵌入式系统内核和根文件系统的烧写的过程

二实验设备及工具

硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。

软件:PC机操作系统REDHAT LINUX 9.0、MINICOM、AMRLINUX开发环境

三实验内容

(1)安装配置嵌入式开发环境;(2)安装与配置工具链;(3)内核和根文件系统的烧写

四实验结果

实验五嵌入式驱动程序设计

一实验目的

1.学习在LINUX 下进行驱动设计的原理

2.掌握使用模块方式进行驱动开发调试的过程

二实验设备及工具

硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。

软件:PC机操作系统REDHAT LINUX 9.0、MINICOM、AMRLINUX开发环境

三实验内容

在PC 机上编写简单的虚拟硬件驱动程序并进调试,实验驱动的各个接口函数的实现,分析并理解驱动与应用程序的交互过程。

四实验结果

实验六

S3C2410处理器硬件电路设计

一实验目的

1.熟悉硬件电路设计

2.掌握简单的S3c2410处理器的电路设计。3.掌握protel软件的使用

二实验设备及工具

硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。

软件:PC机操作系统REDHAT LINUX 9.0、MINICOM、AMRLINUX开发环境

三实验内容

使用protel 99se 做s3c2410处理器最小系统电路设计,A/D数据采集模块电路设计。

四实验结果

嵌入式系统开发实验一 篇2

从多年的嵌入式系统开发教学效果来看,该课程入门难、上手慢、实践性强,需要综合知识面广。要掌握嵌入式系统开发技术,需要大量的实践练习,因此,实验教学是非常重要的一环。

1 嵌入式系统开发平台组成

嵌入式系统开发平台有多种类型[2],我校使用的平台可以选用S3C44B0或S3C2410处理器。由于S3C44B0不支持MMU功能,因此如果选用S3C44B0作为处理器,相应的嵌入式操作系统则应选择uClinux;如果选择S3C2410处理器,则应选用Linux作为嵌入式操作系统来搭配使用。由于S3C44B0+uClinux平台功能相对简单,因此本文所涉及的实验全部基于S3C2410+Linux平台。

嵌入式系统开发平台结构框图如图1所示。使用CPU扩展接口,可以更换使用S3C44B0或S3C2410处理器。该平台提供的硬件资源丰富,包括64 M SDRAM,4 M Nor Flash,32 M Nand Flash,标配320×240 CSTN 5.7英寸LCD,多个LED指示灯,8个8段数码管,8路10BIT的ADC,提供触摸屏接口电路,5×4键盘,直流电机,步进电机模块,具有采用扩展子板形式的GPRS模块电路和GPS模块电路等,同时,该平台也提供了丰富的接口,包括10 M以太网接口,USB接口电路,2个RS232串行口,IIS音频信号接口,2个CAN接口,1个IDE硬盘接口,1个PCI扩展插槽和1个PS2接口,CF存储卡接口,SD卡接口等。同时,开发平台还提供JTAG接口,支持JTAG仿真技术,支持ADS,STD和IDE等集成开发环境。基于丰富的硬件资源和接口,可以开设各种类型的嵌入式实验。

要想在嵌入式开发平台上运行L i n u x操作系统,首先要把Linux裁剪、压缩,去掉一些使用不到的功能,以便符合硬件平台的要求。然后移植BootLoader,BootLoader是一段负责引导Linux操作系统启动的程序,在嵌入式系统开发中具有重要的作用。BootLoader一般分为两段,第一段一般采用ARM汇编程序编写,主要负责硬件初始化、设置堆栈等工作,然后跳转到第二段程序入口点;第二段程序一般采用C语言编写,主要负责检测系统内存映射,将压缩的Linux Kernel映像文件从Flash拷贝到RAM并解压,为Linux Kernel内核设置启动参数,最后调用内核,完成Linux启动。BootLoader有很多种,如VIVI,UBOOT,ARMBOOT,BLOB等,我们采用VIVI作为开发平台的BootLoader。

嵌入式系统开发采用交叉编译模式,所谓交叉编译模式是指在主机上进行程序的编写、编译、调制,而在开发平台上运行的模式。交叉编译模式如图2所示。主机上安装编译工具对源程序进行交叉编译,生成的可执行程序,通过主机和目标板之间的JTAG接口、串口、Ethernet接口或者USB接口下载到目标板,然后启动执行。

2 开展嵌入式系统开发教学实验的两种方案

嵌入式开发平台具有丰富的硬件资源和接口电路,因此可开设的实验非常丰富,形式多种多样[3,4],在文献[3][4]中列举出的实验共计48个,面对数量如此多的实验,在教学课时、教学设备有限的条件下,不可能一一开设,因此如何选择实验,以便让学生能够快速有效地掌握嵌入式系统开发技术是非常重要的问题。基于循序渐进、由简单到复杂的原则,同时兼顾初学者的接受能力,我们提出两种嵌入式实验的开设顺序,实践表明,这两种方案都具有很好的实验教学效果。

2.1 第一种方案

第一方案所开设的实验分为三大部分:第一部分为ARM相关的基础实验(6个);第二部分为与Linux相关的实验(7个);第三部分为综合应用实验(1个)。共计14个实验(见表1)。

我们把开设的实验分成了基础、综合和应用三个级别。在第一种方案中,基础实验为8个,综合实验为5个,应用实验为1个,符合宽基础的教学要求。通过大量的基础实验训练,使学生掌握嵌入式开发的基本技术之后,再通过综合型和应用型的训练,提高使用嵌入式技术解决问题的能力。

2.2 第二种方案

第二种方案所开设的实验也分为三大部分,其中第一部分为ARM基础实验(4个);第二部分为Linux相关实验(7个);第三部分为综合应用型实验(1个),共计12个实验,第二种方案所开设的12个实验见表2。

比较方案一和方案二开设的实验,可以看出,两种方案有所侧重。其中方案一比较注重基础,方案一提供的基础实验共8个,同时偏重对整个嵌入式系统的整体了解,方案一中的实验8,10,11都是了解整个嵌入式系统架构所必须开设的。而方案二更加注重应用,从实验5到实验11,都是嵌入式应用程序的开发实验。通过实行不同的方案,既可以对整个嵌入式系统开发架构有所了解,同时也能够从事实用的嵌入式应用开发,多年的教学效果表明,采用这样的实验方案,取得了很好的教学效果。

3 远程温度控制系统

以方案一和方案二中的应用型实验“远程温度控制系统设计”为基础,我们设计了一种远程温度控制系统,参加了2010年“博创杯全国嵌入式设计大赛”,获得了山东省二等奖。该温控系统的结构图如图3所示。

该远程温度控制系统主要包括温度传感器、嵌入式开发平台和主机。温度传感器使用通用I/O端口与开发平台连接,GRPS模块使用串口与开发平台连接,主机使用串口与开发平台连接,用来调试、下载程序。温度传感器检测的温度数值通过通用I/O端口发送给开发平台上的接收程序,程序接收温度数值后判断是否大于或者小于某个设定值,如果大于或者小于设定值,则通过GPRS模块发送到远程手机,同时,对于传感器每次发送过来的温度数值,都以文件的形式保存在本地,嵌入式开发平台上部署了嵌入式Web服务器和CGI程序,这样在主机就可以通过Ethernet接口来访问以文件形式保存在开发板上的温度值。在该方案中,我们基于方案一中的实验11,开发了通用I/O端口驱动程序;基于方案一的实验11和方案二的实验11,开发了嵌入式Web服务器及CGI程序;基于方案二的实验8,开发了GRPS模块和开发平台的串口通信程序;基于方案二的实验6和7开发了相关的应用程序。通过该系统的实施过程和最后的得奖情况来看,我们所提出的嵌入式开发平台教学实验的方案一和方案二是合理可行的,对于提高学生嵌入式系统开发技术水平,提高就业竞争力具有很好的作用。

4 结束语

嵌入式系统开发平台及其教学实验方案,是针对目前高校嵌入式系统开发课程的实验教学实际而提出的。方案一侧重宏观整体掌握嵌入式系统开发架构,方案二则注重嵌入式应用,并且基于方案一和方案二所开设的实验,设计了一种远程温度控制系统,并获得了“博创杯全国大学生嵌入式设计大赛”山东赛区二等奖。结果表明,该实验方案科学合理,能够满足不同层次学生的需求,对高校嵌入式系统开发实验课具有较好的指导意义。

摘要:对基于ARM-Linux开发平台的嵌入式系统教学实验进行了研究,提出了开设实验的两种方案并进行了对比分析。在相关实验的基础上,提出了一种远程温度控制系统。

关键词:ARM-Linux,嵌入式系统,实验教学

参考文献

[1]中国嵌入式开发从业人员调查报[EB/OL].http://www.farsight.com.cn/subject/report2010-2011.htm.[2011-05-03]

[2]朱丽霞.基于ARM-Linux的嵌入式实验教学平台构建[J].中国现代教育装备,2010,23:42-43.

[3]深圳英蓓特公司.EudkitIII S3C2410实验教程[Z].2008

嵌入式系统开发实验一 篇3

近几年来,处理器的速度遭遇到了瓶颈。在过去40年里摩尔定律表明,每隔18到24个月半导体芯片中晶体管的数量就会增加一倍,而芯片性能也随之线性增长。过去,芯片生产厂商通过增加处理器的时钟速度来提高芯片的性能,如从100MHz到200MHz,再到最近的几GHz。但是在今天,由于功耗和散热的限制,提高时钟速度来增加性能的方法是行不通的了。芯片厂商开始转向另一种全新的芯片构架,就是使单个芯片具有多个处理器器核心。使用多核处理器,程序员们可以完成比使用单核心更多的任务。

嵌入式系统不可避免的也同样会遇到在功耗和散热方面的问题,与PC设计领域的同行一样,嵌入式系统工程师也开始考虑转向多核处理器,以求获得处理能力、功耗和产品体积等方面的潜在优势。Intel嵌入式和通信集团总经理Doug Davis指出,在高端通信和医疗成像等计算密集型应用领域,嵌入式系统客户们已经纷纷要求芯片厂商提供具有更长生命周期的多核器件。Intel不久前宣称,将面向嵌入式计算市场提供四核处理器。一些数码产品厂商亦指出,他们公司转向多核是因为“需要更强的处理能力和多线程”。

对于嵌入式系统而言,多核技术可以提供更高的处理器性能、更有效的电源利用率,并且占用更小的物理空间,因而具有许多单核处理器无法具备的优势。MIPS科技公司亚太区副总裁MarkPittman指出,在嵌入式产品的市场上,许多应用可以从多线程流水线执行当中获益,整个系统的性能,由此提高的百分比从60%到300%不等。

多核、多线程需要全新的编程方法

要想充分发挥多核以及多处理器解决方案的潜能,仅仅依靠强有力的芯片是不够的,还需要采用新的编程方法。微软公司的软件设计师HerbSutter说过,对于那些期望最终用户简单地将计算机升级到更快的处理器,或期望立即看到软件程序性能提升的开发者而言,“免费午餐结束了”。简而言之,在相当长的一段时间里,软件性能可以轻易地得益于处理器的性能提升,但是现在情况不同了。

利用多核处理器的编程应用是一个巨大的编程挑战,这是广为接受的。比尔盖茨有这样一段话:“要想充分利用并行工作的处理器的威力,软件必须能够处理并发性问题。但正如任何一位编写过多线程代码的开发者告诉你的那样,这是编程领域最艰巨的任务之一。”

多核处理器编程,尤其是多线程编程中存在好几个难点:首先是并行的思考方式,比如要分辨出哪些任务是可以同时执行的,这并不是一件容易的事情。

其次是线程的创建和管理。开发人员把任务划分成多个并行步骤之后,就要通过线程的方式来实现。多线程编程是相当困难的,很多传统的编程语言都需要一组新的函数或结构来创建、同步、加解锁线程,这意味着工作量的增加。

与此同时,开发人员还需要考虑并行代码段之间哪些资源是不能共享的,比如文件、内存、硬件等等,否则会导致资源的冲突和竞争,使得并行线程因等待资源而暂停。此外,如何对复杂的多线程编程进行调试,以及如何在多核的实时系统中保持确定性,都是值得考虑的问题。

通过图形化平台开发多核嵌入式系统

由于多线程编程的复杂性,很多计算机方面的专家都在进行探索,希望让编译器来帮助开发人员处理并行性问题。如果没有这种编译系统。开发人员必须自己来处理并行编程。双核处理器的多线程编程已经是相当的复杂,如果以后发展到80个核,其复杂度将令开发人员无法应付。对于学习计算机编程或软件工程的开发人员来说,或许文本编程的并行编程机制并不足以难倒他们,可是对于其他领域的专业人员,如果他们并不擅长编程,又要使用多核处理器带来的高性能,那么图形化的开发环境LabVIEW可能是他们的理想之选。

LabVIEW是一种图形化数据流式编程语言,在嵌入式系统中实现图形化,已经成为大势所趋。现在市场所需的是一种完全的图形化编程语言,提供足够的灵活性和功能,以满足更广泛应用的需求。因此,图形化系统设计的关键因素是图形化编程。

LabVIEW是一个基于数据流的图形化开发平台,它提供了直观、符合工程师思维习惯的图形化编程方式和用户界面。在LabVIEW中,用户解决工程问题就像是在设计他们所熟悉的流程图一样。现代多核处理器使得LabVIEW成为一种更合适的编程工具选择,因为它有着并行化表示和执行任务的能力。

LabVlEW本质上是一种并行结构的编程语言。基于LabVIEW的数据流特性,如果连线中存在着分支,或者是框图中有着并行序列,那么后台的LabVIEW执行器将自动地实现并行化运行。当我们在程序框图中通过连线的分岔创建另一个程序分支时,就可能产生另一个线程。如果我们创建了多个循环,那相对应的也就创建了数个新的执行线程。在LabVIEW中,多个并行循环会自动分配成多个线程并分配到多个处理核上,因而LabVIEW用户无需对代码做任何改动,也不需要花时间学习新的编程方式,即可利用多核处理器的性能优势。

LabVIEW提升多核应用程序的性能,从单核到双核计算机,理论上讲,获得的性能应该是原来的两倍。但是,与这个极限的接近程度取决于用户应用程序并行化运行的程度。LabVIEW程序员们可以很方便的以并行方式来表示他们的解决方案。在多核处理器上,我们可以方便地实现应用程序的性能改进,因为LabVIEW动态地分配每一个线程。事实上,用户不需要创建特殊的代码以支持多线程,而是通过最少的编程调整,并行应用便可以获益于多核处理器。对于普通的LabVIEW应用程序而言,如果不考虑多核编程技巧,在不改写代码的情况下,与最初的基准程序相比,可以获得25%到35%的性能提升。

其中,LabVlEW代码分支简化了两个分析任务,一个滤波器操作和一个快速傅立叶变换(FFT),使它们可以在双核机器上并行化执行。它首先在单核的模式下(关掉其中的一个核)运行,然后在双核的模式下运行。因为这两项任务都是计算量很高的,利用任务并行化获得的性能改进为原来的1.8倍。

LabVIEW支持嵌入式实时系统,前面大部分讨论都是针对如何平衡多核、多线程编程的复杂性,从而提高程序的性能和吞吐量。对于要求更加严格的嵌入式实时系统,这些考虑同样适用。在典型的实时系统中,通常有一段代码对执行时间有严格要求,必须以指定速率持续而可靠地运行。同时也有一些对执行时间没有严格要求的代码段,比如用户界面的数据传输、数据存储等等。显然,对于执行时间有严格要求的代码或循环,应用程序必须对它们特别关照,保证没有冲突等问题。

表面上看来,这个要求对于多核系统是一件非常简单的事情。只要将对于执行时间有严格要求的代码与其他代码隔离,分配到独占的处理器核上,就可以保证它不受影响地运行。但是,许多实时或嵌入式操作系统并不支持在多个处理核之间的线程负载均衡,这是因为在实时和嵌入式领域的工具往往更关注性能和确定性,而减缓了对于多核的支持。

Intel定义了用户需要评估的软件四层次来确定多核系统的可用程度。如果所用的应用程序库和设备驱动不是为多核而设计的,或者操作系统不能够在多个处理核上进行负载均衡,那么并行化程序在多核系统上是不能够运行得更快的。

操作系统,作为软件层次的底层,许多实时的操作系统(RTOS)厂商现在还不支持在多个处理器核间进行自动的线程负载均衡。但是,为了让多核处理器在嵌入式实时系统中发挥出性能优势,在实时或嵌入式操作系统中必须支持多核处理器的任务分配。

LabVIEW的最新版本将针对多核处理器的自动线程负载平衡功能引入到实时系统之中。

如果需要更进一步的控制或微调实时程序的性能,在LabVIEW中,可以使用定时循环结构将各部分代码分配到指定的处理器核上。这意味着开发人员可以把执行时间有严格要求的代码直接映射到专用的处理器核,从而保证这部分代码不会被中断,保持其实时性。

结语

嵌入式系统实验报告 篇4

第一章:ARM2410CL嵌入式系统基础实验

实验一ARM2410CL嵌入式教学实验系统

实验报告要求:

(1)简述嵌入式LINUX开发的流程。

实验二 嵌入式LINUX开发环境的配置

实验报告要求:

(1)简述嵌入式LINUX开发环境配置的具体步骤。

(2)简述网络文件系统(NFS)。

第二章:系统实验

实验一 LINUX基本应用程序编写实验

实验报告要求:

(1)简述交叉编译器基本概念及简述计算机平台和ARM平台编译环境的异同。

(2)简述Makefile文件作用和基本组成。

(3)ARM中怎样将编写的应用程序下载到LINUX中?怎样在LINUX中运行该程序? 实验二 串行端口程序设计

实验报告要求:

(1)简述LINUX下的串口程序设计的基本步骤。

(2)编写一个简单的文件收发程序完成串口文件的下载并画出实验流程图。

第三章:内核与根文件系统实验

实验一 内核移植与编译实验

实验报告要求:

(1)LINUX内核移植的基本概念。

(2)简述LINUX内核配置和编译步骤。

实验二 根文件系统实验

实验报告要求:

(1)简述文件系统的基本概念并列出LINUX下根文件系统的目录结构及习惯用法。

(2)在LINUX下,怎样制作cramfs格式的根文件系统?

实验心得:(要求写出关于本次实验收获及实验教学的意见及建议)

注:1.实验报告要求使用实验报告纸完成。

嵌入式系统ARM实验报告 篇5

实验报告

实验名称:实验一基于ADS开发环境的设计

实验二嵌入式Linux交叉开发环境的建立 实验三嵌入式Linux环境下的程序设计

课程名称嵌入式系统B

班级学号B13010711 姓名马俊民

开课时间 2015/2016学年第1学期

实验一基于ADS开发环境的程序设计

一、实验目的

1、学习ADS开发环境的使用;

2、学习和掌握ADS环境下的汇编语言及C语言程序设计;

3、学习和掌握汇编语言及C语言的混合编程方法。

二、实验内容

1、编写和调试汇编语言程序;

2、编写和调试C语言程序;

3、编写和调试汇编语言及C语言的混合程序;

4、编写程序测试多寄存器传送指令的用法。

三、实验原理

ADS全称为ARM Developer Suite,是ARM公司推出的新一代ARM集成开发工具。现在常用的ADS版本是ADS1.2,它取代了早期的ADS1.1和ADS1.0。

ADS用于无操作系统的ARM系统开发,是对裸机(可理解成一个高级单片机)的开发。ADS具有极佳的测试环境和良好的侦错功能,它可使硬件开发工作者更深入地从底层去理解ARM处理器的工作原理和操作方法,为日后自行设计打基础,为BootLoader的编写和调试打基础。

1.ADS软件的组成

ADS由命令行开发工具、ARM运行时库、GUI开发环境(CodeWarrior和AXD)、实用程序、支持软件等组成。

2.GUI开发环境

ADS GUI开发环境包含CodeWarrior和AXD两种,其中Code Warrior是集成开发工具,而AXD是调试工具。

使用汇编语言进行编程简单、方便,适用于初始化硬件代码、启动代码等。汇编语言具有一些相同的基本特征:

1.一条指令一行。

2.使用标号(label)给内存单元提供名称,从第一列开始书写。3.指令必须从第二列或能区分标号的地方开始书写。4.注释必须跟在指定的注释字符后面,一直书写到行尾。

在ARM汇编程序中,每个段必须以AREA作为段的开始,以碰到下一个AREA作为该段的结束,段名必须唯一。程序的开始和结束需以ENTRY和END来标识。嵌入式C语言设计是利用基本的C语言知识,面向嵌入式工程实际应用进行程序设计。为了使单独编译的C语言程序和汇编程序之间能够相互调用,必须为子程序之间的调用规定一定的规则。ATPCS就是ARM程序和Thumb程序中子程序调用的基本规则。

四、实验过程与关键代码分析

1.创建项目工程

在File菜单中选择New命令,打开一个新建工程对话框。在Project选项卡下,选择ARM Executable Image, 然后在Project name文本框里输入项目名称,点击确定。弹出工程窗口。

选择File菜单中的New命令,选择File标签页,在File name文本框中输入要创建的文件名。汇编程序以.s结尾,c程序以.c结尾。在Location文本框中指定文件的存放位置,选中Add to Project,在Targets中选中DebugRel,单击确定关闭窗口。

2.用汇编语言设计程序实现10的阶乘

AREA EXAMPLE, CODE, READONLY ENTRY start MOV R0, #10 MOV R1, #1 LOOP MUL R0, R0, R1 SUB R0, R0, 1 CMP R0, #1 BHI LOOP END 在这个程序中,我们首先对R0和R1赋值,将R0作为一个变量,而R1作为一个存贮阶乘值的寄存器。在每进行一次乘法之后,将R0减1。同时在做完减法后进行判断,如果此时R0大于1,则返回继续乘法,否则结束程序,输出结果。

3.用调用子程序的方法实现1!+2!+3!+„+10!,代码如下: asmp.s

AREA JC, CODE, READONLY

EXPORT JCP

ENTRY JCP

ADD R3, R0, #1

MOV R2, #1

MOV R1, #1 LOOP MUL R0, R1, R2

MOV R1, R0

ADD R2, R2, #1

CMP R2, R3

BNE LOOP

NOP

NOP

MOV PC, LR

END

PROGC.c #include Extern int JCP(int N)

int main(){ int res=0;int m=10;int i;for(i=1;i<=m;i++)

res=res+JCP(i);printf(“The result =%dn”,res);return 0;} 在这个程序中,主程序由c语言完成作求和,子程序由汇编语言写成作阶乘。

5.实现字符串的逆序复制TEXT1=“HELLO”=>TEXT2=“OLLEH”

AREA invstring, CODE, READONLY start

ADR R1,TEXT1

ADR R2,TEXT2

MOV R3, #0 LOOP

LDRB R0,[R1], #1

ADD R3,R3,#1

CMP R0,#0

BNE LOOP

SUB R1,R1,#2

LOOP1

LDRB R0,[R1], #-1

STRB R0,[R2], #1

SUB R3,R3, #1

CMP R3,#1

BNE LOOP1

MOV R5,#&55

TEXT1

TEXT2 NOP =“HELLO”,0 ALIGN =“OELLH” END

五、实验小结

在这次实验中,学会了如何使用汇编程序进行编程。对汇编程序编程一些基本的要求有了一定的了解,学习了C语言的语法和在其中调用汇编程序的方法。学会了利用CodeWarrior IDE开发C和ARM汇编代码。学会了在AXD中进行代码调试的方法和过程,对AXD的调试有初步的了解。,实验二嵌入式Linux交叉开发环境的建立

一、实验目的

1、掌握嵌入式Linux交叉开发环境的建立方法

2、学习和掌握Linux常用命令

3、学习和掌握vi编辑器的使用

二、实验内容

1、搭建嵌入式Linux交叉开发环境

2、熟悉Linux的常用命令

3、熟悉vi编辑器的常用命令

三、实验原理

Linux系统是UNIX系统的分支,是UNIX的微机版。Linux具有异常丰富的驱动程序资源,支持各种主流的硬件设备与技术。Linux包含了现代的UNIX操作系统的所有功能特性,这些功能包括多任务、虚拟内存、虚拟文件系统、进程间通信、对称所处理器、多用户支持等。

Vi编辑器是所有UNIX和Linux下的标准编辑器。它包含3种工作模式。嵌入式系统是专用的计算机系统,它对系统的功能、可靠性、成本、体积、功耗等有严格的要求。大部分嵌入式系统没有大容量存储设备,一般不能安装大型开发软件,系统的开发需要采用交叉开发模式。

四、实验过程与关键代码分析

实验用的是UP-NetARM2410-S试验箱,里面配有三星的芯片S3c2410X。打开电脑上VMWare软件,在Windows系统下启动虚拟机里的Linux系统。接着需要

1.宿主机的环境搭建

下载并运行VMWare,根据向导创建一台新虚拟机并选择Linux作为客户操作系统,再根据向导安装RedHat Linux 9.0。

2.虚拟机中启动Linux操作系统

使用root登陆,用户名为root,密码为123456。之后对共享文件设置进行调整:打开settings界面,打开shared folders功能,同时将路径设置到有课前下载的软件的目录下。

3.开发工具软件的安装(1)安装gcc 打开Linux后,打开终端窗口,在共享的目录下找到install.sh并运行,命令如下: ls./ install.sh 安装程序将自动建立/arm2410s目录,并将所有的开发软件包安装到/arm2410s 目录下,同时自动配置编译环境,建立合适的符号链接。安装完成后在目录/opt/host/armv4l/bin/下应该能看到主编译器。(2)配置PATH路径

vi.bash.profile 将里面PATH变量改为PATH=$PATH:$HOME/bin:/opt/host/armv41/bin/;存盘后执行

source.bash_profile 以后armv4l-unknown-linux-gcc将被自动搜索到

4.宿主机上的开发环境配置(1)配置IP地址

ifconfig eth0 192.168.0.121 命令配置了宿主机的IP地址。然后打开网络配置窗口,重新探测MAC地址。重新激活。(2)关闭防火墙

单击“Red”菜单→“系统设置”→“安全级别”→打开“安全级别配置”窗口,选择“无防火墙选项。”(3)配置NFS。

单击“Red”菜单→“系统设置”→“服务器设置”→“服务”,在“服务配置”窗口中勾选nfs,单击“开始”(4)NFS设置

单击“Red”菜单→“系统设置”→“服务器设置”→“NFS服务器”,打开“NFS服务器配置”窗口,设置NFS共享。

然后在NFS服务器中增加主机IP地址的链接许可和目录。完成配置。

5.目标机的信息输出

Windows系统下,“开始”→“所有程序”→“附件”→“通讯”→“超级终端”,新建一个通信终端。区号、电话号码随意输入。设置每秒位数为“115200”,数据位为“8”,无奇偶校验,停止位为“1”,无数据流控制。单击“确定”。

6.程序的运行

打开超级终端,启动Linux,屏幕显示:

[/mnt/yaffs] 在超级终端上执行挂载命令:

[/mnt] mount –t nfs 192.168.0.121:/arm2410s /mnt/nfs 挂载成功后可执行程序。

五、实验小结

在这次实验中,学会建立Linux交叉开发环境,学会了ls和vi,cd等常用的Linux命令,并掌握了Vi编辑器的使用方法。同时知道了如何在搭建失败时寻找错误进行排错。

实验三嵌入式Linux环境下的程序设计

一、实验目的

1、掌握嵌入式Linux环境下的程序设计方法

2、学会编写Makefile文件

二、实验内容

1、熟悉嵌入式教学实验箱的使用

2、编写C程序和Makefile文件

3、编译程序产生可执行程序

4、完成主机的挂载和程序的执行

三、实验原理

在嵌入式Linux环境下的程序设计方法有一下几个步骤:

1.编写源程序

2.编写Makefile文件 3.编译程序

4.运行和调试程序

5.将生产的可执行文件加入文件系统。

前三个步骤在宿主机上完成,后面的步骤在目标机上完成。

四、实验过程与关键代码分析

1.建立工作目录

mkdir hello cd hello

2.编写源程序

用vi编辑器编辑Hello.c文件

vi Hello.c 在Vi中输入源程序如下:

#include main(){

printf(“hello world n”);}

3.编写Makefile文件

vi Makefile 在vi中编辑Makefile文件如下:

CC= armv4l-unknown-linux-gcc EXEC = hello OBJS = hello.o CFLAGS += LDFLAGS+=-static all: $(EXEC)$(EXEC):(OBJS)$(CC)$(LDFLAGS)–o $@ $(OBJS)clean:

-rm –f $(EXEC)*.elf *.gdb *.o

4.编译程序

在hello目录下运行“make”来编译程序。

make clean

make 编译成功后,生成可执行文件Hello.o。

5.下载调试

在宿主机上启动nfs服务,并将/arms2410s设置为共享目录。接下来启动超级终端,建立通讯,挂载。

[/mnt] mount –t nfs 192.168.0.121:/arm2410s /mnt/nfs 挂载成功后,进入/mnt/nfs,再进入/mnt/nfs/hello,直接运行刚刚编译生成的可执行文件Hello.o,查看运行结果

cd hello./hello 可以看见“Hello world”

只需要挂载一次便可,只要实验箱没有重启,就可以一直保持连接。反复修改、编译、调试,直至程序调试通过。

6.可执行文件加入文件系统

程序调试通过后,可以把可执行文件拖放到usr/bin目录下,然后使用mkcramfs制作工具生成新的文件系统。当系统启动后,就可以在相应目录下执行可执行程序hello.五、实验小结 在这次实验中,学会了在嵌入式Linux环境下设计程序。同时知道了如何对目标机进行挂载。以及如何在发现挂载不成功寻找错误进行修改。另外在编译文件时需要注意的也都有所了解。

实验四多线程程序设计

一、实验目的1、2、二、实验内容1、2、3、4、三、实验原理

四、实验过程与关键代码分析

五、实验小结

单片机嵌入式系统开发方法论文 篇6

4嵌入式技术的应用

嵌入式技术被广泛应用在各个行业,智能交通、智能家居、智能医疗等行业。这里我们主要介绍智能驾驶技术。首先打开汽车,选择自动驾驶,通过传感器采集复杂的路面信息、行人信息和交通标志信息,然后将融合的信息发给中央处理器进行处理,最后控制器控制汽车相关的执行结构,是汽车的速度方向等得到最完美的控制。其中嵌入式结合了传感器融合技术,人工智能算法,传感器网络通信技术等多种技术共同完成了无人驾驶功能。同时体现大数据处理以及需要高性能的CPU。因为汽车的行驶速度很快,要求处理处理一定要快,数据处理主要涉及的是图像处理,用到了卷积神经网络大大增加了计算量,所以高性能的CPU是必要的,这时候单片机就远远达不到要求,但是还是属于嵌入式技术一部分。

5结语

嵌入式技术一直是各个行业研究的热点,研究嵌入式技术是非常必要的。而且在科技发展的今天,嵌入式技术应用的产品在我们身边随处可见,加上人工智能算法和大数据的辅助,我国嵌入式技术一定会迎来快速发展,一定会使我们的生活变得更加美好。

参考文献

[1]苏燕,张建平,阮莹等.单片机嵌入式网络技术以及系统开发与实现[J].科技资讯,,14(13):28-29.

嵌入式光学实验控制系统 篇7

在光学全息实验中,为了实现对实验参数的精确控制以及对实验数据的连续采集,我们经常需要在实验中使用高精度实验仪器设备。例如在双透镜无狭缝一步法拍摄彩虹全息图的实验中,我们使用双透镜记录三维漫反射物体的彩虹全息图。在记录过程中需精确改变一个透镜的位置用以形成合成狭缝,以满足彩虹全息的拍摄条件[1,2],由于透镜水平位移的精度要求为微米量级,故需借助一维运动平台实现。而在实验过程中,我们为了精确、便捷地控制实验仪器,通常采用较为稳定的自动化程序控制来实现对实验仪器的控制。

一直以来,实验人员为了实现光学全息实验的自动化程序控制,都使用以PC为核心的仪器控制系统进行实验。实验人员通过将实验用仪器设备与PC上的数据采集卡或标准接口(串口、USB口等)连接,并借助事先在PC平台上使用Lab View或LabWindows等软件开发平台编写好的仪器控制软件及界面,实现对仪器设备的控制。由于PC系统硬件资源丰富,软件开发平台功能强大,这种控制方法在许多光学实验室中得到广泛应用[3,4]。但是以PC为核心的仪器控制系统的系统构成较为复杂、成本较高,缺乏系统小型化。

本文针对光学全息实验过程中的实际需求,开发了基于嵌入式技术的光学实验控制系统,克服了以PC为核心的实验控制系统的缺陷,能够实现对快门、NEWPORT运动平台、NEWPORT功率计的集成化控制,可以满足多数光学全息实验仪器的自动化程序控制需求。系统使用ARM处理器作为系统控制核心,使用独立键盘、TFT液晶屏幕与用户进行信息交互,同时内部集成有快门驱动电路和一定数量的工业标准接口(串口)。用户可以通过可视化的方式查看仪器的当前运行状态,并对仪器的运行方式及顺序进行设定,系统将按照用户设定的方式对仪器进行控制,实现用户所需要的功能。系统使用印刷线路板技术,将系统需要的各个部分集成、封装在一起,从而保证整个系统的移动性、便携性。

1 系统硬件结构设计

1.1 系统模块设计

为了实现对全息光学实验常用仪器的控制,本系统应包含独立供电、控制与通信、数据存储,用户交互四部分内容。首先系统使用标准电源适配器进行供电,并经过电源转换操作为系统各个部分进行电源供给。其次系统在ARM核心的控制下,使用标准接口(串口)与仪器设备进行通信,按照预定格式向仪器设备发送控制指令,并通过标准接口接收仪器设备返回的数据或信息。此外,仪器设备返回的数据信息以及实验人员自定义的控制指令均存储在外部存储设备中,以供日后备查或重复使用。最后,系统使用独立按键与TFT液晶显示屏与用户进行信息交互,供用户查看或操作的信息显示在TFT液晶屏幕上,用户使用独立键盘进行命令选择或输入操作。

为了实现上述四部分内容,系统包括电源管理模块,ARM控制核心,用户交互模块,数据存储模块,共四个模块。在硬件上,本系统将使用不同的器件来为各个模块功能的实现提供基础。系统模块设计结构图如图1所示。

电源模块使用220 V转15 V电源适配器和7805稳压芯片实现。电源适配器使用市电交流220 V输入并将其转换为15 V直流输出,之后直流输出作为7805稳压芯片的输入电源,经过7805的稳压后转换为5V直流输出,为整个系统提供电源。此外,电源适配器的15 V直流输出将同时为快门提供控制电压。

ARM控制核心包括ARM核心系统和外围器件部分,ARM核心系统使用STM32F103RCT6芯片作为处理器[5],它是一款基于Cortex-M3核心的高性能,低成本CPU。此外,ARM核心系统中还使用晶体振荡器、RAM芯片等器件对STM32F103RCT6芯片进行辅助,以保证ARM核心系统工作正常。外围器件主要包括ULN2804和SP3232芯片这两部分。ULN2804用作快门驱动,它根据以ARM芯片的高低电平来控制快门进行相应的动作。SP3232是串口电平调整芯片,它用来协调ARM芯片和计算机之间串口通信的电平差异。

用户交互模块由独立键盘、TFT彩色液晶显示以及XPT2046驱动芯片组成。键盘根据用户是否按下向ARM芯片返回相应的高低电平,从而达到选择或输入指令的目的。TFT彩色液晶显示屏的功能是显示可视化界面,从而为用户的操作提供指示,它的分辨率为320×240,色彩为65 536色。XPT2046芯片是液晶屏幕驱动芯片,它使用SPI总线通信协议接收ARM系统的指令,并使用4线制屏幕显示接口对屏幕显示做出控制。

数据存储模块主要由SST25VF016B存储芯片构成。该芯片为2 M字节的串行Flash存储器,它用来存储用户存储的自定义信息与仪器设备返回的数据信息。此外,系统保留了SD卡插槽,当实际使用中2 M大小的Flash存储不足以满足存储需求时,我们可以开发并实现系统的SD卡读写功能,从而为用户提供更大容量的数据存储功能。

1.2 实验控制实现

本系统可以实现对快门、NEWPORT运动平台、NEWPORT功率计三种仪器的单独控制或集成化控制,从而实验控制的目的。系统采用了两种控制方案实现对这三种仪器的控制,第一种是电平驱动方式,用来实现系统对快门的控制;第二种是串口控制方式,用来实现系统对运动平台、功率计的控制。

1.2.1 快门控制实现

本系统使用ULN2804驱动芯片实现快门控制(如图2所示)。ARM芯片通过MCUCtrl管脚向ULN2804驱动芯片发送驱动信号(5 V或0 V电压信号),驱动芯片根据驱动信号的电平高低来控制快门接口的电压输出,从而实现控制快门的目的。

1.2.2 运动平台、功率计控制实现

由于NEWPORT运动平台、功率计均可以使用串口与控制设备进行通信,故本系统使用串口通信方式实现对运动平台、功率计的控制。系统与运动平台、功率计之间通过9针串口接头(DB9)连接,但是由于ARM系统与设备之间串口电平协议不同,故使用SP3232芯片进行电平转换。ARM系统使用的电平规格是03.3 V,而设备串口所用电平为±12 V,SP3232负责协调运动平台、功率计与ARM系统之间的电平差异,从而实现系统与设备的通信。当通信连接成功建立后,系统只需要通过串口向仪器发送命令字符串即可实现对仪器的控制。命令字符串在仪器使用手册中均有说明。

2 系统界面设计

系统使用可视化操作界面对系统运行状态进行显示,并对实验人员的操作进行提示。系统界面中包括快门、运动平台、功率计这三种仪器的常用命令,并提供自定义命令输入选项。实验人员选择相应命令,并设定命令相关参数(比如“延时时间:5 s”),确认后,将命令添加至命令列表中。命令列表中的命令可以删除或调整顺序。当用户完成添加命令列表并确认后,系统将依次执行按照命令列表中的命令,从而完成对仪器设备的控制。实验人员使用本系统完成仪器控制过程用流程图如图3。

图4示出了实现快门控制的可视化界面。该界面由三个区域组成:竖线左侧为操作显示区,横线上方为快门操作选择区,下方为命令控制选择区。

快门操作区和命令控制选择区内项目均使用上下方向键进行选择,选定项将被设定为黄色底色蓝色文字,作为与剩余其它项的区别。快门操作包括“Open”、“Time”、“Close”三项,分别为“打开快门”、“设定延时”、“关闭快门”其中“Time”项可以通过左、右按钮调节时间长短,调节间隔为1 s。命令控制选择区包括“Start”、Clear、“Back”三项。“Start”表示按照“Command List”中命令列表的指示对快门进行操作,“Clear”表示清除“Command List”中的最后一条命令,“Back”表示结束快门操作,返回上一级界面。

操作显示区中包括六条命令显示框,在快门操作区被选择并确认的命令将被依次显示在命令显示框中,最多可以依次显示六条命令(命令数量可以根据用户的需求进行调整)。如果实验人员需要删除已经显示在命令显示框的命令,则可以通过“Clear”按钮删除最近添加的一条命令。

如图4所示,命令显示框中被依次添加进了五条命令,分别为“Open”、“5 s”、“Close”、“5 s”、“Open”。当用户选择“Start”项并确认后,快门将执行以下动作:快门打开→延时5 s→快门关闭→延时5 s→快门打开。

3 结论

基于嵌入式技术的光学实验控制系统可实现基于ARM系统的快门、运动平台、功率计的集成化控制,并具有可视化的控制和显示界面。该控制系统在能够满足实验室仪器控制需求的前提下,同时具有系统组成简单、成本低、移动性良好的特点。

参考文献

[1]Myung K K.Microscopic Tomography by Digital Interference Holography[J].Proceedings of SPIE(S0277-786X),2004,5324:102-111.

[2]王旭宏,关承祥,牛犇.双透镜无狭缝一步彩虹全息[J].哈尔滨师范大学自然科学学报,2009,25(4):52-54.WANG Xuhong,GUAN Chengxiang,NIU ben.One-step rainbow holography of using dual lens without slit[J].Natural Science Journal of Harbin Normal University,2009,25(4):52-54.

[3]李奕鑫,黄家政,罗烽庆,等.光学仪器共享与远程控制系统的开发[J].光学仪器,2010,32(1):75-81.LI Yixin,HUANG Jiazheng,LUO Fengqing,et al.Development of optical instrument sharing and remote control system[J].Optical Instruments,2010,32(1):75-81.

[4]肖四友,张文祥.开放自主式远程实验室构建的关键技术[J].实验室研究与探索,2008,27(8):54-57,114.XIAO Siyou,ZHANG Wenxiang.Key technology to the DIY and long-distance lab[J].Research and Exploration in Laboratory,2008,27(8):54-57,114.

DSP嵌入式系统下的C语言开发 篇8

关键词:DSP嵌入式系统;C语言;软件开发

中图分类号:TP368.12 文献标识码:A 文章编号:1674-7712 (2014) 06-0000-01

随着社会的不断发展,技术的发展速度也在不断飞跃,在通信领域、电子信息领域、自动控制领域、软件无线电领域和信息家电领域等,DSP都取得了较为广泛的发展和应用。按照以往的经验来说,在对DSP嵌入式产品进行开发的时候往往都采用控制器的汇编语言来进行编写,但是到目前来说,很多领域都认为采用C语言进行DSP嵌入式的语言开发更加方便。

一、DSP嵌入式系统下的C语言开发过程

本研究采用TMS320F240芯片进行研究,其整个开发过程可分为五步。

(一)对C语言的源程序进行编辑

在对该系统软件进行编写的时候可以采用任何的编辑器进行源程序的书写,比如NOTEPAD、EDIT等,需要注意的是,程序的命名需要以“.C”为后缀进行存盘。而程序的源代码既可以写在一个“C文件”里,也可以写在多个“C”文件里面,但是对于一些函数的原型声明或者是预定义变量则可以集中地放置在一个头文件里面。要特别注意,一定要在C程序的前面用#include“c240.h”将寄存器的文件包括在其中。

(二)对源程序进行编译

编辑好C语言的源程序以后就可以采用DSPCL编译程序对其进行编译,最终生成OBJ文件。

在编译的时候所采用的格式:DSPCL 源文件名 参数

举例来说:DSPCL EX1.C -V2XX -GK -MN

其常用参数的意义是:V2XX表示C编译器选择的处理器是2XX系列;GK代表的是保留编译所生成的汇编文件,也就是(.ASM)文件;MN表示正在进行的正常优化。而其他的参数则需要参考DSP的编译器手册,假如存在多个源文件,那么需要对其分别进行编译,每一个源文件在编译之后都会生成一个ASM文件和OBJ文件[1]。

(三)目标文件的链接

IT公司的汇编器和编译器所创建的目标文件采用的是COFF的格式文件,这种格式能够更好地进行模块化的编程,能够使代码段的管理和对目标系统存储器的管理更加的方便和灵活。给COFF格式进行C语言或者汇编程序的编写的时候,不需要对变量目标地址和程序代码进行指定,这也为程度的移植和程序的编写提供了很大的方便。而链接器对块的处理主要有两种功能,一种功能是对COFF目标文件当中的块进行利用,用其建立数据块和程序,再将这些块组合起来,就能够成为被DSP芯片执行COFF输出的模块,而第二种就是链接器为输出的块指定存储的位置[2]。因此链接器需要为上述两个功能提供指令,分别是MEMORY、SECTTONS。MEMORY命令对目标系统的存储器进行定义,程序员可以选择对每一块存储器的长度和起始地址做出定义,而SECTIONS命令则是用来对输入块组合以及输出块放置在存储器当中的位置进行定义的。加入在具体的编写当中不采用以上两种命令的话,也可以使链接器以缺省的分配算法进行,笔者建议使用者两种命令,但是在使用的时候需要注意这两个命令要在CMD文件当中使用。

(四)程度的仿真

EMURST仿真器会对命令做出复位,EMU2XXW EX1.OUT将COFF格式的二进制代码载入并进行仿真运行,而有关调节器则按照规定使用即可。

(五)程序的固化

等到程序仿真运行通过之后,就需要将其固化到FLASH ROM当中,TMS320F240内有16k字的FLASH ROM可以用来对程序进行固化,在其程序不大于16k的时候,它不需要外扩EPROM。接下来将主要采用JTAG口的固化方法来对进行分析说明。

先要采用EMURST命令对调试器进行复位,然后在对三个批处理文件做出执行。第一个是执行BC0.BAT批处理文件,对FLASH ROM的(CLEAR)进行清除,使其全部为“0”;接下来是执行BE0.BAT批处理文件,对FLASH ROM的(ERASE)进行擦除,使其全部为“1”。这两步对于软件包当中自带的这个两个BAT文件不需要做出修改。下面是第三步,对BP16K.BAT批处理文件做出执行,需要将自己的OUT文件加入到DSP内部的FROM当中,在此之前需要先对BP16K.BATJ进行修改,对待写入的OUT文件做出替换,替换成自己的OUT文件。需要注意的是,在对程序进行固化的时候,一定要将CPU控制在20MHz的频率之下,然后在SRC目录当中配置一个C240_CFG.I的文件。

二、结束语

在本研究当中,笔者主要以TMS320F240芯片为例,针对DSP嵌入式系统下的C语言开发的开发过程作出了简要分析,文中笔者也根据自身理解和自身经验提出了一些主观意见。希望本篇文字能够对读者有所启发,也希望相关的工作人员再接再厉,进行不懈的努力,争取开发出更新的语言来服务DSP嵌入式系统,为系统开发作出更多的贡献。

参考文献:

[1]瞿新吉.嵌入式系统的BootLoader技术浅析[J].科技经济市场,2010(10):28.

嵌入式系统开发实验一 篇9

嵌入式操作系统(一)Windows系统

Source:

MILY: Arial“>RTOS Basics: The Task Model (Multitasking)

上一篇:围墙边的野趣四年级作文下一篇:教育职称论文发表