<?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 Re: sqrt function with hard FPU instrustion in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/sqrt-function-with-hard-FPU-instrustion/m-p/350511#M17280</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It looks like you have not enabled the floating point unit?&lt;/P&gt;&lt;P&gt;Add this code to your application&lt;/P&gt;&lt;P&gt;void vPortEnableVFP(void) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* The FPU enable bits are in the CPACR. */&lt;/P&gt;&lt;P&gt;&amp;nbsp; __asm volatile (&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&amp;nbsp; ldr.w r0, =0xE000ED88&amp;nbsp; \n" /* CAPCR, 0xE000ED88 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&amp;nbsp; ldr r1, [r0]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \n" /* read CAPR */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&amp;nbsp; orr r1, r1, #(0xf&amp;lt;&amp;lt;20) \n" /* enable CP10 and CP11 coprocessors */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&amp;nbsp; str r1, [r0]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \n" /* store to new value back */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; : /* no output */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; : /* no input */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; : "r0","r1" /* clobber */&lt;/P&gt;&lt;P&gt;&amp;nbsp; );&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;and call it in main() as the first thing.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Erich&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 17 Jan 2015 11:33:54 GMT</pubDate>
    <dc:creator>BlackNight</dc:creator>
    <dc:date>2015-01-17T11:33:54Z</dc:date>
    <item>
      <title>sqrt function with hard FPU instrustion</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/sqrt-function-with-hard-FPU-instrustion/m-p/350508#M17277</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Dear Sir&lt;/P&gt;&lt;P&gt;K60 microcontroller has inbuit FPU, So it support floating point instuction by hard ware itself rather than softcode&lt;/P&gt;&lt;P&gt;I am using KDS for K60&amp;nbsp; and i using sqrtf() function in .list file it shows software root function. as below&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;****&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;b_out = sqrtf(a);&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp; 82&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; &lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;.loc 1 82 0 discriminator 1&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp; 83 0036 40F20003&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;movw&lt;/TD&gt;&lt;TD&gt;r3, #:lower16:a&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp; 84 003a C0F20003&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;movt&lt;/TD&gt;&lt;TD&gt;r3, #:upper16:a&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp; 85 003e D3ED007A&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;flds&lt;/TD&gt;&lt;TD&gt;s15, [r3]&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp; 86 0042 B0EE670A&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;fcpys&lt;/TD&gt;&lt;TD&gt;s0, s15&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp; 87 0046 FFF7FEFF&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;bl&lt;/TD&gt;&lt;TD&gt;sqrtf&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp; 88 004a F0EE407A&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;fcpys&lt;/TD&gt;&lt;TD&gt;s15, s0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp; 89 004e 40F20003&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;movw&lt;/TD&gt;&lt;TD&gt;r3, #:lower16:b_out&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp; 90 0052 C0F20003&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;movt&lt;/TD&gt;&lt;TD&gt;r3, #:upper16:b_out&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp; 91 0056 C3ED007A&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;fsts&lt;/TD&gt;&lt;TD&gt;s15, [r3]&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp; 83:../Sources/main.c ****&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;timecount = timecount+1.2;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1.can somebody say how to invoke floting instuction ?&lt;/P&gt;&lt;P&gt;2. is possible to do square root by excecuting sqrt hardware instruction? if yes then how.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 16 Jan 2015 06:49:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/sqrt-function-with-hard-FPU-instrustion/m-p/350508#M17277</guid>
      <dc:creator>MK60FX512</dc:creator>
      <dc:date>2015-01-16T06:49:55Z</dc:date>
    </item>
    <item>
      <title>Re: sqrt function with hard FPU instrustion</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/sqrt-function-with-hard-FPU-instrustion/m-p/350509#M17278</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;In the compiler settings, make sure you have these options set:&lt;/P&gt;&lt;P&gt;&lt;IMG alt="" class="jiveImage" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_0.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/48403iC6152BC92F76B3B2/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_0.png" alt="pastedImage_0.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Erich&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 16 Jan 2015 08:31:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/sqrt-function-with-hard-FPU-instrustion/m-p/350509#M17278</guid>
      <dc:creator>BlackNight</dc:creator>
      <dc:date>2015-01-16T08:31:10Z</dc:date>
    </item>
    <item>
      <title>Re: Re: sqrt function with hard FPU instrustion</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/sqrt-function-with-hard-FPU-instrustion/m-p/350510#M17279</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;There are option of setting FPU type whether hard or soft in KDS but if i set "Toolchaing default" then it is taking as software and generating branch&amp;nbsp; and software code without any FPU instrucation and not giving any error&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;but I set as&lt;/P&gt;&lt;TABLE border="1" class="jiveBorder" style="border: 1px solid rgb(0, 0, 0); width: 100%;"&gt;&lt;TBODY&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;mfloat-abi=hard&lt;/P&gt;&lt;P&gt;mfpu=fpv4-sp-d16&lt;/P&gt;&lt;P&gt;from&amp;nbsp; project setting then while running it is giving Hard fault and haging at &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PE_ISR(Cpu_Interrupt)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* This code can be changed using the CPU component property "Build Options / Unhandled int code" */&lt;/P&gt;&lt;P&gt;&amp;nbsp; PE_DEBUGHALT();&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;but same thing i tried in CW10/6 it is working and it generate FSQRTS instruction.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please help to sort out issue of KDS.&lt;/P&gt;&lt;P&gt;Thanks and regards&lt;/P&gt;&lt;P&gt;Bipin&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 16 Jan 2015 11:16:04 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/sqrt-function-with-hard-FPU-instrustion/m-p/350510#M17279</guid>
      <dc:creator>MK60FX512</dc:creator>
      <dc:date>2015-01-16T11:16:04Z</dc:date>
    </item>
    <item>
      <title>Re: sqrt function with hard FPU instrustion</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/sqrt-function-with-hard-FPU-instrustion/m-p/350511#M17280</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It looks like you have not enabled the floating point unit?&lt;/P&gt;&lt;P&gt;Add this code to your application&lt;/P&gt;&lt;P&gt;void vPortEnableVFP(void) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* The FPU enable bits are in the CPACR. */&lt;/P&gt;&lt;P&gt;&amp;nbsp; __asm volatile (&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&amp;nbsp; ldr.w r0, =0xE000ED88&amp;nbsp; \n" /* CAPCR, 0xE000ED88 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&amp;nbsp; ldr r1, [r0]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \n" /* read CAPR */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&amp;nbsp; orr r1, r1, #(0xf&amp;lt;&amp;lt;20) \n" /* enable CP10 and CP11 coprocessors */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&amp;nbsp; str r1, [r0]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \n" /* store to new value back */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; : /* no output */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; : /* no input */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; : "r0","r1" /* clobber */&lt;/P&gt;&lt;P&gt;&amp;nbsp; );&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;and call it in main() as the first thing.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Erich&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 17 Jan 2015 11:33:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/sqrt-function-with-hard-FPU-instrustion/m-p/350511#M17280</guid>
      <dc:creator>BlackNight</dc:creator>
      <dc:date>2015-01-17T11:33:54Z</dc:date>
    </item>
    <item>
      <title>Re: sqrt function with hard FPU instrustion</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/sqrt-function-with-hard-FPU-instrustion/m-p/350512#M17281</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;As i was using KDS but because all this problem again i started to use CW10.6 with GCC compiler instead of freescale compiler&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In this case float multiplication is generting Instruction like only with "f" only&amp;nbsp; with GCC compiler.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;.loc 1 134 0&lt;/P&gt;&lt;P&gt;flds s15, [r5, #0]&lt;/P&gt;&lt;P&gt;fmuls s14, s15, s17&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;fcpys s0, s16&lt;/P&gt;&lt;P&gt;fmacs s0, s15, s14&lt;/P&gt;&lt;P&gt; movw r2, #:lower16:.LANCHOR1&lt;/P&gt;&lt;P&gt; movt r2, #:upper16:.LANCHOR1&lt;/P&gt;&lt;P&gt; fsts s0, [r2, #0]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;but in freescale compiler , it was generating with starting of "V" like&amp;nbsp; vmov.F32 &lt;/P&gt;&lt;P&gt;so the above instruction instruction with starting of "f" like fcpys is correct ????&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;but still it is generating instruction both fsqrt and also branch of sqrt like follow&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;138:../Sources/main.c ****&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;dummy_float = sqrtf(dummy_float);&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt; 181&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; &lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;.loc 1 138 0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt; 182 0078 F1EEC00A&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;fsqrts&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;s1, s0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt; 183 007c F4EE600A&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;fcmps&lt;/TD&gt;&lt;TD&gt;s1, s1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt; 184 0080 F1EE10FA&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;fmstat&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt; 185 0084 03D0&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;beq&lt;/TD&gt;&lt;TD&gt;.L4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt; 186 0086 FFF7FEFF&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;bl&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;sqrtf&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt; 187&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; &lt;/TD&gt;&lt;TD&gt;.LVL14:&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt; 188 008a F0EE400A&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;fcpys&lt;/TD&gt;&lt;TD&gt;s1, s0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt; 189&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; &lt;/TD&gt;&lt;TD&gt;.L4:&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt; 190 008e 40F20003&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;movw&lt;/TD&gt;&lt;TD&gt;r3, #:lower16:.LANCHOR1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt; 191 0092 C0F20003&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;movt&lt;/TD&gt;&lt;TD&gt;r3, #:upper16:.LANCHOR1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt; 192 0096 C3ED000A&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;fsts&lt;/TD&gt;&lt;TD&gt;s1, [r3, #0]&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;so in above instruction sqrt is executing with FPU or it is software execution.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please Help&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 16 Mar 2015 05:45:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/sqrt-function-with-hard-FPU-instrustion/m-p/350512#M17281</guid>
      <dc:creator>MK60FX512</dc:creator>
      <dc:date>2015-03-16T05:45:11Z</dc:date>
    </item>
  </channel>
</rss>

