<?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>MQX Software SolutionsのトピックRe: getting unhandled interrupt while running telnet task</title>
    <link>https://community.nxp.com/t5/MQX-Software-Solutions/getting-unhandled-interrupt-while-running-telnet-task/m-p/275108#M8504</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Try to allocate more memory for the str. Replace&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_text_macro jive_macro_code _jivemacro_uid_13663499359456261" jivemacro_uid="_13663499359456261"&gt;
&lt;P&gt;char *str;&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;by&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_text_macro _jivemacro_uid_13663499443594598 jive_macro_code" jivemacro_uid="_13663499443594598"&gt;
&lt;P&gt;char str[MAX_LEN];&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;MAX_LEN being maximum number of characters you allow for the str.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 19 Apr 2013 05:41:37 GMT</pubDate>
    <dc:creator>Martin_</dc:creator>
    <dc:date>2013-04-19T05:41:37Z</dc:date>
    <item>
      <title>getting unhandled interrupt while running telnet task</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/getting-unhandled-interrupt-while-running-telnet-task/m-p/275107#M8503</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Infrastructure:&lt;/P&gt;&lt;P&gt;K60 , IAR emmebbed work bench,MQX4.0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Running securitytelnet program , on the shell i have a small code for the application&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_text_macro jive_macro_code _jivemacro_uid_13663507718365158" jivemacro_uid="_13663507718365158"&gt;
