CN113656047A - 一种用于8051架构mcu烧录及仿真的单线通信方法 - Google Patents
一种用于8051架构mcu烧录及仿真的单线通信方法 Download PDFInfo
- Publication number
- CN113656047A CN113656047A CN202110923547.9A CN202110923547A CN113656047A CN 113656047 A CN113656047 A CN 113656047A CN 202110923547 A CN202110923547 A CN 202110923547A CN 113656047 A CN113656047 A CN 113656047A
- Authority
- CN
- China
- Prior art keywords
- packet
- mcu
- data
- command
- mode
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
Abstract
一种用于8051架构MCU烧录及仿真的单线通信方法,MCU单线接口存在普通模式和调试模式,普通模式用于一般的数据交互,调试模式实现MCU的烧录和仿真;主机和从机通过一根数据线相连;MCU单线接口初始化时处于步骤S1普通模式下;普通模式每接收或发送一个包,会产生中断和相应的标志位,由MCU软件程序对MCU单线接口的发送和接受寄存器进行读写,进行数据处理;在步骤S1状态下,当上位机连续发送若干个进入命令包,则进入步骤S2进入判断;判断所接收到的进入命令包,是否符合规定的进入命令包,若进入命令包正确,MCU由进入步骤S3调试模式空闲状态,否则MCU单线接口回到步骤S1普通模式。本发明只需引出3根连接线,就能实现对MCU的烧录和仿真,极大减少硬件成本。
Description
技术领域
本发明涉及的是集成电路设计的技术领域,尤其涉及一种用于8051架构MCU(Microcontroller Unit,微控制单元)烧录及仿真的单线通信方法。
背景技术
目前通用的8051架构MCU(Microcontroller Unit,微控制单元)一般采用OTP(OneTime Password,一次性密码,又称动态密码或单次有效密码)、MTP(multi-pathtransmission,多路径传输)或Flash作为程序和数据的存储,需要通过调试接口对程序进行烧录或对软件进行调试仿真。但由于8051架构本身没有调试接口,所以需要额外设计调试接口电路。目前通用的调试接口采用的是JTAG接口,标准的JTAG接口包含五根信号线(TCK、TMS、TDI、TDO和TRST),再加上电源和地线,则产品PCB板上需要引出7根连接线,这极大的增加了硬件成本。
发明内容
本发明要解决的技术问题在于:克服现有技术中8051架构MCU的PCB板上连接线过多、硬件成本高的缺陷,提出一种用于8051架构MCU烧录及仿真的单线通信方法,只需要引出3根连接线,就能实现对MCU的烧录和仿真,极大的减少了所占用的硬件成本,极大地方便了MCU的仿真调试。
为了解决上述技术问题,本发明提出下列技术方案:一种用于8051架构MCU烧录及仿真的单线通信方法,其MCU单线接口存在普通模式,普通模式用于一般的数据交互,其MCU单线接口还存在调试模式,调试模式可以实现MCU的烧录和仿真;
主机和从机通过一根数据线相连,相连的IO端口工作在开漏输出和数字输入模式,数据线通过电阻上拉到电源;
主机和从机工作的时钟频率相同,以实现双方波特率的匹配;
每N个时钟表示一个比特位,比特“1”的格式为先发送M个时钟的低电平,再发送N-M个时钟的高电平;比特“0”的格式为先发送N-M个时钟的低电平,再发送M个时钟的高电平,N-M大于N/2;
接收数据时,在N个时钟内,对数据进行采样;当接收到的高电平大于或等于N/2个时钟时,判断为比特“1”;当接收到的低电平大于(或等于)N/2个时钟时,判断为比特“0”;
数据的发送和接收以包为单位,包的类型包含命令包、计数包、地址包、校验包和数据包;每种包的结构都一样,第一位为开始位“0”,然后是八位数据位b7~b0,最后是停止位“0”,每个包的数据为1字节;
调试模式下的读写数据流由一个命令包、一个计数包、一个高地址包、一个低地址包、N个数据包和一个校验包组成;
每个读写数据流一次所能接收或发送的数据最多为256字节;
校验包采用奇偶校验方式,对每一个数据包的b0位进行奇偶计数,得校验包的b0位;用同样的方法,得到校验包b7~b0位;
MCU单线接口初始化时处于步骤S1普通模式下;
普通模式每接收或发送一个包,会产生中断和相应的标志位,由MCU软件程序对MCU单线接口的发送和接受寄存器进行读写,以进行数据处理;
在步骤S1状态下,当上位机连续发送若干个进入命令包,则进入步骤S2进入判断;判断所接收到的进入命令包,是否符合规定的进入命令包,若进入命令包正确,则MCU由进入步骤S3调试模式空闲状态,否则MCU单线接口回到步骤S1普通模式;
MCU处于步骤S3调试模式空闲状态下,当上位机连续发送若干个退出命令包,则进入步骤S4退出判断;判断所接收到的退出命令包,是否符合规定的退出命令包,若退出命令包正确,则退出回到步骤S1普通模式,否则进入步骤S5命令解码;
在调试模式下,程序空间、数据空间、内部RAM、外部RAM、SFR寄存器、CPU寄存器和调试寄存器都有特定的读命令包和写命令包可对这些存储空间进行读写操作,其中程序空间和数据空间都位于OTP、MTP或Flash等存储中;
通过命令读写CPU寄存器和调试寄存器的状态,可更改8051CPU的程序寄存器PC,可通过调试寄存器暂停、启动或复位CPU,很方便的实现软件仿真功能;
当MCU单线接口处于步骤S5命令解码状态,MCU作为从机接收到读命令包,解码阶段会判断读命令包和相应操作的地址空间是否合法;解码成功后MCU单线接口会进入步骤S6调试模式读模式,MCU将高地址包和低地址包组成的地址作为起始地址并取出数据;然后进入步骤S7发送数据,MCU单线接口发送计数包规定的字节个数的数据包;数据发送结束,进入步骤S8发送校验包;读操作完成后,MCU单线接口重新进入步骤S3调试模式空闲状态;
当MCU单线接口处于步骤S5命令解码状态,MCU作为从机接收到写命令包、计数包、高地址包、低地址包、多个数据包和一个校验包,解码阶段会判断写命令包和相应操作的地址空间是否合法;解码成功后MCU单线接口会进入步骤S9调试模式写模式;当接收到数据包时,进入步骤S10接收数据,按照计数包规定的字节个数接收数据包;完成数据接收后,进入步骤S11校验判断,数据校验后的结果与校验包进行对比;如果校验结果正确,则进入步骤S13发送成功命令,发送成功命令包;然后进入步骤S14写入存储器,以高地址包和低地址包组成的地址作为起始地址,将数据写入相应的存储空间;如果步骤S11的校验结果错误,则进入步骤S12发送失败命令,发送失败命令包;从机则将数据丢弃,主机则可选择是否重新发送读写数据流;步骤S12或步骤S14完成后,MCU单线接口重新进入步骤S3调试模式空闲状态;
当MCU单线接口处于步骤S5命令解码状态,如果MCU读写数据流的发送或接收过程停止,并超过超时寄存器设定的时间,则进入步骤S15超时判断,MCU会丢弃未完成的读写数据流,并重新退回到步骤S3调试模式空闲状态。
上述技术方案的进一步限定在于,N为16,M为4。
上述技术方案的进一步限定在于,主机和从机工作的时钟频率都为8MHz。
与现有技术相比,本发明具有下列有益效果:本发明所提出的单线通信方法,只需要一根信号线就能实现半双工通信,加上电源和地线,一共只需要引出3根连接线,就能实现对MCU的烧录和仿真,极大的减少了所占用的硬件成本。并且针对8051架构,采用不同的命令访问不同的存储部分,极大的方便了MCU的仿真调试。
附图说明
图1是本发明单线通信的比特格式的图。
图2是本发明单线通信的包结构的图。
图3该单线通信的读写数据流的图。
图4本发明单线通信的调试流程图。
具体实施方式
本发明MCU单线接口存在普通模式和调试模式,普通模式用于一般的数据交互,而调试模式可以实现MCU的烧录和仿真。
普通模式每接收或发送一个包,会产生中断,由MCU软件程序对MCU单线接口的发送和接受寄存器进行读写,以进行数据处理。
主机连续发送规定的进入命令包,则MCU由普通模式进入调试模式。否则MCU单线接口继续工作在普通模式。
MCU处于调试模式下,当连续接收到规定的退出命令包,则MCU由调试模式退出,工作在普通模式。
主机和从机通过一根数据线相连,相连的IO端口工作在开漏输出和数字输入模式,数据线通过10K电阻上拉到电源。
主机和从机工作的时钟频率都为8MHz,以实现双方波特率的匹配。。
每16个时钟表示一个比特位,比特“1”的格式为先发送4个时钟的低电平,再发送12个时钟的高电平;比特“0”的格式为先发送12个时钟的低电平,再发送4个时钟的高电平,如图1所示。
接收数据时,在16个时钟内,对数据进行采样。当接收到的高电平大于或等于8个时钟时,判断为比特“1”;当接收到的低电平大于(或等于)8个时钟时,判断为比特“0”。
数据的发送和接收以包为单位,包的类型包含命令包、计数包、地址包、校验包和数据包。每种包的结构都一样,如图2所示,第一位为开始位“0”,然后是八位数据位b7~b0,最后是停止位“0”,每个包的数据为1字节。
调试模式下的读写数据流如图3所示,读写数据流由一个命令包、一个计数包、一个高地址包、一个低地址包、N个数据包和一个校验包组成。
每个读写数据流一次所能接收或发送的数据最多为256字节。
校验包采用奇偶校验方式,对每一个数据包的b0位进行奇偶计数,得校验包的b0位。用同样的方法,得到校验包b7~b0位。
本发明用于8051架构MCU烧录及仿真的单线通信方法的调试流程图如图4所示,MCU单线接口初始化时处于步骤S1普通模式下。普通模式每接收或发送一个包,会产生中断和相应的标志位,由MCU软件程序对MCU单线接口的发送和接受寄存器进行读写,以进行数据处理。
在步骤S1状态下,当主机连续发送4个进入命令包,则进入步骤S2进入判断。判断所接收到的进入命令包,是否符合表1所列进入命令包。若进入命令包正确,则MCU由进入步骤S3调试模式空闲状态。否则MCU单线接口回到步骤S1普通模式。
表1进入命令包
MCU处于步骤S3调试模式空闲状态下,当主机连续发送4个退出命令包,则进入步骤S4退出判断。判断所接收到的退出命令包,是否符合表2所列退出命令包。命令包正确,则退出回到步骤S1普通模式,否则进入步骤S5命令解码。
表2退出命令包
退出命令包1 | 01010111 |
退出命令包2 | 10101000 |
退出命令包3 | 01001010 |
退出命令包4 | 10110101 |
本发明单线通信方法规定在调试模式下,程序空间、数据空间、内部RAM、外部RAM、SFR寄存器、CPU寄存器和调试寄存器都有特定的读写命令包可对这些存储空间进行读写操作,如表3所示。其中程序空间和数据空间都位于OTP、MTP或Flash等存储中。依照表3,步骤S5将会对读命令包和写命令包进行解码,以实现对不同的存储空间进行读写操作。
表3读写命令包
通过命令读写CPU寄存器和调试寄存器的状态,可更改8051CPU的程序寄存器PC,可通过调试寄存器暂停、启动或复位CPU,很方便的实现软件仿真功能。
当MCU单线接口处于步骤S5命令解码状态,MCU作为从机接收到读命令包,解码阶段会判断读命令包和相应操作的地址空间是否合法。解码成功后MCU单线接口会进入步骤S6调试模式读状态,MCU将高地址包和低地址包组成的地址作为起始地址并取出数据。然后进入步骤S7发送数据,MCU单线接口发送计数包规定的字节个数的数据包。数据发送结束,进入步骤S8发送校验包。读操作完成后,MCU单线接口重新进入步骤S3调试模式空闲状态。
当MCU单线接口处于步骤S5命令解码状态,MCU作为从机接收到写命令包、计数包、高地址包、低地址包、多个数据包和一个校验包,解码阶段会判断写命令包和相应操作的地址空间是否合法。解码成功后MCU单线接口会进入步骤S9调试模式写状态。当接收到数据包时,进入步骤S10接收数据,按照计数包规定的字节个数接收数据包。完成数据接收后,进入步骤S11校验判断,数据校验后的结果与校验包进行对比。如果校验结果正确,则进入步骤S13发送成功命令,按表4所示发送成功命令包。然后进入步骤S14写入存储器,以高地址包和低地址包组成的地址作为起始地址,将数据写入相应的存储空间。如果步骤S11的校验结果错误,则进入步骤S12发送失败命令,按表4所示发送失败命令包。从机则将数据丢弃,主机则可选择是否重新发送读写数据流。步骤S12或步骤S14完成后,MCU单线接口重新进入步骤S3调试模式空闲状态。
表4成功和失败命令包
成功命令包 | 10011001 |
失败命令包 | 01100110 |
当MCU单线接口处于步骤S5命令解码状态,如果MCU读写数据流的发送或接收过程停止,并超过超时寄存器设定的时间,则进入步骤S15超时判断。MCU会丢弃未完成的读写数据流,并重新退回到步骤S3调试模式空闲状态,。
以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式。以相同的手段达到本发明的技术效果,都应属于本发明的保护范围。
Claims (3)
1.一种用于8051架构MCU烧录及仿真的单线通信方法,其MCU单线接口存在普通模式,普通模式用于一般的数据交互,其特征在于,其MCU单线接口还存在调试模式,调试模式可以实现MCU的烧录和仿真;
主机和从机通过一根数据线相连,相连的IO端口工作在开漏输出和数字输入模式,数据线通过电阻上拉到电源;
主机和从机工作的时钟频率相同,以实现双方波特率的匹配;
每N个时钟表示一个比特位,比特“1”的格式为先发送M个时钟的低电平,再发送N-M个时钟的高电平;比特“0”的格式为先发送N-M个时钟的低电平,再发送M个时钟的高电平,N-M大于N/2;
接收数据时,在N个时钟内,对数据进行采样;当接收到的高电平大于或等于N/2个时钟时,判断为比特“1”;当接收到的低电平大于(或等于)N/2个时钟时,判断为比特“0”;
数据的发送和接收以包为单位,包的类型包含命令包、计数包、地址包、校验包和数据包;每种包的结构都一样,第一位为开始位“0”,然后是八位数据位b7~b0,最后是停止位“0”,每个包的数据为1字节;
调试模式下的读写数据流由一个命令包、一个计数包、一个高地址包、一个低地址包、N个数据包和一个校验包组成;
每个读写数据流一次所能接收或发送的数据最多为256字节;
校验包采用奇偶校验方式,对每一个数据包的b0位进行奇偶计数,得校验包的b0位;用同样的方法,得到校验包b7~b0位;
MCU单线接口初始化时处于步骤S1普通模式下;
普通模式每接收或发送一个包,会产生中断和相应的标志位,由MCU软件程序对MCU单线接口的发送和接受寄存器进行读写,以进行数据处理;
在步骤S1状态下,当上位机连续发送若干个进入命令包,则进入步骤S2进入判断;判断所接收到的进入命令包,是否符合规定的进入命令包,若进入命令包正确,则MCU由进入步骤S3调试模式空闲状态,否则MCU单线接口回到步骤S1普通模式;
MCU处于步骤S3调试模式空闲状态下,当上位机连续发送若干个退出命令包,则进入步骤S4退出判断;判断所接收到的退出命令包,是否符合规定的退出命令包,若退出命令包正确,则退出回到步骤S1普通模式,否则进入步骤S5命令解码;
在调试模式下,程序空间、数据空间、内部RAM、外部RAM、SFR寄存器、CPU寄存器和调试寄存器都有特定的读命令包和写命令包可对这些存储空间进行读写操作,其中程序空间和数据空间都位于OTP、MTP或Flash等存储中;
通过命令读写CPU寄存器和调试寄存器的状态,可更改8051CPU的程序寄存器PC,可通过调试寄存器暂停、启动或复位CPU,很方便的实现软件仿真功能;
当MCU单线接口处于步骤S5命令解码状态,MCU作为从机接收到读命令包,解码阶段会判断读命令包和相应操作的地址空间是否合法;解码成功后MCU单线接口会进入步骤S6调试模式读模式,MCU将高地址包和低地址包组成的地址作为起始地址并取出数据;然后进入步骤S7发送数据,MCU单线接口发送计数包规定的字节个数的数据包;数据发送结束,进入步骤S8发送校验包;读操作完成后,MCU单线接口重新进入步骤S3调试模式空闲状态;
当MCU单线接口处于步骤S5命令解码状态,MCU作为从机接收到写命令包、计数包、高地址包、低地址包、多个数据包和一个校验包,解码阶段会判断写命令包和相应操作的地址空间是否合法;解码成功后MCU单线接口会进入步骤S9调试模式写模式;当接收到数据包时,进入步骤S10接收数据,按照计数包规定的字节个数接收数据包;完成数据接收后,进入步骤S11校验判断,数据校验后的结果与校验包进行对比;如果校验结果正确,则进入步骤S13发送成功命令,发送成功命令包;然后进入步骤S14写入存储器,以高地址包和低地址包组成的地址作为起始地址,将数据写入相应的存储空间;如果步骤S11的校验结果错误,则进入步骤S12发送失败命令,发送失败命令包;从机则将数据丢弃,主机则可选择是否重新发送读写数据流;步骤S12或步骤S14完成后,MCU单线接口重新进入步骤S3调试模式空闲状态;
当MCU单线接口处于步骤S5命令解码状态,如果MCU读写数据流的发送或接收过程停止,并超过超时寄存器设定的时间,则进入步骤S15超时判断,MCU会丢弃未完成的读写数据流,并重新退回到步骤S3调试模式空闲状态。
2.根据权利要求1所述的一种用于8051架构MCU烧录及仿真的单线通信方法,其特征在于,N为16,M为4。
3.根据权利要求1所述的一种用于8051架构MCU烧录及仿真的单线通信方法,其特征在于,主机和从机工作的时钟频率都为8MHz。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110923547.9A CN113656047A (zh) | 2021-08-11 | 2021-08-11 | 一种用于8051架构mcu烧录及仿真的单线通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110923547.9A CN113656047A (zh) | 2021-08-11 | 2021-08-11 | 一种用于8051架构mcu烧录及仿真的单线通信方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113656047A true CN113656047A (zh) | 2021-11-16 |
Family
ID=78491490
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110923547.9A Withdrawn CN113656047A (zh) | 2021-08-11 | 2021-08-11 | 一种用于8051架构mcu烧录及仿真的单线通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113656047A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116578521A (zh) * | 2023-07-14 | 2023-08-11 | 深圳中安辰鸿技术有限公司 | 一种单总线通信方法、装置、系统及设备 |
-
2021
- 2021-08-11 CN CN202110923547.9A patent/CN113656047A/zh not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116578521A (zh) * | 2023-07-14 | 2023-08-11 | 深圳中安辰鸿技术有限公司 | 一种单总线通信方法、装置、系统及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8230285B2 (en) | Protocol analyzer for consumer electronics | |
CN112564882B (zh) | 一种基于ahb总线的单线数字通讯接口 | |
US20060248391A1 (en) | State machine-based command line debugger | |
CN107291647B (zh) | Dsp读取扩展串口中接收通道数据的方法 | |
CN104272271B (zh) | 具有指令跟踪能力的处理器装置 | |
CN109582623B (zh) | 一种能够实现多块不同类型扩展板级联的扩展板电路 | |
CN100487668C (zh) | 一种嵌入式处理器的调试方法 | |
CN112559410A (zh) | 一种基于fpga的lio总线扩展uart外设系统及方法 | |
CN113656047A (zh) | 一种用于8051架构mcu烧录及仿真的单线通信方法 | |
CN109062850B (zh) | 一种单片机的数据发送和接收方法 | |
CN107331421A (zh) | 一种基于fpga的sd卡测试系统及方法 | |
KR20100087295A (ko) | 이더넷 컨트롤러 | |
CN113485672B (zh) | 基于fifo存储器的信息生成方法、装置、设备及介质 | |
US10896119B1 (en) | Common input/output interface for application and debug circuitry | |
CN114003541A (zh) | 一种通用型iic总线电路及其传输方法 | |
US7484156B2 (en) | Apparatus and method for testing PS/2 interface | |
CN102253875B (zh) | 基于PicoBlaze嵌入式软核处理器的FPGA逻辑模块调试与数据采集方法 | |
CN101907683A (zh) | 数字基带芯片中i2c模块的自动测试电路结构及其方法 | |
CN105094886A (zh) | 一种从pc机烧录序列号至含rs485总线的下位机的装置和方法 | |
CN217506431U (zh) | 基于龙芯平台的bmc板卡 | |
CN101141227B (zh) | 误码测试装置及系统 | |
CN107368439B (zh) | 主控元件以及数据传输方法 | |
CN100530117C (zh) | 内存错误仿真装置及其方法 | |
Durda | Serial and UART Tutorial | |
CN107870885A (zh) | 通信系统、装置及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20211116 |