اطلاعیه

Collapse
No announcement yet.

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

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

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

    سلام
    دوستان نیاز به کمک دارم.
    میخوام روی برد mini2440 + 3.5″LCD 1GIGبرنامه نویسی کنم ولی تا حالا برنامه نویسی با arm انجام ندادم.
    کسی میدونه چطور میشه با این بردآموزشی کارکرد؟و نحوه برنامه ریزی اون به چه شکل هست؟
    ممنون میشم راهنماییم کنید.

    دیدگاه


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

      با سلام آقای حسینی.
      بنده یک پروژه با CAN میکروهای اتمل دارم انجام میدم که در این پروژه باید میکروی MASTER اطلاعات را توسط کیبورد از کاربر گرفته و بعد انرا توسط رابط CAN که بینشان هست به میکروی SLAVE بفرستد و بعد SLAVE انرا بر روی LCD نمایش دهد. میخواستم ببینم برای همچین کاری نیاز به تنظیم خاصی در دو میکرو هست و با برنامه ای که در صفحه سوم تاپیک قرار دادید میشه این کار را انجام داد؟
      ممنون.
      بگذارعشق خاصیت تو باشد نه رابطه خاص تو باکسی
      موفقیت پیش رفتن است نه به نقطه ی پایان رسیدن
      نلسون ماندلا

      دیدگاه


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

        نوشته اصلی توسط رضا بابایی
        با سلام آقای حسینی.
        بنده یک پروژه با CAN میکروهای اتمل دارم انجام میدم که در این پروژه باید میکروی MASTER اطلاعات را توسط کیبورد از کاربر گرفته و بعد انرا توسط رابط CAN که بینشان هست به میکروی SLAVE بفرستد و بعد SLAVE انرا بر روی LCD نمایش دهد. میخواستم ببینم برای همچین کاری نیاز به تنظیم خاصی در دو میکرو هست و با برنامه ای که در صفحه سوم تاپیک قرار دادید میشه این کار را انجام داد؟
        ممنون.
        سلام
        توضیحات کامل تو همون پست هست دیگه! الان که یادم نیست اما همون جا همه چی گفته شده.
        https://www.linkedin.com/in/mohammadhosseini69

        http://zakhar.blog.ir

        دیدگاه


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

          نوشته اصلی توسط محمد حسینی
          سلام
          توضیحات کامل تو همون پست هست دیگه! الان که یادم نیست اما همون جا همه چی گفته شده.
          برنامه شما (منظورم همون دو تیکه ار سال و دریافته) رو به جای کد ارسال و دریافت برنامه آماده کتابخانه RL که تو قسمت مثال های کیل هست کپی کردم اما کار نمیکنه. نمیدونم شاید مشکلم از سخت افزار باشه. من کد و شماتیکمو میزارم اگر تونستید یه نیگا بندازید. ممنون.
          http://wdl.persiangig.com/pages/download/?dl=http://altium.persiangig.com/CAN%20%252B%20Step%20Motor.rar
          بگذارعشق خاصیت تو باشد نه رابطه خاص تو باکسی
          موفقیت پیش رفتن است نه به نقطه ی پایان رسیدن
          نلسون ماندلا

          دیدگاه


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

            سلام دوستان
            میخواستم بدونم کسی تونسته تو تسک ام ام سی و fat رو هم بیاره بالا؟؟ فرقی نمیکنه با جه کنترلری من با اتمل و اس تی کار کردم رو جفتش تسک گزاشتم و رو هیچ مدوم نشد مموری بزارم.فکر میکنم به علت مشکل رم بوده که تقسیم میشه رو سیستم
            کسی کمکی میتونه بکنه؟؟؟ممنون دوستان
            علم چندانکه بیشتر خوانی چون عمل در تو نیست نادانی

            دیدگاه


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

              فقط coocox . بهترین و ساده ترین RTOS رو داره . مخصوص CM0-CM3-CM4

              دیدگاه


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

                نوشته اصلی توسط اٌمید حبیبی
                سلام دوستان
                میخواستم بدونم کسی تونسته تو تسک ام ام سی و fat رو هم بیاره بالا؟؟ فرقی نمیکنه با جه کنترلری من با اتمل و اس تی کار کردم رو جفتش تسک گزاشتم و رو هیچ مدوم نشد مموری بزارم.فکر میکنم به علت مشکل رم بوده که تقسیم میشه رو سیستم
                کسی کمکی میتونه بکنه؟؟؟ممنون دوستان
                سلام
                من با همون کتابخونه های کیل (RL ARM) راه انداختم. کار میکرد تو سیستم عامل. اما الان که هیچی از جزئیاتش یادم نیست. هلپ کیل رو ببین. بخش flashfs
                https://www.linkedin.com/in/mohammadhosseini69

                http://zakhar.blog.ir

                دیدگاه


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

                  با سلام خدمت همه دوستان و آقای حسینی

                  آقای حسینی من برنامه مربوط به قسمت Mutex رو هم با LPC1768 و هم با SAM7X256 اجرا می کنم ولی باز هم مثل حالتی که با semaphre می نویسیم اجرا می شه. یعنی اول تسک 2 اجرا میشه بعد تسک 1 و در آخر هم تسک 3. می خواستم بپرسم موقعی که شما این برنامه رو تست کردید مشکلی نبود؟ البته برنامه کاملاً درست به نظر می رسه فقط میمونه اجرای درستش توسط سیستم عامل.

                  خیلی ممنون برای زحماتتون تو این پست.

                  دیدگاه


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

                    سلام.
                    این برنامه رو نوشتم ولی نمیدونم چرا فقط تسک1 اجرا میشه !! تو تابع init هر تسکی رو که اول مینویسم فقط همون تسک اجرا میشه :eek: مشکل از چیه؟

                    کد:
                     #include <lpc23xx.h>
                     #include <rtl.h>
                     OS_TID tsk_ID1,tsk_ID2;
                     __task void task1 (void);
                     __task void task2 (void);
                     __task void init (void);
                     int main(){
                    	 
                     	os_sys_init(init);
                    
                    	
                     		while(1){
                    		 
                     		}
                      }
                     __task void init (void){
                     	 	
                     	IODIR0=0X03;
                     		IOSET0=0;	
                     		os_tsk_create (task1,1);
                     		os_tsk_create (task2,1);
                     	  os_tsk_delete_self();
                     	 }
                     	 
                     __task void task1 (void){
                    	
                     	int i=0;	
                    
                     		while(1){
                    			
                     				os_dly_wait (25);
                     				if (i==0){
                     				IOSET0=0x01;
                     				i=1;
                     				}
                     				else{
                     				IOCLR0=0x01;
                     				i=0;
                     				}
                    				
                     		 }
                     	 }
                     __task void task2 (void){
                     	int f=0;
                     	while(1){
                     	 os_dly_wait (50);
                     		  if (f==0){
                     			IOSET0=(1<<1);
                     			f=1;
                     			}
                     			else{
                     			IOCLR0=(1<<1);
                     			f=0;
                     			}
                     	 }
                    	}

                    دیدگاه


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

                      ببخشید میشه بگین mutex چیه و کلا چکار میکنه؟ سوالم خیلی ابتداییه بخشید :(

                      دیدگاه


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

                        نوشته اصلی توسط رامین جعفرپور
                        کسی دیگه ای هم مشکل هنگ کردن سیستم عامل RTX رو داره ؟ :sad:
                        برنامه مثلا موقعی که داره TFTLCD رو مینویسه متوقف میشه.
                        چه عواملی میتونن باعث هنگ کردن RTOS بشن ؟

                        یه سوال دیگه :

                        تو برنامه نویسی معمولی به زبان C متغیرهایی به صورت عمومی و محلی و استاتیک وجود دارن.متغیرهایی محلی هر تابع با اجرای اون تابع به وجود میان و با تمام شدن تابع از بین میرن(مگه اینکه استاتیک باشن).حالا تو برنامه نویسی با RTX متغیرهای تسک ها در چه حالتی هستن ؟در این حالت که تسک ها قبل تموم شدن هی سوئیچ میشن مشکلی پیش نمیاد ؟نباید متغیر هارو استاتیک تعریف کنیم؟

                        آقای حسینی شما که بیشتر راه رو رفتین بیاین بحث های باقیمونده رو هم مختصر توضیح بدین.
                        Stack رو افزایش یدهید.
                        پیشنهاد می کنم تسک رو با استک جداگانه تعریف کنید تا حافظه کمتری مصرف بشه.
                        توضیح بیشتر اینکه، در فایل RTX_Config که تنظیمات مربوط به RTX رو انجام می دهید، حافظه ثابتی رو برای همه تسکها معرفی می کنید که 512 بایت بصورت پیشفرضه. این خیلی جالب نیست. بعضی از تسکهاممکنه حافظه زیادتری نیاز داشته باشند و بعضی ها کمتر.
                        در اینصورت ابتدا یک آرایه از نوع U64 بعنوان Stack تعریف کنید و با دستور os_tsk_create_user تسک رو راه بیاندازید. ضمنا در فایل RTX_Config تعداد تسکهایی که بصورتuser تعریف شده اند رو مشخص کنید.

                        دیدگاه


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

                          نوشته اصلی توسط M3R
                          سلام.
                          این برنامه رو نوشتم ولی نمیدونم چرا فقط تسک1 اجرا میشه !! تو تابع init هر تسکی رو که اول مینویسم فقط همون تسک اجرا میشه :eek: مشکل از چیه؟

                          کد:
                           #include <lpc23xx.h>
                           #include <rtl.h>
                           OS_TID tsk_ID1,tsk_ID2;
                           __task void task1 (void);
                           __task void task2 (void);
                           __task void init (void);
                           int main(){
                          	 
                           	os_sys_init(init);
                          
                          	
                           		while(1){
                          		 
                           		}
                            }
                           __task void init (void){
                           	 	
                           	IODIR0=0X03;
                           		IOSET0=0;	
                           		os_tsk_create (task1,1);
                           		os_tsk_create (task2,1);
                           	  os_tsk_delete_self();
                           	 }
                           	 
                           __task void task1 (void){
                          	
                           	int i=0;	
                          
                           		while(1){
                          			
                           				os_dly_wait (25);
                           				if (i==0){
                           				IOSET0=0x01;
                           				i=1;
                           				}
                           				else{
                           				IOCLR0=0x01;
                           				i=0;
                           				}
                          				
                           		 }
                           	 }
                           __task void task2 (void){
                           	int f=0;
                           	while(1){
                           	 os_dly_wait (50);
                           		  if (f==0){
                           			IOSET0=(1<<1);
                           			f=1;
                           			}
                           			else{
                           			IOCLR0=(1<<1);
                           			f=0;
                           			}
                           	 }
                          	}
                          ببینین تو فایل RTX_Conf تیک گزینه Round-Robin Task switching رو بر نداشتین؟

                          دیدگاه


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

                            نوشته اصلی توسط محمد حسینی
                            از سال 2005 که ARM ، شرکت keil رو خرید، تمرکز نرم افزارهای keil رو محصولات ARM شد.
                            تعدادی از محصولات keil :
                            uVision IDE (میکرو ویژن) محیط توسعه و دیباگر و شبیه ساز برای محصولات مبتنی بر پردازنده های آرم هست.
                            ARM Compilation Tools شامل کامپایلر و اسمبلر و لینکر. (معمولا با uVision)
                            RL-ARM کتابخونه های realtime (سیستم عامل RTX، CAN، TCP/IP ، FLASH و ...)
                            MDK-ARM مجموعه همه موارد بالا میشه
                            یه نگاهی به این صفحه بندازین http://www.keil.com/arm/selector.asp
                            خودم هنوز نفهمیدم نصب اینا چطوریه. من اول keil uvision داشتم. بعدش پدیت MDK-ARM رو دانلود کردم که تونستم از سیستم عاملش استفاده کنم. اما نمی دونم چرا سمپل هاش و یه سری از کتاب خونه های دیگه ش نبود! شاید کامل دانلود نکردم. اگه میکروویژن رو داشته باشین می تونین برین تو سایت keil سمت راستش آخرین updateهای MDK رو گذاشته. ازتون یه شماره LIC می خواد که میتونید تو uVision منوی help و about پیدا کنین. اگه uVision نداشته باشین اینطوری نمی تونین دانلود کنین.
                            سایت ایران میکرو نسخه کامل MDK رو گذاشته. http://www.****.ir/keilmdk-263.html

                            RTX در دو ورژن پیاده سازی شده :
                            ورژن ARM7/ARM9
                            ورژن Cortex M
                            Cortex M ها امکاناتی برای RTOS درنظر گرفتن. بخاطر همین سیستم عامل با عملکرد بهتری دارن. اما از نظر نحوه کارکرد برای ما تقریبا فرقی نمیکنه.
                            برای راه اندازی RTX در یک پروژه مراحل زیر رو دنبال کنید.
                            پروژه جدید ایجاد کنید. از منوی Project – Options (باید قبلش target پروژه رو انتخاب کنید) یا رو پنجره Project رو target راست کلیک و options رو انتخاب کنید. تو پنجره باز شده در تب target قسمت operating system ، گزینه RTX Kernel رو انخاب کنید.
                            فایل پیکربندی (config) سیستم عامل رو با توجه به میکروکنترلر از پوشه Keil/ARM/Startup ، تو پوشه پروژه کپی و به پروژه keil اضافه کنید. مثلا برای سری AT91ASAM7X فایل RTX_Conf_SAM7X.c در پوشه Keil/ARM/Startup/Atmel . بعدا در مورد تنظیمات این فایل توضیح میدم.
                            تنظیمات مربوط به وقفه های نرم افزاری تو فایل اسمبلی startup باید تغییر کنه. (همون فایل اسمبلی که خود keil به پروژه اضافه میکنه. SAM7.S برای 7 اتمل...). خط SWI_Handler B SWI_Handler رو تو این فایل حذف کنید و بجاش این دستور رو اضافه کنید:
                            IMPORT SWI_Handler
                            اول این دستور باید به tab یا فاصله بزنید. خلاصه قسمتی از کد که اینطوریه :

                            Undef_Handler B Undef_Handler
                            SWI_Handler B SWI_Handler
                            PAbt_Handler B PAbt_Handler
                            DAbt_Handler B DAbt_Handler
                            IRQ_Handler B IRQ_Handler
                            FIQ_Handler B FIQ_Handler

                            باید به این تغییر داده بشه :

                            Undef_Handler B Undef_Handler
                            ;SWI_Handler B SWI_Handler
                            IMPORT SWI_Handler
                            PAbt_Handler B PAbt_Handler
                            DAbt_Handler B DAbt_Handler
                            IRQ_Handler B IRQ_Handler
                            FIQ_Handler B FIQ_Handler

                            (خط دوم با سمیکالون به کامنت تبدیل شده...) در مورد وقفه های نرم افزاری که در مد supervisor پردازنده اجرا میشن، بعدا که اطلاعاتم بیشتر شد توضیح میدم.
                            خب الان پروژه باید بدون خطا کامپایل بشه. ضمنا برای استفاده از سیستم عامل باید فایل rtl.h رو هم تو فایل main پروژه include کنید.
                            این یه نمونه برنامه : (برای AT91SAM7X)

                            #include <AT91SAM7X256.h>
                            #include <rtl.h>

                            __task void task1(void);
                            __task void task2(void);

                            int main()
                            {
                            *AT91C_PIOB_PER = (1 << 0) | (1 << 1);
                            *AT91C_PIOB_OER = (1 << 0) | (1 << 1);

                            os_sys_init(task1);

                            while(1){}
                            return 0;
                            }

                            __task void task1(void)
                            {
                            int i = 0;
                            os_tsk_create(task2, 1);
                            while(1){
                            os_dly_wait(50);
                            if (i==0){
                            *AT91C_PIOB_SODR = (1 << 0);
                            i=1;
                            }
                            else{
                            *AT91C_PIOB_CODR = (1 << 0);
                            i=0;
                            }
                            }
                            }

                            __task void task2(void)
                            {
                            int i=0;
                            while(1){
                            os_dly_wait(25);
                            if (i==0){
                            *AT91C_PIOB_SODR = (1 << 1);
                            i=1;
                            }
                            else{
                            *AT91C_PIOB_CODR = (1 << 1);
                            i=0;
                            }
                            }
                            }

                            تو این برنامه دو تا تسک تعریف شده. تو هر تسک یکی از پایه های میکرو بطور جدا (با تاخیر متفاوت) روشن و خاموش میشه. خوب برنامه رو بخونین تا بعد...
                            سلام
                            من مشابه برنامه بالا رو با RTX برای LPC1768 نوشتم ولی موقع کامپایل این ارورو میده:
                            rtx-test.axf: Error: L6218E: Undefined symbol SystemInit (referred from startup_lpc17xx.o).
                            اینم بگم که توی فایل startup چیزی شبیه SWI_Handler پیدا نکردم که بخوام تغییرش بدم
                            اگه ممکنه دوستان راهنمایی کنن که توی فایل startup_LPC17xx.S بخش مربوط به وقفه ها باید دقیقا چیو تغییر بدم؟ اصلا باید این کارو بکنم یا نه؟ اگه آره دلیلش؟
                            ممنون
                            از سختی نترس! این سختی هاست که جایگاه و مقام انسان را بالا میبرد...

                            دیدگاه


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

                              سلام
                              کسی با LPC1768 سیستم عامل RTX را با Flash fs راه اندازی کرده است؟
                              من نمیتونم اینکار را انجام دهم.وقتی flash fs را راه اندازی میکنم سیستم عامل کار نمیکنه.کسی میشه کمکم کنه؟
                              [glow=red,2,300]برنامه های آموزشی تست شده برای NXP LPC1768 با توابع CMSIS[/glow]
                              http://www.eca.ir/forum2/index.php?topic=76623.0

                              دیدگاه


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

                                نوشته اصلی توسط shahin2222
                                سلام
                                من مشابه برنامه بالا رو با RTX برای LPC1768 نوشتم ولی موقع کامپایل این ارورو میده:اینم بگم که توی فایل startup چیزی شبیه SWI_Handler پیدا نکردم که بخوام تغییرش بدم
                                اگه ممکنه دوستان راهنمایی کنن که توی فایل startup_LPC17xx.S بخش مربوط به وقفه ها باید دقیقا چیو تغییر بدم؟ اصلا باید این کارو بکنم یا نه؟ اگه آره دلیلش؟
                                ممنون
                                ویرایش
                                SWI_Handle فقط برای arm 7و 9 هستcortex احتیاجی به ویرایش نداره و فقط کافیست فایل های .core_m3.c,system_lpc17xx.c,system_lpc17xx.h,lpc17 xx را بدون ویرایش اضافه کنید اون خطا مربوط به نبودن فایل system_lpc17xx.c هستش.
                                راه اندازی enc28j60 و enc424j600 برای RL-TCPnet

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

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

                                دیدگاه

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