历史上的今天
返回首页

历史上的今天

今天是:2025年12月21日(星期日)

2022年12月21日 | 基于Android的GPRS的车载通信终端设计方案

2022-12-21 来源:elecfans

  0 引 言

  随着通信技术的发展,通信终端由单一的通话工具变成信息综合处理平台,成为办公、野外作业重要工具。


  随着半导体制作工艺的发展和芯片设计水平的进步,微处理器的性能大幅度地提高,ARM(Advanced RISCMachines)以其体积小、低功耗、低成本、高性能的特点逐渐在工业、无线通信、网络消费电子等领域占据主流。


  其中,在无线通信领域85%的无线通信设备采用了ARM 技术。另外,Android是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统,它开放性好,功能扩展性强,并可集成Google应用。


  车辆故障远程监控是一个实时的过程,当有故障数据出现就通过GPRS发送到监控中心,同时监控中心给终端发送相应的执行命令,减少汽车抛锚时间。本文中使用了讯研通信息技术有限公司的MD231GPRS模块和三星公司的S3C6410芯片。


  1 系统总体设计

  终端由ARM11?1 e衂芯片模块通过串口线控制GPRS模块的数据收发,连接到移动公司的GPRS网络,再连接到远程的计算机监控中心,从而实现远程的数据传输功能。


  系统总体设计包括硬件设计和软件设计。硬件部分包括处理器的选型、Android内核移植等等,主要是为软件部分搭建环境。软件部分基于Java环境在Eclipse下编程,完成GPRS的数据传输功能。系统的总体设计流程如图1所示。

  图1 总体设计流程

  图1 总体设计流程

  2 系统硬件设计

  2.1 系统硬件结构

  本终端硬件由GPRS模块和ARM11芯片处理模块组成。由于Android系统对硬件的要求及经济考虑,处理器选择为ARM11,内核版本选择为Android-Kernel-2.6.36,Android操作系统版本为Android-2.3.


  ARM11芯片模块主要由S3C6410A 处理器、256MDDR RAM 内存、1GB NAND FLASH 存储器、串口、7寸LCD显示器组成,NAND FLASH存储器用于存放已调试好的应用程序和嵌入式Android操作系统,串口用于调试系统及与终端设备进行通信,7寸LCD液晶显示屏用于显示系统信息和相关的状态。目前,GPRS技术比较成熟,GPRS模块选择实惠型MD321模块。


  GRPS模块外围有电源、天线和串口线,其中,串口线用于与ARM11处理器进行通信,能完成数据传输、短信收发、语音等系统框图如图2所示[1]。

  图2 系统硬件结构框图

  图2 系统硬件结构框图

  2.2 Android操作系统移植

  有了ARM11的硬件,就可以进行Android操作系统的移植。Android基于Linux内核,Google提供的内核源代码中除了Linux部分外,有很大一部分是与虚拟处理器Qemu和模拟硬件平台Goldfish相关。所以欲将Android移植到实际的硬件平台上,需要编译出一个适合目标平台运行的系统内核。


  在这里,电脑虚拟机上安装的是Ubuntu系统,用于Uboot移植和Android 内核裁剪和编译,并在Ubuntu 上安装交叉编译器arm-none-linuxgnueabi-gcc.


  2.2.1 Uboot移植

  下载U-boot源码,在解压文件夹里,删除与该硬件版本无关的文件。在board目录下建立Mini6410文件夹,把smdk6400目录下的所有文件都拷贝到Mini6410目录下,并建立自己的配置文件Mini6410.h,配置MakeFile文件;修改start.S文件、添加nand.c文件和修改Mini6410.h,使其支持从NAND FLASH 启动;在Mini6410.h里,对网卡DM9000A、默认下载地址、环境变量等进行配置;修改网卡驱动。最后编译Uboot生成Uboot.bin二进制文件[2]。


  2.2.2 Android内核的移植

  下载Android内核源码,进入解压的Kernel.git文件夹。修改common-smdk.c文件中的NAND FLASH使其为4个分区,分别为BootLoader区,内核区,文件系统区,其他区;更改MakeFile文件中目标体系结构ARCH为ARM 和交叉编译工具CROSS_COMPILE为arm-none-linux-gnueabi-;从Android SDK模拟器提取。config配置文件;配置内核,选中与S3C6410有关的选项;从其他Linux 内核中拷贝DM9000.h 和DM9000.c文件,并将两个文件拷贝到内核代码目录中,修改相应的配置文件,配置内核支持DM9000A 网卡;编辑mach-smdk6410.c中LCD 驱动使其为7寸LCD,拷贝KConfig中相关内容和文件到新内核,并添加相应的代码,修改devs.h文件,然后对内核进行配置选择ADC和触摸屏选项。最后编译内核生成zImage文件[3]。


  2.2.3 Android文件系统的制作

  下载Android源码并编译并生成out文件夹。其中root/就是root文件系统,将system/文件夹下的内容拷贝到root/system 下,这样root/文件夹就是一个基本的文件系统。将Ubuntu系统/dev下文件夹内容拷贝到root/dev下面,并通过mknod命令创建需要的device[4]。


  2.3 硬件平台测试

  通过SD卡烧写Uboot、内核和文件系统的镜像文件到NAND FLASH,上电重启开发板,系统能正常运行如图3所示。运用XP系统上超级终端对串口进行通信测试,超级终端能收发信息,图4为超级终端对Mini6410开发板根目录的查询,串口RS 232可用。

   图3 Android系统运行界面

  图3 Android系统运行界面。



  3 系统软件设计

  3.1 Android软件开发环境的搭建

  Android作为一个开放式的平台,并将Java语言作为它的官方语言,这不仅是考虑到Java语言的强大功能,而且考虑Android平台上绝大部分的程序都是基于Java的程序。Eclipse作为时下最流行的Java开发第15期唐奇明,等:基于Android的GPRS的车载通信终端的设计139工具之一,其良好的开放性、开发效率高、便于使用的特点非常符合OHA(Open Handset Alliance,开放手机联盟)的主旨,非常适合作为Android的开发工具来使用。

  图4 超级终端查询Android系统根目录界面

  图4 超级终端查询Android系统根目录界面

  在官方网站下载基于XP系统下的JDK6,安装完成后需要配置环境变量、系统变量和路径;在官方网站下载并安装XP 系统下的Android SDK,启动SDKManager下载并安装Android 2.3的相关Packages;在官方网站下载Eclipse、安装Android DevelopmentTools插件和配置Eclipse(选择SDK的安装路径);启动SDK Manager,创建Android 2.3-API Level 9模拟器如图5所示[5]。

  图5 Android 2.3-API Level 9模拟器

  图5 Android 2.3-API Level 9模拟器

  3.2 GPRS通信应用软件

  应用软件是在Eclipse环境下完成的。应用软件主要实现对传感器实时数据显示,连接远程监控中心,当出现异常数据时,通过GPRS传输到远程监控中心,同时显示远程监控中心传输过来的命令。


  3.2.1 通信应用程序处理器通过串口与GPRS进行通信

  通信程序主要包括初始化、GPRS参数配置、建立连接、数据传输、断开5个部分。GPRS通信应用程序流程图如图6所示。

  (1)初始化。处理器通过AT命令初始化串口,包括波特率、数据位、停止位、奇偶校验位等。

  (2)GPRS参数配置。需要AT 命令配置GPRS一些参数才能进行通信。参数包括GPRS模块通信网络、登陆网络的用户名和密码、远端IP地址、端口号、通信协议类型、工作模式[6]。

  (3)建立连接。ARM 通过AT命令激活GPRS模式、控制GPRS进行网络连接,在正常反馈下,一条终端到远程监控中心的物理通道就建立起来了。

  (4)数据传输。在与远程监控中心连接成功后,就可以进行数据的收发操作。当接收数据时,终端从GPRS网络上接收到数据帧,经协议处理模块拆封之后,提取用户数据,然后传输给RS 232接口;当发送数据时,设备从RS 232接口收到要发送的数据,经协议处理模块封装,然后发送到GPRS网络上。

  (5)断开连接。当检测到数据传输结束标志“+++”时,通过发送“AT#CONNECTIONSTOP”命令释放数据链路。

  图6 GPRS通信应用程序流程图

  图6 GPRS通信应用程序流程图

  3.2.2 应用程序界面设计

  应用程序在Eclipse环境下完成的。在Eclipse上创建“Android Project”类型的工程,用widget(Text-View,Button,EditText等)构建UI,生成相关xml文件,并对UI进行事件处理(Button控件事件监听),软件界面如图7所示[7]。

  图7 软件界面

  图7 软件界面

  3.3 软件测试

  通过adb工具把com.apk从模拟器中取出来,再通过adb工具把生成好的com.apk放入终端上,或者140 现代电子技术2012年第35卷在Eclipse编译时直接选择硬件MINI6410_2011W08,com.apk就直接生成在终端上了。图8为软件通信时的界面,在中心软件上输入IP地址222.212.77.78,端口号上输入6000,点击连接,接收区将显示“connect:

  addr=222.212.78.77,port=6000,type=tcp OATRACE:oa_soc_connect_req:sock_id=1connectblock waiTIng!”实时显示区显示传感器数据,这里以车雾灯为例,车雾灯状态0(0表示正常,1为异常),在串口发送区可手动给监控中心发送数据,数据以ASCII字符ESC作为结束符。为了测试能否发送数据,以数据0为例,在发送区填写30 1b点击发送按钮,在串口接收区有“SEND OK”字符串表示发送成功,有“SOCKET=0RECV=《datalen》:rn《30 1b》”字符串表示监控中心收到数据。

   图8 数据发送界面

  图8 数据发送界面


  4 结 语

  系统经过集成测试,工作性能和可靠性良好,能够在车联网应用中和远程监控中心实现有效通信,根据具体的情况给终端发送相应的命令数据,从而实现了车辆远程的监控。


