整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

这个神器可以提取你代码中的关键信息生成技术文档

这个神器可以提取你代码中的关键信息生成技术文档


、前言

以前,我们学C语言的时候,多多少少都查过一些标准库函数吧。这里介绍查找C语言的标准库函数的两种方法:一种方法是直接到http://www.cplusplus.com这个网站上去查看:

这里覆盖了C语言标准库中的所有函数,给出了每个函数的介绍并且都给出了具体的用法示例,比如:

只不过都是英文的说明,可见英文的重要性。

另一种方法是,找一些离线的文档,网上有不少人整理了一些离线的文档,比如.chm格式(已编译的帮助文件)的文档:

里面大概是这样子的:

也可以很方便的查找每个函数的用法,但是,这里面的不是很全,所以查找C标准库函数还是建议到http://www.cplusplus.com上面去查找。

本文分享的重点就是.chm文件的制作。最近需要对自己的一些代码做一些整理,发现整理成.chm文件是个不错的选择,.chm文件可以根据我们的代码生成,下面把生成.chm文件的方法分享给大家。

二、制作.chm文件的工具

需要三个工具:doxygen安装包、graphviz安装包、htmlhelp安装包。其中doxygen是一种开源跨平台的文档系统,doxygen可以从一套归档源文件开始,生成HTML格式的在线类浏览器,或离线的LATEX、RTF参考手册。

doxygen可以生成好几种格式的文档,要生成.chm格式的手册就必须安装htmlhelp,要生成关系图必须安装依graphviz。这个个工具的获取方法:

1、方法一:官网下载

(1)doxygen安装包:

http://www.doxygen.nl/download.html

(2)graphviz安装包:

http://www.graphviz.org/

(3)htmlhelp安装包:

https://www.microsoft.com/en-us/download/details.aspx?id=21138

2、方法二:百度云盘下载

链接:https://pan.baidu.com/s/1gsJxkGsoO0ncy0GGM6PyQw 提取码:3754

若链接失效可联系我。

下载的都是.exe格式的可执行文件,就按平时安装软件的方法安装件就可以了。但是,需要记住graphviz与htmlhelp的安装路径,后面使用Doxygen时需要用到。

三、Doxygen根据代码生成.chm的机制

Doxygen可以根据固定格式的代码注释生成相对应的.chm格式的手册。支持的语言有好多种,如C/C++/C#/Objective-C/PHP/Java等。这里主要是分享C语言,Doxygen可以识别的固定格式注释有以下几种:

这里,我使用第一种,如:

/**
 * 函数功能:字符串逆序函数
 * @param src_str:字符串
 * @param str_len:字符串长度
 * @return 逆序之后得到的字符串
 */ 
char *Str_ReverseOrder(char *src_str,int str_len)
{
	char *dst_str=src_str;
	char temp;
	printf("Method 1!\n");
	for(int i=0;i<str_len/2;i++)
	{
		temp=src_str[i];					
		src_str[i]=src_str[str_len-i-1];  
		src_str[str_len-i-1]=temp;		
	}
	
	return (char*)dst_str;
}

所有的函数都使用这样统一格式的注释。

四、Doxygen生成.chm文件的方法

1、设置工程工作目录

2、设置编程语言

3、设置输出文件格式

4、设置生成的关系表

5、输出的语言、编码

6、设置一些构建的选择项

7、设置输入文件的编码

8、设置是否在.chm中生成源码以供预览

9、设置HTML选项

10、设置Dot选项

11、运行生成.chm文件

12、保存工程文件

五、最终成果效果图

下面看一下我们生成的.chm文件:

以上就是本次的分享,感谢阅读!

心板简介

创龙科技SOM-TL6678F是一款基于TI KeyStone架构C6000系列TMS320C6678八核C66x定点/浮点DSP以及Xilinx Kintex-7 FPGA处理器设计的高端异构多核工业级核心板。核心板内部DSP与FPGA通过SRIO、EMIF16、I2C通信总线连接,并通过工业级高速B2B连接器引出千兆网口、PCIe、HyperLink、EMIF16、GTX等高速通信接口。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。

用户使用核心板进行二次开发时,仅需专注上层运用,降低了开发难度和时间成本,可快速进行产品方案评估与技术预研。

图 1 核心板正面图

目 录

前 言 3

1 dsplib_fft案例 4

2 dsplib_fir案例 9

3 dsplib_iir案例 14

4 dsplib_matrix案例 19

5 imglib_sobel案例 21

6 imglib_threshold案例 25

前 言

(裸机)算法案例基于多核软件开发包BIOS-MCSDK中的算法库dsplib_c66x_3_1_0_0、imglib_c66x_3_1_1_0以及mathlib_c66x_3_0_1_1进行开发。

