I2C总线实现TMS320VC5509A引导装载设计

发布者:sokaku最新更新时间:2006-12-27 来源: 现代电子技术关键字:存储器  ARM  并行 手机看文章 扫描二维码
随时随地手机看文章

1 引言

DSP芯片的Bootloader程序用于上电时将用户程序从外部非易失性、慢速存储器或外部控制器中装载到片内高速RAM中,保证用户程序在DSP内部高速运行,TI公司的C55x系列DSP芯片提供多种装载模式,主要包括HPI引导装载、串行E2ROM引导装载、并行引导装载、串行口引导装载、I2C总线E2ROM引导装载等,通常使用的是并行引导装载模式,该方式引导速度快实现简单,但是体积和功耗也较大,随着串行接口存储设备容量的提高,串行引导方式体积小、功耗低的优势便显现出来了,所以使用ARM的串行接口对DSP进行引导装载,不仅能省去存储芯片,而且利用ARM的ISP功能,可以根据需要改变用户程序,有利于系统的维护和升级。

本文以TMS320VC5509A芯片引导装载为例,详细介绍了利用ARM通过I2C串行引导方式来实现程序的引导装载,其他引导过程可参考相关技术资料[1]。

TMS320VC5509A是TI公司一款16位定点低功耗DSP芯片,其指令周期最快为5ns,片内拥有128×16k高速RAM,性价比很高,被广泛用于嵌入式手持设备、通信、数据采集等领域。

TI公司的DSP芯片出厂时,在片内ROM中固化有引导装载程序(Bootloader),其主要功能就是将外部的程序装载到片内RAM中运行,以提高系统的运行速度,C55x系列DSP其Bootloader程序位于片内ROM空间的0xFF0000-0xFF8000处,进入Bootloader程序后,程序先对DSP进行初始化,配置DSP的堆栈寄存器、中断寄存器和DSP状态寄存器,保证在引导装载用户程序时不会被中断,从而引导程序加载失败。

由于DSP可以通过自举表对寄存器进行修改,需要注意在Bootloader程序运行时,尽量不要修改Bootloader程序配置过的中断控制寄存器,否则会导致不可预料的后果。

2.1 I2C引导模式硬件连接

为了通过I2C总线来实现对DSP引导装载,通常情况是选择具有I2C总线接口的E2ROM,电路框图如图1所示,其中GPIO0-GPIO3是用来选择Bootloader引导模式,当DSP复位后对这4个管脚电平采样,根据不同的组合进入到对应的Bootloader程序,表1列出了GPIO0-GPIO3的管脚不同状态的组合以及对应的Bootloader引导方式。SDL和SDA分别为I2C的时钟和数据线,其上拉电阻的大小取决于所连接I2C设备的多少[2]。


 

如果通过I2C总线对DSP实现引导装载,对存储数据的I2C设备有如果几点要求:

(1)该设备首先必须兼容Philips的I2C总线规范V2.1,工作在从设备模式,并且其从设备地址为0x50。

(2)设备内部使用两个字节寻址,即在接收到主机写命令后,其后接收到的数据是16位的地址数据。

(3)对设备读取时,相关设备必须支持自动寻址增量,即每读一次,其内部地址指针自增1,保证程序按顺序读出。

常用的I2C接口E2ROM有ST公司的M24系列及Philips的PCF85系列的E2ROM,根据程序大小选择相应的芯片,需要注意的是I2C引导模式最多支持64kB的数据。

在I2C引导模式运行时,DSP作为主设备来控制I2C总线的时钟,对于DSP来说,SCL必须满足根据方程(1)所得到的速率,而I2C引导模式支持的最高时钟速率为400kHz,所以如果想利用I2C引导模式,DSP上电时输入时钟就不能大于12MHz。

SCL(高)=SCL(低)
=15×(DSP输入时钟周期) (1)

2.2 I2C引导模式数据存储方式

为了能正确地将数据从外部存储器搬移至DSP内部,用户程序需要将数据按照一定格式存储在E2ROM中,按照这些格式存储的数据便是自举表(Boot table),自举表是Bootloader程序能正常运行的保证,只有将数据按照自举表的要求存储,用户程序才能被搬移到DSP内部正常运行,在自举表中除了用户数据外还需要一些Bootloader控制数据,如程序入口地址(entry point address)、寄存器配置(register configurations)和可编程延迟(programmable delay)等,自举表的结构如图2所示。

