اطلاعیه

Collapse
No announcement yet.

DMA چیست؟ افزایش سرعت!!!

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    DMA چیست؟ افزایش سرعت!!!

    سلام
    DMA یک قسمتی از میکروکنترلر ARM است که می تواند بعضی از کارها را برعهده بگیرد. در واقع DMA می تواند باعث کمتر شدن کار پردازشگر شود و سرعت میکروکنترلر را در نهایت بالا ببرد البته بعضی از بخش های میکروکنترلر می توانند با DMA کار کنند!!
    حال اینکه چگونه می توان از این بخش استفاده کرد را بنده بلد نیستم اگر از اساتید کسی بتواند کمک کند ممنون می شوم. :icon_razz:
    دکتر چمران در 1311 در تهران متولد شد
    وي در زمان اقامت در آمريکا انجمن اسلامي آمريکا را تأسيس کرد که منجر به قطع بورسيه وي توسط شاه شد.
    او با اينکه يکي از دانشمندان مطرح آمريکا به حساب مي آمد بدون توجه به مدرک به مصر رفت و آموزش نظامي ديد.

    #2
    پاسخ : DMA چیست؟ افزایش سرعت!!!

    واقعیتش بحث dma خیلی مهم است و من تعجب می کنم که چرا اینجا کسی زیاد در مورد این موضوع بحث و گفت و گو نمی کند!!!
    از اساتید و کاربران خواهش می کنم مباحثی را بیان کنند. :rolleyes:
    دکتر چمران در 1311 در تهران متولد شد
    وي در زمان اقامت در آمريکا انجمن اسلامي آمريکا را تأسيس کرد که منجر به قطع بورسيه وي توسط شاه شد.
    او با اينکه يکي از دانشمندان مطرح آمريکا به حساب مي آمد بدون توجه به مدرک به مصر رفت و آموزش نظامي ديد.

    دیدگاه


      #3
      پاسخ : DMA چیست؟ افزایش سرعت!!!

      خیلی سادست
      کلیات : آدرسهای شروع انتقال و تعداد انتقال و نوع Trigger و یا Interrupt را تنظیم میکنی و انتقال بین دو peripheral صورت میگیره
      برای جزییات باید روی مثال های خاص توضیح داد
      یک محدودیت : از همه DMA ها نمیشه همزمان استفاده کرد. بستگی به تعداد لایه های باسهای داخلی داره
      دانلود کتاب رایگان ARM به زبان فارسی :

      http://www.eca.ir/forum2/index.php?topic=74049.0

      دیدگاه


        #4
        پاسخ : DMA چیست؟ افزایش سرعت!!!

        سلام
        می شه یک مثال ساده بزنید منظورم برنامه ی ساده ای که از اون من یاد یگیرم
        با تشکر از کاربر محترم elecMicro :wow:
        دکتر چمران در 1311 در تهران متولد شد
        وي در زمان اقامت در آمريکا انجمن اسلامي آمريکا را تأسيس کرد که منجر به قطع بورسيه وي توسط شاه شد.
        او با اينکه يکي از دانشمندان مطرح آمريکا به حساب مي آمد بدون توجه به مدرک به مصر رفت و آموزش نظامي ديد.

        دیدگاه


          #5
          پاسخ : DMA چیست؟ افزایش سرعت!!!

          سلام

          من احتیاج دارم از اس رم 4kb را باdma به ssp0 منتقل کنم.
          میشه راهنمایی کنید
          زندگی یه فرصته

          دیدگاه


            #6
            پاسخ : DMA چیست؟ افزایش سرعت!!!

            سلام دوست عزیز

            من یک نمونه برنامه از dma قرار دادم مطالعه بفرمایید مشکلی بود در خدمتم :job:

            کد:
            #include <LPC177x_8x.H>
            #include "delay.h"
            #include "lpc177x_8x_gpdma.h"
            #include "GLCDH.h"
            char str1[20]="mohsen abdollahi";
            char str2[20]="DMA TEST ";
            main()
            {
            	GPDMA_Channel_CFG_Type x;
            	Delay_init();
            	SDRAM_32M_16BIT_Init();
            	GLCD_Init();
            	GLCD_Clear(Blue);
            	GPDMA_Init();
            	x.ChannelNum=0;
            	x.SrcMemAddr=(uint32_t)str1;
            	x.DstMemAddr=(uint32_t)str2;
            	x.TransferSize=20;
            	x.TransferWidth=GPDMA_WIDTH_BYTE;
            	x.TransferType=GPDMA_TRANSFERTYPE_M2M;
            	GPDMA_Setup(&x);
            	GUI_Text(0,0,str1,White,Blue);
            	GUI_Text(0,50,str2,White,Blue);
            	GPDMA_ChannelCmd(0,ENABLE);
            	Delay_ms(1000);
            	GUI_Text(0,80,str2,White,Blue);
            	while(1);
            }
            اعتماد به نفس سلاحی قلابی ، برای رسیدن به اهداف واقعیست...!

            دیدگاه


              #7
              پاسخ : DMA چیست؟ افزایش سرعت!!!

              لطفا اینکروداشم بزار این جوری که کسی چیزی نمی فهمه !

              دیدگاه


                #8
                پاسخ : DMA چیست؟ افزایش سرعت!!!

                اگر لازم داشته باشید میتونم خط به خط کدها رو براتون شرح بدم ... :read:

                اما اگر دنبال مفهوم DMA هستید بحث فرق میکنه ...

                بازم هر کمکی خواستید من هستم سعی میکنم در حد توانم یاری برسونم .. :agree:

                موفق باشید ...
                اعتماد به نفس سلاحی قلابی ، برای رسیدن به اهداف واقعیست...!

                دیدگاه


                  #9
                  پاسخ : DMA چیست؟ افزایش سرعت!!!

                  سلام خیلی از بایت اینکه در این بحث شرکت کرددی متشکرم
                  سوالی که بنده و یا بیشتر افراد را (از نظر بنده) مشغول کرده اینکه این dma چگونه را اندازی می شود و چگونه کار می کند
                  تا آنجایی که من می دونم dma به cpu کار ندارد
                  و مثلا اگر آی سی دارای یک باس dma در قسمت GPIO داشته باشد می تواند اطلاعات حافظه را مطابق یک اصولی انتقال دهد.
                  خب حالا چگونه این اتفاق می افتد من می خواهد بودنم و حالا با چه سرعتی می تواند این کار را انجام دهد مثلا می خواهم اطلاعت 0xFFFF FFF5 تا 0xFFFF FFFF که مثلا حافظه فلش هست را بایت بایت به gpio منتقل کنم با تشکر
                  دکتر چمران در 1311 در تهران متولد شد
                  وي در زمان اقامت در آمريکا انجمن اسلامي آمريکا را تأسيس کرد که منجر به قطع بورسيه وي توسط شاه شد.
                  او با اينکه يکي از دانشمندان مطرح آمريکا به حساب مي آمد بدون توجه به مدرک به مصر رفت و آموزش نظامي ديد.

                  دیدگاه


                    #10
                    پاسخ : DMA چیست؟ افزایش سرعت!!!

                    سلام

                    DMA یا دسترسی مستقیم به حافظه واحدیه که امروزه توی میکروکنترلر ها میشه دید ! ولی همیشه هم به صورت یک واحد مستقل طراحی نشده و به عنوان بخشی از یک واحد دیگه در نظر گرفته شده ! مثلا dma در spi و یا dma در usart !

                    با یه مثال ساده کاربرد dma رو توضیح می دم !
                    فرض کنید توی یه پروژه قراره میکرو با کامپیوتر ارتباط برقرار کنه و در هر ارتباط یک بسته داده ی 10 بایتی ردوبدل بشه و میکرو هم باید بقیه کار رو هم انجام بده !

                    خب یکی از روش ها اینه که پورت سریال رو توی حالت وقفه قرار بدیم و با دریافت هر کارکتر میکرو دچار وقفه بشه و کارکتر دریافتی رو ذخیره کنه و بعد دوباره به کاراش برسه ! و وقتی 10 تا بایت رو گرفت ، دستورات مربوطه رو انجام بده پس میکرو حداقل 10 بار دچار وقفه می شه !

                    شاید برای این حجم داده اتفاق خاصی پیش نیاد و اصلا هم مهم نباشه ! ولی اگه حجم داده 1000 بایت و یا 10000 بایت بشه چی ؟ اونوقت میکرو میتونه به کارهای دیگه اش هم برسه ؟
                    برای این حالت استفاده از dma پیشنهاد میشه ! به صوریکه بعد از تنظیم dma به جای اینکه بایت به بایت میکرو دچار وقفه بشه ! بعداز اینکه کل بایت ها گرفته شد ، dma به میکرو اطلاع میده ( از طریق وقفه ) و میکرو دستورات مورد نیاز رو روی داده انجام می ده ! و بجای 10000 بار وقفه تنها یک با دچار وقفه میشه !

                    تا اینجا به صورت خیلی ساده DMA توضیح داده شد ! بقیه این قسمت مربوط به میکروکنترلرهای sam7 اتمل هستش :

                    dma توی این میکروکنترلرها چند تا رجیستر داره که دوتا اشاره داره به آرایه ای که داده ها رو ذخیره کنه و دوتا به عنوان شمارنده اند و تعداد بایت های ارسالی و یا دریافتیو مشخص می کنند و دوتا رجیستر کنترلی و وضعیت داره ! (اگه اشتباه نکرده باشم ! چون دسترسی به دیتاشیت الان ندارم ) با تنظیم این رجیسترها و رجیستر های واحدی که قراره باهاش تبادل داده داشته باشی میتونی به راحتی با dma کار کنی

                    امیدوارم به دردت خورده باشه ! این واحد برعکس اسمش که سه حرفه (DMA ) خیلی کاربردیه سعی کن هرجور شده راش بندازی :job:

                    دیدگاه


                      #11
                      پاسخ : DMA چیست؟ افزایش سرعت!!!

                      نوشته اصلی توسط 011

                      و مثلا اگر آی سی دارای یک باس dma در قسمت GPIO داشته باشد می تواند اطلاعات حافظه را مطابق یک اصولی انتقال دهد.
                      هر قسمت که دارای dma باشه توی دیتاشیت نشون داده شده (معمولا توی بلوک دیاگرام ) ولی تا اونجایی که من خوندم معمولا GPIO ها DMA ندارند !

                      البته من بیشتر رو میکروهای اتمل کار کردم

                      دیدگاه


                        #12
                        پاسخ : DMA چیست؟ افزایش سرعت!!!

                        نوشته اصلی توسط 011
                        خب حالا چگونه این اتفاق می افتد من می خواهد بودنم و حالا با چه سرعتی می تواند این کار را انجام دهد مثلا می خواهم اطلاعت 0xFFFF FFF5 تا 0xFFFF FFFF که مثلا حافظه فلش هست را بایت بایت به gpio منتقل کنم با تشکر
                        سرعت انجام تبادل داده توسط DMA در واق همون سرعت تنظیم شده برای واحدییه که داری از اون استفاده می کنی ! مثلا در مثال بالا اگه سرعت پورت سریال 9600 باشه سرعت DMA هم همونه !

                        حالا به عنوان یه سوال ! :surprised: اگه بخواهیم با ADC کار کنیم سرعت DMA چه جوری تنظیم میشه ؟؟؟؟ :mrgreen:

                        موفق باشی :job:

                        دیدگاه


                          #13
                          پاسخ : DMA چیست؟ افزایش سرعت!!!

                          tanks . very good

                          دیدگاه

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