算法案例位于产品资料“4-软件资料\Demo\DSP_Demo\Algorithm-demos\”路径下。案例目录说明如下表,其中bin目录存放程序可执行文件,project目录存放案例工程源文件。

本文档案例程序默认使用DSP端主频为1GHz、DSP端DDR3容量为1GByte的核心板,通过TL-XDS200仿真器加载运行进行操作效果演示。请通过Micro USB线将调试串口与PC机进行连接,打开串口调试终端SecureCRT并正确进行串口连接设置。

表 1

目录

文件/目录

说明

bin

xxx.out

程序可执行文件

project

xxx.c

程序源码文件

C66x.cmd

内存配置链接文件

driver

驱动文件存放目录

system

平台文件存放目录

.ccsproject/.cproject/.project

CCS工程文件

DSPLIB函数开发参考资料:BIOS-MCSDK多核软件开发包安装目录“dsplib_c66x_3_1_0_0\packages\ti\dsplib\docs\doxygen\DSPLIB.chm”。

IMGLIB函数开发参考资料:BIOS-MCSDK多核软件开发包安装目录“imglib_c66x_3_1_1_0\docs\IMGLIB_Users_Manual.chm”。

MATHLIB函数开发参考资料:BIOS-MCSDK多核软件开发包安装目录“mathlib_c66x_3_0_1_1\docs”。

dsplib_fft案例

案例说明

案例功能:调用MATHLIB中的sinsp函数产生单精度测试信号,以及调用sinsp和cossp函数生成快速傅里叶变换(FFT)所需旋转因子。调用DSPLIB中的DSPF_sp_fftSPxSP函数对测试信号进行快速傅里叶变换(FFT),调用DSPF_sp_ifftSPxSP函数进行快速傅里叶逆变换(IFFT),采样点从8递增到4096,并统计运算时间。

案例测试

请运行程序,CCS的Console窗口将会打印FFT和IFFT运算时间。

以N=4096为例,不使能Cache时FFT运算时间为254.646us,使能Cache时FFT运算时间为53.292us,效率提升约4.8倍。不使能Cache时IFFT运算时间为249.655us,使能Cache时IFFT运算时间为57.027us,效率提升约4.4倍。

图 1


表 2

参数

解析

Cache Disabled/Cache Enable

不使能/使能L1P与L1D Cache

DSPF_sp_fftSPxSP/DSPF_sp_ifftSPxSP

单精度FFT/IFFT

N

样本长度

radix

运算基数

(当N为4的幂时,radix为4,否则radix为2)

cycles

运算周期

time

运算时间

关键代码

在main函数中申请数据缓冲区,fft_input数组用于存放FFT的信号输入数据,fft_output数组用于存放经FFT处理的信号数据,ifft_output数组用于存放经IFFT处理的信号数据,fft_twiddle数组用于存放FFT旋转因子,ifft_twiddle数组用于存放IFFT旋转因子,signal_data数组用于存放自定义信号数据。

图 2

生成测试信号,并存放于复数数组中。其中实部数据为两个正弦波的叠加信号,一个正弦波的振幅为5、频率为50Hz,另一个正弦波的振幅为15、频率为150Hz,虚部数据均为0。

图 3

不使能L1 Cache,对复数数据进行FFT以及IFFT,并统计运算时间。

图 4


图 5

使能L1 Cache,对复数数据进行FFT以及IFFT,并统计运算时间。

图 6

为测试不同状态下的功耗,测试完成后循环进行FFT以及IFFT,使DSP核心处于高负载状态。循环过程中,不检测数据的正确性。

图 7

dsplib_fir案例

案例说明

案例功能:调用C标准库中的sin函数产生测试信号,调用DSPLIB中的DSPF_sp_fir_r2函数对测试信号进行有限长单位冲激响应滤波(FIR),输出采样点为1024,并统计运算时间。

案例测试

请运行程序,CCS的Console窗口将会打印FIR运算时间。

图 8

点击CCS的“Tools -> Graph -> Single Time”,在弹出的界面中按照下图内容进行配置。其中Start Address选项填写fir_input数组,此数组用于存放FIR的信号输入数据。点击OK,即可查看测试信号的原始波形。

图 9


图 10

表 3

参数

解析

Acquisition Buffer Size

数据读取长度

Dsp Data Type

数据读取类型

Start Address

数据读取起始地址

Display Data Size

数据显示长度

图 11


点击CCS的“Tools -> Graph -> Single Time”,在弹出的界面中按照下图内容进行配置。其中Start Address选项填写fir_output数组,此数组用于存放经FIR处理的信号数据。点击OK,即可查看经FIR处理的信号波形。

图 12


图 13


图 14

关键代码

图 15

dsplib_iir案例

案例说明

