使用TI-AM1808构建嵌入式导航系统

来源 :电子产品世界 | 被引量 : 0次 | 上传用户:liutongyang123
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:TI的AM1808处理器具有较为先进的架构。本文探讨了利用AM1808构建嵌入式导航系统的过程。并且探讨了嵌入式文件系统的组成。在硬件和软件方面对嵌入式系统构建过程中遇到的问题提出了解决方法。
  关键词:AM1808;嵌入式设备;导航系统;嵌入式文件系统
  DOI: 10.3969/j.issn.1005-5517.2012.8.012
  
  硬件设计
  在硬件设计上,得益于AM808先进的架构,AM1808的硬件设计具有很高的弹性。但是考虑到嵌入式系统成本和体积的要求,简洁有力的设计更应该在整个设计流程中被体现出来。因此,某些功能必须被禁用,以提高系统的简洁性和稳定性,并且降低成本。
  系统的需求分析
  使用AM1808构建嵌入式的导航系统,TFT显示屏是必不可少的组件之一。TFT液晶显示屏通过显示不同的海图和标志,来引导船只的正常航行。早先的嵌入导航仪也选用点阵液晶来进行数据的显示。相比较点阵液晶,TFT液晶有着低成本,更加丰富的颜色输出以及更高的刷新速度。基于以上的理由,TFT液晶已经慢慢将点阵液晶淘汰。
  A M 1 8 0 8最大可以接驳1024*1024分辨率的液晶显示器。但是其像素时钟信号最高只能到 37.5MHz。当前系统中,我们使用800*480分辨率的液晶就能很好地满足导航功能的现实需求。
  对于一个嵌入式系统,系统的升级功能十分的重要。升级的数据来源可以是SD卡或者USB大容量存储器。为了满足多样化的用户需求,我们同时需要这两种接口。AM1808的SD控制器可以访问SD卡上的数据,但是不支持高速的SD卡,但标准速度的SD卡已经可以很好地满足系统的需求。在USB方面,AM1808具有两个可以使用的USB主机端口:集成型PHY的USB2.0移动(OTG)和集成PHY的USB1.1的OHCI。考虑到存储器速度的需求,我们使用USB2.0的OTG来实现USB存储器的数据交换。
  导航的一个重要功能是显示自身的GPS位置。为了能够接受GPS模块发出的定位信息,串口通信必不可少。AM1808具有3个独立的串口,并且遵守TL16C550规范。每一个串口都具有16字节的硬件FIFO已经增加的错误检测位。UART提供了CPU和GPS模块之间的数据交换功能。
  系统存储器的设计
  系统的存储器分为两个部分:FLASH存储器和DDR内存。
  FLASH存储器存储一些大容量的永久或者长期数据,这些数据在系统掉电之后还能继续存在。DDR控制器的存在使得AM1808可以使用DDR RAM来作为系统的内存颗粒。相比较SDRAM来说,DDR内存有价格便宜、速度快、容量大的显著优点。
  因为嵌入式系统对于内存的需求较低,我们选用128MB的系统内存以及128MB的FLASH存储器就能够很好地满足系统数据传输的需求。
  对于FLASH存储器来说,NOR FLASH和NAND FLASH都能提供长效的数据存储。但NOR FLASH相比NAND FLASH而言,具有成本高,容量小的缺点。虽然NOR FLASH可以提供字节编程的功能,但对于嵌入式的数据存储来说,成本和容量是考量的首要两个要素。因此,系统使用NAND FLASH来进行数据的存储。由于NAND FLASH具有的一些缺陷如只能按块擦除,原生可能存在坏块等,我们引入著名的YAFFS文件系统来进行数据的管理和文件系统的实现。
  使用J-LINK进行AM1808的检测调试
  J-Link是SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器。配合IAR EWARM,ADS,KEIL,WINARM,RealView等集成开发环境支持所有ARM7/ARM9内核芯片的仿真,通过RDI接口和各集成开发环境无缝连接,操作方便、连接方便。
  在设计印刷电路版时,目前最主要用在测试集成电路的副区块,而且也提供一个在嵌入式系统很有用的调试机制,提供一个在系统中方便的“后门”。当使用一些调试工具像电路内模拟器用JTAG当做讯号传输的机制,使得程式设计师可以经由JTAG去读取整合在CPU上的调试模组。调试模组可以让程式设计师调试嵌入式系统中的软件。
  在嵌入式系统硬件设计的初期,很重要的一点就是确认系统的CPU和内存可以正常工作。通过系统的JTAG调试接口,J-LINK可以运行监测程序,通过对同CPU的控制,可以确认系统的CPU是否已经正常工作。通过对系统内存的读写操作,我们可以知道系统的DDR内存是否正常运行。
  对于通常的ARM9来说,JTAG调试接口则较为复杂,需要对J-LINK进行定制操作以后才可以正常访问ARM9内核:复位ICE部件,设置正确的ICE信息等等。初始化完成以后,J-LINK就可以提供完整的调试功能。
  对于J-LINK的配置,则通过 J-LINK的初始化脚本来实现。初始化脚本提供类似C语言的代码执行。以下为复位ICE的代码范例:
  JTAG_StoreIR(2);
  v = 0x01000000;
  JTAG_StoreDR(v, 32);
  BitPos = JTAG_StoreDR(v, 32);
  v = JTAG_GetU32(BitPos);
  v &= 0x00FFFFFF;
  v |= 0x81000001;
  JTAG_StoreDR(v, 32);
  v &= 0xFFFFFFFE;
  v &= 0x00FFFFFF;
  v |= 0x81000000;
  JTAG_StoreDR(v, 32);
  
  
  软件设计
  软件设计在AM1808上得益于简洁有力的硬件设计。软件设计除了充分利用硬件的性能之外,也需要对硬件的缺陷具有良好的鲁棒性,同时必须对用户提供方便使用的接口。
  AM1808的引导方式
  AM1808作为较为先进的ARM9内核嵌入式处理器,其引导方式比之前的ARM9 CPU多了许多功能:例如SD卡引导功能,NAND FLASH引导功能等等。
  
  AM1808具有两种独立的引导方式:直接代码运行引导和脚本文件引导。
  直接代码运行引导指的是CPU运行存储器中写入的二进制代码。这种引导方式具有快捷简单高效的优点。但是只有NOR FLASH才能支持直接代码运行引导功能。由于NOR FLASH的缺点,我们的系统中只采用了NAND FLASH作为系统存储器。因此,NAND FLASH引导功能是系统是否能够正常启动的关键。
  NAND FLASH引导功能属于脚本文件引导功能。脚本文件引导功能指的是有预先写入CPU的一小段程序,将写入NAND FLASH的引导脚本文件进行解析,并且载入内部运行。
  这样的引导方式相比直接代码运行引导来说较为麻烦:引导脚本必须写入NAND FLASH的特殊区块,并且写入符合要求的ECC校验值,并避开可能存在的NAND FLASH坏块。由于脚本文件的读取和执行都需要一定的时间,所有引导脚本启动相比直接代码运行启动要掩饰1-2秒的时间。但是相比只能由NOR FLASH支持的直接代码引导功能来说,无论在价格和系统配置的简洁性上,NAND FLASH引导都较为优秀。
  AM1808也可以配置为SD卡引导启动。由于NAND FLASH没有进行预烧写的操作,SD卡引导启动是系统初始化程序运行的重要途径。
  通过脚本文件控制系统的升级
  对于导航系统来说,数据和程序的升级十分重要。在Linux系统中,可以采用shell脚本来对数据文件进行操作。在RTOS系统或者无操作系统的环境中,由于缺乏Linux的支持,系统的升级较为麻烦。为了能够便捷地进行数据和程序的升级,需要创建一套类似shell脚本的解释器,并且提供文件和命令相应的功能。
  在SD和USB上,由于普遍使用的是FAT文件系统,采用著名的FATFS文件系统来提供文件的存储功能。在NAND FLASH上,由于NAND FLASH的特点和缺陷,我们使用专门的NANF FLASH文件系统:YAFFS来进行文件的操作。
  由于需要对文件的访问提供一致性的接口,就需要在不同的文件系统之间创建统一的访问函数。考虑到文件访问函数的通用性,我们选取标准的C文件访问函数来实现嵌入式的文件访问。
  通过创建“挂载”功能函数,我们得以在不同的路径上和介质上,通过相同的函数来存取文件。
  脚本文件由系统的引导文件解释执行。脚本命令可以由S D卡或者NAND FLASH上的文件提供,也可以由串口2的控制台输入(921600,N,8,1)。
  系统上电以后,将在所有的存储器根目录寻找bl.rc文件。这是系统引导的主脚本入口。系统将初始化NAND FLASH和SD卡,并自动挂载/ mmc和/nand0两个挂载点。如果SD卡未插入,则只挂载/nand0,并运行/ nand0/bl.rc脚本文件。如果SD卡已经插入并且初始化成功,系统将运行/ mmc/bl.rc脚本文件。
  脚本文件的范例:
  umount /nand0
  format nand0
  mount nand0 /nand0 rw
  wblinit /mmc/blinit.ais
  fashbl /mmc/bl.bin
  cp /mmc/rc/btnand.rc /nand0/bl.rc
  cp /mmc/bllogo.gz /nand0/bllogo. jpg
  外部接口的通讯方式
  外部接口的通信主要介绍串口的硬件和软件通信方式,以及键盘接口的通信方式。
  串口的通信方式
  UART通常是嵌入式设备中默认都会配置的通信接口。这是因为,很多嵌入式设备没有显示屏,无法获得嵌入式设备实时数据信息,通过UART串口和超级终端相连,打印嵌入式设备输出信息。并且在对嵌入式系统进行跟踪和调试时,UART串口了是必要的通信手段。比如:网络路由器,交换机等都要通过串口来进行配置。UART串口还是许多硬件数据输出的主要接口,如GPS接收器就是通过UART串口输出GPS接收数据的。UART缓冲是十分重要的操作。根据AM1808的硬件特点,UART的数据进行了两次缓冲:硬件FIFO缓冲以及软件缓冲区。硬件FIFO在硬件层面上对UART接收和发送的数据进行了缓冲操作。软件缓冲指的是环形缓冲的软件实现,这在软件层面上保证了数据流的正常,以及读取和写入操作的非同步性。后者对于大量数据的收发效率十分重要。
  键盘的通信方式
  在当前的系统中,我们采用I 2C 键盘的通信方式。
  键盘由单片机进行扫描和控制,单片机将读取到的键值由I2C通路送到CPU进行处理。I 2 C的中断触发处理,引入了和串口相同的软件缓冲机制。这样可以保证按键的数据是及时并且有效的。并且能够提供键盘的缓冲操作。
  结语
  使用AM1808构建的嵌入式导航系统,无论在硬件还是软件上,都具有简洁有力的特征。这首先得益于AM1808先进的架构设计。其次,在系统的配置上采用适宜的硬件设计,不但降低了系统的总体成本,也增加了系统的可靠性。
  使用J-LINK对AM1808进行调试,使得软件系统的BUG可以得到发现和修正,大大加速了嵌入式系统的开发速度。
  得益于类shell脚本的功能支持,使得嵌入式系统的升级操作得到了极好的实现。在此基础上实现的C标准文件系统,在嵌入式设备上提供了标准的文件访问接口。这使得嵌入式文件系统能够提供多样化的数据升级介质支持。
  综合以上的几点,AM1808搭建的嵌入式系统具有一定的通用性,成本低的优点。其应用范围不止局限在导航系统上。本文提出的嵌入式系统构建方式,对其它的平台也有一定的参考价值。
  参考文献:
  [1] AM1806 ARM Microprocessor Datasheet[Z].Texas Instruments Inc.,2011-06
  [2] 孙天泽,袁文菊,张海峰.嵌入式设计及Linux驱动开发指南-基于ARM9处理器[M].北京: 电子工业出版社,2007
  [3] SD Specifications Physical Layer Version 3.01[S].SD Group,2010-05-18
  [4] IEEE 1149.1 JTAG Testability[S].Semiconductor Group,1997
  [5] K9F1G08U0A Datasheet[Z].Samsung Electronics
