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.

[参考译文] TDA4VEN-Q1:TDA4VM 的 UART 是否支持非块访问?

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1446889/tda4ven-q1-does-the-uart-of-tda4vm-support-non-block-access

器件型号:TDA4VEN-Q1

工具与软件:

尊敬的专家

我使用的是 TDA4VEN 板、使用 select 函数轮询当前串行端口是否可读、便返回-1。

代码对齐:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
fd = open("/dev/ttyS2", O_RDWR | O_NONBLOCK);
ret = pthread_create(&uart_read_thread,NULL,uart_read_thread_fun,&data);
void *uart_read_thread_fun (void *data)
{
int ThreadFd = fd;
struct timeval WaitTime;
fd_set fds;
int ReadResult=0;
FD_ZERO(&fds);
FD_SET(ThreadFd,&fds);
WaitTime.tv_sec = 0;
WaitTime.tv_usec = 100000;
printf("in read thread\n");
while(1)
{
if(select(ThreadFd+1,&fds,0,0,&WaitTime) > 0)
{
ReadResult = read(ThreadFd,BufForRead,sizeof(BufForRead));
if(ReadResult > 0)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

如果不使用 SELECT 函数并只读取数据、那么它可以读取数据。

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
fd = open("/dev/ttyS2", O_RDWR);
ret = pthread_create(&uart_read_thread,NULL,uart_read_thread_fun,&data);
void *uart_read_thread_fun (void *data)
{
int ThreadFd = fd;
struct timeval WaitTime;
fd_set fds;
int ReadResult=0;
FD_ZERO(&fds);
FD_SET(ThreadFd,&fds);
WaitTime.tv_sec = 0;
WaitTime.tv_usec = 100000;
printf("in read thread\n");
while(1)
{
//if(select(ThreadFd+1,&fds,0,0,&WaitTime) > 0)
//{
ReadResult = read(ThreadFd,BufForRead,sizeof(BufForRead));
if(ReadResult > 0)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

UART 端口不支持非阻塞访问。

这是因为内核驱动程序不支持它吗? 是否有方法进行更正。

SDK 版本:

ti-processor-sdk-linux-adas-j722s-evm-10_00_00_08-Linux-x86-Install.bin   

https://dr-download.ti.com/software-development/software-development-kit-sdk/MD-R9W8pVWsOt/10.00.00.08/ti-processor-sdk-linux-adas-j722s-evm-10_00_00_08-Linux-x86-Install.bin

谢谢。

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

    您好!

    我向我们的内部专家了解了这一点。 反馈是此功能必须来自 TTY 层。 TI UART 驱动程序无法识别阻塞/非阻塞。
    更好的 Linux 论坛问题。

    我将关闭此文件。

    -基尔西

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

    您好!

    感谢您的检查和回复。 我现在结束这个问题。

x 出现错误。请重试或与管理员联系。