基于68MC376的ISP实现方法
发布时间:2008/5/28 0:00:00 访问次数:495
关键词:单片机;isp
引言
目前,在汽车电子中有很多常用的单片机,如motorola 68mc376等,它们在硬件上并不直接支持isp,从而在应用中造成一定程度的不便。本文研究的目的即是在motorola 68mc376单片机上通过相关的硬件设计和软件设计实现isp,使其同样具有在系统编程的能力。
系统设计
总体设计和难点
让motorola 68mc376单片机具有isp能力,需要有专门的硬件支持以及上位机和下位机的软件支持。总体isp设计框图如图1所示。
由图1可知,本设计所使用的isp方法是从上位机读取编程字节,通过串口传输到下位机,并且通过下位机程序将编程字节写到下位机的可擦写存储器中。
这样一个设计存在两个难点。首先,由于硬件68mc376并不具备内部的rom,所以必须使用合适的flash存储器搭建存储器扩展电路,才能实现存放应用程序的目的,为isp提供基本的硬件基础。其次,由于isp的下位机应用程序均存在于唯一的flash中,即在读取自身程序的同时对自身进行擦写等操作,这显然是不可能的,必须使用其他的独特方法才能实现下位机的软件编程操作。
硬件设计
为了使68mc376具有isp能力,首先需要围绕该芯片设计flash rom扩展电路硬件和串口的收发电路。
图2中包括两部分电路的设计,即flash扩展电路的设计和串口设计。
flash扩展电路主要包括地址总线(address)、数据总线(dada bus)以及读写和片选信号的连接。由于68mc376外部数据总线为16位,故选择两片am29f040作为外部扩展flash。该flash芯片单片容量为4mbit,所以扩展的只读存储器共计1mbyte。
由于使用68mc376的csboot连接了两片flash的片选端,所以图2所连接的flash rom可以实现硬件自启动功能。为实现此功能,需要对其物理地址进行配置。在本设计中,flash的地址被配置在0x80000的位置。
图2中的串口电路为使用了光电隔离措施的串口驱动电路。由于该电路可能工作在电磁兼容环境比较恶劣的场合,所以使用6n137设计光隔电路,以免外界干扰对单片机产生影响。
软件设计
软件设计主要包括上位机软件设计和下位机软件设计,二者需要遵循同样的协议,相互配合工作。
图3描述了在系统编程时上位机和下位机的配合流程。通常在下位应用程序中,该部分在系统编程的代码处于休眠状态,当串口接收到编程请求时,该部分代码才被激活并产生相应的效果。该流程中设计了一个编程开锁的握手过程,这是为了防止误操作,从而保证下位机在系统编程的代码不会被意外的激活。
下位机软件
图3中下位机编程初始化部分主要完成flash读写允许、信号串口波特率的重新定义、ram配置以及isp代码拷贝等任务。为了提高isp速度,通常将串口波特率设为57600bit/s。ram使用单片机内部的tpuram,并将其配置在从0x10000开始的地址上。
图3下位机流程中被框起的是一个特殊的部分。通常下位机的应用程序都是在rom里执行的。但是由于在isp过程中,系统不可能一边从flash rom读取指令,一边对flash rom进行擦写操作,所以这里采用了特殊的子函数映射的方法完成这一功能,即在源代码设计中,所有的isp子函数均是通过计算相对地址得到运行的(见图4)。
系统从flash rom启动后,位于地址0x81000处有一段代码具有isp的串口读数功能,则在实际执行时先要将这段代码拷贝到地址0x10000,然后跳转至映射的地址并执行相应的指令。下面一段源代码为串口接收(sci_receive)的源程序例。
move.l #flashbaseaddr,d0;
file://得到isp代码在flash中的基地址
move.l #sci_receive,a0;
file://得到sci_receive子函数的实际地址
sub.l d0,a0;
file://二者相减得到基地址偏移量
add.l rambaseaddr,a0;
file://加上ram基地址,得到ram中//sci_receive的映射地址
jsr (a0);
file://跳往映射地址处执行
上位机解码工作
上位机软件设计中,比较重要的一部分是sx文件的解码工作。
sx文件一般以s0行标志文件代码部分开始,s9行表示文件代码部分结束。中间部分一般以s1、s2或者s3开头,表示不同的寻址范围。
以s20c08000000002000000 852145d为例,该部分代码为24位寻址(即地址为3个字节)。具体地址为0x0c0800,后面除了最后一个字节以外均为实际二进制代码的字符表达形式,最后一个字节5d为该行的校验码。
该代码需要通过重新编码后方可被单片机直接使用。考虑到单片机的运算速度远不如上位机pc,所以这部分工作由上位机完成。上位机每个编程循环读取一行sx格式的代码,获取地址并且完成解码后,通过串口发送给下位机。下位机从串口获取该地址和该行编码后,直接调用isp中的flash烧写程序对flash进行编程。
实际结果
在实际工作中使用matlab/gui编写了上位机解码和发送程序,配合下位机的isp软件工作,各方面表现均正常。尝试下载76k的sx格式的下位机软件时,用时大约为1分钟。
结语
关键词:单片机;isp
引言
目前,在汽车电子中有很多常用的单片机,如motorola 68mc376等,它们在硬件上并不直接支持isp,从而在应用中造成一定程度的不便。本文研究的目的即是在motorola 68mc376单片机上通过相关的硬件设计和软件设计实现isp,使其同样具有在系统编程的能力。
系统设计
总体设计和难点
让motorola 68mc376单片机具有isp能力,需要有专门的硬件支持以及上位机和下位机的软件支持。总体isp设计框图如图1所示。
由图1可知,本设计所使用的isp方法是从上位机读取编程字节,通过串口传输到下位机,并且通过下位机程序将编程字节写到下位机的可擦写存储器中。
这样一个设计存在两个难点。首先,由于硬件68mc376并不具备内部的rom,所以必须使用合适的flash存储器搭建存储器扩展电路,才能实现存放应用程序的目的,为isp提供基本的硬件基础。其次,由于isp的下位机应用程序均存在于唯一的flash中,即在读取自身程序的同时对自身进行擦写等操作,这显然是不可能的,必须使用其他的独特方法才能实现下位机的软件编程操作。
硬件设计
为了使68mc376具有isp能力,首先需要围绕该芯片设计flash rom扩展电路硬件和串口的收发电路。
图2中包括两部分电路的设计,即flash扩展电路的设计和串口设计。
flash扩展电路主要包括地址总线(address)、数据总线(dada bus)以及读写和片选信号的连接。由于68mc376外部数据总线为16位,故选择两片am29f040作为外部扩展flash。该flash芯片单片容量为4mbit,所以扩展的只读存储器共计1mbyte。
由于使用68mc376的csboot连接了两片flash的片选端,所以图2所连接的flash rom可以实现硬件自启动功能。为实现此功能,需要对其物理地址进行配置。在本设计中,flash的地址被配置在0x80000的位置。
图2中的串口电路为使用了光电隔离措施的串口驱动电路。由于该电路可能工作在电磁兼容环境比较恶劣的场合,所以使用6n137设计光隔电路,以免外界干扰对单片机产生影响。
软件设计
软件设计主要包括上位机软件设计和下位机软件设计,二者需要遵循同样的协议,相互配合工作。
图3描述了在系统编程时上位机和下位机的配合流程。通常在下位应用程序中,该部分在系统编程的代码处于休眠状态,当串口接收到编程请求时,该部分代码才被激活并产生相应的效果。该流程中设计了一个编程开锁的握手过程,这是为了防止误操作,从而保证下位机在系统编程的代码不会被意外的激活。
下位机软件
图3中下位机编程初始化部分主要完成flash读写允许、信号串口波特率的重新定义、ram配置以及isp代码拷贝等任务。为了提高isp速度,通常将串口波特率设为57600bit/s。ram使用单片机内部的tpuram,并将其配置在从0x10000开始的地址上。
图3下位机流程中被框起的是一个特殊的部分。通常下位机的应用程序都是在rom里执行的。但是由于在isp过程中,系统不可能一边从flash rom读取指令,一边对flash rom进行擦写操作,所以这里采用了特殊的子函数映射的方法完成这一功能,即在源代码设计中,所有的isp子函数均是通过计算相对地址得到运行的(见图4)。
系统从flash rom启动后,位于地址0x81000处有一段代码具有isp的串口读数功能,则在实际执行时先要将这段代码拷贝到地址0x10000,然后跳转至映射的地址并执行相应的指令。下面一段源代码为串口接收(sci_receive)的源程序例。
move.l #flashbaseaddr,d0;
file://得到isp代码在flash中的基地址
move.l #sci_receive,a0;
file://得到sci_receive子函数的实际地址
sub.l d0,a0;
file://二者相减得到基地址偏移量
add.l rambaseaddr,a0;
file://加上ram基地址,得到ram中//sci_receive的映射地址
jsr (a0);
file://跳往映射地址处执行
上位机解码工作
上位机软件设计中,比较重要的一部分是sx文件的解码工作。
sx文件一般以s0行标志文件代码部分开始,s9行表示文件代码部分结束。中间部分一般以s1、s2或者s3开头,表示不同的寻址范围。
以s20c08000000002000000 852145d为例,该部分代码为24位寻址(即地址为3个字节)。具体地址为0x0c0800,后面除了最后一个字节以外均为实际二进制代码的字符表达形式,最后一个字节5d为该行的校验码。
该代码需要通过重新编码后方可被单片机直接使用。考虑到单片机的运算速度远不如上位机pc,所以这部分工作由上位机完成。上位机每个编程循环读取一行sx格式的代码,获取地址并且完成解码后,通过串口发送给下位机。下位机从串口获取该地址和该行编码后,直接调用isp中的flash烧写程序对flash进行编程。
实际结果
在实际工作中使用matlab/gui编写了上位机解码和发送程序,配合下位机的isp软件工作,各方面表现均正常。尝试下载76k的sx格式的下位机软件时,用时大约为1分钟。
结语
上一篇:低EMI、D类音频放大器及其应用
上一篇:Agere 高影音质手机芯片方案
热门点击
- 安森美半导体公司推出的电源管理芯片NCP10
- 芯片封装工艺流程图
- 芯片测试
- 铅酸蓄电池容量恢复器
- 创惟新型USB摄像头控制芯片耗电不到90mA
- CSR无线蓝牙芯片量产 提供顶级音效质量
- Zensys的Z-Wave芯片ZW0301集
- Silicon Labs发表完全集成式AM/
- Maxim推出低功耗、单链路、10/22位串
- 汽车发动机超温报警器
推荐技术资料
- 单片机版光立方的制作
- N视频: http://v.youku.comN_sh... [详细]
深圳服务热线:13751165337 13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)

深圳市碧威特网络技术有限公司
付款方式