案例功能:调用C标准库中的sin函数产生测试信号,调用DSPLIB中的DSPF_sp_iir函数对测试信号进行无限长单位冲激响应滤波(IIR),输出采样点为1024,并统计运算时间。

案例测试

请运行程序,CCS的Console窗口将会打印IIR运算时间。

图 16

点击CCS的“Tools -> Graph -> Single Time”,在弹出的界面中按照下图内容进行配置。其中Start Address选项填写iir_input数组,此数组用于存放IIR的信号输入数据。点击OK,即可查看测试信号的原始波形。

图 17


图 18


图 19


点击CCS的“Tools -> Graph -> Single Time”,在弹出的界面中按照下图内容进行配置。其中Start Address选项填写iir_output数组,此数组用于存放经IIR处理的信号数据。点击OK,即可查看经IIR处理的信号波形。

图 20


图 21


图 22

关键代码

图 23


dsplib_matrix案例

案例说明

案例功能:调用DSPLIB中的DSPF_sp_mat_mul函数,将矩阵A与矩阵B相乘,并将结果储存在矩阵C中。

案例说明

请运行程序,CCS的Console窗口将会打印运算结果。

图 24


图 25


关键代码

通过SIZE指定矩阵大小。

图 26

初始化矩阵A和矩阵B。

图 27

调用DSPF_sp_mat_mul函数进行矩阵相乘运算。

图 28


imglib_sobel案例

案例说明

案例功能:通过fread函数读取BMP灰度图像,并调用IMGLIB中的IMG_sobel_3x3_8函数对图像进行Sobel(边缘检测)算法处理,再通过fwrite函数将经处理得到的BMP图像进行保存。

案例测试

将案例image目录下的BMP灰度图像文件gray.bmp拷贝至程序可执行文件相同目录下。

请运行程序,CCS的Console窗口将会在1~2min内打印如下信息,同时在程序可执行文件相同目录下生成经Sobel(边缘检测)算法处理得到的图像文件sobel.bmp。

本案例测试耗时1~2min,主要因为系统编程如fread,fwrite函数运行占用时间较长。

图 29


图 30

关键代码

通过fopen、fseek和fread等函数获取图像大小,并读取图像文件。

图 31

根据图像文件头信息申请内存空间。

图 32

读取图像位图信息,并调用IMGLIB中的IMG_sobel_3x3_8函数对图像进行Sobel(边缘检测)算法处理,再通过fwrite函数将经处理得到的BMP图像进行保存。

图 33

imglib_threshold案例

案例说明

案例功能:通过bmp_read_header函数读取BMP灰度图像,并调用IMGLIB中的IMG_thr_le2max_8和IMG_thr_le2min_8函数对图像进行二值化算法处理,再通过fwrite函数将经处理得到的BMP图像进行保存。

案例测试

将案例image目录下的BMP灰度图像文件gray.bmp拷贝至程序可执行文件相同目录下。

请运行程序,CCS的Console窗口将会在1~2min内打印如下信息,同时在程序可执行文件相同目录下生成经二值化算法处理得到的图像文件threshold.bmp。

本案例测试耗时1~2min,主要因为系统编程如fread,fwrite函数运行占用时间较长。

图 34


图 35

关键代码

通过fopen、fseek和fread等函数获取图像大小,并读取图像文件。

图 36

根据图像文件头信息申请内存空间。

图 37

读取图像位图信息,并调用IMGLIB中的IMG_thr_le2max_8和IMG_thr_le2min_8函数对图像进行二值化算法处理,再通过fwrite函数将经处理得到的BMP图像进行保存。

图 38

t作为一个优秀的跨平台C++图形用户界面应用程序开发框架,被广泛用于各行各业应用程序的开发。本文中总结了利用Qt开发的部分软件,其中不乏如Goole Earth、咪咕音乐、WPS Office、Mathematica、YY语音、Autodesk Maya等知名软件。下面根据不同类别分别列出。

  • 图形图像类

名称

说明

Adobe Photoshop Album

图像组织应用程序

Google Earth

三维虚拟地图软件

Ipe

自由的矢量图形编辑器

DAZ Studio

三维图形演示/动画应用程序

Maxwell Render

帮助从计算机三维模型数据生成照片级真实感图像的软件包

SciDAVis

跨平台绘图与数据分析程序

3DSlicer

用于可视化和医学图像计算的免费开源软件

VisTrails

科学的工作流管理与可视化系统

  • 音视频类

名称

说明

咪咕音乐

咪咕音乐是中国移动倾力打造的正版音乐播放器

Avidemux

为多用途视频编辑和处理而设计的免费软件程序

CineFX

一款跨平台、开源、免费、视频剪辑,特效与合成套装

Hydrogen

一款专业的音频处理工具

Guitar Pro 6

吉他学习打谱创作软件

Last.fm播放器

著名的互联网音乐社交网站的桌面客户端

