在线编程范文(精选3篇)
在线编程 第1篇
1 VC编程概述
VC是一种软件集成开发环境,它是由微软公司开发完成的,换个角度理解就是基于C++的一个开发平台。VC是基于Windows平台的一种C++编程环境,包括MFC、ATL、COM等,此外还具有Windows平台的特性。基于Windows下的VC编程需要掌握Windows的消息机制和回调(callback)函数的原理。MFC是需要理解文档视图类的结构、窗口类的结构、消息流向等的Win32API的包装类。COM是一个需要掌握其基本原理代码共享的二进制标准。除此之外,VC是一个主流的开发平台,它不属于语言。如果将C++视为工业标准,那VC则是遵循工业标准的前提下衍生出来的某种厂商标准的操作系统平台。VC是一种包括WIN API和MFC方式的在Windows平台下开发的VC应用程序,MFC是对传统的WIN API再次封装,其结构相比较简单,所以MFC的开发模式备效率优势更加明显。
2 VC编程网络在线监测功能的模块化
要实现类似MFC的网络状态在线监测和数据分析,就必不可少的需要借助VC相应的功能,例如强大的网络通信板块、多线程开发板块等。在监测软件的开发过程中,充分利用VC成熟的开发资源平台,开发建立有针对性的应用功能模块,做到开发效率和软件质量的双赢,其主要包括以下环节:(1)功能模块设计。MFC应用的实际上是TCP/IP协议组主要用在IP主机、路由器之间传递控制消息的一个子ICMP协议。Windows给予了ASMP.dll的支持,能够从VC中直接引用,但是不支持移植,另外无法控制网络信息的数据包。因此,在基于工程中包含adewfxsock.hfg库的前提下,借助VC技术能够直接针对套接字(socket)进行有效编程,勾选了一个和MFC程序一样发送32字节的数据信息,得到数据包大小和TTL值的回馈,编程过程及系统调用时序,如图1所示。(2)网络状态在线监测。首先,构建套接字符串,然后指定使用的ICMP协议。其次,发送air_ICMP数据包,初试化ECHORHHGEQUEST的types为9的响应请求指令,然后通过系统调用发送ICMPSD数据,并设置目标IP地址。(3)监测套接字符串网络在线状态,检测一个或多个套字符串的状态。(4)响应数据的识别,判断网络在线监测状态。最终,在回馈的数据当中包含了该次在线监测的结果。至此,同MFC方式一样,通过VC编程实现网络状态在线监测。
3 VC多线程编程网络状态在线监测
进程和线程都可以被看作操作系统的概念。通过应用程序执行实例的过程被称作进程,私有的虚拟地址空间、代码、数据和其他各种系统资源共同构成了每个进程,并且在运行模拟的过程中进程的终止会销毁创建的资源,使得进程终止时,所使用的系统资源获得释放或关闭。线程以一个执行单元的形式存在于进程内部。系统创建好进程后,同时也就启动了以函数地址形式执行的进程的主执行线程,并且,Windows系统也将接受来自主执行线程的指令。主执行线程的行为状态最终决定了进程的行为状态。每一个进程都需要一个由系统自动创建的而不需要用户操作的线程。用户可以根据网络监测具体项目,来创建对应的程序在同一个进程中所需要的多个线程。网络状态在线监测模块,在不需要用户界面交互的条件下,能够自动获取所需要的目标IP地址数据,并通过该地址数据创建单独的线程,定时实现后台运行在线网络状态监测。线程之间的通讯之所以方便,是因为在一个进程中的所有线程都在该进程的虚拟地址空间中,共同使用这些虚拟地址空间、全局变量和系统资源,最终使得多线程技术的应用广泛流行。除此之外,为了减少某项任务的长时间占用CPU,多线程可以通过并行处理的方式来实现此功能。可以通过适当的人机交互界面和配置数据管理的方式,来搭建一个完整的VC编程控制的网络在线监测应用系统。该系统系统功能包括网络监测完成网络节点通阻状态的存储;状态显示完成网络节点通阻状态的监测;节点管理完成网络节点通阻状态的分析;指标分析完成网络节点通阻状态的显示。网络状态在线状态的显示是通过客户端图形模式和动态网页模式构成。客户端图形模式采用的是可以对系统监测周期和节点属性等参数进行配置的C/S架构,除此之外,该构架还可以查看节点监测通阻状态和大数据的整理与分析,最终得到故障原因及解决方案。而浏览器网页模式主要用于查看节点状态和指标分析数据。
4 结束语
基于VC编程充分利用了MFC总线的多节点、远距离、实时性好等优点,设计出了一套高效实用的网络在线监测系统,而且该系统具有直观实用的界面和高效简便的编程方式,在监测系统的应用很广泛。
参考文献
[1]赵立群,吴霞,孙岩.计算机网络管理与安全[M].北京:清华大学出版社,2014.
[2]罗莉琴,詹祖桥,黄辉等.Windows网络编程[M].北京:人民邮电出版社,2011.
[3]潘磊,裴斐.一种面向大规模网络拓扑发现的研究[J].计算机工程与应用,2010,46(19).
[4]DAVID.VISUAL C++6编程宝典[M].北京:电子工业出版社,2005.
在线编程 第2篇
随着电子技术的迅速发展, 芯片以及系统越来越复杂, 体积越来越小, 系统测试、故障排除的难度和成本不断增加, 边界扫描技术为以上问题提供了一个行之有效的解决途径[1]。IEEE 1149.1标准俗称JTAG调试标准, 最初由JTAG (Joint Test Action Group) 小组提出, 最终由IEEE批准并标准化。人们一般用JTAG代表IEEE 1149.1规范。JTAG调试标准极大的推动了边界扫描技术的发展, 在电子产品设计及调试的各个阶段得到广泛应用。
2 JTAG调试原理
2.1 边界扫描技术
边界扫描是边界扫描技术的核心概念, 其基本思想是在芯片的输入输出管脚上增加一些边界扫描寄存器单元 (Boundary-scan Register Cell) , 边界扫描寄存器单元其实是移位寄存器单元。芯片有两种工作状态:调试状态和正常运行状态。调试状态下, 边界扫描寄存器单元将芯片与外围的输入输出隔离开, 通过这些边界扫描寄存器单元可以实现芯片输入输出信号的观察与控制。对于芯片输入管脚, 通过与之相连的边界扫描寄存器单元可把信号加载到该管脚中去;对芯片输出管脚, 通过与之相连的边界扫描寄存器单元可实现对该管脚上的输出信号的捕获 (capture) 。正常运行状态下边界扫描寄存器单元对芯片来说是透明的, 对芯片的正常工作不会造成任何影响[2]。这样边界扫描寄存器就提供了一个便捷的方式实现芯片输入输出信号的观察和控制。此外, 芯片输入输出引脚上的边界扫描寄存器单元可以相互串起来在芯片周围形成一个边界扫描链。一般芯片中会提供几条边界扫描链, 实现数据的串行输入和输出, 在时钟信号和控制信号的作用下, 方便地观察和控制调试状态下的芯片。
2.2 TAP (Test Access Port)
边界扫描链可实现数据的输入输出, 从而实现对芯片的观测与控制。TAP是一个通用端口, 并在IEEE1149.1标准中定义, 实现对边界扫描链的控制。IEEE1149.1标准里, 寄存器分为数据寄存器 (DR) 和指令寄存器 (IR) 。边界扫描链只是数据寄存器中的一种。TAP提供了4个强制信号TDI、TDO、TMS、TCK和一个可选信号TRST。通过这些控制信号实现对数据寄存器DR和指令寄存器IR的访问。JTAG结构示意图如图1所示。
(1) TCK (Test Clock Input) TAP时钟驱动信号。
(2) TMS (Test Mode Select) TAP的模式选择信号, 用来控制状态机的转换。
(3) TDI (Test Data Input) 数据串行输入接口。
(4) TDO (Test Data Output) 数据串行输出端口。
(5) TRST (Test Reset Input) TAP Controller复位信号。
TAP是芯片与仿真器的接口, 对芯片的任何访问都是通过TAP来实现。TAP Controller通过TMS控制信号和TCK时钟驱动信号实现状态转换, 其状态转换机如图2所示[3]。状态转换机共有16个状态, 每一个状态在TCK上升沿根据TMS信号的高低电平来决定是否进入下一个状态。
通过TAP访问数据寄存器DR的步骤为: (1) 通过指令寄存器IR选择待访问的数据寄存器; (2) 指定的数据寄存器连接在TDI和TDO之间; (3) 在时钟信号TCK的驱动下, 由TDI实现新数据输入, 由TDO实现数据输出[4]。
3 ARM920T调试系统
ARM920T处理器与调试相关的模块有:ARM CPU core, 提供调试的硬件支持;Embedded ICE, 产生调试中断, 设置断点和观察点;TAP Controller等。
ARM920T常用扫描链[3]:
Scan chain 0 长度为184 bit, 可实现芯片连接检查和芯片内部逻辑测试。
Scan chain 1长度为67 bit, 其中包括32 bit数据位, 32 bit指令位和3 bit控制信号。
Scan chain 2可访问EmbeddedICE中的硬件寄存器。
Scan chain 3长度用户自定义, 可以访问外部边界扫描链。默认使用的扫描链。
Scan chain 6包括32 bit数据位, 7 bit地址位, 1 bit读写控制位, 可对ETM9中的寄存器编程。
ARM920T中常用指令有:IDCODE (b1110) 主要用来读取CPU ID号;SCAN_N (b0010) 主要用来实现不同扫描链的选择, ARM920T默认选择扫描链3;EXTEST (b0000) 将扫描链置于外部测试模式;INTEST (b1100) 将扫描链置于内部测试模式;RESTART (0100) 使ARM920T处理器由调试态返回正常运行态。
4 烧写系统实现
NAND Flash烧写系统分为硬件系统和软件系统。硬件系统负责JTAG协议转换, 实现对TAP的硬件控制;软件系统负责JTAG工作时序的模拟以及TAP的软件控制, 是烧写系统的核心。
4.1 硬件实现
一般JTAG仿真器并不具有Flash烧写功能, 且其价格比较昂贵, 因此文中采用了目前较为流行且比较简单的WIGGLER小板, 实现JTAG Flash在线烧写的硬件支持。这种WIGGLER小板是一种简易并口JTAG, 可方便地实现并口对TAP的直接控制。硬件原理图如图3所示。其中74HC244是三态缓冲器, 其作用是实现电平转换。
4.2 软件实现
软件系统总体上分为四个层次:并口驱动层、JTAG控制层、数据处理层以及应用程序层。软件的层次结构图如图4所示。
并口驱动层实现软件最底层的操作, 本软件基本思想就是通过对PC机上标准并口的直接操作实现对TAP的控制, 从而达到观测和控制芯片的目的。JTAG控制层是整个软件的关键部分, 它利用并口驱动层底层操作接口, 实现TAP操作和状态机不同状态的循环控制。数据处理层相对于底层和上层的功能, 可视为数据处理缓冲层, 这一层并没有牵扯到任何底层的操作, 仅是为了方便应用程序的实现, 定义了一些关键的数据结构和数据处理函数。应用程序层是软件核心功能实现层, 主要实现了NAND Flash工作时序的软件模拟以及有关的读、写及擦除等操作。
4.2.1 Linux下并口操作
Linux程序运行在保护模式下, 不能直接对并口进行操作, 可通过函数调用ioperm (unsigned long port, unsigned long num, bool on_off) 来获得并口的访问权。参数port代表要访问并口的地址, 在程序中共定义了三个并口地址:#define LPT1 0x378、#define LPT2 0x278、#define LPT3 0x3bc;参数num代表连续的端口数目, 一般包括数据寄存器端口、控制寄存器端口和状态寄存器端口;逻辑变量on_off代表对端口操作方式, 1代表打开, 0代表关闭。并口可用性可通过向端口写入数据再读回数据的方式来检查, 读回的数据如果和写入的数据相同则端口可用。并口驱动层提供的访问接口有:
int Getvalidppt (void) //取得可用并口地址
void Setpptcompmode (void) //设置并口工作模式
此外还有两个宏定义:
#define Outputppt (value) outb (unsigned long validport, value) //并口数据输出
#define Inputppt () inb ( (unsigned long) (validppt+0x1) ) //并口数据读入
4.2.2 JTAG控制层
JTAG控制层主要实现TAP Controller控制, 其中涉及TCK、TMS、TDI、TDO四个控制信号和状态机的实现。输出信号控制接口由如下宏实现:
#define JTAG_SET (value) Outputppt (value)
其中value为输出数据, 组合模式为TDI|TMS|TCK, TDI、TMS、TCK分别有两种状态, 如:TDI_H, TDI_L;TMS_H, TMS_L;TCK_H, TCK_L, 分别代表三种信号的高低电平。
输入信号 (TDO) 接口由如下宏实现:
#define JTAG_GET_TDO () ( (Inputppt () & (1<<7) ) LOW:HIGH )
TDO输出信号与状态寄存器第7位相连, 此位使用了反相器, 故在读入数据时需要取反。
JTAG控制层利用TAP Controller状态控制机主要实现数据的输出与输入、指令的输入、CPU ID号的读取等功能。主要的接口函数有:
void JTAG_Shiftdrstate (char *wrDR, char *rdDR) ;//同时实现数据输出与读入
void JTAG_Shiftdrstatenotdo (char *wrDR) ;
void JTAG_Shiftirstate (char *wrIR) //指令输出
void JTAG_Readid (void) //读取CPU ID
访问指令寄存器的状态转换流程为:
Run-Test/Idle→Select-DR-Scan→Select-IR-Scan→Capture-IR→Shift-IR→Exit-IR→Update-IR→Run-Test/Idle
数据寄存器由指令寄存器中的当前指令决定, 访问数据寄存器的状态转换流程为:
Run-Test/Idle→Select-DR-Scan→Capture-DR→Shift-DR→Exit-DR→Update-DR→Run-Test/Idle
函数JTAG_ShiftDRState () 同时实现数据读入、读出, 其程序流程图如图5所示。
4.2.3 数据处理层
边界扫描单元在使用前需要初始化, 边界扫描单元的数目即为边界扫描链的长度, s3c2410处理器的边界扫描链的长度为426。处理器的每个引脚都对应一个边界扫描单元, 每个引脚可视为边界扫描单元的索引, s3c2410处理器有272个引脚。对边界扫描单元的初始化即是对处理器引脚赋初值。初始化数据放在边界扫描链数组中, 有如下定义:
char outcelldata[SC2410_MAX_CELL_INDEX+2];
char incelldata[SC2410_MAX_CELL_INDEX+2];
数组outcelldata[]存放待输出数据, incelldata[]存放读入数据, 数组的每个单元对应一个边界扫描单元。其中SC2410_MAX_CELL_INDEX为s3c2410处理器边界扫描单元的数目426。
s3c2410处理器数据宽度为32位, 地址线27位, 为便于数据、地址统一处理, 定义如下三个数组:
int dataoutcellindex[32];
int dataincellindex[32];
int addrcellindex[27];
数据输出与读入对应不同边界扫描单元, 如:DATA0读入对应的扫描单元索引为100, 输出对应的扫描单元索引为99。将数据输出扫描单元的索引组合到具有32个元素的数组 (dataoutcellindex) 中, 便于数据输出扫描单元的引用;将数据读入扫描单元的索引组合到具有32个元素的数组 (dataincellIndex) 中, 便于数据读入扫描单元的引用;将地址输出扫描单元的索引组合到具有27个元素的数组 (addrcellindex) 中, 便于地址输出扫描单元的引用。如数据位DATA0要输出低电平, 数组的引用方式为:
outcelldata[dataOutCellIndex[0]]=LOW;
从DATA0读入一位数据, 数组的引用方式如下:
incelldata[dataInCellIndex[0]]=JTAG_GET_TDO () ;
数据处理层主要接口函数有:
void SC2410_Initcell (void) ; //边界扫描单元初始化
void SC2410_Setpin (int index, char value) ;//处理器引脚电平的设置
char SC2410_Getpin (int index) ; //引脚信号的读入
void SC2410_Setaddr (U32 addr) ; //设置地址数据
void SC2410_Setdatabyte (U8 data) ;//写字节数据
U8 SC2410_Getdatabyte (void) ;//读字节数据
4.2.4 应用程序层
应用程序层主要实现NAND Flash的读、写及擦除等上层操作。以K9F1208为例, NAND Flash一般的操作流程是:先向Flash芯片发操作命令, 再发操作地址, 如果Flash芯片准备就绪再进行数据的读/写或芯片的擦除等操作。K9F1208主要控制信号有:CLE (芯片命令锁存, 高电平有效) 、ALE (地址锁存, 高电平有效) 、WE (芯片写操作, 低电平有效) 、RE (芯片读操作, 低电平有效) 、CE (芯片使能) 、R/B (芯片状态指示, 高电平代表芯片就绪, 低电平代表芯片忙) ;IO (0~7) 数据输入/输出端口。程序主要接口函数有:NF_CMD () 实现Flash写命令操作;NF_ADDR () 实现Flash地址输出;NF_WRDATA () 实现数据写;NF_RDDATA () 实现数据读。参考K9F1208芯片写命令操作时序, NF_CMD () Flash写命令函数实现为:设CE片选信号有效;命令锁存信号CLE有效同时无效地址锁存信号ALE;写信号WE有效同时无效读信号RE;输出命令;最后无效WE信号实现命令锁存。其他相关函数的实现都是以软件的方式模拟NAND Flash的硬件工作时序, 其实现方法与Flash写命令函数NF_CMD () 相似。
4.3 测试及实验
烧写软件在Linux系统下编译成功, 在命令行输入:./zjx_sjf_linux /f:interrupt.bin, 烧写程序开始运行, 运行界面如图6所示。其中zjx_sjf_linux是应用程序名, /f:为命令行参数, interrupt.bin为待烧写程序。
图6表示程序能够成功运行且能够实现程序在Linux系统下的烧写。
5 结束语
本文研究了JTAG标准和ARM920T, 介绍了NAND Flash在Linux系统下的烧写系统的软硬件实现方案。硬件采用了简易并口JTAG, 软件部分则给出了系统的设计架构, 功能模块及其实现接口。并口JTAG烧写Flash, 速度上会有较大的限制, 接下来进一步的工作就是改善Flash的烧写速度, 提高Flash烧写效率。
摘要:在研究了JTAG调试原理和ARM920T调试模型的基础上, 提出了Linux系统下NAND Flash在线烧写系统的软硬件实现方案。硬件采用简易并口JTAG实现电平转换, 实现并口对TAP直接控制;软件采用四层次模型:并口驱动层, 实现软件底层驱动;JTAG控制层, 实现TAP操作及状态机控制;数据处理层以及应用程序层, 实现软件上层主体功能。程序在Linux系统下成功编译, 并成功运行, 实现了Flash的在线编程。
关键词:Linux,JTAG,Flash,烧写系统
参考文献
[1]赵铁峰, 王凯, 王为民, 等.基于ARM微处理器的智能控制器[J].化工自动化及仪表, 2005, 32 (1) :77-78.
[2]IEEE1149.1.IEEE standard test access port and boundary-scan architecture[S].2001.
[3]ARM Corp.ARM920T Technical Reference Manual[EB/OL].http://www.arm.com.
在线编程 第3篇
1 MV10微处理器
MV10微处理器已通过硅验证,使用GLOBAL FOUNDRY公司的0.35μm、2层多晶硅、4层金属混合信号工艺,3.3 V电源,运行频率可达24 MHz,具有64 KB存储器寻址空间,8 KB×8片内OTP程序存储空间,256B的内部数据存储器,内置4个模拟量输入的10位模数转换通道,1个单独的UART通信模块,5个16位的定时器计数器,11个两级优先级中断源,支持睡眠空闲模式,复位可从睡眠模式中唤醒芯片,采用DIP52封装。
2 在线编程IP核设计
MV10片上系统嵌入在线编程IP核,上位机通过串口对其片上SRAM进行程序烧写,使MV10具有在线调试、编程的功能,图1为在线编程系统结构图。
2.1 顶层设计
在线编程IP核包含了时序控制模块、位流接收模块、位流发送模块及SRAM接口管理模块。图1中,pc_data_in是一个接收上位机数据的串行端口,pc_data_out是一个向上位机返回数据帧验证信息的串行端口。通过Start口切换MV10的状态(0为程序烧写模式,1为正常工作模式)。
2.2 时序控制模块
时序控制模块采用了两级同步、逐帧校正及中间采样三种方法,保证了数据采样的高精确性。
如图2所示,上位机发送的数据流pc_data_in经过两级同步产生了稳定的数据流pc_data_in_reg,有效地避免了亚稳态的传播。第三级同步产生的pc_data_in_reg_reg信号用以检测数据帧起始位。
在每一个系统时钟脉冲的上升沿,时序控制模块根据(!pc_data_in_reg&pc_data_in_reg_reg&(bit_cnt==4’b0))的值(bit_cnt[3:0]为数据帧位计数器)来判断是否开始采样起始位。在检测到数据跳变后,系统时钟脉冲计数器clk_cnt从零开始计数。采用两分频采样,clk_cnt从0记到624(625次)后采样时钟clk_9600翻转(设定输入数据流波特率为9 600 b/s,系统时钟为12 MHz时,每传送一位数据需要1 250个系统时钟周期)进行数据采样,如图3所示。
2.3 位流接收模块
在线编程模块中设定的数据帧格式为:1位起始位,8位数据位,1位校验位与1位停止位。
位流接收模块的主要功能:
(1)根据数据帧的打包格式对时序控制模块采样到的位流进行解包,提取每一帧中的串行数据转换为并行数据写入内部寄存器,再由SRAM接口管理模块将其写入片上SRAM。
(2)对每一帧数据进行奇校验与帧校验,产生校验标志。
错误检验机制RTL实现:
其中bit_cnt是数据流位计数器,当检测到数据起始位时从“0”开始计数,一帧数据从“0”计到“10”,“11”时返回错误标志,即写入一帧数据实际需要12个采样周期。parity_error为奇校验错误标志,“1”表示有奇校验错误;frame_error为帧错误校验标志,“1”表示有帧错误;error是总校验标志,“1”表示此帧数据错误,使发送数据模块向上位机发送00H,SRAM接口管理模块在检测到error信号为“1”时地址位不增加。
2.4 位流发送模块
位流发送模块的主要功能:
(1)MV10上电或者复位后,该模块自动向上位机发送55H以检测MV10与上位机之间的通信是否正常。如上位机显示55H,即表示下位机已准备好接收上位机发送的数据。如果无法显示55H,则需要检查上位机是否配置正确、下位机是否切换到程序烧写模式以及它们之间的连接是否正确。
(2)位流接收模块接收到一帧数据后,会对该帧数据进行校验,并发送校验标志。位流发送模块根据校验标志作出判断,若校验正确,则向上位机发送FFH,否则发送00H。
2.5 SRAM接口管理模块
参考Memory Compiler生成的RA_512x8模型设计SRAM写操作时序。其中addr[8:0]为9位地址信号,CEB为片选信号(低电平有效),WEB为读写选择信号(高读低写),data_final[7:0]为8位数据信号。如图4所示。
当MV10模式开关Start为“0”时,MV10工作在编程模式,此时SRAM片选信号与写使能信号有效,将校验正确的一帧数据写入SRAM,地址自动加“1”(地址初始化或复位后为00H)。如数据校验错误,则数据不会被写入SRAM,地址位保持不变。
当MV10模式开关Start为“1”时,MV10工作在运行模式,此时SRAM片选信号与写使能信号无效,即使数据接收模块正确接收到数据,也不会写入到SRAM中。
3 上位机软件设计
3.1 MV_IDE概述
上海大学MV系列MCU汇编程序开发软件[6]使用Windows平台应用程序开发环境:Visual Studio 2010进行开发,采用C++语言作为主要开发语言。上海大学MV系列MCU汇编程序开发软件作为MV系列微控制器(MCU)的开发汇编程序开发平台,设计了基于IN-TEL8051指令的汇编程序编辑器和编译器,并针对新一代MV系列MCU中的在线编程模块,设计了相应的程序烧写功能,可将编译后的机器码烧写到MV10内部的程序SRAM中。
3.2 烧写功能程序设计
上位机程序中的烧写功能可以将MV_IDE编译后产生的BIN文件通过串口发送给MV10,MV_IDE根据在线编程模块的校验返回标志决定发送下一帧数据或者重新发送当前数据帧。
选择主界面的烧写按键打开烧写界面,在烧写文件选框选择需要烧写的BIN文件。由于BIN文件是特殊的二进制格式文件,所以在点击烧写文件确定后MV_IDE会读取BIN文件并将其转化为16进制单字节的形式,并在工程目录下保持为bin.txt文本文件,便于以单字节进行发送。
在烧写界面中,“串口号”用于选择PC机的串口,“串口设置”第一位设置波特率;第二位设置校验位,N表示没有校验位,O表示奇校验,E表示偶校验;第三位设置数据位数;最后一位设置停止位数。实际烧写时选择9600,O,8,2。串口配置界面如图5所示。
4 仿真及验证
4.1 Modelsim仿真
图6所示为向SRAM中写数据的仿真,data_final为准备写入到片上SRAM的8位数据。为了测试错误检测机制,人为地使数据帧“10111010”产生错误,上位机检测到错误标志后,重新发送此帧数据,直到数据检测正确后地址位加1。
4.2 板级验证
对包含在线编程IP核的芯片进行板级测试,将事先经过片外EEPROM验证的项目程序通过上位机写入目标板,均可实现相应的功能,目标测试板界面如图7所示。
本文提出的在线编程模块IP核具有高采样精度并带有错误检测校正机制,是一种简易可靠的在线程序调试实现方法。该IP核通过了Modelsim仿真、FPGA验证及芯片板级验证,并已应用在MV10的程序开发中。本文给出的在线编程IP核的方法,虽然是基于MV10片上系统提出的,但亦可用于其他片上系统。
摘要:基于MV10微处理器设计了一个简单可靠的在线编程IP核,可以将BIN文件直接写入其片上SRAM进行程序调试。该IP核嵌入在MV10中0.35μm工艺线上流片成功并通过了板级验证。
关键词:MV10,在线编程,高采样精度,错误检测,上位机程序
参考文献
[1]Hu Yueli,Xiong Bing.Design of an embedded on-chipdebug support module of an MCU[C].The 8thIEEE CPMTConference on High Density Microsystem Design and Pack-aging and Component Failure Analysis(HDP’06),IEEE,June 2006.
[2]杨朝阳,罗永革一种基于软件SCI的在线编程方法[J].苏州大学学报,2010,30(2):45-48.
[3]胡越黎,周谌.基于IP复用的片上级系统的构建与验证[J].计算机测量与控制,2010,18(3):629-631.
[4]Hu Yueli,Xu lei.Reusable design of CAN bus controllerIP core[C].4th International Conference on Measuring Tech-nology and Mechatronics Automation,ICMTMA 2012.
[5]黄俊良,胡越黎,王昆.MV10微处理器与APB总线的接口设计[J].计算机测量与控制,2011,19(12):89-95.