- 博客(114)
- 资源 (5)
- 收藏
- 关注
原创 C++关键字final,override,default,delete
final关键字可以:将class或struct类别声明为不可继承将成员函数声明为不可重载override关键字:声明为重载若不支持重载,则无法通过编译default关键字:switch默认分支声明构造,析构为默认delete关键字:是操作符禁止生成默认函数struct Base{ virtual void foo(int); virtual void bar() final;}struct Sealed final: Base{ S
2021-09-13 16:36:09 338
原创 More Effective C++ Item12 抛出异常
throw obj总是会发生复制(copy constructor),复制总是以对象静态类型为本。谨慎使用throw-by-pointer,因为pointer可能指向局部对象,在离开scope时结果不可预期。try{ //... throw some_obj; // (1)}catch(Obj obj) // (2){ throw obj; // (3)}catch(Obj& obj) // (4){ th
2021-09-08 17:56:08 195
原创 More Effective C++ Item6 自增自减运算符重载
对于int类型变量a可以如下操作++a;a++;--a;a--;++和--分别都有前置式(操作符在前)、后置式(操作符在后)对于自定义类型,++和--的重载需要区分前置式和后置式,如下class Element{public: Element(int value) :value_(value) {} Element& operator++() { ++value_; return *this; } const Element operator++(int)
2021-09-08 11:17:46 207
原创 More Effective C++ Item5 警觉隐式转换
在表达式计算时可能会存在隐式转换,如下template <typename T>class Array{public: Array(int size); T& operator[](int index); T operator[](int index) const;private: //... };Array<int> a(10);Array<int> b(10);// if(a == b[1]) //
2021-09-06 18:13:35 174
原创 Metropolis-Hasting抽样算法
目录Metropolis-Hasting抽样算法1. 随机模拟的基本思想2. 拒绝抽样3. Metropolis-Hastings抽样3.1 引入思想3.2 理论基础:细致平稳条件3.3 M-H算法实现3.4 算法升级3.5 仿真实验Metropolis-Hasting抽样算法1. 随机模拟的基本思想假设我们有一个矩形区域RRR,面积为S0S_0S0。在此区域中,有一个不规则区域MMM,其面积SSS待求。方法1:把不规则区域MMM划分为多个小的规则区域,由这些规则区域的面积总和S′S'S′近似。
2021-07-30 17:43:00 3701 2
原创 MLE(极大似然估计)与MAP(最大后验估计)
目录MLE (Maximum Likelihood Estimation)MAP (Maximum A Posteriori)p(x∣θ)p(x|\theta)p(x∣θ)若 θ\thetaθ是确定值,xxx是变量,则p(x∣θ)p(x|\theta)p(x∣θ)描述了不同的X=xX=xX=x出现的概率 --> 概率函数 probability若 θ\thetaθ是变量,xxx是已知数据,则p(x∣θ)p(x|\theta)p(x∣θ)描述了不同的模型参数下出现这个xxx的概率 --> 似
2021-07-21 18:39:53 293
原创 CCS+C6678LE开发笔记与项目代码汇总
有关C6678LE的一些研究心得,我整理出了一份文档,并且将之前所有相关的博客导出为一本PDF,同时也将一些关键的代码放在了GitHub上。如有需要,请访问这个链接这个链接页面的最后[Download]部分给出了所有的项目代码(GitHub链接)近一年来我多已经很少打理这个博客了,一些回复、留言和私信都没有及时处理,非常抱歉。建议发送邮件(虽然也可能不太及时去处理),邮...
2017-03-01 16:53:15 2730 5
原创 CCS+C6678LE开发记录18:解决EVM网口“DHCP配置无法获取IP”的问题
之前测试过程中曾经遇到如下问题:将DSP的网络IP配置设置为DHCP方式会出现错误,无法获取IP地址,打印信息如下[C66xx_0] Service Status: DHCPC : Enabled : : 000 [C66xx_0] Service Status: DHCPC : Enabled : Running : 000 [C66xx_0]
2015-03-30 18:03:04 3136
原创 CCS+C6678LE开发记录17:多核协作(OpenMP)示例更新
本次更新针对C6678多核图像处理示例mcip_omp_c6678中的一些细节问题进行修复。另外PC端增加了C#版本GUI工具,详情见下图替代了之前的简陋界面(操作稍显麻烦)新的GUI工具操作简便,界面美观,功能也更加强大。首先是打开图像,支持更多格式打开图片之后,支持预览开始传输数据之前请打开DSP
2015-03-27 15:25:38 3653 2
原创 OGRE3D入门探索01:将渲染窗口嵌入到Win32主窗口
从《OGRE3D引擎入门重拾》这篇文章开始,本系列关注OGRE3D渲染引擎及其周边应用。本文以一个简单的示例来说明如何将Ogre的渲染窗口嵌入到另一个父窗口中,为了增加趣味性(就是这么任性哈)我特意增加了FMOD的音乐播放支持。首先将代码贴上来吧///////////////////////////////////////////////////////////////////////
2015-03-23 17:18:05 1921
原创 OGRE3D引擎入门重拾
好久没有再碰过OGRE(食人魔)引擎了,之前一直在探索Irrlicht(鬼火)。最近突然对食人魔重新起了兴致,不如再次开始吧,能学到哪里就那里吧。本文关注OGRE3D引擎1.81.版本的源码编译,然后放送一个简单的示例(加入了IrrKlang音频播放)。如有疑问可取官网,链接戳这里http://www.ogre3d.org/假设在Windows (Win7, Win
2015-03-18 20:59:55 3892
原创 CCS+C6678LE开发记录16:多核协作(OpenMP)示例代码浅析
本文是上一篇的后续。核心代码如下(部分省略)://------------------------------------------------------------------------------void main(void){ //......................................... while(1) { msg_s.id =
2015-03-16 19:10:46 4077 1
原创 CCS+C6678LE开发记录15:多核协作(OpenMP)示例探索
本文解决了该系列09篇中的一个显著bug,同时也是对多核写作图像处理OMP示例的扩充。本系列09篇:CCS+C6678LE开发记录09:(图像)数据处理与传输框架本文根据...\mcsdk_2_01_02_06\demos\image_processing\openmp\c6678l示例进行修改。原示例是DSP通过HTTP网页服务和PC连接传输数据,修改之后进行了“瘦身”,移除所有we
2015-03-16 18:39:38 5257 5
原创 CCS+C6678LE开发记录14:多核协作之OMP与IPC方式的较量
本文针对多核协作的两个Image processing demo进行对比,它们分别是OMP和IPC.其中:OMP=OpenMP,这个demo用到了MailBox邮箱投递IPC=Inter-processor Communication,这个demo用的是MessageQueue消息队列两个demo在测试的时候最大的一个区别是,OMP只需连接core0,而IPC则是master-sl
2015-03-05 16:44:22 3922 6
原创 CCS+C6678LE开发记录13:多核协作图像处理demo测试
本文关注MCSDK目录下的demos\image_processing\ipc demo这个示例的官方Guide参见http://processors.wiki.ti.com/index.php/MCSDK_Image_Processing_Demonstration_Guide测试之前建议将开发板设置为NOBOOT并关闭DHCP开关,如下图所示另外请确保已经安
2015-03-04 16:53:12 5311 2
原创 CCS+C6678LE开发记录12:UIA组件的安装
在安装了CCS 6.0版本的IDE和最新版的MCSDK后似乎一切都很完美,但事实并非如此。当我试图编译SDK附带的image_processing (IPC based) demo时出现如下错误:实际上在导入(Import)这个demo的时候就提示错误这个错误标识需要安装UIA组件,但是CCSv6+MCSDK目录下均没有UIA相关内容。如此判断应该是UIA组
2015-03-04 16:07:46 4076
原创 CCS+C6678LE开发记录11:多核协作(IPC)入门
为更好地发挥C6678的多核性能,需要用到多核协作。幸运的是,我们可以使用官方提供的IPC模块。IPC=Inter-Processor Communication, 核间通信,粗略来说就是多核之间进行信息、数据交换。作为入门篇,本文不打算深入讨论IPC,仅仅列出自带的两个简单示例:Notify和MessageQ.“通知”(Notify)模型“消息队列”(MessageQ)模
2015-03-03 11:00:13 8804 8
原创 为了绕过静态检查而设置的void关键字
这个问题是前不久遗留下来的,现在已经解决了,就贴上来吧。首先我们来看一段代码int cbFxn(SOCKET s);// 在别处实现BOOL udpTransferTask(SOCKET s,UINT32 unused){ //...省略 (void)unused; // 引用1:void (void)cbFxn(s); //
2015-02-15 11:22:45 902
原创 CCS+C6678LE开发记录10:(图像)数据处理与传输框架
探索了这么久也该上一点料,本文关注PCDSP数据处理与传输的简单框架。这个框架其实也很简单,具体描述如下:1.PC端通过ETH0发送(图像)数据到DSP2.DSP收到完整数据后进行处理(Image Processing...)3.DSP端数据处理完毕后将数据发回给PC4.PC端收到发回的处理结果,然后保存下面是一段代码,数据处理执行的操作很简单:对图像像素值取补
2015-02-05 16:24:34 3949 6
转载 TCP/UDP的Socket编程示例
Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。 Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特殊的I/O,Socke
2015-02-05 14:45:30 1136
转载 TCP/UDP协议的Socket编程
一、概述TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议。TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流,TCP套接口是字节流套接口(stream socket)的一种。UDP:用户数据报协议。UDP是一种无连接协议。UDP套接口是数据报套接口(datagram socket)的一种
2015-02-05 14:30:46 1322
转载 socket、tcp、udp、http的认识及区别
网络由下往上分为应用层表示层会话层传输层网络层数据链路层物理层IP 协议对应于网络层,TCP协议对应于传输层,HTTP协议对应于应用层,三者从本质上来说没有可比性,socket则是对TCP/IP协议的封装和应用。可以说,TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据socket是对
2015-02-05 09:40:25 822
原创 音频引擎IrrKlang学习笔记01:播放控制与音效设置
本系列与FMOD系列、Irrlicht系列是并列的。关于IrrKlang,可以在早先的几篇博文中找到踪迹。Irrlicht例程04:创造一个有声世界(上) Irrlicht例程05:创造一个有声世界(下)鬼火(irrlicht)的复燃这几篇博文中已经涉及到IrrKlang的使用,但是本系列是专门研究Audio处理的,因此独立出来。同时也方便与FMOD等进行对比。与F
2015-02-04 16:43:37 3291 1
原创 CCS+C6678LE开发记录09:以太网接口测试续(大块数据传输)
通过网络连接,极大地提高了PC与DSP之间的数据传输速率。在记录06(点此跳转)中给出了一个简单的测试示例,但是那只能传输很少的数据。如果将数据(buffer)尺寸设置为一个较大的值(如2048等)就会出现timeout的错误。在这种情形下更不用说传输一个大文件了,因此我们需要寻找一种解决方案。本文正是为此而展开。核心思想是:1.在PC端,打开文件,分块读取数据到buffe
2015-02-03 11:02:44 4403 20
原创 音频引擎FMOD学习记录02:控制暂停/继续,调节音量,设置声效
这是本系列的第二篇,本文针对上一篇的入门示例进行了简单扩展。扩展内容包括:1.控制播放的暂停/继续2.调节音量大小3.激活/关闭声音特效首先贴几张运行时截图吧初始状态:播放中,音量50%,未开启任何特效按下按键'P'暂停播放暂停状态时再按'P'继续播放每按一次'A'音量增加10%,按4次增加到90%按下‘E'开启回声效
2015-02-01 21:45:45 6984
原创 音频引擎FMOD学习记录01:入门
如果说到游戏音效,我想大多数人应该知晓FMOD本系列将关注音效处理库FMOD,本文仅作为一个简单的开始。可能的话,我会将FMOD与其他开源库如OpenAL/IrrKlang/SDL进行比较。FMOD官网戳这里http://www.fmod.org/我们先下载用于Windows平台的API(准确的说应该是SDK)下载的是一个安装包,安装完成之后将相应路径(inc和
2015-01-30 22:46:23 7934
原创 CCS+C6678LE开发记录08:以太网接口测试示例之代码研究
本文是针对CCS+C6678LE开发记录06:以太网接口测试的后续研究。在已经通过测试之后我想研究一下测试用例的实现原理,至少应该明白大致原理。为了方便贴代码,我将原始实例的代码做了精简;为了探索其原理,我修改/添加了少量代码。
2015-01-30 11:10:45 7913 5
原创 CCS+C6678LE开发记录07:DSP网页测试
这是前一个示例的进阶版,也是官方自带的NDK示例,在C6678中加载网页内容,然后通过PC访问网页。截图显示在PC的Web浏览器中打开http://169.254.11.123/之后显示的页面,初一看,碉堡了!类似上一个示例,我们需要修改IP地址,硬件配置一样(NOBOOT模式,静态IP地址)char *LocalIPAddr = "169.254.11.123";这么酷炫的D
2015-01-29 17:15:29 2208 1
原创 CCS+C6678LE开发记录06:以太网接口测试
这期间一直在摸索着如何通过C6678的以太网接口传输数据,但一直不知道如何下手。我想测试C6678的以太网接口(以下简称ETH),一方面是因为ETH从没测试过,另一方面是因为USB太慢了。用数据来说话吧,我写了一个简单的测试程序,通过USB连接PC在CCS中调试(单核运行),读取一张BMP图片然后做简单处理。对于一张400*300像素大小的图片,读取用时半分钟以上,如果是大尺寸图片,例如1024*768可能需要几分钟。实在是太慢了,主要是慢在USB传输过程,因为数据传输完成后进行的处理速度很快。这
2015-01-29 15:22:14 9920 12
原创 复数(Complex)类及FFT的C++实现
===○专业造轮子○===因为一些原因需要额外编写傅里叶变换(Fourier Transform)的实现代码,而傅里叶变换需要复数的支持,因此额外编写了一个复数类。首先是复数类Complex的设计,很简单,数据域只有实部和虚部,为了方便外部操作,将数据设置为公开访问,大致如下classComplex{public: Complex();
2015-01-16 19:13:49 7676 7
原创 CCS+C6678LE开发记录05:编译并使用开源JPEG图像(解)压缩库libjpeg
本文记录了libjpeg在TMS320C6678上的移植过程并给出了一个完整的示例。
2014-12-31 15:52:30 2846 1
原创 开源JPEG图像(解)压缩库libjpeg的编译与使用示例(以VS2010为例)
本文将关注IJG提供的JPEG图像压缩/解压缩库的编译与初步使用。
2014-12-29 17:22:07 5401 1
原创 读取Bitmap(设备无关位图)数据的经典C代码
纯粹C语言读取Bitmap图像的完整示例。Bitmap文件结构分析,代码详解。示例GitHub在这里https://github.com/fengyhack/CodeSnippet/tree/Bitmapper
2014-12-23 16:30:05 3089 1
原创 CCS+C6678LE开发记录03:常规入门HeloWorld
又见Hello World,呵呵。本文记录了新建一个HelloWorld的C语言示例程序然后在C6678的CPU上调试成功的全过程。
2014-12-15 16:41:24 5483
原创 CCS+C6678LE开发记录02:CCS的安装
目前尚未测试CCSv6版本,如果测试可行我会记录下来分享给大家,另外关于CCS的详细介绍可以参考TI的官方文档或者其他资料。订购的开发板评估模块附带有一张光盘,光盘里有CCSv5的安装文件,可以直接安装。也可以在TI的官网或者IC论坛等地方去下载,注意license是要收费的。根据已有的硬件C6678LE(仿真器XDS560v2)来安装CCSv5开发环境,下面只提示一些关键的步骤,其与步骤按照默认设置即可。
2014-12-15 16:27:26 2734 2
原创 CCS+C6678LE开发记录01:开箱图赏
CCSv5是指TexasInstrument(简称TI,中文“德州仪器”)的Code Composer Studio version 5.2.1C6678是TI的C6000系列高性能DSP(DigitalSignal Processing,数字信号处理)芯片先放几张开箱试验图吧。
2014-12-15 16:18:43 3068 4
原创 Radon变换及其Matlab代码实现
Radon变换和Hough变换类似,最初适用于检测图像中的直线(例如笔直的街道边沿、房屋的边沿、笔直的电线等)。关于Hough变换,可以参考OpenCV中的代码和示例(其实除了Hough Lines还有Hough Circles等等变种),此处不再赘述。关于Radon变换,可以参考wiki或者百科,或者网络上的其他资料介绍。这里做一个简单的总结。首先准备一张灰度化的图像,及黑白图像
2014-12-11 21:36:27 38395 16
原创 如何设置Visual Studio的项目和解决方案目录(环境目录:Include, Library, Executable, etc.)
貌似从VS2008版本开始,Visual Studio的后续版本在进行项目和解决方案目录设置已经被“弃用”在此之前很长一段时间,我习惯于自己添加一个props文件,但是每次这样操作感觉有些麻烦有没有一种“一劳永逸”的办法来设置【项目和解决方案的目录】,答案是“有!!!”而且这个方法很简单!
2014-12-11 16:44:38 4079
原创 在Windows平台VS2013环境下编译Boost库
下载boost代码(此文首次编辑时,Boost的最新版本为1.57.0)需要下载请访问官网http://www.boost.org/或者SourceForge页面https://sourceforge.net/projects/boost/我下载的是boost_1_57_0.zip下载完之后解压(可以按照个人喜好设置解压路径)请保证目标位置所在磁盘有足够空间,因为编译后产生了大量的中间文件,最后将占用近2G的空间
2014-12-11 16:19:03 1970
DHCPSRV(动态分配IP地址)
2015-03-30
Google Earth 截图助手(C# WinForm)
2014-09-04
GoogleEarth COM API (IApplicationGE wrapper class)
2014-08-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人