LMMS

一个开放源代码的音乐编辑软件

Mixxx

跨平台的开放源代码DJ混音软件

MuseScore

一个WYSIWYG的乐谱编辑器

MythTV

开源的数字视频录制软件

Rosegarden

免费数字音频工作站程序

SMPlayer

跨平台多媒体播放器

UMPlayer

基于Mplayer的美观多媒体播放器

VLC多媒体播放器

一个体积小巧、功能强大的开源媒体播放器

Spotify

音乐流媒体服务

Qjackctl

用以控制JACK声音服务器守护进程,特别为Linux音频桌面架构

  • 文档类

名称

说明

WPS Office

金山公司(Kingsoft)出品的办公软件,与微软Office兼容性良好,个人版免费

Chmcreator

开源的chm开发工具

LyX

使用Qt作为界面的LaTeX软件

PDFedit

自由的PDF编辑器

Scribus

桌面排版软件

Texmaker

一款跨平台的开放源代码LaTeX编辑器

TeXworks

排版系统TeX的图形用户界面

  • 科学计算类

名称

说明

Mathematica

Linux和Windows版本使用Qt作为GUI

Avogadro

高级分子编辑器

CoCoA

交换代数计算软件

Emergent

神经网络模拟器

FEKO

电磁场模拟软件产品

VisIt

一个开源型交互式并行可视化与图形分析工具,用于查看科学数据

Stellarium

一款天文学的自由软件

Quantum GIS

用户界面友好的桌面地理信息系统(GIS)

ImageVis3D

医学影像大数据(G级别)处理

  • 编程开发类

名称

说明

Qt Creator

跨平台的 Qt IDE, 是Qt被Nokia收购后推出的一款新的轻量级集成开发环境

FreeMat

一个自由开源的数值计算环境和编程语言

Gambas

基于基本解释器的自由开发环境

KDELibs

一个许多KDE程序都使用的共享库,如Amarok、K3b、KDevelop、KOffice等

UniversalIndentGUI

帮助用户美化、重新格式化或缩进各种代码的应用程序.

BOUML

免费的uml工具箱

Doxygen

API文件产生器

QSvn

一个跨平台的图形界面的 SVN 客户端程序

Tora

支持多数据库平台的数据库可视化开源工具软件

  • 网络类

名称

说明

YY语音

又名“歪歪语音”,是一个可以进行在线多人语音聊天和语音会议的免费软件。在中国大陆拥有庞大的用户群

Skype

一个使用人数众多的基于P2P的VOIP聊天软件

WordPress

适用于博客到大型网站的 CMS (内容管理系统)

Opera

著名的网页浏览器

Arora

一款跨平台的开源网页浏览器

Eva

Linux版QQ聊天软件

Gadu-Gadu

实时通信软件

Kadu

一个使用Gadu-Gadu协议的波兰即时通讯工具

GNS

Cisco网络模拟器

Psi

一款XMPP网络协议的实时通信软件

qBittorrent

自由的BitTorrent P2P客户端

QupZilla

跨平台的开放源代码的Webkit网页浏览器

Qterm

跨平台的BBS软件

Quassel IRC

跨平台的分布式IRC客户端

TeamSpeak

跨平台的一款团队语音通讯工具

Tlen.pl

波兰人发明的实时通信客户端

Valknut

采用直连协议的 p2p 文件共享软件

VoxOx

统一型的语音、视频聊天软件

wpa supplicant

wifi客户端(client)加密认证工具

Dash Express

支持互联网的个人导航设备

  • 工业软件

名称

说明

Autodesk Maya

3D建模和动画软件

EAGLE

印刷电路板(PCB)设计工具

FreeCAD

自由开源的三维实体和通用设计CAD/CAE

ISE Webpack

由Xilinx开发的针对Windows和Linux的免费EDA工具

QCad

一个用于二维设计及绘图的CAD软件

RealFlow

三维工业流体和动力学模拟器

Nuke

电影特效合成软件

Autodesk MotionBuilder

专业3D角色动画软件

  • 游戏类

名称

说明

Full Tilt Poker

在线扑克程序

PokerTH

德州扑克游戏

刺猬大作战

一个基于百战天虫的开源游戏

Battle.net

暴雪公司开发的游戏对战平台

极品飞车

EA公司出品的著名赛车类游戏

  • 其他类

名称

说明

Xconfig

Linux的Kernel配置工具

VirtualBox

虚拟机软件

AcetoneISO

镜像文件挂载软件

KeePassX

KeePass的多平台端口,它是微软Windows的开源密码管理器

Launchy

一个开放源代码的快捷启动器

Recoll

桌面搜索工具

EiskaltDC++

功能丰富齐全、专业实用的跨平台文件共享软件

GoldenDict

一款开源的词典软件

Bitcoin

比特币