ARM ADS全称为ARM Developer suite(ARM开发套件)。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自带的串口对方针完成操控,详细地介绍了串行通讯的硬件电路和软件的完成办法。
S3C2410硬件渠道简介
S3C2410是韩国三星公司出产的新一代高性能微处理器,它是根据ARM920T内核的16/32位RISC处理器。首要运用于嵌入式体系中。
S3C2410具有强壮的数据处理才能。又有着低成本。低功耗等长处。在各种手持及移动设备上的运用越来越广泛,根据其渠道的程序功用也越来越杂乱。所以,在其渠道上架构多线程的操作体系已成为越来越多体系规划者的诉求,本文介绍多线程在S3C2410上的详细完成进程。
硬件结构
现在串口大部分是在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就能够经过串口与操控箱进行通讯。
UART软件
通用异步收发器(UART)是一种串行接口,许多微处理器和微操控器中都包括这种外设接口。异步串行接口供给了一种简略的途径,使两个器材无需同享同一个时钟信号就能进行通讯。假如再参加一个适宜的电平转化器,串口还能用在RS-232和RS-485网络中通讯,或许与计算机的COM端口衔接。串口只需两根信号线(Rx和Tx)即可完成,并且只需两头器材都选用相同的位格局和波特率,那么它们无需其它任何对方的信息就能够成功传输数据。软件UART的含义
现在,可供给功用完善的硬件串口的微操控器举目皆是,那么咱们为什么还要吃力地用微操控器的端口管脚来完成软件UART呢?首要有以下几个原因:
首要,尽管的确有许多微操控器都包括了硬件UART,但仍有许多没有包括这种接口。在体系规划中,挑选微操控器时,或许很难找到一款各方面都很抱负的产品。例如,电压规模适宜的微操控器或许内部存储器不行大,而存储器巨细满意的或许又没有满意的端口管脚,无法满意规划需求。因而,经过软件办法完成某些体系需求的外设接口,然后补偿一款微操控器性能上的缺点,就能添加可供规划挑选的微操控器的数量和品种,然后增大规划的灵敏性。
第二,即使一款微操控器包括了一个功用完善的硬件UART,因为某种原因,这对行将进行的规划来说或许依然不行。例如,或许是微操控器需求与之通讯的外设所用的协议与串口协议稍有不同,也或许是硬件UART所供给的位数、奇偶校验功用或输入和输出缓存无法彻底满意运用的要求。这时,经过构建一个软件UART接口,咱们在界说UART的功用和串口协议的细节上就更灵敏。
第三,一款微操控器的硬件UART或许能够很好地满意运用的需求,但只是数量不行。例如,微操控器包括两个UART,而规划中的运用却需求三个。此刻,咱们不用只是为了添加串口的数量就别的添加一块新的芯片,而只需添加一个与该微操控器上现有的UART具有相同功用和特性的软件UART。
UART软件部分的完成
绝大多数的Linux软件开发都是以native办法进行的,即本机(HOST)开发、调试、本机运转的办法,可是因为在方针机上没有满意的资源来满意嵌入式体系的开发,所以这种办法不适合于嵌入式体系的软件开发。一般嵌入式体系软件开发选用穿插编译调试的办法。穿插编译的首要特征是某机器中履行的程序代码不是由本机编译生成,而是由别的一台机器编译生成。
串口通讯的根本任务有:完成数据格局化、进行串/并转化、操控数据传输速率、进行过错检测和进行TTl与EIA电平转化。串口通讯分为同步通讯和异步通讯两品种型,本文将用到异步串行I/0。
因为Linux体系将一切的设备都当作文件,所以拜访串口时,以为串口是一个文件,咱们能够运用文件体系操控函数完成根本的串口操作,比方open()函数用来翻开串口,read()和write()函数用来读写串口,在传输数据完成后能够用close()函数封闭串口。
结构了一个嵌入式版别的Linux文件体系,它使得内核在体系尽量精简的情况下能够运转起来,并满意产品和体系各方面的要求。其间,为文件体系配置用户和属组以到达必定的安全性更是体系的一大特征。别的,在这个嵌入式文件体系中,引入了VFS的支撑,尽管献身了一些空间,可是大大便利了往后各种物理文件体系的动态加载。Linux的文件体系事实上十分的巨大,结构一个嵌入式的Linux文件体系是一个很杂乱的进程
串口的根本设置
串口最根本的设置有波特率设置、检验位和中止位的设置。串口的设置首要是设置struct termios结构体的各成员值:
串口的读写
发送数据
除了上面用read来读取串口的办法外,也能够运用操作文件的函数来完成异步读取,如fcnt1,或许selectt等。
运用程序
ADS开发渠道的长处是它现已把串口的相关设置函数都现已包括在相关的头文件中,这样当开发人员想运用串口进行再次研制时就能够直接运用这些函数,或许在原函数上进行修正。本文中要经过S3C2410的串口对WNSC400操控箱进行数据的传输就运用了这些长处,部分程序如下:
结语
在ADS环境下进行的开发减少了直接在Linux体系下进行串口开发所遇到的费事,并且因为AARM具有多功用模块扩展功用,能够使多种功用会集起来,为WNSC400操控箱及其电动平移台广泛运用于嵌入式体系中发明了条件。