推荐阅读

史海拾趣

ADLINK公司的发展小趣事

ADLINK 是一家全球领先的嵌入式计算解决方案提供商,以下是该公司发展的五个相关故事:

  1. 公司创立与初期发展: ADLINK 成立于1995年,总部位于台湾新北市。公司专注于为工业自动化、通讯、医疗保健、交通运输等领域提供高性能的嵌入式计算和连接解决方案。在创立初期,ADLINK 主要专注于硬件产品的开发和销售,如嵌入式计算板卡、模块、工业计算机等。

  2. 技术创新与产品扩展: 随着市场需求的不断变化和技术的发展,ADLINK 不断进行技术创新,积极拓展产品线。除了传统的嵌入式计算硬件产品外,公司还推出了嵌入式操作系统、软件工具和解决方案等,以满足客户在物联网、人工智能、工业4.0 等领域的需求。

  3. 全球业务布局与国际化发展: ADLINK 在全球范围内建立了广泛的销售网络和服务体系,拥有多个全球研发和生产基地,并在美国、欧洲、亚洲等地设有分支机构和办事处。通过与全球领先企业的合作和市场拓展,ADLINK 的产品和解决方案已经覆盖了全球100多个国家和地区。

  4. 合作伙伴关系与客户案例: ADLINK 与世界各地的行业领先企业建立了紧密的合作伙伴关系,共同开发创新性的解决方案,应用于工业自动化、智能交通、医疗保健等领域。例如,公司与德国西门子、美国英特尔等知名企业合作,在工业物联网、边缘计算等领域取得了一系列成功案例。

  5. 未来展望与持续发展: 面对快速变化的市场环境和日益激烈的竞争,ADLINK 将继续致力于技术创新和产品研发,不断提升解决方案的质量和性能,以满足客户日益增长的需求。公司将继续秉承“创新、合作、可靠”的核心价值观,努力成为全球领先的嵌入式计算和连接解决方案提供商。

