This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] SK-TDA4VM:TDA4 QNX SDK 计时器

Guru**** 2455360 points
Other Parts Discussed in Thread: SK-TDA4VM

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1486597/sk-tda4vm-tda4-qnx-sdk-timer

器件型号:SK-TDA4VM

工具与软件:

我遇到了一个问题。 我调用了系统接口、以创建计时器。 我发现、每次进入计时器时、内存都会增加4K。 下面是我的测试记录:
前提条件:相同的代码。
1.在 Linux 下,线程模式或信号模式都不存在内存泄漏。
2.在 tda4 QNX 下,使用信号时没有内存泄漏,但使用线程时有内存泄漏。
3.我也尝试过其他硬件 QNX ,没有内存泄漏。
因此、我怀疑 TDA4 QNX 可能有问题。 以下是我的源代码、可以将其编译到 bin 中并运行以查看有效效果。

./a.out 线程或 ./a.out 信号

AS_STATS.rss=0x7B (492.000kB)

-------------------------------------------------------

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include


void show_mem()

pid_t pid = getpid();
字符 buff[50]={0};
snprintf (buff、sizeof (buff)、"cat /proc/%d/vmstat | grep as_stats.rss"、pid);
系统(缓存);
}


void * timer_thread_handler (联合 sigval SV){
pthread_date(pthread_self());
printf ("Thread 计时器已过期! 线程 ID:%lu\n"、(unsigned long)pthread_self();
show_mem();
pthread_exit (NULL);
返回 NULL;
}


int create_timer_thread (timer_t * timerid、int interval_ms){
结构 sigevent sev;
结构 itimerspec ITS;


SEV.sigev_notify = SIGEV_THREAD;
sev.sigev_notify_function = timer_thread_handler;
SEV.sigev_notify_attributes = NULL;  
sev.sigev_value.sival_ptr = timerid;

if (timer_create (clock_REALTIME、&sev、timerid)==-1){
perror ("timer_create");
返回-1;
}


its.it_value.tv_sec = interval_ms/1000;  
its.it_value.tv_nsec =(interval_ms % 1000)* 1000000;
its.it_interval.tv_sec = interval_ms/1000;  
its.it_interval.tv_nsec =(interval_ms % 1000)* 1000000;


if (timer_settime(*timerid, 0,&its, NULL)==-1){
perror ("timer_settime");
返回-1;
}

返回0;
}

int thread_main()

timer_t timerid;
if (create_timer_thread (&timerid,1000)==-1){
fprintf (stderr、"Failed to create timer\n");
EXIT (EXIT_FAILURE);
}
printf ("计时器已启动、等待计时器事件...\n");
while (1);
}



timer_t timer_id;


void timer_handler_signal (int signo、siginfo_t *信息、void *上下文){
if (signo == SIGALRM){
printf ("信号计时器过期! 线程 ID:%lu\n"、(unsigned long)pthread_self();
show_mem();
}
}


int create_timer_signal (int initial_sec、int interval_sec、int user_data){
结构 sigevent sev;
结构 itimerspec ITS;
struct sigaction sa;


sa.sa_flags = SA_SIGINFO;
sa.sa_sigaction = timer_handler_signal;
sigemptyset (&sa.sa_mask);
if (sigaction (SIGALRM、&sa、NULL)==-1){
perror ("sigaction");
返回-1;
}


SEV.sigev_notify = SIGEV_SIGNAL;
sev.sigev_signo = SIGALRM;
sev.sigev_value.sival_int = user_data;


if (timer_create (clock_REALTIME、&sev、&timer_id)==-1){
perror ("timer_create");
返回-1;
}


its.it_value.tv_sec = initial_sec;
its.it_value.tv_nsec = 0;
its.it_interval.tv_sec = interval_sec;
its.it_interval.tv_nsec = 0;


if (timer_settime (timer_id、0、&ITS、NULL)==-1){
perror ("timer_settime");
返回-1;
}

返回0;
}

int signal_main(){
int USER_DATA = 42;  
如果(CREATE_TIMER_SIGNAL (1、1、USER_DATA)=1){
fprintf (stderr、"Failed to create timer\n");
返回 EXIT_FAILURE;
}
while (1){
pause();  
}
timer_delete (timer_id);

返回 exit_Success;
}

int main (int argc、char * argv[])

if (strcmp ("thread"、argv[1])=0){
thread_main();
}其他{
signal_main();
}
返回0;
}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    Unknown 说:
    我遇到问题。 我调用了系统接口、以创建计时器。 我发现、每次进入计时器时、内存都会增加4K。 下面是我的测试记录:

    几个问题:

    -您是否正在尝试使用 SK-TDA4VM 板?  
    -其中运行的是什么 TI 软件?
    -我们看到您提到了 QNX、因此请说明您是否正在使用 QNX 的 BSP?  

    注意:TI 在 SK-TDA4VM 电路板上不支持 QNX、因此您在上面的回答将明确说明我们可以提供的支持。
    注:对于任何与 QNX 操作系统相关的查询、您必须联系 BlackBerry QNX。

    谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    https://www.ti.com/tool/PROCESSOR-SDK-J721E

    我使用此 SDK。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    上述 SDK 仅针对 J721E-EVM 进行了验证(请参阅 https://software-dl.ti.com/jacinto7/esd/processor-sdk-qnx-jacinto7/10_01_00_04/exports/docs/overview.html#psdk-qnx-package)。 不针对 SK-TDA4VM 验证提供的 PSDK QNX 版本。

    谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我想可能有同样的问题,这是一个共性、你可以尝试吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为可能有同样的问题、这是一个共性、您能试一下吗?

    我们 不知道你在这里提到了什么共性。

    TI 不支持 QNX OS 查询、因此我们建议您就此联系 QNX。