<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic about uart receive data in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/about-uart-receive-data/m-p/1496013#M193076</link>
    <description>&lt;P&gt;Hi,all:&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; cpu: imx6D&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; board: sabresd like custom&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; linux: rel_imx_4.14.98_2.3.0 and&amp;nbsp;rel_imx_5.4.70_2.3.7&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; test UART recvice data: nonblock mode, baud:921200bps, two line:rxd and txd.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; slave will send out&amp;nbsp;3928 bytes data everytime&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; problem:&amp;nbsp;4.14.98 can receive all 3928 bytes data every one read.&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; but,&amp;nbsp;5.4.70_2.3.7 can't, may be read two or three times to finish all data, log like below&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; so, that is why?&lt;/P&gt;&lt;P&gt;4.14 log:&lt;/P&gt;&lt;P&gt;DEBUG 2022-07-26 20:23:41.123 3928 receive: 3928 offset: 0&lt;BR /&gt;DEBUG 2022-07-26 20:23:41.123 0 receive: 0 offset: 3928&lt;BR /&gt;DEBUG 2022-07-26 20:23:41.128 rsp 0x38&lt;BR /&gt;DEBUG 2022-07-26 20:23:41.285 3928 receive: 3928 offset: 0&lt;BR /&gt;DEBUG 2022-07-26 20:23:41.285 0 receive: 0 offset: 3928&lt;BR /&gt;DEBUG 2022-07-26 20:23:41.290 rsp 0x38&lt;/P&gt;&lt;P&gt;5.4 log:&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2048 receive: 2048 offset: 0&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.139 0 receive: 0 offset: 2048&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.151 frame :exlen=3928 but 2048&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.158 1024 receive: 1024 offset: 2048&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.158 0 receive: 0 offset: 3072&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.164 frame :exlen=3928 but 3072&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.170 856 receive: 856 offset: 3072&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.170 0 receive: 0 offset: 3928&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.178 rsp 0x38&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.325 2048 receive: 2048 offset: 0&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.325 0 receive: 0 offset: 2048&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.333 frame :exlen=3928 but 2048&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.341 1024 receive: 1024 offset: 2048&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.341 0 receive: 0 offset: 3072&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.347 frame :exlen=3928 but 3072&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.354 856 receive: 856 offset: 3072&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.354 0 receive: 0 offset: 3928&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.362 rsp 0x38&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; code:&lt;/P&gt;&lt;P&gt;if (SP_OK == sp_wait(event_set, 0)) {&lt;BR /&gt;&amp;nbsp; &amp;nbsp; do {&lt;BR /&gt;&amp;nbsp; &amp;nbsp; // kernel 5.10 can only read out 2048 bytes max&lt;BR /&gt;&amp;nbsp; &amp;nbsp; gint new_arrived = sp_input_waiting(port);&lt;BR /&gt;&amp;nbsp; &amp;nbsp; bytes_waiting = sp_nonblocking_read(port, &amp;amp;poll_buf[offset], new_arrived);&lt;BR /&gt;&amp;nbsp; &amp;nbsp; zlog_debug(zl, "%d receive: %d offset: %d", new_arrived, bytes_waiting, offset);&lt;BR /&gt;&amp;nbsp; &amp;nbsp; if (bytes_waiting &amp;gt; 0) {&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; offset += bytes_waiting;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; }&lt;BR /&gt;&amp;nbsp; &amp;nbsp; } while (bytes_waiting &amp;gt; 0);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;</description>
    <pubDate>Wed, 27 Jul 2022 05:00:45 GMT</pubDate>
    <dc:creator>kevinli</dc:creator>
    <dc:date>2022-07-27T05:00:45Z</dc:date>
    <item>
      <title>about uart receive data</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/about-uart-receive-data/m-p/1496013#M193076</link>
      <description>&lt;P&gt;Hi,all:&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; cpu: imx6D&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; board: sabresd like custom&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; linux: rel_imx_4.14.98_2.3.0 and&amp;nbsp;rel_imx_5.4.70_2.3.7&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; test UART recvice data: nonblock mode, baud:921200bps, two line:rxd and txd.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; slave will send out&amp;nbsp;3928 bytes data everytime&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; problem:&amp;nbsp;4.14.98 can receive all 3928 bytes data every one read.&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; but,&amp;nbsp;5.4.70_2.3.7 can't, may be read two or three times to finish all data, log like below&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; so, that is why?&lt;/P&gt;&lt;P&gt;4.14 log:&lt;/P&gt;&lt;P&gt;DEBUG 2022-07-26 20:23:41.123 3928 receive: 3928 offset: 0&lt;BR /&gt;DEBUG 2022-07-26 20:23:41.123 0 receive: 0 offset: 3928&lt;BR /&gt;DEBUG 2022-07-26 20:23:41.128 rsp 0x38&lt;BR /&gt;DEBUG 2022-07-26 20:23:41.285 3928 receive: 3928 offset: 0&lt;BR /&gt;DEBUG 2022-07-26 20:23:41.285 0 receive: 0 offset: 3928&lt;BR /&gt;DEBUG 2022-07-26 20:23:41.290 rsp 0x38&lt;/P&gt;&lt;P&gt;5.4 log:&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2048 receive: 2048 offset: 0&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.139 0 receive: 0 offset: 2048&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.151 frame :exlen=3928 but 2048&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.158 1024 receive: 1024 offset: 2048&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.158 0 receive: 0 offset: 3072&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.164 frame :exlen=3928 but 3072&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.170 856 receive: 856 offset: 3072&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.170 0 receive: 0 offset: 3928&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.178 rsp 0x38&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.325 2048 receive: 2048 offset: 0&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.325 0 receive: 0 offset: 2048&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.333 frame :exlen=3928 but 2048&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.341 1024 receive: 1024 offset: 2048&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.341 0 receive: 0 offset: 3072&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.347 frame :exlen=3928 but 3072&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.354 856 receive: 856 offset: 3072&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.354 0 receive: 0 offset: 3928&lt;BR /&gt;DEBUG 2022-07-27 09:31:23.362 rsp 0x38&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; code:&lt;/P&gt;&lt;P&gt;if (SP_OK == sp_wait(event_set, 0)) {&lt;BR /&gt;&amp;nbsp; &amp;nbsp; do {&lt;BR /&gt;&amp;nbsp; &amp;nbsp; // kernel 5.10 can only read out 2048 bytes max&lt;BR /&gt;&amp;nbsp; &amp;nbsp; gint new_arrived = sp_input_waiting(port);&lt;BR /&gt;&amp;nbsp; &amp;nbsp; bytes_waiting = sp_nonblocking_read(port, &amp;amp;poll_buf[offset], new_arrived);&lt;BR /&gt;&amp;nbsp; &amp;nbsp; zlog_debug(zl, "%d receive: %d offset: %d", new_arrived, bytes_waiting, offset);&lt;BR /&gt;&amp;nbsp; &amp;nbsp; if (bytes_waiting &amp;gt; 0) {&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; offset += bytes_waiting;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; }&lt;BR /&gt;&amp;nbsp; &amp;nbsp; } while (bytes_waiting &amp;gt; 0);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;</description>
      <pubDate>Wed, 27 Jul 2022 05:00:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/about-uart-receive-data/m-p/1496013#M193076</guid>
      <dc:creator>kevinli</dc:creator>
      <dc:date>2022-07-27T05:00:45Z</dc:date>
    </item>
  </channel>
</rss>

