您现在的位置:首页 > 技术资料 | ![]() |
外挂Flash的引导装载设计 艾礼科 1 Bootloader分析
FLASH的16位数 据线DO-D15直接接DSP的16位数据总线D0-D15。
FLASH的写信号WE直接接高电平(因为对FLASH的编程采用编程器烧录)。 FLASH的片选信号CE直接接低电平或者接DSP的DS引脚。 FLASH的读信号OE接DSP的存储器读信号MSTRB。 DSP的MP/MC引脚接低电平。 DSP的INTl-INT3引脚通过上拉电阻接高电平。 3 代码设计和数据转换 硬件设计完成后,可以编写一段代码进行测试。 在TI的DSP开发环境CCS中建立一个工程项目TEST pjt,包括三个文件:TEST_main.c、TEST_vector.asm和load.cmd。 需要说明的是,虽然DSP和FLASH都是16位的,但是一般的编程器都是按8位从.hex文件中读取数据.每读一个字节,地址就会增加1,因此连接命令文件中必须将memwidth和romwidth的值设置为8,否则编程器读取hex文件时会出现错误,这通常是导致引导过程失败的主要原因。 连接命令编写完毕后,将TEST.out文件、连接命令文件load.cmd以及hex500.exe文件拷贝到同一目录下,在WINDOWS系统命令提示下进入该目录,执行命令行: hex500 I0ad.cmd 即可生成TEST.hex文件,同时还生成mxp文件TEST.mxp,供查看详情。 TEST.hex文件生成后,运行编程器烧录软件(本设计用的是西尔特的suPERPRO 6 8 0),选择器件为 AT29LVl024。打开TEST.hex文件,此时会发现AT29LVl024的地址范围是0 0 0 0 0H-1FFFFH共128K,而不是0000H-FFFFH,这就是为什么需要将存储器数据宽度设定为8以及将程序烧录起始地址bootorg设置为0xl8000的原因。0x18000除以2为0x0C000,也即,燃录地址Oxl8OOO在系统中的地址为OxOC000,位于8000H~FFFFH的外部存储器映射范围内。 另外,还发现编程器软件打开的TEST.hex文件中,最后两字节并不是引导表的首地址(这大概是HEX500有什么bug的缘故吧),因此需将1FFFEH的内容改为COH,将1FFFFH的内容改为00H,C000H是本例中引导表在实际DSP系统中的首地址。将18000H的内容从08H改为10H,此处为08H是因为连接命令文件中的数据宽度设置为8位,而系统中DSP和FLASH的实际数据宽度都为16位,引导过程应该采用16位引导装载。因此需要将08H改为10H。修改完成后,还需将整个文件的高低字节进行交换,因为编程器打开的.hex文件高字节在前,低字节在后,而16位FLASH的编程是低字节在前高字节在后。经过如此修改和调整后,即可对FLASH器件进行编程了。 将编程后的FLASH装到系统中,用示波器查看DSP的引脚XF,如果有方波出现,则说明引导装载已经成功,程序代码已被调入到内部RAM中运行。 结语 本文所叙述的引导方法在四通道数据采集系统中得到了有效的验证,并且整个过程操作起来非常方便快捷。 来源:中电网
|