标签: ti-dsp

在指针和指向函数的指针之间进行类型转换时发出警告

我正在将一些C代码移植到TI DSP芯片环境中.我正在努力解决C编译器问题.

我有一个包含指向函数的指针的数据结构.我有一个初始化数据结构的函数.像这样的东西:

typedef void (*PFN_FOO)(int x, int y);

struct my_struct
{
    PFN_FOO pfn;
};

init_struct(struct my_struct *p, void *pfn)
{
    p->pfn = (PFN_FOO)pfn;
}
Run Code Online (Sandbox Code Playgroud)

在Visual Studio和GCC下,这种代码无需投诉即可编译.事实上,因为pfn论证是类型void *我不需要在那里投一个演员; 它会毫无怨言地隐含地施放.

在用于TI DSP芯片的Code Composer Studio中,我收到"警告:无效类型转换"

我的策略是让我的代码在没有警告的情况下编译,所以我想解决这个问题.我尝试了各种各样的铸造.我发现编译器非常高兴,如果我将void *指针指向intfirst,然后将其转换为正确的类型.哎呀!

如果没有编译器抱怨,我怎么能这样做?我是否真的必须转向int关闭编译器?

注意:我特别没有找到"改变init_struct()接受PFN_FOO而不是"的效果的解决方案void *.这适用于这个简化的代码片段,但不适用于实际代码,它构建了可能异构的东西列表.

c casting ti-dsp

6
推荐指数
1
解决办法
5210
查看次数

TMS320C64x程序员的快速入门参考

是编程人员为TMS320C64x编写DSP加速应用程序的快速入门指南吗?

我有一个定制algorythm程序(不是fft或usial过滤),我想用多DSP协处理器加速它.那么,我应该如何修改源以将计算从主CPU转移到DSP?DSP运行代码有什么限制?

我有一些CUDA的经验.在CUDA中,我应该将每个函数标记为设备(内核)的主机,设备或入口点.还有一些功能可以启动内核以及向/从GPU上传/下载数据.CUDA参考手册中描述了设备代码的一些限制.我希望,DSP有类似的界面和文档.

signal-processing interface reference ti-dsp

5
推荐指数
1
解决办法
448
查看次数

TMS320F2812 FatFs f_write 返回 FR_DISK_ERR

我的 SD 卡有问题。我正在使用 R0.10b 版的 FatFs 库来访问 SD 卡。

我的代码:

    // .... //
    FATFS fatfs;
    FIL plik;
    FRESULT fresult,res1,res2,res3,res4,res5;
    UINT zapisanych_bajtow = 0 , br;
    UINT zapianie_bajtow = 0;
    char * buffor = "123456789abcdef\r\n";
    unsigned short int i;

    void main(void) {

    // ... //

       res1 = f_mount(0,&fatfs); // returns FA_OK
        res2 = f_open( &plik, "f721.txt", FA_OPEN_ALWAYS | FA_WRITE ); // returns FA_OK
        if( res2 == FR_OK )
        {
                res3 = f_write( &plik, ( const void * ) buffor, 17, &zapisanych_bajtow …
Run Code Online (Sandbox Code Playgroud)

sd-card ti-dsp

5
推荐指数
1
解决办法
8329
查看次数

TI DSP:连接C++和汇编

我把这个问题发布到了TI的28xx DSP论坛,但没有听到回复,并认为这里可能有人知道.


我知道如何在程序集中编写函数,以便它们是C可调用的; 如果C可调用名称是,foo()则汇编函数被命名_foo().

如果我想在汇编中使用C++并优化类方法怎么办?我怎么做?我假设唯一的主要问题是:

  • 命名
  • 访问"this"指针
  • 以某种方式了解偏移量来访问类成员

如果我不想担心最后两个,那么也许我会写一个静态成员函数并执行此操作:

class MyClass
{
  int x;
  static int _doSomething(int u); // implement this in assembly
public:
  inline void doSomething() { x = _doSomething(x); } 
  // lightweight C++ wrapper to handle the class member / "this" pointer stuff
};
Run Code Online (Sandbox Code Playgroud)

c++ embedded assembly ti-dsp

4
推荐指数
1
解决办法
1279
查看次数

Intel原子或ARM用于繁重的信号处理工作量

我想知道哪个更好(性能)选项:

  1. 获得基于英特尔双核心原子的电路板
  2. 获得基于Arm cortex A9的板(pandaboard等)

我想运行一些轻量级的linux并进行一些非常密集的计算,如图像/视频处理(可能是以后的3D),也可以处理它们上的音频.当然所有的浮点数学.

arm intel-atom omap ti-dsp

2
推荐指数
1
解决办法
642
查看次数

如何为TMS320F2812 DSP编写内存屏障?

我查看了TI C/C++编译器v6.1用户指南(spru514e),但没有找到任何内容.

asm声明在这方面似乎没有提供任何内容,手册甚至警告不要改变变量值(p132).未实现用于声明对变量的影响的GNU扩展(p115).

我也没有找到任何记忆障碍的内在因素(比如__memory_changed()Keil的armcc).

搜索网络或TI论坛也一无所获.

任何其他提示如何进行?

c concurrency memory-barriers ti-dsp texas-instruments

2
推荐指数
1
解决办法
831
查看次数

用于 FP 的 Cortex A9 会胜过 C6000 DSP

我目前使用的是没有硬件 FPU 的 OMAP L138 处理器。我们将使用 FP 密集型算法处理光谱数据,因此 ARM 端将不够用。我不是算法人,而是“动态时间扭曲”(我不知道这是什么意思,不)。最初的性能数字是:

Core i7 Laptop@
2.9GHz :1 秒Raspberry Pi ARM1176 @ 700MHz:12 秒
OMAP L138 ARM926 @ 300MHz:193 秒

更糟糕的是,树莓派大约是我使用的电路板价格的 30%!

我确实有一个 TI C674x,它是 OMAP L138 中的另一个处理器。问题是我是否最好花几周时间尝试:

  • 学习 DSPLINK、互操作库和工具链,更不用说为 Code Composer 或
  • 将 L138 扔掉并转移到像 Pandaboard 这样的 Dual Cortex A9,可能会在此过程中遭受功率损失。

(当我查看 A8 上的 FPU 性能时,它并没有比 Rasp Pi 有所改进,但 Cortex A9 似乎有所改进)。

我明白答案是“视情况而定”。这里的其他人说“你解锁了一个令人难以置信的快速 DSP,如果分配正确的工作,它可以轻松地超越 Cortex-A8”但是对于定义的工作集,我是否最好跳到 A9,即使我不得不购买外部DSP 以后?

arm signal-processing ti-dsp

1
推荐指数
1
解决办法
3008
查看次数