其他文献
摘要 :本文设计了一种以超低功耗单片机MSP430F149为控制器,以高速的FPGA实现等精度测量正弦信号的频率、周期和相位差的多功能计数器。在设计中依据等精度计数原理,应用单片机的数学运算和控制功能,利用f=1/T实现了频率和周期的统一处理;采用相位-时间转换方法,根据完成了相位差测量。此外,利用外加模拟通道,实现了对正弦波小信号的预处理,使得该计数器能够在较宽的频率范围和幅度范围内进行测量。 
截止1999年10月和11月,海拉尔铁路分局分别实现了人身安全5000d和行车安全2000d。回顾五年的工作历程,体会是:安全工作“成在基础建设,重在规范管理,严在逐级负责,贵在达标落实”。
从保证铁路干线运输安全、畅通的原则出发,对沈丹线63km线路所改造的必要性及其改造方案进行了论证。
目前,德州仪器(TI)宣布推出最新InstaSPlN-FOC(磁场定向控制)解决方案,其可帮助电机控制系统设计人员在s分钟乃至更短的时间内识别、调节并通过可变速度及负载全面控制任何类型的三
针对当前铁路运输进款收缴难点,分析了原因,提出了对策:增加进款收缴开户行;签订银行企业存汇协议;完善进款考核办法;拓宽进款筹资渠道;扩展资金结算分支机构;强化效益,取消多头指标考
引言  随着计算机网络技术的发展,现场工况环境对采集控制系统的可靠性、便携性、抗干扰性、实时性、多任务操作等方面提出越来越高的要求标准。  主要研究内容和目的  嵌入式Linux在短短的几年内,就突破了计算场景的所有方面,提供了低成本、开放资源方案,支持开放标准、网络、通信、Internet、图形等,Linux现在能够支持和处理器一样广泛的“传统”嵌入式操作系统。因此,本次课题要设计研发一款高性能
为求得铁路技术直达列车编组方案最优化,首先经出最优等通方案定义和求解最优等通方案方法;在此基础上,以车流强度为主要考虑对象,修正最优等通方案,以得到最优编制方案,从而达到以