&lt;P&gt;int_32 shell_startsource(int_32 argc, char_ptr argv[])&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; boolean&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print_usage, shorthelp = FALSE;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; int_32&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return_code = SHELL_EXIT_SUCCESS;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; char *str;&lt;/P&gt;
&lt;P&gt;const char *str1;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; print_usage = Shell_check_help_request(argc, argv, &amp;amp;shorthelp );&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; if (!print_usage) &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (argc !=1 )&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("Error, invalid number of parameters\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return_code = SHELL_EXIT_ERROR;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print_usage=TRUE;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str=":o1";&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str1="/r";&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #ff0000;"&gt;&amp;nbsp; str=strcat(str,str1);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; openserial();&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; serialwrite(str);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; closeserial();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (print_usage) &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print_usage_simple (shorthelp, argv[0], "sourcestatus");&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; return return_code;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;void openserial(void)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&amp;nbsp; uint_32 flags=0;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; serial_fd =&amp;nbsp; fopen(BSP_DEFAULT_IO_CHANNEL1, 0);&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; ioctl(serial_fd, IO_IOCTL_SERIAL_SET_FLAGS, &amp;amp;flags);&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;void serialwrite(char * data)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_serial_polled_write(serial_fd,data,5);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;void closeserial(void)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&amp;nbsp; fclose(serial_fd);&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;intially telnet server will created and which gives shell login and in that i have shell_startsource command .&lt;/P&gt;&lt;P&gt;The code is running fine till the strcat function , when perform the strcat function , the telent task is going to unhand led interrupt error . inside the strcat when it tries to execute *dp++=*sp++; line it is go it this error and the step is not&amp;nbsp; breaking .&lt;/P&gt;&lt;P&gt;the code of strcat as follows:&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_text_macro jive_macro_code _jivemacro_uid_13663507780904026" jivemacro_uid="_13663507780904026"&gt;
&lt;P&gt;char *&lt;/P&gt;
&lt;P&gt;strcat (char *dest, const char *src)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; char *dp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; char *sp = (char *)src;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((dest != NULL) &amp;amp;&amp;amp; (src != NULL))&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dp = &amp;amp;dest[strlen(dest)];&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (*sp != '\0')&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&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; *dp++ = *sp++;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *dp = '\0';&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return dest;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So please suggest a way to debug this issue and what is causing the telnet task to go unhandled interrupt error. Used the i&lt;SPAN style="background-color: #ffffff; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;"&gt;nstall _int_unexpected_isr() before the strcat function but do not excat way use this function to debug.so please suggest &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;"&gt;snapshot attached:yes&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please use C++ syntax in FULL EDITOR to simplify view of your code. Thank you
Message was edited by: Martin Kojtal&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 18 Apr 2013 19:32:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/getting-unhandled-interrupt-while-running-telnet-task/m-p/275107#M8503</guid>
      <dc:creator>vallinaths</dc:creator>
      <dc:date>2013-04-18T19:32:54Z</dc:date>
    </item>
    <item>
      <title>Re: getting unhandled interrupt while running telnet task</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/getting-unhandled-interrupt-while-running-telnet-task/m-p/275108#M8504</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Try to allocate more memory for the str. Replace&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_text_macro jive_macro_code _jivemacro_uid_13663499359456261" jivemacro_uid="_13663499359456261"&gt;
&lt;P&gt;char *str;&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;by&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_text_macro _jivemacro_uid_13663499443594598 jive_macro_code" jivemacro_uid="_13663499443594598"&gt;
&lt;P&gt;char str[MAX_LEN];&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;MAX_LEN being maximum number of characters you allow for the str.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 19 Apr 2013 05:41:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/getting-unhandled-interrupt-while-running-telnet-task/m-p/275108#M8504</guid>
      <dc:creator>Martin_</dc:creator>
      <dc:date>2013-04-19T05:41:37Z</dc:date>
    </item>
    <item>
      <title>Re: getting unhandled interrupt while running telnet task</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/getting-unhandled-interrupt-while-running-telnet-task/m-p/275109#M8505</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello vallinath s,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;let's find out why did your application invoked unexpected interrupt,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_text_macro jive_macro_code _jivemacro_uid_13663522583717313" jivemacro_uid="_13663522583717313" modifiedtitle="true"&gt;
&lt;P&gt;char *str;&lt;/P&gt;
&lt;P&gt;str = "text";&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="_jivemacro_uid_13663522937499584 jive_text_macro jive_macro_code" jivemacro_uid="_13663522937499584" modifiedtitle="true"&gt;
&lt;P&gt;const char *str2;&lt;/P&gt;
&lt;P&gt;str2 = "text_only";&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What is the difference in those 2? Only in constantness. I assume you wanted to satisfy compiler because strcat is declared as the function expecting a destination as char* and a source as const char*. They both point to a read only memory (a string literal). They are not immutable ! Thus strcat was overwriting memory in your application.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What you need it's writeable memory and sufficient space as well. 2 options available: use stack frame or heap (malloc).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_text_macro jive_macro_code _jivemacro_uid_13663527096091849" jivemacro_uid="_13663527096091849" modifiedtitle="true"&gt;
&lt;P&gt;char str[255] = "text";&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This allocates 255 bytes (explicitly copied to a mutable location (stack) in its declaration and fills first 5 bytes with value text + the terminating character. Be warned if you do not define size of an array, it allocates exactly sufficient bytes for holding the declared string plus one more for the terminating character.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;c0170&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 19 Apr 2013 06:34:07 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/getting-unhandled-interrupt-while-running-telnet-task/m-p/275109#M8505</guid>
      <dc:creator>c0170</dc:creator>
      <dc:date>2013-04-19T06:34:07Z</dc:date>
    </item>
    <item>
      <title>Re: getting unhandled interrupt while running telnet task</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/getting-unhandled-interrupt-while-running-telnet-task/m-p/275110#M8506</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Martin , used malloc to allocate memory for the string array and is working fine ,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thanks again &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 19 Apr 2013 15:46:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/getting-unhandled-interrupt-while-running-telnet-task/m-p/275110#M8506</guid>
      <dc:creator>vallinaths</dc:creator>
      <dc:date>2013-04-19T15:46:38Z</dc:date>
    </item>
    <item>
      <title>Re: getting unhandled interrupt while running telnet task</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/getting-unhandled-interrupt-while-running-telnet-task/m-p/275111#M8507</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Vallinath,&lt;/P&gt;&lt;P&gt;Your *str pointer needed to point to a buffer.&lt;/P&gt;&lt;P&gt;Attached is my working version of your code in the "sectelnet" demo project.&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;David&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 19 Apr 2013 21:04:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/getting-unhandled-interrupt-while-running-telnet-task/m-p/275111#M8507</guid>
      <dc:creator>DavidS</dc:creator>
      <dc:date>2013-04-19T21:04:58Z</dc:date>
    </item>
  </channel>
</rss>