Global Power Technologies Group公司的发展小趣事
通过调整RC时间常数,可以实现信号的延时输出,用于信号处理、控制系统等领域。
General Electric Solid State公司的发展小趣事
在需要精确控制时间间隔的场合,如定时器、计数器等电路中,集基耦合单稳态电路可以发挥重要作用。
Atlanta Micro公司的发展小趣事

随着技术的不断进步,Atlanta Micro不断推出创新产品,其中最为引人注目的是其开发的一款高性能RF模块。这款产品采用了先进的材料和技术,具有更高的频率稳定性、更低的噪声和更长的使用寿命。这一创新不仅提升了产品的性能,也满足了客户对更高品质产品的需求,进一步巩固了Atlanta Micro在市场上的地位。

创都(CAX)公司的发展小趣事

随着市场竞争的加剧,单一企业的力量往往难以应对复杂多变的市场环境。创都公司意识到了这一点,因此积极寻求跨界合作的机会。他们与多家知名企业建立了战略合作伙伴关系,共同研发新产品、开拓市场。这些合作不仅为创都公司带来了更多的资源和机会,还提升了公司的综合竞争力。其中,与某知名互联网公司的合作项目尤为成功,双方共同推出了一款智能家居产品,该产品凭借其便捷的功能和优秀的品质迅速在市场上走红,为双方带来了可观的收益。