其中程序入口地址在将用户程序搬移至DSP内部后,用户程序从该地址处开始运行,通常情况是中断向量表的reset处,在Bootloader搬移数据之前,如果需要可以改变某些寄存器的值,如DSP的clock配置寄存器、EMIF配置等,通过自举表配置这些寄存器后,需要一定时间才能正常工作,否则会导致引导程序失败。延迟计数器是让Bootloader推迟相应的CPU周期再进行数据搬移,确保引导程序正常工作,由于DSP是采用分段格式来组织数据的,如代码段、数据段和用户自定义数据段等,所以生成的自举表也是按照对应格式来建立的分段存储,这样有利于程序维护,实现模块化设计。

在自举表的最后,是连续的4个字节的全零数据,其目的是为了告诉DSP程序引导完成,可以传至程序入口执行,同时DSP也发出指示给外部存储设备告知引导结束,在I2C模式中,作为主机接收设备的DSP信号将会在接收到结束标志后在数据总线上给出停止标志,用来结束数据传输。

要建立自举表,可以利用TI提供的HEX转换程序(HEX55.exe),将生成的连接文件转换成用于存储器的数据格式[1]。首先,需要建立一个CMD(链接命令文件linker command file)文件,输入需要的链接选项,HEX55利用该文件提供的各种选项来转换文件,下面是一个为I2C引导方式建立的CMD文件和其选项以及具体含义:
 
通常情况下还需定义采用某种方式如-Serial8、-parallel16等选项,表示采用何种Boot方式从而生成对应的存储格式,由于采用了I2C模式来引导,所以这些选项可以不使用,另外还可以使用-reg_config和-delay选项,分别来设置需要改变的寄存器值以及需要延迟的CPU周期数,最后需要注意的是HEX55程序要使用v2.1及后续版本,早期版本生成的自举表不能正确引导程序。

3 ARM端设计

上面介绍了利用I2C接口的E2ROM来实现引导装载的硬件连接和需要的数据存储形式,实际利用ARM自身的I2C控制器,将自举表存储在ARM的FLASH中,并且让ARM按照I2C引导模式中E2ROM的时序向DSP发送对应的数据,实现对DSP的引导装载,所选用的ARM是Philips的LPC2138。LPC2813是基于32b ARM7的内核,内部拥有多达512k的高速FLash和32k的静态RAM,其工作频率可达60MHz,其I2C总线控制器支持I2C所有工作模式,这些在用于引导DSP时就不用使用端口来模拟I2C时序,使用十分方便,引导DSP时,只要ARM按照对应的顺序来发送数据,就能实现DSP的程序引导,使用ARM引导时,只需将图1中的SCL和SDA分别与ARM的SCL和SDA连接即可。

Bootloader使用I2C读取数据时其时序如图2所示。引导开始后,DSP首先会使用随机读取指令(random read command)从0x0000地址处读取数据,该读取指令由一个虚假的写指令和当前地址读取指令(current address read command)组成,ARM正确响应该指令后,DSP便继续采用当前地址读取指令读取剩余数据。

