CN1360250A - 一种实现在数字信号处理器上的打印方法 - Google Patents
一种实现在数字信号处理器上的打印方法 Download PDFInfo
- Publication number
- CN1360250A CN1360250A CN 00127968 CN00127968A CN1360250A CN 1360250 A CN1360250 A CN 1360250A CN 00127968 CN00127968 CN 00127968 CN 00127968 A CN00127968 A CN 00127968A CN 1360250 A CN1360250 A CN 1360250A
- Authority
- CN
- China
- Prior art keywords
- digital signal
- parameter
- signal processor
- printing
- main frame
- 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.)
- Granted
Links
Images
Landscapes
- Accessory Devices And Overall Control Thereof (AREA)
Abstract
本发明公开了一种实现在数字信号处理器上的打印方法,该方法将数据格式化信息通过串口芯片发送到主机上,并由主机执行格式化过程;在对数据信息进行格式时,采用固定字节来适合串口缓冲的大小,使一条消息能一次写入;最后在打印时,将所要打印的数据信息直接放入主机的缓冲器中,由主机后台进行格式化显示打印。它具有灵活的打印机制,直观地显示调试信息,对参数的格式化和输出的性能影响低。
Description
本发明涉及移动通信技术,更具体地是指一实现在数字信号处理器上的打印方法。
在移动通信中,将实验数据打印一般是在数字信号处理器上进行的,如TMS320C6x是TI公司的一种数字信号处理器系列,它采用先进的长指令字结构,通过提高指令级的并行来提高性能,峰值处理能力达1600MIPS,数字信号处理器应用能够通过C语言来实现,在C语言中,最基本的打印函数是著名的printf,它完成的功能包括对打印参数的格式化和格式化结果的实际输出。
由于数字信号处理器应用于高速信号处理的场合,对实时性和处理性能有较高的要求,(如TMS320C6x数字信号处理器系列主要应用于需要高速处理运算的场合)处理器的设计侧重于数据的吞吐和运算速度,对人机交互的支持不够,没有通常意义上的串口设备,调试程序是通过仿真器进行的。
现有的几种解决数字信号处理器上的调试信息打印的方案一般采用如下几种:
(1)使用厂商提供的C标准库函数printf
执行过程:首先通过第一个参数的格式化信息对欲打印的信息进行格式化处理,形成最终的目标字符串,再通过仿真器把目标字符串传到主机,由主机上的仿真调试软件显示。
优点:printf函数是标准库函数的完全实现,格式化机制灵活,能打印多个参数和多种类型的数据。
缺点:打印一条消息的时间太长,打印一个字符就需要1000多个指令周期,随着字符数的增加和整数类型、浮点类型等的格式化,打印一条消息的时间将成倍增长,随之而来的问题是打印一条消息的时间是不确定的,这对需要高速处理的实时应用来说,是不能忍受的,而且在没接仿真器的情况下,这种方法也是不可行的。
(2)外接串口芯片,重定向printf输出到串口芯片
为了解决在不接仿真器的环境下也能打印调试信息,通过处理器的外部内存接口连接一个专用串口芯片,再与主机的串口连接。执行过程中消息的格式化部分与(1)中printf函数一样,实际输出时不是通过仿真器,而是通过串口芯片来输出,最后由主机的串口终端来接收并显示调试信息。此种方法除了有不依赖仿真器外的优点外,其它的优缺点与(1)的方案相同。
(3)外接串口芯片,直接输出消息串到串口芯片
硬件上的连接与(2)的方法一样,由于参数的格式化过程需要较多的指令周期,通过取消格式化的过程,来提高执行的效率,在需要打印时,直接取固定的字符串写入串口芯片,由主机的串口终端来接收并显示调试信息。
优点:由于没有格式化的过程,所以效率大为提高,打印的时间主要就是把字符串写入串口芯片的时间,对性能的影响较小,能够满足实时应用的需求。
缺点:由于取消了参数的格式化过程,所以打印控制不灵活,只能打印固定串,不能打印整数、浮点数等,这对C语言程序的调试很不利。消息串长度的不同,打印时间也不同,特别是串口的传输相对较慢,在消息串较长串口芯片的缓冲区满时,必须等待串口的发送,影响处理器的效率。
为此,本发明的目的是针对现有在数字处理器上进行打印的方法存在的不足之处,提供一种实现在数字信号处理器上的打印方法,使其在不接或没法接仿真器的情况下,调用接口能提供灵活的打印机制,又能直观地显示调试信息,同时对处理器在参数的格式化和输出的性能和效率不会有大的损害。
为了实现上述目的,本发明采用如下技术方案:该实现在数字信号处理器上的打印方法,该方法基于主机和目标机上,目标机的串口芯片接在数字信号处理器的外部内存接口上,数字信号处理器程序通过外部内存接口存取串口芯片的寄存器,通过串行线将串口芯片与主机中的一个串口连接,在打印时,先将数据的格式化信息通过串口芯片发送到主机上,并由主机执行格式化过程;在对数据信息进行格式时,采用固定字节来适合串口缓冲的大小,使一条消息能一次写入;最后在打印时,将所要打印的数据信息直接放入主机的缓冲器中,由主机后台进行格式化显示打印。
由于本发明采用将数据格式化信息通过串口芯片发送到主机上,并由主机执行格式化过程;在对数据信息进行格式时,采用固定字节来适合串口缓冲的大小,使一条消息能一次写入;最后在打印时,将所要打印的数据信息直接放入主机的缓冲器中,由主机后台进行格式化显示打印。利用本发明的打印方法能有效地克服在背景中所描写的三种方法存在的缺点,在没有接仿真器的情况下,考虑了数字信号处理器的应用场合对效率性能要求较岢刻和C语言编程的可读性和灵活性;调用接口能提供灵活的打印机制,又能直观地显示调试信息,同时对数字信号处理器在参数的格式化和输出的性能影响降到最低。
下面结合附图和实施例,对本发明的方法作一详细地说明:
图1为本发明的方法所基于的硬件结构示意图。
请结合图1本发明打印方法基于主机1和目标机2上,目标机2的串口芯片接在数字信号处理器的外部内存接口上,数字信号处理器(如TMS320C6x系列的处理器)就置于目标机2上,数字信号处理器程序通过外部内存接口存取串口芯片的寄存器,通过一根串行线3将串口芯片与主机中的一个串口连接,本发明的方法是先将数据格式化信息通过串口芯片发送到主机上,并由主机执行格式化过程;在对数据信息进行格式时,采用固定字节来适合串口缓冲的大小,使一条消息能一次写入;最后在打印时,将所要打印的数据信息直接放入主机的缓冲器中,由主机后台进行格式化显示打印。
在将数字信号处理器上的数据信息发送到串口芯片过程中,先检测串口的状态如果不全为空,就不发送,否则取一条数据信息一次性写入串口进行发送,发送采用缓冲的方式。
将数据信息格式化为序号、格式地址、参数1、参数2四个域。所述序号是用来确定在发送过程中发生信息丢失时让用户知道,序号的值在每条数据生成时加一;格式地址是printf函数的第一个格式化参数的地址;参数1和参数2是最多2个的32位参数,可以有0、1或2个,在没有时,其值以0代替,参数最多只能取两个。
以在TMS320C6x数字信号处理器上实现打印为例,目标机2的串口芯片接在处理器C6x的外部内存接口上,处理器程序通过外部内存接口存取串口芯片的寄存器,通过一根串行线3将串口芯片与主机1的一个串口连接。
目标机2侧:
串口采用带16个字节缓冲的芯片,一次可以同时写入16个字节,为了使一条消息能一次写入串口芯片,而不等待串口的发送,必须满足两个条件:
A)一条消息发送前,串口缓冲区是空的
B)一条消息的长度<=16
为了满足第一个条件,消息发送必须采用缓冲的方式,消息直接写入内存缓冲区,由后台打印任务在任务空闲时,并且串口缓冲区为空时一次性写入串口,
为了满足第二个条件,我们采用一条消息固定为16个字节长,具体内容为
32位 32位 32位 32位
序号 | 格式地址 | 参数1 | 参数2 |
序号用来确定有无消息丢弃,在每条消息生成时加一,格式地址是printf函数的第一个参数的地址,包含格式化参数,参数1和参数2是最多2个的32位参数,可以有0,1或2个,在没有时,值以0代替。
调用实例:
0个参数,假定"No extra parameter\n"的地址为0x80001000,则
printf("No extra parameter\n");
实际输出为
1 | 0x80001000 | 0 | 0 |
1个参数,假定"One parameter is%d\n"的地址为0x80002000,value1为100,则
printf("One parameter is%d\n",value1);
实际输出为
2 | 0x80002000 | 100 | 0 |
2个参数,假定"Two parameters are%d and%d\n"的地址为0x80003000,value1为100,value2为200,则
printf("Two parameters are%d and%d\n",value1,value2);
实际输出为
3 | 0x80003000 | 100 | 200 |
一个printf函数的执行只是把参数的值拷到缓冲区中,总共需要24个指令周期就能完成,实际的输出是由后台进程在空闲时一次一条消息写入串口的。
主机1侧:
主机侧的软件维护一个较大的缓冲区,来接收目标机来的一个一个消息,并从缓冲区中取消息进行显示,由于传给主机的消息并不是实际的结果,主机必须对消息进行解析并格式化,处理器C6x的目标文件格式是通用目标文件格式,里面包含了各种符号的地址信息和数据信息,通过查找通用目标文件格式文件,就能取到相应的信息。
1 | 0x80001000 | 100 | 0 |
通过查找0x80001000的地址的数据得到字符串"No extra parameter\n",再通过解析此字符串得到结果,并打印结果如下:
1.No extra parameter
使用本发明的打印方法后,打印一条消息所用的时间是24个指令周期加上写16个字节到串口的时间,所以对性能几乎没有影响。在功能上实现了类似printf函数的灵活的格式化打印,在效率上不会影响性能,并且消息不管长短,时间是确定的。
Claims (4)
1、一种实现在数字信号处理器上的打印方法,该方法基于主机和目标机上,目标机的串口芯片接在数字信号处理器的外部内存接口上,数字信号处理器程序通过外部内存接口存取串口芯片的寄存器,通过串行线将串口芯片与主机中的一个串口连接,其特征在于:先将数据格式化的信息通过串口芯片发送到主机上,并由主机执行格式化的过程;在对数据信息进行格式化时,采用固定字节来适合串口缓冲的大小,使一条消息能一次写入;最后在打印时,将所要打印的数据信息直接放入主机的缓冲器中,由主机后台进行格式化显示打印。
2、如权利要求1所述的实现在数字信号处理器上的打印方法,其特征在于:在将数字信号处理器上的数据信息发送到串口芯片过程中,先检测串口的状态如果不全为空,就不发送,否则取一条数据信息一次性写入串口进行发送,发送采用缓冲的方式。
3、如权利要求1所述的实现在数字信号处理器上的打印方法,其特征在于:所述的格式化是将数据信息格式化为序号、格式地址、参数1、参数2四个域。
4、如权利要求3所述的实现在数字信号处理器上的打印方法,其特征在于:所述序号是用来确定在发送过程中发生信息丢失时让用户知道,序号的值在每条数据生成时加一;格式地址是printf函数的第一个格式化参数的地址;参数1和参数2是最多2个的32位参数,可以有0、1或2个,在没有时,其值以0代替,参数最多只能取两个。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB001279688A CN1138203C (zh) | 2000-12-21 | 2000-12-21 | 一种实现在数字信号处理器上的打印方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB001279688A CN1138203C (zh) | 2000-12-21 | 2000-12-21 | 一种实现在数字信号处理器上的打印方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1360250A true CN1360250A (zh) | 2002-07-24 |
CN1138203C CN1138203C (zh) | 2004-02-11 |
Family
ID=4592877
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB001279688A Expired - Fee Related CN1138203C (zh) | 2000-12-21 | 2000-12-21 | 一种实现在数字信号处理器上的打印方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1138203C (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100444102C (zh) * | 2005-12-29 | 2008-12-17 | 三星电子株式会社 | 高速打印方法和设备 |
-
2000
- 2000-12-21 CN CNB001279688A patent/CN1138203C/zh not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100444102C (zh) * | 2005-12-29 | 2008-12-17 | 三星电子株式会社 | 高速打印方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN1138203C (zh) | 2004-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7434030B2 (en) | Processor system having accelerator of Java-type of programming language | |
KR100401799B1 (ko) | 명령어 세트 아키텍처 천이에 대한 명령어 세트의에뮬레이션 | |
US5428786A (en) | Branch resolution via backward symbolic execution | |
US5507030A (en) | Successive translation, execution and interpretation of computer program having code at unknown locations due to execution transfer instructions having computed destination addresses | |
US6484255B1 (en) | Selective writing of data elements from packed data based upon a mask using predication | |
US5287490A (en) | Identifying plausible variable length machine code of selecting address in numerical sequence, decoding code strings, and following execution transfer paths | |
WO1992015932A2 (en) | Cross-image referencing of program code | |
EP0465248B1 (en) | Pseudo-linear bank switching memory expansion | |
JPH05216917A (ja) | 算術論理ユニット | |
US6898700B2 (en) | Efficient saving and restoring state in task switching | |
US5802359A (en) | Mapping processor state into a millicode addressable processor state register array | |
US20150227373A1 (en) | Stop bits and predication for enhanced instruction stream control | |
JP2000276351A (ja) | ローカル命令ルーピングを有するプロセッサ | |
CN104868921A (zh) | 一种解码方法及装置 | |
CN1138203C (zh) | 一种实现在数字信号处理器上的打印方法 | |
CN1508674A (zh) | 提供可变宽度的至少六路加法指令的方法及相应装置 | |
US5732235A (en) | Method and system for minimizing the number of cycles required to execute semantic routines | |
US20050114549A1 (en) | Mechanism for extensible binary mappings for adaptable hardware/software interfaces | |
CN114816532B (zh) | 一种提高risc-v二进制代码密度的寄存器分配方法 | |
US6681319B1 (en) | Dual access instruction and compound memory access instruction with compatible address fields | |
CN101042671A (zh) | 一种用于数字信号处理器的调试系统及其调试方法 | |
US7676651B2 (en) | Micro controller for decompressing and compressing variable length codes via a compressed code dictionary | |
US20030140335A1 (en) | Tracking format of registers having multiple content formats in binary translation | |
CN1503153A (zh) | 使用有效数据传送格式的异步通信协议 | |
US5860155A (en) | Instruction decoding mechanism for reducing execution time by earlier detection and replacement of indirect addresses with direct addresses |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20040211 Termination date: 20161221 |
|
CF01 | Termination of patent right due to non-payment of annual fee |