اطلاعیه

Collapse
No announcement yet.

سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

Collapse
این موضوع برجسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

    نوشته اصلی توسط MOSTEF
    سلام، آقا من به مثال های keil وقتی یه تسک اضافه می کنم هنگ میکنه و اکسپشن Hardfault میده! :angry: کسی با این مشکل برخورد کرده؟
    سلام

    تنظیمات RTX درست هست؟ stack به اندازه کافی قرار میدی؟ دقیق کجا قفل میکنه؟

    دیدگاه


      پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

      نوشته اصلی توسط mohammadh1387
      سلام

      تنظیمات RTX درست هست؟ stack به اندازه کافی قرار میدی؟ دقیق کجا قفل میکنه؟
      تو تنظیمات RTX تعداد تسک ها رو یکی اضافه کردم و سایز استک رو هم دوبرابر کردم بازم حل نشد. دقیقا تو تابع add task هنگ می کنه!!

      دیدگاه


        پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

        نوشته اصلی توسط MOSTEF
        سلام، آقا من به مثال های keil وقتی یه تسک اضافه می کنم هنگ میکنه و اکسپشن Hardfault میده! :angry: کسی با این مشکل برخورد کرده؟
        سلام پروژتو پ کن!
        راه اندازی enc28j60 و enc424j600 برای RL-TCPnet

        راه اندازیks0108 با emwin

        راه اندازی lcd7 اینچ با داریور داخلی stm32f429

        دیدگاه


          پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

          ببخشید من همون اول کار به یه نکته بر خوردم :redface:
          اول اینکه فایل config تو اون آدرسی که گفتید نبود. ولی توی هلپ کیل که دیدم توی اینجا تونستم پیداش کنم : D:\Program Files\Keil\ARM\RL\RTX\Config
          البته میکرو های دیگه بود ولی SAM7S نبود. الان من از اینجا بردارم مشکلی نیست ؟ چرا اونجا نبود ؟ مربوط به ورژن keil میشه ؟ آخه اینا دیگه فایل اسمبلی هم کنارش نداشت
          غفلت از يار, گرفتار شدن هم داد
          از شما دور شدن, زار شدن هم دارد
          هرکه از چشم بي افتاد, محلش ندهند
          عبد آلوده شدن, خوار شدن هم دارد
          عيب از ماست, که هر سال نمي بينيمت چشم بيمار شده, تار شدن هم دارد ...

          دیدگاه


            پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

            سلا دوستان من خیلی با سیستم عاملهی مختلف کار کردم و مشکلاتشونو با هزار مصیبت حل کردم ولی بین همه اینه یکی بود که فوق العاده بود و خیلی سریع پورت میشه coOS که open هم هست و خیلی امکانات خوبی هم داره و من خودم با keil , coocox امتحانش کردم وعالی جواب داده
            The losers find problem in every answer but the winners find an answer in every problem

            FETAMAKER

            دیدگاه


              پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

              سلام دوستان
              من کل پست هایی که تو آموزش بوده رو به صورت یه pdf آماده کردم تا جم و جور تر باشه،
              امیدوارم بدرد بخوره
              http://s6.picofile.com/file/8190575218/%D8%B3%DB%8C%D8%B3%D8%AA%D9%85_%D8%B9%D8%A7%D9%85% D9%84_%D8%A8%DB%8C_%D8%AF%D8%B1%D9%86%DA%AF_RTX_%D 8%A8%D8%B1%D8%A7%DB%8C_ARM7.pdf.html

              دیدگاه


                پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

                سلام. واقعا دستتون درد نکنه. :job: کلی دعای خیر پشت سرتون هست
                میخواستم اگر لطف کنید راجع به مدیریت حافظه هم با یک مثال کوچیک کارتون رو تکمیل کنید
                منظورم این سه تا تابع هست
                کد:
                _declare_box
                _init_box
                _alloc_box
                مچکریم

                دیدگاه


                  پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

                  کتاب کامل آموزش سیستم عامل RTX به زبان فارسی
                  http://www.eca.ir/forum2/index.php?topic=110829.0

                  دیدگاه


                    پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

                    سلام و درود
                    کاش دوستان یه مثال درست و حسابی میزاشتن. مثال های کوچیک خیلی از مشکلات اولیه که باهاش سرو کار داریم رو مطرح نمیکنه و برای بدست آوردن تجربه بیشتر زمان زیادی باید سپری بشه

                    دیدگاه


                      پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

                      سلام
                      کسی اطلاعاتی در مورد privileged mode و unprivileged mode داره ؟ فرقشون چیه ؟ و چرا در حالت اول امکان دسترسی کامل به هسته اصلی پردازنده هست؟
                      ممنون
                      زندگي آن چه که زيسته ايم نيست ، بلکه آن چيزي است که از گذشته به خاطر داريم ...گابريل گارسيا مارکز

                      دیدگاه


                        پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

                        بعد از گذشتن یک روز تمام بنده جواب سوالمو پیدا کردم ، از اون جایی که بهترین روش یادگیری آموزشه چیزایی که فهمیدم و نیازه تا موضوعو منتقل کنم میزارم اینجا ، البته که احتمال اشتباه وجود داره و خوشحال میشم تصحیح/تکمیلش کنید.ممنون
                        -----------------------
                        تفاوتهای بین دستوارت Thumb و ARM :
                        در گذشته بدلیل گرانی حافظه های ذخیره سازی معماری CISC یاComplex instruction set computer با تمرکز برمجموعه دستورات پیچیده در مقابل حافظه مصرفی کمتر ، معماری غالب پردازنده ها بود.با افزایش حافظه ها و کاهش قیمت آنها معماری RISC یا Reduced instruction set computer مطرح شد که حجم کدها را قربانی ساده سازی پیاده سازی مداری و کاهش دستورالعمل ها میکرد . در غالب پردازنده های مورد بحث ما مانند خانواده ARM,AVR32,MIPS و ... از مدل 3 عملوندی آن استفاده میشود.
                        بسیاری از پردازنده های 32 بیتی امروزی از معماری RISC استفاده میکنندکه بر خلاف معماری CISC عموما هر دستور العمل (شامل واکشی و کد گشایی و پردازش) در یک سیکل کلاک اجرا میشود،گرچه این عمل موجب افزایش سرعت اجرای دستورات نسبت به معماری CISC میشود،در مقابل این افزایش سرعت هزینه ای دارد.
                        این هزینه نیاز به حافظه ی بیشتر نسبت به معماری CISC برای ذخیره ی برنامه در حالت مشابه است.
                        به غیر از مواردی که در آنها سرعت اجرا یک پارامتر حیاتی است،در سایر موارد هزینه از اهمیت بیشتری نسبت به سرعت اجرا برخوردار است که برای کاهش حافظه مصرفی و به الطبع کاهش هزینه، ARM از مجموعه دستورات Thumb به عنوان یک پشن برای هسته های پردازنده RISC خود استفاه میکند.
                        مشهورترین مثال این مورد هسته پردازنده ARM7TDMI میباشد که حرف T در آن نشانگر عبارت Thumb میباشد.
                        مجموعه دستورات Thumb شامل دستورات 16 بیتی است که به عنوان یک زیر مجموعه مختصر و جمع و جور برای مجموعه دستورات استاندارد 32 بیتی ARM عمل میکند.
                        Privileged mode و Unprivileged mode چه معنایی دارند؟
                        هر دو حالتهایی از اجرای و پردازش رشته ها یا تسک ها در سیستم عاملهای بلادرنگ هستند(مانند CMSIS RTOS RTX ) که توسط عبارت #define OS_RUNPRIV. و یا بصورت تصویری در فایل RTX_Conf_CM.C و یا توسط برنامه قابل تعریف و تغییر هستند.
                        تفاوتها:
                        در حالت Unprivileged :
                        نرم افزار دسترسی محدود به دستورات MSR و MRS دارد و امکان اجرای دستور CPS میسر نیست.
                        امکان دسترسی به تایمر سیستم ،NVIC و سیستم کنترل بلوک وجود ندارد.
                        امکان دسترسی به پریفرال ها و حافظه با محدودیت همراه است.
                        در حالت Privileged این محدودیت ها وجود ندارند.
                        این دو حالت در هر دو حالت دستورات ARM و Thumb تاثیر گذار است.

                        SVC چیست ؟
                        سابقا SVC ها را وقفه های نرم افزاری(SWI ) مینامیدند. SVC مخفف عبارت Supervisor call یا فراخوانی سرپرستی میباشد.
                        در این روش به جای اجازه دادن به برنامه کاربر برای دستیابی مستقیم به سخت افزار ، سیستم عامل میتواند دسترسی به سخت افزار را از طریق SVC فراهم کند، بنا براین هنگامیکه یک برنامه کاربر میخواهد تا از سخت افزار مشخصی استفاده کند ، یک استثنا SVC با استفاده ازدستورات SVC تولید میکند.در این هنگام مدیر استثنا نرم افزاری در سیستم عامل اجرا شده و سرویس درخواست شده به برنامه کاربردی را فراهم میکند.
                        در این روش دسترسی به سخت افزار تحت کنترل سیستم عامل است که میتواند سیستم منسجم تری را با جلوگیری از دسترسی مستقیم برنامه کاربر به سخت افزار ایجاد کند.
                        SVC همچنین میتواند قابل حمل بودن (Portablity ) برنامه را به این دلیل که برنامه کاربر نیازی به اطلاع از جزئیات برنامه نویسی لایه های پایین سخت افزار ندارد، افزایش دهد .
                        SVC ها در حالت Privileged handler هسته های CORTEX-M اجرا میشوند.
                        توابع SVC توانایی پذیرفتن آرگومان و بازگردان مقادیر را مشابه سایر توابع دارند،گرچه تفاوتهایی وجود دارد که از کاربر مخفی شده وARMCC (کامپایلر ARM ) این تفاوتها را مدیریت و کد دستور مورد نیاز برای فراخوانی توابع SVC را تولید میکند.
                        در هنگام اجرای دستورات SVC کنترلر به حالت مدیریت Privileged تغیر میکند.
                        در این حالت وقفه ها غیر فعال نیستند که برای محافظت از توابع SVC در مقابل وقفه ها به توابع فعال سازی و غیر فعال سازی وقفه مانند زیر نیاز است:
                        __disable_irq() __enable_irq()
                        همچنین میتوان از توابع SVC برای دستیابی به پریفرال های حفاظت شده مانند پیکره بندی NVIC و وقفه ها استفاده کرد. مورد دیگر زمانی است که از تسک ها در حالت Unprivileged استفاده میشود و نیاز است تا تنظیمات وقفه ها تغییر کنند.
                        روش استفاده از KEIL IDE :
                        از گزینه زیر یک غالب آماده به این منظور به پروژه اضافه نمایید:
                        Add new item to group >> User code template >>
                        CMSIS component >> CMSIS RTOS user SVC
                        - یک تابع با صفت __svc(x) تعریف کنید.(به جای X شماره تابع قرار میگرد )
                        کد:
                        -	void __svc(1) inc_5bit (U32 *cp);
                        - پیاده سازی تابع را بنویسید و نام تابع را به مدل __SVC_x تغییر دهید(بعدا این نام توسط لینکر برای ارجاع دادن از ماژول SVC_Table.s مورد استفاده قرار میگیرد.
                        -
                        کد:
                        void __SVC_1 (U32 *cp) {
                        -	// A protected function to increment a 5-bit counter. 
                        -	__disable_irq();
                        -	*cp = (*cp + 1) & 0x1F;
                        -	__enable_irq();
                        -	}
                        تابع __SVC_x را به جدول تابع SVC در ماژول SVC_Table.s اضافه کنید.در ابتدا آنرا از دیگر ماژولها وارد کنید :
                        کد:
                        ; Import user SVC functions here.
                        IMPORT __SVC_1
                        سپس ارجاع به آن را در جدول وارد کنید:
                        کد:
                        ; Insert user SVC functions here. SVC 0 used by RTL Kernel.
                        DCD __SVC_1 ; user SVC function
                        تابع SVC شما العان باید مانند زیر باشد:
                        کد:
                        void __svc(1) inc_5bit (U32 *cp);
                        void __SVC_1 (U32 *cp) {
                        // A protected function to increment a 5-bit counter. 
                        __disable_irq();
                        *cp = (*cp + 1) & 0x1F;
                        __enable_irq();
                        }
                        نکات:
                        - SVC شماره صفر برای هسته RTX رزرو شده ،بنا براین باید از عددیک و بعد از آن استفاده کنید.
                        - در هنگام نام گذاری شماره توابع SVC فضای خالی قرار ندهید.این اعداد باید به طور پیوسته از عدد یک به بعد نامگذاری شوند.
                        - توابع SVC وقفه پذیر هستند.
                        منابع:
                        www.embedde.com
                        www.keil.com
                        www.infocenter.arm.com
                        CMSIS RTOS Documentations

                        اگه نیاز به مثال بود بفرمایید تا قرار بدم
                        زندگي آن چه که زيسته ايم نيست ، بلکه آن چيزي است که از گذشته به خاطر داريم ...گابريل گارسيا مارکز

                        دیدگاه


                          پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

                          سلام دوستان .
                          من مدتیه درگیر یک پروژه هستم و یکسری اطلاعات رومی خوام بریزم تو فاش usb.تو این پروژه از کرنل RTX استفاده کردم. ولی یه جایی به یک مشکل اساسی خوردم اونم اینکه وقتی می خوام از دستورات flash-fs استفاده کنم سیستم هنگ می کنه. همین دستورات بدون کرنل کامل جواب میدن ولی وقتی تو تسک ها میارم هنگ می کنه سیستم. تعداد تسک ها و سایزشون رو هم بالا بردم نشد که نشد. مثلا در مثال زیر سیستم میاد و موقع رسیدن به دستور fopen هنگ میکنه!!
                          کد:
                          #include <RTL.h>
                          #include <rl_usb.h>
                          
                          #include <stdio.h> 
                          #include <LPC177x_8x.h>
                          int i;
                          FILE *f;
                          #ifdef __cplusplus
                          extern "C" {
                          #endif
                          int __low_level_init(void); // Avoid "no ptototype" warning
                          #ifdef __cplusplus
                           }
                          #endif
                          	 U32 retv;
                          
                          int __low_level_init(void) {
                          	
                           SystemCoreClockUpdate();  // Ensure, the SystemCoreClock is set
                          
                           return 1;
                          }
                          		__task void init(void);
                            __task void usb_engine(void);
                            __task void _rt(void); 
                          __task void init (void) { 
                          	usbh_engine_all();
                          	finit("U:");
                          	fformat("U:");
                          	while(1)
                          	{
                          		if(f==0)
                          		{
                          		
                          			f=fopen("test.txt","w");
                          			for (i=1;1000;i++) fprintf(f,"ok");
                          			fclose(f);
                          			
                          }
                          }
                          	}
                          int main (void) {
                          
                          os_sys_init_prio(_rt,1); 
                          
                          }
                          
                          void usb_engine(void)
                          {
                          	while(1)
                          	{
                          	/*		usbh_engine_all();
                          		 os_dly_wait (20);*/
                          
                          	}
                          }
                          
                          void _rt(void)
                          {
                          os_tsk_create(init,1);
                          os_tsk_create(usb_engine,1);	/* Init RTX and start 'init'     */
                          		 //os_tsk_create(delayMs(uint8_t timer_num, uint32_t delayInMs),5);
                           	os_tsk_delete_self();
                          }
                          دوستان اگه تا حالا با این مسیله مواجه شدن و راه حلی دارن ممنون می شم.

                          دیدگاه


                            پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

                            سلام.
                            semaphore بسیار شبیه mutex می باشد. به عبارتی semaphore ی با یک شمارنده ی 1 واحدی، همان mutex است. اما در بعضی دایکومنت ها خوندم که بهتر است که به جای سمافر با یک شمارنده ی یک واحدی، از mutex استفاده شود.
                            پس فرق semaphore و mutex چیه؟
                            می بینیم و نادیده می گیریم!

                            دیدگاه


                              پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

                              آقا یک سوال بی ربط بپرسم ؟
                              بحثی که شروع کردی خوبه اتفاقا تو فکرشم هستم اما بعدا ولی به زودی میام دنبال ش
                              سوالم اینه در آرم چطوری میشه از وقفه ها استفاده کرد ؟ البته در IAR
                              در lpc2368 وقفه مورد نظر رو فعال می کردی و آدرس تابع وقفه رو که خودت تعریف میکنی رو در رجیستری می نوشتی
                              وقفه که اتفاق میفتاد به تابع(روتین وقفه) پرش می کرد (البته در IAR پرش نمی کرد در Keil پرش میکرد)
                              اما در 1768 یا 1343 که cortex هستند سیستم فرق میکنه
                              چطوریه ؟ شما میتونی راه انددازی کنی ؟
                              جدیدترین ویرایش توسط davoud.arabee; ۱۳:۵۴ ۱۳۹۶/۰۵/۰۷.

                              دیدگاه


                                پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

                                لینک کتاب کار نمیکنه میشه لطفا دوباره بزارید ممنون<br><br>

                                دیدگاه

                                لطفا صبر کنید...
                                X