0 引言
ARM ADS全称为ARM Developer suite(ARM开发套件)。是ARM公司推出的ARM系列处理器集成开发工具,使用非常广泛,目前最高版本的是1.2,它取代了早期的ADS1.1和 ADS1.0。它除了可以安装在Windows NT4、Windows98和Windows95操作系统下,还支持Windows XP和Windows Me操作系统。ADS由命令行开发工具、ARM实时库、GuI开发环境(CodeWarrior和AXD)、实用程序和支持软件组成。有了这些部件,用户就可以为ARM系列的RISC处理器编写和调试自己的开发应用程序了。命令行开发工具完成将源代码编译,连接成可执行代码的功能,包手舌:armcc、 armcpp、tcc、tcpp、armasm、armlink、armsd。其中armcc用于将ANSI C编写的程序编译成32位的ARM指令代码。支持编译C和C++代码的运行时库有:ANSI C库函数、C++库函数。ADS的CodeWarrior集成开发环境(IDE)是基于Metrowerks CodeWarrior IDE4.2版本的,经过适当的裁剪以支持ADS工具链,为管理和开发项目提供了简单多样化的图形用户界面,用户可以使用ADS的CodeWarrior IDE为ARM和Thumb处理器开发用C、C++或ARM汇编语言的程序代码,缩短了用户开发项目代码的周期。ADS中包括3个调试器:AXD(ARM ExtendedDebugger)、ARMSD(ARM Symbo l i c Debugger)、ADW/ADU(Appl icat ion Debugger Windows/Unix)。在软件开发的最初阶段,可以使用调试器进行仿真来测试所开发的软件是否达到了预期的效果。
在数据采集的实际开发应用中,串口通信是不可缺少的部分,它是目前嵌入式系统与PC机间的一种非常重要且普遍使用的通信方式。计算机利用串口对单片机等外部设备的控制减少了在访问外部设备时需要进行复杂的汇编语言编程等带来的麻烦,同时也有利于大规模的开发和设计。在Linux系统中,系统把串口等其它外设当作文件进行操作,在端口的读写上非常方便,大大提高了系统编程效率。本文通过把Linux系统移植到S3C2410后,利用S3C2410自带的串口对目标实现控制,详细地介绍了串行通信的硬件电路和软件的实现方法。
1 硬件结构
目前串口大部分是在Windows或是在Dos下运用,本文是在Linux系统下利用串口来实现通信的。S3C2410芯片是三星公司生产的 16/32bit的RISC处理器,独立的16kB指令和16 kB数据的缓存(cache),用于虚拟内存管理的MMU单元,LCD控制器(STN&TFT),非线性(NAND)FLASH的引导单元,系统管理器(包括片选逻辑控制和SDRAM控制器),3个通道的异步串口(UART),每个控制器支持的最高波特率可以达到230400 Boud/s,这些特点为实现在Linux系统下计算机与开发板之间顺利进行串口通信提供了可靠的保证。WNSC400是北京维纳光科公司生产的电动位移平台控制箱,它拥有RS232的串口能使S3C2410通过串口对其进行数据通信,从而能够实现S3C2410对电动位移平台的控制。但是控制箱是在 Windows环境下实现的,所以要想把它应用到嵌入式系统中是存在难度的。S3C2410的串口要实现与控制箱的数据传输,那么就要使控制箱及其控制的电动平移台实现与其它模块组成嵌入式系统,比如与一台摄像头联系起来,当摄像头对物体进行图像采集后,对采集数据进行处理,进而计算出目标具体要改变的位移等参量,然后控制箱在通过$3C24lO的存储器中读取这些数据,并发出命令使电动位移平台按需要的改变量进行移动,这样就是实现了一个简单的嵌入式系统。计算机(宿主机)、目标机(S3C2410)还有控制箱之间连接的硬件原理如图1所示。在宿主机上将在ADS环境下编好的程序通过JTAG下载到 S3C2410后,S3C2410就可以通过串口与控制箱进行通信。
2 UART软件部分的实现
绝大多数的Linux软件开发都是以native方式进行的,即本机(HOST)开发、调试、本机运行的方式,但是由于在目标机上没有足够的资源来满足嵌入式系统的开发,所以这种方式不适合于嵌入式系统的软件开发。通常嵌入式系统软件开发采用交叉编译调试的方法。交叉编译的主要特征是某机器中执行的程序代码不是由本机编译生成,而是由另外一台机器编译生成。
串口通信的基本任务有:实现数据格式化、进行串/并转换、控制数据传输速率、进行错误检测和进行TTl与EIA电平转换。串口通信分为同步通信和异步通信两种类型,本文将用到异步串行I/0。
由于Linux系统将所有的设备都看成文件,所以访问串口时,认为串口是一个文件,我们可以使用文件系统控制函数实现基本的串口操作,比如open()函数用来打开串口,read()和write()函数用来读写串口,在传输数据完成后可以用close()函数关闭串口。
2.1 串口的基本设置
串口最基本的设置有波特率设置、检验位和停止位的设置。串口的设置主要是设置struct termios结构体的各成员值:
2.2 串口的读写
发送数据
除了上面用read来读取串口的方法外,也可以使用操作文件的函数来实现异步读取,如fcnt1,或者selectt等。
2.3 应用程序
ADS开发平台的优点是它已经把串口的相关设置函数都已经包含在相关的头文件中,这样当开发人员想利用串口进行再次研发时就可以直接利用这些函数,或者在原函数上进行修改。本文中要通过S3C2410的串口对WNSC400控制箱进行数据的传输就利用了这些优点,部分程序如下:
3 结语
通过实验,实现了用S3C2410控制WNSC400控制箱来控制电动平移台,在ADS环境下进行的开发减少了直接在Linux系统下进行串口开发所遇到的麻烦,而且由于AARM具有多功能模块扩展功能,可以使多种功能集中起来,为WNSC400控制箱及其电动平移台广泛应用于嵌入式系统中创造了条件。
关键字:S3C2410 串口通信 Linux ADS开发平台
引用地址:
ADS环境下基于S3C2410串口应用程序的开发
推荐阅读最新更新时间:2024-03-16 12:26
基于LabVIEW的PC机与变频器的串口通信
1 引言 近年来,随着电力电子技术、微电子技术及大规模集成电路的发展,生产工艺的改进及功率半导体器件价格的降低,变频器调速越来越被工业上所采用。在摩擦学测试系统中,用变频器控制电机实现试验设备的速度调节已经成为一种非常重要和有效的控制手段。 由于摩擦学试验机和摩擦学测试的特殊性,摩擦学试验中的变频器调速有着不同于一般工业变频控制的特点。一方面,要求变频器调速能够在较大范围内满足摩擦学测试的要求,使得试验结果具有可比性;另一方面,摩擦磨损试验过程中,对控制有一些特殊的要求,例如需要特殊的速度、运动的非周期性以及设备的快速启动和停止等。在一些疲劳试验中,甚至要求电机进行寸动或者往复运动以检测材料的性能,有的试验现场对人体的
[测试测量]
风河与飞思卡尔共同推出面向MPC5121e 的Linux解决方案
全球领先的设备软件优化(DSO)厂商风河系统公司(Wind River)与飞思卡尔半导体(Freescale)日前共同推出全新的enablement平台,以满足嵌入式市场不断增长的发展需求。本次推出的联合平台专门针对简化和加速嵌入式计算应用开发而设计,其核心由飞思卡尔的MPC5121e多核处理器和风河的Wind River Linux平台构成。 这一基于MPC5121e的平台通过将飞思卡尔硬件开发工具包与风河面向32位MPC5121e处理器(基于Power Architecture技术)的软件优化产品相捆绑而构建,包括风河商用级Linux或Wind River VxWorks平台(二者任选)、Wind River Workbenc
[新品]
51单片机之串口通信详解
一、串口通信概念 1、串口通信的作用 串口通信主要用于单片机与外部设备的通信。51单片机自身有圈双工的异步通信串口。 2、串口通信的通信方式 串口通信基本通信方式有两种:并行通信和串行通信。 串行通信:传送数据的各位按顺序一位一位发送或者接收 并行通信:传送数据各位同时发送或接收 3、串行通信的通信方式 串行通信根据帧信息的格式分为异步通信和同步通信 异步通信:一帧数据先用一个起始位“0”表字符开始,然后是5~8位数据,即该字符的代码,规定低位在前,高位在后,接下来是奇偶校验位(可以省略),最后一个停止位“1”表示字符结束。 同步通信:发送方在数据或字符前面用1~2字节同步字符指示一帧的开始,同步字符是双方
[单片机]
Linux平台智能家居的本地监控与远程监控
引言 随着社会电子信息化的不断发展,人们在家居中使用的电器也越来越多,由此带来的安全隐患也有了明显的增多。在这些电器中,一旦出现一些异常,便会给人们带来很大的损失。为了降低电器的不合理使用带来的异常情况,就要求在异常发生时用户能及时得到信息,并通过实时监控,采取一定的操作排除异常。因此,智能家居系统的作用是非常巨大的。 在智能家居控制系统中,核心设备是家居智能控制终端。综合目前的研究现状,主要有以下几种方案:第一种是采用键盘、红外遥控器、触摸屏和LCD显示器等设备对家电进行控制。当前智能家居控制系统大都采用此种控制终端,使用此种方式需要分别对控制终端的软件与硬件进行设计,设计复杂,成本高。此外,使用此种控制终端只能进行本地
[单片机]
s3c2410开发环境建立
首先介绍的整体的环境是ubuntu 9.04 gcc的版本是4.1.下面是具体的环境建立 (1)arm-linux-gcc安装 在下面的网址上 http://www.handhelds.org/download/projects/toolchain/ 下载arm-linux-gcc-3.4.1.tar.bz2 执行下面的命令: 将arm-linux-gcc-3.4.1.tar.bz2复制到/tmp下 bunzip2 arm-linux-gcc-3.4.1.tar.bz2生成arm-linux-gcc-3.4.1.tar tar xvf arm-linux-gcc-3.4.1.tar -C / 将该tar包解压到/usr/local
[单片机]
Linux-2.6.32.2内核在mini2440上的移植(一)---构建自主开发环境
移植环境 1,主机环境:VMare下CentOS 5.5 ,1G内存。 2,集成开发环境:Elipse IDE 3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-linux-gnueabi-gcc v4.5.1。 4,开发板:mini2440,2M nor flash,128M nand flash。 5,u-boot版本:u-boot-2009.08 6,linux 版本:linux-2.6.32.2 7,参考文章: 【1】嵌入式linux应用开发完全手册,韦东山,编著。 【2】 http://blogold.chinaunix.net/u3/101649/showart_2276906.html
[单片机]
基于嵌入式ARM-Linux无线ZigBee协调器驱动设计
农田中大范围的环境信息监测已成为网络应用范围重点之一。针对农田布线不便的特点,ZigBee无线节点网络成为农田信息采集系统的首选,可对其所分布区域内的各种环境和检测对象的信息进行实时的监控 。然而,控制下层整个网络状态的核心是上位机ARM处理器,而且上位机与下位机通信大多以串口模式来实现 。但串口通信模式存在串口传输速率低(波特率双方一致)、传送距离短 、数据冗余差(数据校验)以及设计串口协议繁琐(帧格式)等不足。因此本文研究了ZigBee在ARM9内核中的协调器字符驱动,利用I/O传输数据,控制具有协调器驱动的设备在农田任何位置即可组网,以减少协调器的布局,实现方便快捷的动态数据监测。 1 田间监测系统的要求 因监测节点需要
[工业控制]
理解51单片机串口通信的波特率与USB转串口通信
串口通信的基本认识 通信分为并行通信和串行通信,并行通信时的数据各个位同时传送,可以实现字节为单位通信,但通信线多占用资源,成本高。以前用到的的P1=0x55,一次给P1口的8个管脚分别赋值,同时进行信号输出,类似于8个车道可以过去8辆车,这样的形式是并行的,一般称P0,P1,P2,P3为51单片机的4组并行总线。 串行通信,就是一个车道,一个只能通过一辆车,如果一个0x55这样一个字节的数据要传输过去的话,假如低位在前,高位在后的话,那发送方式是:0-1-0-1-0-1-0-1,一位一位的进行传输,要发送8次才能发送完一个字节 STC89C52有两个引脚是专门用来做串口通信的,一个是P3.0(RXD),一个是P3.1(TXD
[单片机]