在LPC2138中,I2C总线有专门的控制器,并且每次接收到数据后对应的I2C状态寄存器会以不同的代码来表示当前I2C总线状态,用户可以根据不同的状态来进行下一步的操作[3],整个引导过程就是ARM根据不同的总线状态来发送或接收相应的数据,使用ARM引导DSP程序加载时,ARM作为从设备工作,在两种工作模式之间切换,分别为从设备接收(slave receiver和从设备传输(slave transmitter)。

下面介绍ARM端程序的运行状况,程序中首先通过I2C地址寄存器(I2ADDR)将ARM的从设备地址置为0x50,再利用I2C置位控制寄存器(I2CONSET)将其中的I2EN和AA置1,这样ARM就工作在从设备模式,一旦I2C总线接收到有效数据,程序就进入到中断服务程序中运行,用户程序根据I2C状态寄存器(I2STAT)的值判断当前状态从而进入下一步操作,图3为中断服务程序工作流程。

图3中State代表接收到数据后,I2C状态寄存器中的值,不同的值代表总线上可能出现的各种状态。0xA0代表程序收到的是start或是stop标志,返回主程序继续等待中断,0x60代表接收到自己的从设备地址和写命令,并返回ACK信号,Count1代表收到的写命令次数,由于整个引导过程中只能接收到一次写命令,所以只要Count大于1则接收出错,需要重新启动引导程序,利用ARM控制DSP的复位信号重新开始引导过程,直至成功引导,0x80表示ARM进入了从设备接收数据状态,并且前边已经收到了本机的设备地址,此次接收到了数据并返回ACK信号,I2DAT在从设备接收模式时存储接收到的数据,发送模式时存储待传输的数据,引导开始后,连续两次接收的数据应该为0,若并不为0,表示引导程序出错,需要复位DSP重新开始接收。



Count为连续两次接收数据0的计数器,一旦满足条件,将发送缓冲区的首地址取出存储在Trans_addr中,0xA8代表接收到当前地址读取命令,一旦接收到此命令,将待发送数据取出送入发送数据寄存器I2DAT,以便下一次传输时将数据送出,0xC0表示数据发送成功,而且没有收到ACK信号,意味着当前地址读取命令结束,此时将发送缓冲区地址加1,取出下一次待发送数据地址,这样便完成了1个字节数据的发送,整个引导过程一直到DSP收到自举表结束标志后停止,需要注意的是,I2C中断标志位需要通过软件清除,每次中断返回时都必须用I2C清零控制寄存器(I2CONCLR)手动清除I2C控制寄存器中的中断标志。

按照上述方法就完成了I2C引导装载模式,用户可以在程序中加入测试程序,通过控制GPIO高低变化生成脉冲,利用示波器观察从而判断程序引导是否成功。

4 结语

本文提出的引导方式已经成功地应用于一款低功耗、小型户数传设备当中,免去了对外部存储器的编程,特别有利于设备的升级和维护。

关键字:存储器  ARM  并行 引用地址:I2C总线实现TMS320VC5509A引导装载设计

上一篇:I2C总线实现TMS320VC5509A引导装载设计
下一篇:基于GIO/FVID的DSP视频处理驱动程序

推荐阅读最新更新时间:2024-05-02 20:26

基于ARM9在高精度生化分析仪温度控制系统中的应用
1 引言 ARM9越来越广泛的应用于各种生物电子仪器中,全自动生化分析仪是一个典型的应用。生化分析仪检测分析过程中温度对检测结果具有很大的影响,被检样品和试剂只有在指定的温度下检测才能保证生化检验结果的可靠性。生化分析仪的温控系统往往具有非线性、时滞性等特点,应用常规PID控制达不到理想的效果。本系统以ARM9处理器作为控制系统核心,实现模糊自整定PID控制算法。经测试,该系统精度高,稳定性好,响应快,反应盘控温于现行的标准检测温度37℃,控温精度为土0.1℃,显示精度为±0.01℃,完全满足临床使用要求。 2 系统总体设计及主要硬件实现 2.1 系统总体设计 系统结构如图1所示。系统主要由测温器件、ARM控制器
[单片机]
基于<font color='red'>ARM</font>9在高精度生化分析仪温度控制系统中的应用
基于ARM9的室内无线监控报警系统设计与实现
随着计算机网络技术、移动通信技术、多媒体技术的快速发展,无线监控系统以其便捷、实用、安装方便等优点被广泛应用于军事、工业、农业等场合,更走进了人们的日常生活,给人们的生活带来了便捷的信息化服务。文中设计实现了一种基于ARM9的室内无线监控报警系统,实现了室内环境信息监控、智能家居控制、图像信息采集存储及与用户实时远程信息交互的功能,并可在紧急情况下报警。在智能楼宇、智能家居、农业大棚、养殖等领域有广泛的应用和发展前景。 1 硬件设计 1.1 系统总体架构 无线监控报警系统以ARM9为核心,主要实现室内环境信息采集、智能家居控制、图像信息采集、远程无线监控报警等功能。系统的总体架构如图1所示,由7个主要模块构成。其中室内信息采集模块
[单片机]
基于<font color='red'>ARM</font>9的室内无线监控报警系统设计与实现
苹果基于ARM架构MacBook曝光:和硕抢了头彩
和硕联合已经拿到了苹果基于ARM架构的MacBook电脑的订单。全新 ARM MacBook 的内部代号为星辰(Star),系列号码为 N84。不过和硕没有透露具体生产时间。 目前市场上已经有不少基于ARM架构的笔记本电脑产品,包括华硕、惠普、联想等老牌厂商都有产品展出。这类产品最大的特点是低功耗、长续航,不过性能如何还是个问号。在今年的台北电脑展上会有更多ARM架构的笔记本电脑问世。 有关苹果最终会推出ARM Mac的传言已经存在很长时间了。去年9月就有报告称苹果正在进行开发。这个想法背后的基本原因是,开发ARM笔记本电脑芯片将允许苹果减少对英特尔的依赖,还能更加自主地规划新品。
[家用电子]
ARM映像文件,编译器,连接器介绍
ARM映像文件 ***************************************************** 1.ELF格式文件的结构 1.1映像文件组成部分 **一个映像文件有一个或多个域组成 **每个域包含一个或多个输出段 **每个输出段包含一个或多个输入段 **各输入段中包含了目标文件中的代码和数据 输入段中包含了四类内容:代码、已经初始化的数据、未经初始化的存储区域、内容初始化成0的存储区域。每个输入段有相应的属性,可以为只读的(RO)、可读写的(RW)以及初始化成0的(ZI)。ARM连接器根据个输入段的属性将这些输入段分组,再组成不同的输出段及域。 一个输出段中包含了一系列的具有相同的RO、RW
[单片机]
ARM中的软件中断
中断的工作原理及ARM中中断控制器的工作模式 1. 首先介绍ARM内核的中断控制器的几种工作模式: 1. 快中断是为支持数据传输或快速数据通道而设计的,为快速处理快中断。①快中断被设为最高中断优先级;②在快中断模式增设了7个私有工作寄存器,从而避免了由于主工作寄存器数据的保存和恢复而带来了额外开销;③快中断处理程序处于异常向量表的最后位置,因此可紧接异常向量表书写快中断处理程序,而不必进行程序跳转操作,避免了刷新指令流水线和高速缓存。 软件中断是一种由用户设置的同步中断,由程序指令产生,不像硬件中断那样由外部事件触发。软件中断允许运行在用户模式的程序进入监督模式,并运行监督态下的函数。在 ARM7TDMI的硬件调试系统
[单片机]
服务器巨头纷纷力挺ARM,专家表示并不看好
当ARM刚刚宣布进军服务器之时,业界并不以为意,毕竟在高端领域,X86、MIPS、甚至是SPARC、PowerPC架构,都会比ARM拥有更多的经验,然而,最近IBM DELL等公司纷纷宣布推出ARM处理器架构的服务器。这家被炒得越来越火的公司,在FPGA领域打败了PowerPC,在手机嵌入式领域击溃Intel,但业界一直在强调ARM的低功耗,因此ARM急需在高端领域,与众多处理器一决高下,而服务器,显然是这场战役的主战场。 作为目前世界上最大的服务厂商之一,DELL公司在正计划推出一款基于多核ARM处理器的服务器。此款服务器将会成为DELL公司首款采用非X86架构的服务器产品,此款服务器与DELL在一年前推出的基于威
[嵌入式]
ARM嵌入式开发板汽车节能控制系统
   引言   由于各种原因,公交车总是不断重复加速—减速或停车—再加速的过程。通过加装本节能装置,当汽车需要制动时,在主控单元的控制下,可将汽车行驶时具有的巨大动能通过空气压缩机转化成高压气体的势能并储存起来,从而实现汽车减速或停车。当汽车需要启动或加速时,用储存起来的高压气体势能代替燃油来驱动汽车,从而实现汽车能量的回收再利用,达到节能的效果。同时由于汽车在起动或加速时能耗最大,如果汽车是用燃油驱动,则此时油料燃烧不充分,燃烧效果最差,而且产生的噪音最大。    系统工作原理   本系统主要由三部分组成,即检测部分,控制部分和执行机构。检测部分包括踏板位置传感器、曲轴位置传感器、压缩机活塞位置传感器、汽车运行速度传感
[单片机]
<font color='red'>ARM</font>嵌入式开发板汽车节能控制系统
arm-linux gdb调试工具的安装
开发环境:AT91SAM9X25开发板:安装linux2.6.39; pc的虚拟机:Linux version 2.6.18-194.el5 (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) ,arm-linux-gcc的版本为version 4.4.3 二、安装 (1)解压:tar zxvf gdb-6.8a.tar.gz (2)配置安装gdb: cd gdb-6.8 ./configure --target=arm-linux make make install (3)配置安装gdbserver: cd gdb cd gdbserver ./configure --target
[单片机]
<font color='red'>arm</font>-linux gdb调试工具的安装
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved