首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
基于CPLD译码的DSP二次Bootloader方法
来源:本站整理  作者:佚名  2009-08-31 10:24:11




  FPR寄存器定义如表2所示。


  FPR寄存器的第5~0位分别控制Flash的高位地址线A18~A13,第7~6位无效。当DSP 上电复位时,FPR寄存器的值被设置为全0,此时Flash的所有高位地址线均处于低电平状态,DSP开始访问Flash的最低8KB地址单元。复位结束,就可以对FPR寄存器写入值,改变Flash的高位地址,从而实现Flash的分页访问。这样Am29LV800 Flash的512K字存储空间相当于被划分为64页(0~63),每页8K字,当程序大于一页时,修改FPR,进行软件翻页,读入下一页Flash数据。也可以通过读FPR寄存器,了解当前高位地址线的状态,此时FPR寄存器与Flash的地址映射关系为:
  Flash地址单元=(FPR<<13)+DSP地址线A[13:1]
2.3 二次Bootloader的实现
  基于上述的设计和分析,要实现大程序的自动引导,可以采用二次Bootloader的方法。首先要设计一个uboot程序,大小不能超过一页。将 uboot程序烧写到Flash存储器的第0页,也就是DSP上电复位后被固化的Bootloader自行引导的那一页。uboot的主要功能是通过修改 FPR寄存器值,并按照引导表的格式读取Flash存储器的其他页程序到RAM中,最后跳转到用户程序的32位入口地址开始执行。uboot程序中,可以定义一个16位无符号整型指针变量,指向CE2空间的0x401000地址,即:
  unsigned int*FPR=(unsigned int*) 0x401000;
  若*FPR=1,即可以访问Flash的第1页。
    在编写uboot程序和用户程序时,要对存储器空间重新分配,即在定义CMD文件时,要注意用户程序所占用的存储空间不能与uboot程序占用的存储空间重叠。因为uboot首先被加载运行,在运行时加载用户程序,也需要占用RAM地址空间。而且uboot程序代码长度不能超过一页。当烧写Flash时,必须将uboot程序烧写到Flash的第0页,然后将用户程序烧写到第一页或以后的存储空间中。
3 实验结果
    以煤矿井下煤矸分界传感器为例,测试本文介绍的基于CPLD译码的DSP二次Bootloader方法。该传感器采集放煤时煤矸石振动信号,经AD转换后送入DSP经数字信号处理,分析得出煤矸石放落比例[8]。用户程序代码大小为23K字左右,显然不能够被固化的Bootloader正常加载,因此必须经过二次Bootloader。
  将大小约2K字的uboot程序烧写到Flash第0页,用户烧写到第1~3页。经多次测试,该系统从上电复位到开始运行用户程序,耗时大约0.3s,而且系统运行稳定可靠。
  本文介绍的基于CPLD快速译码的DSP二次Bootloader方法,利用CPLD器件的快速译码功能,模拟了一个换页寄存器,实现了大程序的上电后二次引导。与常见的利用GPIO换页的方法相比,本方法更有效,通用性更好,不会占用宝贵的GPIO资源,而且系统扩展方便,接口简单。

上一页  [1] [2] [3]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:220,250.00000 毫秒