سؤال

لقد ورثت مشروعًا مضمنًا يتطلب بعض التنميط البسيط للأداء لكل وظيفة. وهو يتألف من Coldfire (MCF5328) بتشغيل uClinux (2.6.17.7-uc1).

لست خبيرًا في Coldfire أو uClinux (أو Linux لهذا الأمر) ، لذا أعذر جهلي.

في نظام التشغيل Windows ، يمكنني ببساطة استخدام رمز الترميز العام للوصول إلى جهاز ضبط الوقت عالي الدقة x86. سجل العداد قبل وبعد ومقارنة الفرق.

لقد علمت أن Linux به عدد من الأشكال المختلفة في QueryPerformanceCounter:

  • clock_gettime / res
  • getnstimeofday
  • ktime_x

أو حتى الوصول إلى عداد الطوابع الزمنية عبر

  • الحصول على الدراجات

لا يتوفر أي منها على إصدار uClinux الذي يعمل به هذا الجهاز. لذلك يبدو أن نظام التشغيل ليس لديه وصول مؤقت عالي الدقة.

هل هذا يعني أن Coldfire نفسها لا توفر مثل هذه الميزة؟ أو هل تركهم مؤلف منفذ uClinux؟ هل يوجد شيء على الجهاز يمكنني استخدامه وكيف يمكنني استخدامه؟

هل كانت مفيدة؟

المحلول 2

I ended up using one of the four DMA Timers on the Coldfire. It was a simple matter to enable the timer as a free-running, non-interrupt generating, counter. This provides a 12.5ns counter (at 80Mhz).

نصائح أخرى

Given how old your kernel is, you may not have support for high-resolution timers.

If you are writing a kernel driver, the APIs are different. If get_cycles() is stubbed out, it probably means your CPU architecture doesn't support a cycle counter. Since your kernel is very old, do_gettimeofday is probably the best you can do, short of writing a driver to directly query some timer hardware.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top