位置:51电子网 » 技术资料 » D S P

多核DSP的BootLoader程序的实现

发布时间:2008/5/27 0:00:00 访问次数:548

dsp芯片的bootloader程序用于实现用户程序上电自举,它有多种工作方式。上电自举就是将用户存放在片外的非易失性、慢速的存储器中的程序装载到片内易失的、高速的存储空间中,以保证用户程序在dsp核内的高速运行。

多核dsp是指由多个独立的dsp子核集成的dsp芯片,且所有dsp子核共享一套片外总线。由于每个dsp子核内部都有其自身独立的掩模bootloader程序,当dsp芯片上电或复位时所有dsp子核都将自行启动自身独立的bootloader程序,实现用户程序的上电自举。所以,多核dsp的bootloader程序的实现方法与单核dsp的bootloader程序的实现方法有较大的差异。为此,本文立足于实践,以双核dsp- tms320vc5421的16位并行eprom的bootloader程序的工作方式为例,详细阐述了多核dsp的bootloader程序的实现方法。

1 bootloader程序简介

1.1 bootloader程序的四种工作方式

一般的dsp都采用常见的bootloader程序工作方式来实现用户程序的上电自举:

  • 处理器通信口(主端口)hpi方式--通过dsp芯片与pc机或dsp芯片与其它dsp芯片之间的主机通信端口实现上电自举;

  • 8位或16位并行eprom方式--通过dsp内核的dma通道实现上电自举;

  • 8位或16位并行i/o方式--通过dsp芯片的片外并行i/o接口实现上电自举;

  • 8位或16位串行口方式--通过dsp芯片的串行端口实现上电自举。

    在以上四种工作方式中,最常用的是16位并行eprom方式。即在dsp芯片上电或复位时,通过dma通道将存储在核外eprom中的程序以16位形式存储到核内的程序空间中。

    1.2 16位并行eprom方式的boot表

    各种方式的bootloader程序都有其固定格式的boot表,用来实现用户程序的上电自举。16位并行eprom方式的boot表如表1所示。表中的第1表项存放bootloader程序工作方式控制字,用于dsp芯片上电或复位时确认该boot表是否为16位并行eprom工作方式的boot表。该表项内容为10aah,表示dsp内核认为该boot表是16位并行eprom工作方式的bootloader程序的boot表;否则dsp内核认为该boot表不是16位并行eprom的方式的boot表;第2表项存放dsp特殊寄存器swwsr在上电或复位时被赋予的初始化数值;第3表项存放dsp特殊寄存器bscr在上电或复位时被赋予的初始化数值;第4表项存放用户程序将要被存放在dsp核内程序空间的页地址;第5表项存放用户程序将要被存放到dsp核内程序空间的页内偏移地址;从第6表项开始依次存放用户程序第m段代码的长度n。用户程序第m段代码将要被存放到dsp核内程序空间的页地址,用户程序第m段代码将要被存放到dsp核内程序空间的页内偏移地址,用户程序第m段代码的第1个字,第2个字,……,第n个字;boot表的最后表项存放boot表结束字0000h,表示boot表到此结束。因此dsp内核要实现bootloader程序,在上电复位后首先要申请到片外数据、地址总线的控制权,然后再根据boot表完成用户程序上电自举过程。

    1.3 16位并行eprom工作方式boot表的生成

    所有bootloader程序所需的boot表的数据结构都是通过执行包含-v548参数的链接命令和hex500转换命令的程序形成的。在链接过程中确定用户程序和数据的存放地址,在hex500转换过程中定义bootloader程序的工作方式和用户程序执行的入口地址等。

    为了生成16位并行eprom方式的boot表首先,在链接程序时必须设置-v548选项;然后使用ti公司dsp开发工具自带的hex500.exe文件,根据用户的coff格式的代码生成boot表中的相应内容。

    hex500.exe可执行文件一般使用以下几种参数

    (1)*.out :用户的coff格式的程序;

    (2)-e :确定用户程序的入口点;

    (3)-a :以ascii形式,根据用户的.out文件输出对应的hex文件;

    (4) -boot实现用户程序的装载;

    (5) -bootorg :确定生成哪种形式的boot表;

    (6) -memwidth:确定引导方式的位数;

    (7) -o *.hex:输出的hex文件的名称。

    例如:

    hex500 ti.out /根据ti.out文件生成boot表/

    -e 0x4000 /用户程序的入口点为0x4000/
    -a /以ascii形式输出hex文件/
    -boot / 装载用户的程序ti.out/

    -bootorg parallel

    /生成并行eprom方式的boot表/
    -memwidth 16 /生成16位的boot表/

    -o ti.

    dsp芯片的bootloader程序用于实现用户程序上电自举,它有多种工作方式。上电自举就是将用户存放在片外的非易失性、慢速的存储器中的程序装载到片内易失的、高速的存储空间中,以保证用户程序在dsp核内的高速运行。

    多核dsp是指由多个独立的dsp子核集成的dsp芯片,且所有dsp子核共享一套片外总线。由于每个dsp子核内部都有其自身独立的掩模bootloader程序,当dsp芯片上电或复位时所有dsp子核都将自行启动自身独立的bootloader程序,实现用户程序的上电自举。所以,多核dsp的bootloader程序的实现方法与单核dsp的bootloader程序的实现方法有较大的差异。为此,本文立足于实践,以双核dsp- tms320vc5421的16位并行eprom的bootloader程序的工作方式为例,详细阐述了多核dsp的bootloader程序的实现方法。

    1 bootloader程序简介

    1.1 bootloader程序的四种工作方式

    一般的dsp都采用常见的bootloader程序工作方式来实现用户程序的上电自举:

  • 处理器通信口(主端口)hpi方式--通过dsp芯片与pc机或dsp芯片与其它dsp芯片之间的主机通信端口实现上电自举;

  • 8位或16位并行eprom方式--通过dsp内核的dma通道实现上电自举;

  • 8位或16位并行i/o方式--通过dsp芯片的片外并行i/o接口实现上电自举;

  • 8位或16位串行口方式--通过dsp芯片的串行端口实现上电自举。

    在以上四种工作方式中,最常用的是16位并行eprom方式。即在dsp芯片上电或复位时,通过dma通道将存储在核外eprom中的程序以16位形式存储到核内的程序空间中。

    1.2 16位并行eprom方式的boot表

    各种方式的bootloader程序都有其固定格式的boot表,用来实现用户程序的上电自举。16位并行eprom方式的boot表如表1所示。表中的第1表项存放bootloader程序工作方式控制字,用于dsp芯片上电或复位时确认该boot表是否为16位并行eprom工作方式的boot表。该表项内容为10aah,表示dsp内核认为该boot表是16位并行eprom工作方式的bootloader程序的boot表;否则dsp内核认为该boot表不是16位并行eprom的方式的boot表;第2表项存放dsp特殊寄存器swwsr在上电或复位时被赋予的初始化数值;第3表项存放dsp特殊寄存器bscr在上电或复位时被赋予的初始化数值;第4表项存放用户程序将要被存放在dsp核内程序空间的页地址;第5表项存放用户程序将要被存放到dsp核内程序空间的页内偏移地址;从第6表项开始依次存放用户程序第m段代码的长度n。用户程序第m段代码将要被存放到dsp核内程序空间的页地址,用户程序第m段代码将要被存放到dsp核内程序空间的页内偏移地址,用户程序第m段代码的第1个字,第2个字,……,第n个字;boot表的最后表项存放boot表结束字0000h,表示boot表到此结束。因此dsp内核要实现bootloader程序,在上电复位后首先要申请到片外数据、地址总线的控制权,然后再根据boot表完成用户程序上电自举过程。

    1.3 16位并行eprom工作方式boot表的生成

    所有bootloader程序所需的boot表的数据结构都是通过执行包含-v548参数的链接命令和hex500转换命令的程序形成的。在链接过程中确定用户程序和数据的存放地址,在hex500转换过程中定义bootloader程序的工作方式和用户程序执行的入口地址等。

    为了生成16位并行eprom方式的boot表首先,在链接程序时必须设置-v548选项;然后使用ti公司dsp开发工具自带的hex500.exe文件,根据用户的coff格式的代码生成boot表中的相应内容。

    hex500.exe可执行文件一般使用以下几种参数

    (1)*.out :用户的coff格式的程序;

    (2)-e :确定用户程序的入口点;

    (3)-a :以ascii形式,根据用户的.out文件输出对应的hex文件;

    (4) -boot实现用户程序的装载;

    (5) -bootorg :确定生成哪种形式的boot表;

    (6) -memwidth:确定引导方式的位数;

    (7) -o *.hex:输出的hex文件的名称。

    例如:

    hex500 ti.out /根据ti.out文件生成boot表/

    -e 0x4000 /用户程序的入口点为0x4000/
    -a /以ascii形式输出hex文件/
    -boot / 装载用户的程序ti.out/

    -bootorg parallel

    /生成并行eprom方式的boot表/
    -memwidth 16 /生成16位的boot表/

    -o ti.

    相关IC型号
    版权所有:51dzw.COM
    深圳服务热线:13751165337  13692101218
    粤ICP备09112631号-6(miitbeian.gov.cn)
    公网安备44030402000607
    深圳市碧威特网络技术有限公司
    付款方式


     复制成功!