Delta Electronics Manufacturing Corp公司的发展小趣事

技术创新一直是Delta的核心竞争力。多年来,公司不断投入研发资源,推动技术创新和产品升级。Delta的工程师团队致力于电源技术的研发,成功推出了一系列具有领先技术水平的电源产品,如高效能转换器、智能电源管理系统等。这些产品不仅满足了市场的多样化需求,也推动了电源行业的技术进步。

问答坊 | AI 解惑

C语言嵌入式系统编程(收集大发送之3——嵌入式系统的C程序设计)

嵌入式系统的C程序设计.pdf 作  者】KirK Zurell【译  者】艾克武 张剑波 艾克文【原出版社】R&D BOOKS【出 版 社】机械工业出版社-华章【出版时间】2002-01-01 第1章 简介 1.1 本书的作用 1.2 嵌入式系统中使用C语言的好处 1.3 本书概览 ...…

查看全部问答>

一种嵌入式微调度器的实现方法

智能仪表是自动控制技术的重要组成部分。随着智能仪表在工业控制、通信和汽车电子中的广泛应用,智能仪表逐渐向数字化、网络化、智能化方向发展;同时,智能仪表复杂度不断增加,对实时性要求几乎达到了苛刻的程度。在编程方式和代码重复利用等方面 ...…

查看全部问答>

那位高人指点EEPROM程序

我做好了一个数码显示的程序,数码管显示从1走到999.但是有的时候断电后就自动又从零开始走,我现在想让它断电把数据记下来我已经做好了一个断电检测电路我已经写了一点断电的程序,但是就是实现不了断电之前的数据记下来,每次还是断电后就从0开始 ...…

查看全部问答>

在linux内核空间用vmalloc最大能分配多少内存?

请问: linux在内核空间用vmalloc最大能分配多少内存? 在用户控件用malloc最大能分配多少内存? 分配的最大值在内核中可以修改吗?怎么修改? 我用的ARM2440,内存128M,linux内核是2.6.13 谢谢!…

查看全部问答>

对uCOS操作系统提点问题!!希望能得到解决!

本人阅读 Jean J.Labrosse 由卲贝贝翻译的 北京航空航天大学出版社 出版的《嵌入式实时操作系统uC/OS-II(第二版)》 两遍,发现有个不妥的地方(只是不妥,但是不能算是错误),还希望各大虾指教与斧正! 在书本103页 讲到3.10 uCOSII 中的中断,示意性 ...…

查看全部问答>

在Visual Studio2005中怎样连接到 WinCE6 设备

在Visual Studio2005中开发一个应用程序,需要与WinCE6设备连接进行调试。 在网上看到可以通过在设备端运行conmanclient2,cMaccept,pc端运行“连接到设备” ,但是提示未安装activesync,安装以后,再运行,提示“设备未就绪“,我是通过网络接口 ...…

查看全部问答>

放在衣服口袋内的定时器

本帖最后由 jameswangsynnex 于 2015-3-3 20:03 编辑 …

查看全部问答>

UART2僵住了

UART2僵住了用STM32F103,遇到一个奇怪的问题. 正常状态下,uart2定期发送一些数据出来. 因某种未知的原因,发生了奇怪的状态:软件上的发送流程还在进行,但是端口上没有数据出来.确认了CR1,CR2,CR3,BRR,GPTR都未发生改变.uart2对应的IO ...…

查看全部问答>

【MSP430共享】具有检测电池容量功能的充电器设计

为解决市场主流充电器缺少电池容量检测功能以及电池充满电量后不能 自动断电等问题,设计了一种以 MS P 4 3 0单片机为控制核心、D S 1 3 0 2为外围时钟电路芯片、具有检测电池容量功能的充电器,并给出了单元模块设计电路和配套的软件流程图。实验 ...…

查看全部问答>