以前,我们学C语言的时候,多多少少都查过一些标准库函数吧。这里介绍查找C语言的标准库函数的两种方法:一种方法是直接到http://www.cplusplus.com这个网站上去查看:
这里覆盖了C语言标准库中的所有函数,给出了每个函数的介绍并且都给出了具体的用法示例,比如:
只不过都是英文的说明,可见英文的重要性。
另一种方法是,找一些离线的文档,网上有不少人整理了一些离线的文档,比如.chm格式(已编译的帮助文件)的文档:
里面大概是这样子的:
也可以很方便的查找每个函数的用法,但是,这里面的不是很全,所以查找C标准库函数还是建议到http://www.cplusplus.com上面去查找。
本文分享的重点就是.chm文件的制作。最近需要对自己的一些代码做一些整理,发现整理成.chm文件是个不错的选择,.chm文件可以根据我们的代码生成,下面把生成.chm文件的方法分享给大家。
需要三个工具:doxygen安装包、graphviz安装包、htmlhelp安装包。其中doxygen是一种开源跨平台的文档系统,doxygen可以从一套归档源文件开始,生成HTML格式的在线类浏览器,或离线的LATEX、RTF参考手册。
doxygen可以生成好几种格式的文档,要生成.chm格式的手册就必须安装htmlhelp,要生成关系图必须安装依graphviz。这个个工具的获取方法:
(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
链接:https://pan.baidu.com/s/1gsJxkGsoO0ncy0GGM6PyQw 提取码:3754
若链接失效可联系我。
下载的都是.exe格式的可执行文件,就按平时安装软件的方法安装件就可以了。但是,需要记住graphviz与htmlhelp的安装路径,后面使用Doxygen时需要用到。
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;
}
所有的函数都使用这样统一格式的注释。
下面看一下我们生成的.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”。
案例功能:调用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
案例功能:调用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
案例功能:调用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中的DSPF_sp_mat_mul函数,将矩阵A与矩阵B相乘,并将结果储存在矩阵C中。
请运行程序,CCS的Console窗口将会打印运算结果。
图 24
图 25
通过SIZE指定矩阵大小。
图 26
初始化矩阵A和矩阵B。
图 27
调用DSPF_sp_mat_mul函数进行矩阵相乘运算。
图 28
案例功能:通过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
案例功能:通过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 | 比特币 |
*请认真填写需求信息,我们会在24小时内与您取得联系。