From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <5347DF09.9080905@xenomai.org> Date: Fri, 11 Apr 2014 14:24:41 +0200 From: Gilles Chanteperdrix MIME-Version: 1.0 References: <5347D5BB.1070107@mitrol.it> <5347D6E0.2030805@xenomai.org> <5347DCCC.3040801@mitrol.it> In-Reply-To: <5347DCCC.3040801@mitrol.it> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Xenomai] arm imx6 and hardware FPU List-Id: Discussions about the Xenomai project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Minazzi Cc: xenomai@xenomai.org On 04/11/2014 02:15 PM, Paolo Minazzi wrote: > Il 11/04/2014 13.49, Gilles Chanteperdrix ha scritto: >> On 04/11/2014 01:44 PM, Paolo Minazzi wrote: >>> Hi to all, >>> I'm trying to test my imx6 with xenomai 2.6.3. >>> I use the linaro cross-compiler that uses the hardware floating point. >>> >>> I made a simple floating point test. >>> >>> If I use two non-realtime user-space tasks the test works OK and I have >>> no errors in calculations. >>> This means that compiler and hardware works well. >>> >>> But I I use two realtime user-space tasks I have errors in calculations. >>> Real-time tasks are created with rt_task_create(&demo, "demo", 0, 99, >>> T_FPU); >>> >>> >>> This is my kernel config >>> ============================================ >>> ... >>> # >>> # Machine >>> # >>> CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH=y >>> CONFIG_IPIPE_WANT_ACTIVE_MM=y >>> CONFIG_XENO_HW_FPU=y >>> CONFIG_XENO_HW_UNLOCKED_SWITCH=y >>> ... >>> # >>> # At least one emulation must be selected >>> # >>> CONFIG_VFP=y >>> CONFIG_VFPv3=y >>> CONFIG_NEON=y >>> CONFIG_VFP_3_2_BACKPORT=y >>> ... >>> ============================================ >>> >>> Is it possible to use ***hardware floating point*** with realtime >>> user-space tasks ? >> >> Yes, it should be. Do you get the same issue when running both the >> switchtest and switchtest -s 1000 tests? Do you have the same issue >> with the I-pipe patch for Linux 3.8? >> >> > / # ./switchtest -s 1000 > == Testing FPU check routines... > d0: 1 != 2 > d1: 1 != 2 > d2: 1 != 2 > d3: 1 != 2 > d4: 1 != 2 > d5: 1 != 2 > d6: 1 != 2 > d7: 1 != 2 > d8: 1 != 2 > d9: 1 != 2 > d10: 1 != 2 > d11: 1 != 2 > d12: 1 != 2 > d13: 1 != 2 > d14: 1 != 2 > d15: 1 != 2 > == FPU check routines: OK. > > / # ./switchtest > == Testing FPU check routines... > d0: 1 != 2 > d1: 1 != 2 > d2: 1 != 2 > d3: 1 != 2 > d4: 1 != 2 > d5: 1 != 2 > d6: 1 != 2 > d7: 1 != 2 > d8: 1 != 2 > d9: 1 != 2 > d10: 1 != 2 > d11: 1 != 2 > d12: 1 != 2 > d13: 1 != 2 > d14: 1 != 2 > d15: 1 != 2 > == FPU check routines: OK. > > As you can see the test seems OK. > But If I understand correctly switchtest is not a real-time test. You do not understand correctly. You should run switchtest & switchtest -s 1000 And let them run for some time. > I see the problem If I use my floating point test. > I try to calculate sin(2x). > Then I claculate 2*sin(x)*cos(x). > They should be similar. But sometime they are very different ===> fpu error > > > I have kerne 3.0.35. > For me it is not so easy try 3.8. How is that? To test xenomai you do not need all the drivers, just the uart. -- Gilles.