外挂Flash的引导装载设计
发布时间:2008/5/26 0:00:00 访问次数:786
    
    
    来源:中电网 作者:艾礼科
    
    1 bootloader分析
    
    ti公司的dsp芯片出厂时,在片内rom中固化有引导装载程序bootloader,其主要功能就是将外部的程序装载到片内ram中运行,以提高系统的运行速度。
    
    tms320vc5409是ti公司的一款定点dsp芯片,其指令周期可达10ns,片内有32k×16位的ram,性价比极高,被广泛应用在嵌入式系统、数据采集系统中。tms320vc5409的bootloacler程序位于片内rom的0f800h~0fbffh空间。系统上电时,dsp将检查外部引脚mp/mc的状态,如果该引脚为高电平,则dsp按微处理器模式启动;如果该引脚为低电平,则dsp按微计算机模式启动。此时,系统从0ff80h地址处开始执行程序,0ff80h是bootloader的中断矢量。因此,如果系统上电时mp/mc的状态为低电平,dsp将从ff80h处跳转到f800h开始执行ti的bootloader自动装载程序。
    
    进入bootloader程序后,首先检查dsp引脚int2的状态,如果为低电平,则进入hpi引导装载模式,如果int2为高电平则接下来检查int3引脚。如果int3引脚为低电平,则进入串行eeprom引导装载模式,如果int3为高电平则进入并行引导装载模式。当并行引导装载模式失败后,系统会自动进入串行口引导装载模式.串行口引导装载失败后,系统又将进入i/o口引导装载模式。
    
    当进入并行引导装载模式后,dsl 首先读取地址为0ffffh的i/o空间单元,并将该单元的值作为引导表的首地址.在数据地址空间中读取引导表的第一个字,如果该字的值为10aah,则进入16位引导模式,如果低字节为08h,则再进一步读取下一个值,如果该值的低字节为aah,则进人8位引导模式。如果从i/o地址空间中读取的引导表首地址所对应的引导表中得不到正确的引导信息,那么dsp将会从数据空间的0ffffh地址再去读一个字作为引导表首地址,进而再从引导表首地址读取一个字。如果该字为loaah,则立即进入l6位引导模式,否则,将按8位方式处理:从0ffffh读取一字节作为引导表首地址的低字节,从0fffeh读取一字节作为引导首地址的高字节,再从引导表首地址读取一个值,如果低字节为08h,则再读引导表的下一个值,如果为aah,则说明外部存储器是8位宽度,进入8位引导装载模式;如果以上步骤不能获取正确的引导信息,那么dsp将进人串行口引导装载模式。
    
    如果并行引导装载成功,dsp将从装载后新的程序开始地址执行程序。详细的并行引导流程图如图1所示。
    
    
    
    2 硬件设计
    
    在本系统中,flash选用的是atmel公司的at29lvl024,at29lvl024容量为64k×16位,可以满足一般的应用要求,并且其工作电压为3v~3.6v,可以直接与tms320vc5409接口而不必再使用电压接口芯片进行转接,使硬件电路更为简单。
    
    从tms320vc5409的存储器空间映射得知,在mp/m c=0 时,外部存储器空间映射的地址范围为8000h-ffffh共32k,因此flash中的程序部分必须位于8000h~ffffh的地址范围,才能成功引导。笔者的程序量小于32k×16位,因此可以将flash的地址线a0-a15直接与dsp的地址线ao~al5相连,然后将程序烧录到flash的32k之后的位置,这样程序刚好位于dsp的8000h~ffffh范围。如果程序量大于32k字,则可将flash的前32k地址编码在dsp的8000h~ffffh范围.采用分页的方式,逐步装载需要运行的程序。 本文中,采用从data空间引导,具体的电路连接如图2所示。
    
    
    
    flash的地址线ao-a15直接与dsp的低16根地址线a0-a15相连。
    
    flash的16位数
    
    据线do-d15直接接dsp的16位数据总线d0-d15。
    
    flash的写信号we直接接高电平(因为对flash的编程采用编程器烧录)。
    
    flash的片选信号ce直接接低电平或者接dsp的ds引脚。 flash的读
    
    
    来源:中电网 作者:艾礼科
    
    1 bootloader分析
    
    ti公司的dsp芯片出厂时,在片内rom中固化有引导装载程序bootloader,其主要功能就是将外部的程序装载到片内ram中运行,以提高系统的运行速度。
    
    tms320vc5409是ti公司的一款定点dsp芯片,其指令周期可达10ns,片内有32k×16位的ram,性价比极高,被广泛应用在嵌入式系统、数据采集系统中。tms320vc5409的bootloacler程序位于片内rom的0f800h~0fbffh空间。系统上电时,dsp将检查外部引脚mp/mc的状态,如果该引脚为高电平,则dsp按微处理器模式启动;如果该引脚为低电平,则dsp按微计算机模式启动。此时,系统从0ff80h地址处开始执行程序,0ff80h是bootloader的中断矢量。因此,如果系统上电时mp/mc的状态为低电平,dsp将从ff80h处跳转到f800h开始执行ti的bootloader自动装载程序。
    
    进入bootloader程序后,首先检查dsp引脚int2的状态,如果为低电平,则进入hpi引导装载模式,如果int2为高电平则接下来检查int3引脚。如果int3引脚为低电平,则进入串行eeprom引导装载模式,如果int3为高电平则进入并行引导装载模式。当并行引导装载模式失败后,系统会自动进入串行口引导装载模式.串行口引导装载失败后,系统又将进入i/o口引导装载模式。
    
    当进入并行引导装载模式后,dsl 首先读取地址为0ffffh的i/o空间单元,并将该单元的值作为引导表的首地址.在数据地址空间中读取引导表的第一个字,如果该字的值为10aah,则进入16位引导模式,如果低字节为08h,则再进一步读取下一个值,如果该值的低字节为aah,则进人8位引导模式。如果从i/o地址空间中读取的引导表首地址所对应的引导表中得不到正确的引导信息,那么dsp将会从数据空间的0ffffh地址再去读一个字作为引导表首地址,进而再从引导表首地址读取一个字。如果该字为loaah,则立即进入l6位引导模式,否则,将按8位方式处理:从0ffffh读取一字节作为引导表首地址的低字节,从0fffeh读取一字节作为引导首地址的高字节,再从引导表首地址读取一个值,如果低字节为08h,则再读引导表的下一个值,如果为aah,则说明外部存储器是8位宽度,进入8位引导装载模式;如果以上步骤不能获取正确的引导信息,那么dsp将进人串行口引导装载模式。
    
    如果并行引导装载成功,dsp将从装载后新的程序开始地址执行程序。详细的并行引导流程图如图1所示。
    
    
    
    2 硬件设计
    
    在本系统中,flash选用的是atmel公司的at29lvl024,at29lvl024容量为64k×16位,可以满足一般的应用要求,并且其工作电压为3v~3.6v,可以直接与tms320vc5409接口而不必再使用电压接口芯片进行转接,使硬件电路更为简单。
    
    从tms320vc5409的存储器空间映射得知,在mp/m c=0 时,外部存储器空间映射的地址范围为8000h-ffffh共32k,因此flash中的程序部分必须位于8000h~ffffh的地址范围,才能成功引导。笔者的程序量小于32k×16位,因此可以将flash的地址线a0-a15直接与dsp的地址线ao~al5相连,然后将程序烧录到flash的32k之后的位置,这样程序刚好位于dsp的8000h~ffffh范围。如果程序量大于32k字,则可将flash的前32k地址编码在dsp的8000h~ffffh范围.采用分页的方式,逐步装载需要运行的程序。 本文中,采用从data空间引导,具体的电路连接如图2所示。
    
    
    
    flash的地址线ao-a15直接与dsp的低16根地址线a0-a15相连。
    
    flash的16位数
    
    据线do-d15直接接dsp的16位数据总线d0-d15。
    
    flash的写信号we直接接高电平(因为对flash的编程采用编程器烧录)。
    
    flash的片选信号ce直接接低电平或者接dsp的ds引脚。 flash的读