位置:51电子网 » 技术资料 » 测试测量

SH-3系列单片机的程序设计关键技术

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

        

    

    

    来源:电子技术应用 作者:余晓建 沈永林 郭超

    

    摘要:设计基于sh-3系列单片机程序时的若干关键技术,包括中断处理程序和c程序中变量,并给出关键部分的汇编和c语言程序。介绍的所有方法都在实际系统中得到验证。

    

    关键词:sh3程序设计中断处理sh7709s

    

    sh一3是renesas公司supezh系列的高端32位risc构架单片机系列,具有低功耗、高性能、集成mmu、cache和电源管理模块等特点,处理速度为60~260mips。sh-3包括sh7705、sh7708、sh7709、sh7727、sh7729等单片机,广泛应用于彩色打印机、扫描仪、dvd***等高端数码设备上。sh7709s是sh-3系列中有代表性的一款单片机,文中介绍方法均在sh7709s的系统中得

    到验证。

    主要介绍程序设计时三个关键部分:建立中断处理程序结构、初始化c程序中赋初始值的变量和上电初始化流程。

    

    1 建立中断处理程序结构

    sh-3的中断处理方式与一般处理器不同,没有固定的中断向量表,比较灵括,用户可以在存储器中建立上述仅是对p09702的基本应用。通过该文介绍的方法,并结合ssdl303的指令集,读者将能够对p09702应用自如。一个处理异常事件(exeeplaon events)的程序结构,作为中断向量表。

    sh一3把异常分为三类:复位(reset)、普通异常事件(general excephon events)和中断请求(general intemapt requests),复位包括上电、手动和h—udi复位,异常事件主要包括非法指令、地址错误等,中断请求主要包括模块中断、外部中断等。每种中断都包含若干中断源,每种中断源对应intevt和imevt2寄存器中不同的异常码。发生复位时,程序会跳到地址ao000000h执行,发生异常事件和中断请求时,程序会跳转到由向量基址寄存器vbr加不同偏移量决定的地址。不同的异常事件和中断请求对应不同的偏移量。异常事件对应的偏移量是100h,其中因tlb寄存器产生的两种异常对应的偏移量是400h,所有中断请求对应的偏移量都是600h。初始化时,要把对应的中断处理程序放到相应的地址.如图l所示。重置引导程序段(starl段)应放在地址a00000000h的内存,当vbr=a0000000h时,异常事件处理程序段(geentry段)放在vbr+100h=a0000100h处,tlb异常处理程序段(tlbentry段)放在vbr+400h=a0000400h处,中断请求处理程序段(intentry)放在vbr+600h=a0000600h处。系统给这几个程序段分布的空间比较小,最大不超过1kb,其主要功能是保存cpu寄存器,然后跳转到异常码判断程序,由判断程序找出中断源,并执行相应的处理程序。

    

    

    geentry、tlbentry与intentry的处理过程类似。下面以tlb异常为例来说明这一处理过程。当发生tlb异常时,程序跳转到vbr+400h地址。进入tlbentry,首先把所有cpu寄存器保存到堆栈中(r15是堆栈指针),保存完毕后,跳转到异常码判断程序tlbhandler,由tlbhandlei判定中断源,并执行相应的处理程序。

    ·section tlbentry,code,align=4

    

    ·export_ tlbentry

    

    

    

    下面是用c编写的tlbhandler程序,该程序位于p段,与tlbentry段所在的数据段不同(图1)。tlbhandler根据intc.expevt(定义在7709s.h)的值判断是哪种_tlb异常,并跳转到相应的处理程序中执行。

    

    

    

    2 初始化c程序中赋有初始值的变量

    

    编译器把编译后的c程序主要分为(见图1):代码段(p)、常量段(c)、初始化数据段(d)、末初始化变量段(b)、d段对应在ram中的数据段(r)和堆栈段(s)。其中p、c和d段在rom中,b、r和s段在ram中。d段中保存的是在定义时已经初始化变量的初值,例如按如下定义的变量a。

    int i=l:

    编译器实际上为初始化的变量分配了两块空间,在rom中的d段和在ram中的r段,d段保存的是变量的

        

    

    

    来源:电子技术应用 作者:余晓建 沈永林 郭超

    

    摘要:设计基于sh-3系列单片机程序时的若干关键技术,包括中断处理程序和c程序中变量,并给出关键部分的汇编和c语言程序。介绍的所有方法都在实际系统中得到验证。

    

    关键词:sh3程序设计中断处理sh7709s

    

    sh一3是renesas公司supezh系列的高端32位risc构架单片机系列,具有低功耗、高性能、集成mmu、cache和电源管理模块等特点,处理速度为60~260mips。sh-3包括sh7705、sh7708、sh7709、sh7727、sh7729等单片机,广泛应用于彩色打印机、扫描仪、dvd***等高端数码设备上。sh7709s是sh-3系列中有代表性的一款单片机,文中介绍方法均在sh7709s的系统中得

    到验证。

    主要介绍程序设计时三个关键部分:建立中断处理程序结构、初始化c程序中赋初始值的变量和上电初始化流程。

    

    1 建立中断处理程序结构

    sh-3的中断处理方式与一般处理器不同,没有固定的中断向量表,比较灵括,用户可以在存储器中建立上述仅是对p09702的基本应用。通过该文介绍的方法,并结合ssdl303的指令集,读者将能够对p09702应用自如。一个处理异常事件(exeeplaon events)的程序结构,作为中断向量表。

    sh一3把异常分为三类:复位(reset)、普通异常事件(general excephon events)和中断请求(general intemapt requests),复位包括上电、手动和h—udi复位,异常事件主要包括非法指令、地址错误等,中断请求主要包括模块中断、外部中断等。每种中断都包含若干中断源,每种中断源对应intevt和imevt2寄存器中不同的异常码。发生复位时,程序会跳到地址ao000000h执行,发生异常事件和中断请求时,程序会跳转到由向量基址寄存器vbr加不同偏移量决定的地址。不同的异常事件和中断请求对应不同的偏移量。异常事件对应的偏移量是100h,其中因tlb寄存器产生的两种异常对应的偏移量是400h,所有中断请求对应的偏移量都是600h。初始化时,要把对应的中断处理程序放到相应的地址.如图l所示。重置引导程序段(starl段)应放在地址a00000000h的内存,当vbr=a0000000h时,异常事件处理程序段(geentry段)放在vbr+100h=a0000100h处,tlb异常处理程序段(tlbentry段)放在vbr+400h=a0000400h处,中断请求处理程序段(intentry)放在vbr+600h=a0000600h处。系统给这几个程序段分布的空间比较小,最大不超过1kb,其主要功能是保存cpu寄存器,然后跳转到异常码判断程序,由判断程序找出中断源,并执行相应的处理程序。

    

    

    geentry、tlbentry与intentry的处理过程类似。下面以tlb异常为例来说明这一处理过程。当发生tlb异常时,程序跳转到vbr+400h地址。进入tlbentry,首先把所有cpu寄存器保存到堆栈中(r15是堆栈指针),保存完毕后,跳转到异常码判断程序tlbhandler,由tlbhandlei判定中断源,并执行相应的处理程序。

    ·section tlbentry,code,align=4

    

    ·export_ tlbentry

    

    

    

    下面是用c编写的tlbhandler程序,该程序位于p段,与tlbentry段所在的数据段不同(图1)。tlbhandler根据intc.expevt(定义在7709s.h)的值判断是哪种_tlb异常,并跳转到相应的处理程序中执行。

    

    

    

    2 初始化c程序中赋有初始值的变量

    

    编译器把编译后的c程序主要分为(见图1):代码段(p)、常量段(c)、初始化数据段(d)、末初始化变量段(b)、d段对应在ram中的数据段(r)和堆栈段(s)。其中p、c和d段在rom中,b、r和s段在ram中。d段中保存的是在定义时已经初始化变量的初值,例如按如下定义的变量a。

    int i=l:

    编译器实际上为初始化的变量分配了两块空间,在rom中的d段和在ram中的r段,d段保存的是变量的

相关IC型号

热门点击

 

推荐技术资料

音频变压器DIY
    笔者在本刊今年第六期上着重介绍了“四夹三”音频变压器的... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!