اطلاعیه

Collapse
No announcement yet.

حداکثر سرعت نوشتن بر روی کار میکرو SD با استفاده از FATFS

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

    حداکثر سرعت نوشتن بر روی کار میکرو SD با استفاده از FATFS

    دوستان سلام.
    در پروژه ام نیاز به ذخیره سریع داده های ADCآ‌دارم و از کارت میکرو اس دی و FATFS استفاده میکنم. البته من حدود 3 سال هست که با FATFSآ‌کار میکنم ولی تا به حال سرعت نوشتن اطلاعات برای مسئله نبوده ولی در این پروژه حداکثر سرعت یه مسئله مهم هست.

    امتحان کردم توی یه حلقه پشت سر هم اطلاعات رو برای کارت ارسال کردم. مانند کد زیر:
    کد:
      for(i=0;i<10000;i++)
      {
        EnRed();
        R=f_write(&fw,FBuffer,512,&bw);      
        if(R!=FR_OK)
        {
          DiGreen();
          LCDClr();
          LCDHome();
          LCDStringRam("file doesn't write correctly!!");   
          while(1);
        }
        
    
        DiRed();
      }

    وقفه هم غیر فعال کردم میکرو هیچ کاری انجام نمیده غیر از نوشتن روی کارت. ابتدا و انتهای نوشتن روی کارت یه LED رو خاموش و روشن میکنم. با اسکوپ پایه LEDآ‌ را نگاه کردم که تصویرش به صورت زیر هست:



    اگه دقت کنید فاصله زمانی ای که خروجی اسکوپ صفر هست در حال نوشتن بر روی کارت هست و این زمان خطی نیست یعنی کم و زیاد میشه ولی تقریبا یه نظمی هم داره.
    میخواستم ببینم آیا این مسئله به دلیل ذخیره به صورت FAT هست؟ یعنی بعد از چند بار نوشتن با دستور f_write روی کارت، نیاز به تنظیماتی در قالب FAT هست که این تاخیر زمانی ایجاد میشه؟
    کسی از دوستان تجربه ای در این زمینه داره؟

    بهترین روش برای ذخیره اطلاعات با سرعت زیاد چی هست به صورتی که اطلاعات از دست نره، مثلا اطلاعات 3 تا ADC رو با بیشترین کلاک ممکن داریم و میخواهیم ذخیره اش کنیم. بهترین روش به نظر شما چیه؟
    با سپاس فراوان
    شأن انسان در ايمان و هجرت و جهاد است و هجرت، مقدمهآ‌ي جهاد فيآ‌سبيلآ‌الله.
    هجرت، هجرت از سنگينيآ‌هاست و جاذبهآ‌هايي كه تو را به خاك ميآ‌چسباند.
    چكمهآ‌هايت را بپوش، رهآ‌توشهآ‌ات را بردار و هجرت كن.

    #2
    پاسخ : حداکثر سرعت نوشتن بر روی کار میکرو SD با استفاده از FATFS

    1- من هم تجربه یکسان نبودن زمان نوشتن رو دارم ولی برام مهم نبود پیگیر نشدم
    2- بهتره که برای کار با فت (برای بالاتر رفتن سرعت) داده ها بصورت پکتهای 512 بایتی نوشته بشه

    دیدگاه


      #3
      پاسخ : حداکثر سرعت نوشتن بر روی کار میکرو SD با استفاده از FATFS

      ممنون از پاسخ شما دوست عزیز
      بله من با ATXmega32A4U کار میکنم که 4 کیلو حافظه رم داره بنابراین داده ها رو به صورت بلوک های 512 تایی میفرستم. علاوه بر اون یه بافر پشتیبان هم دارم که زمانی که میکرو در حال ارسال بافر اصلی به حافظه SD هست، داده های ADC بروی بافر پشتیبان ذخیره میشه که داده ها از دست نره. ولی مشکلی که پیش میاد اینه که داده ها سرریز میکنه یعنی قبل از اینکه نوشتن داده ها در حافظه SD به پایان برسه بافر پشتیبان از داده های جدید پر میشه و بقیه داده ها از دست میره.
      جستجو کردم در سایت زیر اشاراتی به این مسئله داشته:
      http://www.microchip.com/forums/m563218.aspx

      البته روشی که برای افزایش سرعت بکار برده استفاده از نوشتن چندین بلوک به صورت همزمانه که من برای اینکار مشکل محدودیت حافظه دارم.
      منتظر نظرات سازنده دیگر دوستان هم هستم.
      با سپاس
      شأن انسان در ايمان و هجرت و جهاد است و هجرت، مقدمهآ‌ي جهاد فيآ‌سبيلآ‌الله.
      هجرت، هجرت از سنگينيآ‌هاست و جاذبهآ‌هايي كه تو را به خاك ميآ‌چسباند.
      چكمهآ‌هايت را بپوش، رهآ‌توشهآ‌ات را بردار و هجرت كن.

      دیدگاه


        #4
        پاسخ : حداکثر سرعت نوشتن بر روی کار میکرو SD با استفاده از FATFS

        اگر منظور دلیل متغیر بودن زمان نوشتن در کارت باشد، با مراجعه به جزئیات تابع f_write در فایل ff.c قابل مشاهده است که در مرزهای Sector و Cluster ها یکسری شرط وجود دارد که می تواند منجر به تغییر در زمان نوشتن این تابع در فواصل زمانی مشخص شود. برای نوشتن اطلاعات با حداکثر سرعت و اگر خواندن فایل در یک سیستم با استاندارد FAT لازم نباشد، به نظر می رسد روش نوشتن ساده بصورت Sector های پشت سرهم از سرعت بالاتری برخوردار باشد. روش بسیار سریعتر هم استفاده از مد SD بجای SPI برای ارتباط است که البته پیاده سازی آن کار چندان ساده ای نیست و در مواقعی نیاز به سخت افزار پشتیبانی کننده این نوع ارتباط دارد. در منابع موجود، حداکثر سرعت تا 25 میلیون بایت در ثانیه را برای این مد مشاهده کرده ام. پیشنهاد کلی به شما این است که از روش ساده نوشتن Sector بدون رعایت استاندارد FAT استفاده کنید.
        اوژن: به معنای افکننده و شکست دهنده است
        دانایی، توانایی است-Knowledge is POWER
        برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
        وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
        قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
        اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
        ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

        دیدگاه


          #5
          پاسخ : حداکثر سرعت نوشتن بر روی کار میکرو SD با استفاده از FATFS

          با آزمایشی که انجام شد گویا صرف نظر از روش های کد نویسی, MICRO SDHC های SLC BASED نتایج بهتری را نسبت به MICRO SD های MLC Based دارند و SLUTTER های کوتاهتری تولید می کنند.



          SDHC---Size Of Data :512kbyte --- time :10.1 sec


          Micro sd---Size Of Data :512kbyte ---time :15.72 sec


          دیدگاه


            #6
            پاسخ : حداکثر سرعت نوشتن بر روی کار میکرو SD با استفاده از FATFS

            سلام و سپاس فروان از شما دوست عزیز.
            ولی یک مشکلی هست و اونم محدودیت حافظه. تا جایی که اطلاع دارم حافظه های SDHC از نوع کلاس 4 هستن که سرعت بالاتری نسبت به SD های معمولی دارن ولی مشکل اینجاست که ارتباط با اونها نیاز به بلوک های بزرگتری داره، در SD بلوک ها 512 تایی هست ولی مثلا در SDHC ها 2048 تایی و ... البته مطمئن نیستم چون روی کد خودم تست کردم کار نکرد البته ممکنه ایراد از تنظیمات نرم افزاری من بوده باشه.
            شما با چه ساختاری تونستید با این کارت ها ارتباط برقرار کنید؟(ضمنا فکر کنم زمانبندی ها برای کارتها برعکس نوشته باشید)

            در ضمن در خصوص پیشنهاد جناب کی نژاد در خصوص عدم استفاده از FAT برای دستیابی به سرعت بالاتر دارم یه روش بینابین رو پیاده سازی میکنم که به محض اتمام هم خود روش رو تشریح خواهم کرد و هم نتایجش رو اینجا قرار میدم.
            شأن انسان در ايمان و هجرت و جهاد است و هجرت، مقدمهآ‌ي جهاد فيآ‌سبيلآ‌الله.
            هجرت، هجرت از سنگينيآ‌هاست و جاذبهآ‌هايي كه تو را به خاك ميآ‌چسباند.
            چكمهآ‌هايت را بپوش، رهآ‌توشهآ‌ات را بردار و هجرت كن.

            دیدگاه


              #7
              پاسخ : حداکثر سرعت نوشتن بر روی کار میکرو SD با استفاده از FATFS

              سلام
              SDHC کلاک بالاتری رو ساپورت میکنه که خودتون هم اشاره کردید. پس بهتره
              روش جناب کی نژاد رو من تست کرده بودم قبلا که بدون تردید سریعتر از FAT هست سایز دیفالت سکتور ها هم هرچی بیشتر باشه سرعت بیشتری بدست میاد
              من بلوکهای 1024 بایتی فرمت کردم با تایمر میکرو تست کرده بودم کمی بهتر شده بود اما روش تست دقیق نبود و تفاوتش رو خیلی احساس نکردم
              اما روی کامپیوتر این کار بهتر جواب میده سکتور سایز بالاتر مشکلی که داره اینه که فضای بیشتری رو اشغال میکنه زمان ذخیره داده های با حجم کم و تعداد زیاد
              این موارد نظر شخصی بنده بود البته
              موفق باشی
              هميشه به ياد خدا باش !

              دیدگاه


                #8
                پاسخ : حداکثر سرعت نوشتن بر روی کار میکرو SD با استفاده از FATFS

                سلام
                برای ارتباط با SDHC از بلوک های 512 بایتی و FatFs ورژن R0.08b استفاده شد بدون مشکل عملیات نوشتن انجام شد.
                مشخصات کارت: toshiba sd-k08g

                دیدگاه


                  #9
                  پاسخ : حداکثر سرعت نوشتن بر روی کار میکرو SD با استفاده از FATFS

                  دوست عزیز امکانش هست تابع پیکربندی اولیه رو اینجا قرار بدی من یه مقایسه بکنم ببینم چه تفاوتی با مال من داره؟
                  در ضمن شما میکرو رو با چه تنظیماتی فرمت کردید؟
                  با سپاس
                  شأن انسان در ايمان و هجرت و جهاد است و هجرت، مقدمهآ‌ي جهاد فيآ‌سبيلآ‌الله.
                  هجرت، هجرت از سنگينيآ‌هاست و جاذبهآ‌هايي كه تو را به خاك ميآ‌چسباند.
                  چكمهآ‌هايت را بپوش، رهآ‌توشهآ‌ات را بردار و هجرت كن.

                  دیدگاه


                    #10
                    پاسخ : حداکثر سرعت نوشتن بر روی کار میکرو SD با استفاده از FATFS

                    سلام
                    برای پیکربندی از توابعی که توسط جناب کی نژاد برای xmega مدیفای شده است استفاده کردم که نسخه جدید از سایت http://knowledgeplus.ir قابل دانلود است.

                    ضمنا کارت با FAT 32 و , Aloocation Size 4096 فرمت شد و میکرو در فرکانس 32 مگا هرتز تقریبا 2 برابر سریعتر از میکرو SD ها در SDHC نوشت.

                    دیدگاه


                      #11
                      پاسخ : حداکثر سرعت نوشتن بر روی کار میکرو SD با استفاده از FATFS

                      وضعیت FS_TINY_ در فایل ffconf.h احتمالا ممکن است در سرعت کلی انجام عملیات تاثیر گذار باشد. اگر شرایط برای آزمایش فراهم است، در هر یک از دو وضعیت 0 و 1 برای این پارامتر، سرعت انجام عملیات را تست کنید.
                      اوژن: به معنای افکننده و شکست دهنده است
                      دانایی، توانایی است-Knowledge is POWER
                      برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                      وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                      قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                      اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                      ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                      دیدگاه


                        #12
                        پاسخ : حداکثر سرعت نوشتن بر روی کار میکرو SD با استفاده از FATFS

                        دوستان مدتی ک دنبال ارتباط با sd card هایی هستم ک بشه 13مگا بیت در ثانیه اطلاعات رو ازروش بخونم و ظاهرا کلاس 10 این قابلیت رو داره
                        حالا سوالم اینه ک چ مارکی وچه مشخصاتی باید کارتم داشته باشه و ایا با همون روش های خودمون (سکتور خوندن)میشه ب این سرعت دست پیدا کرد ضمن اینکه حافظم حداکثر 10گیگ
                        ممنون
                        همه چيز – تمام غرور ها و انتظارات، تمام شکست ها و خجالت ها – با فرا رسيدن لحظه مرگ از بين خواهد رفت. به ياد داشتن مرگ باعث مي شود بدانم که چيزي براي از دست دادن ندارم. پس دليلي وجود ندارد که منتظر بمانم. (jobs)

                        دیدگاه


                          #13
                          حداکثر سرعت خواندن و نوشتن بر روی کارت حافظه در مد SPI با xmega

                          سلام
                          از دوستان کسی می دونه حداکثر سرعت خواندن و نوشتن بر روی کارت حافظه در حالت spi چقدر هست؟
                          به تفکیک خواندن و نوشتن و شرایط دیگر مثل اندازه بافر و کلاس کارت حافظه.

                          من چند بار این کار را انجام دادم و به سرعت نوشتن حدود 150 کیلو بایت رسیدم که به نظرم خیلی کم هست. البته خوندن یکمی سرعتش بیشتر هست. می خواستم مطمئن بشم.

                          اضافه شده در تاریخ :
                          تو نت یک سرچی کردم و این سایت را دیدم. گفتم اینجا بزارم شاید به درد کسی خورد.
                          http://www.microchip.com/forums/m439046.aspx
                          در زیر این نقاب چیزی بیشتر از گوشت هست. در زیر این نقاب یک ایده هست و ایده ها ضدگلوله هستند.

                          1-به اندازه ی باورهای هر کسی ؛ با او حرف بزن …. بیشتر که بگویی ، تو را احمق فرض خواهد کرد …!!!
                          2-تنها دو گروه نمى توانند افکار خود را عوض کنند: دیوانگان تیمارستان و مردگان گورستان.
                          3-آدم ها مثل عکس ها هستند: زیاد بزرگشون کنی ، کیفیتشون میاد پایین!

                          دیدگاه


                            #14
                            پاسخ : حداکثر سرعت نوشتن بر روی کار میکرو SD با استفاده از FATFS

                            نوشته اصلی توسط طراح
                            اگر منظور دلیل متغیر بودن زمان نوشتن در کارت باشد، با مراجعه به جزئیات تابع f_write در فایل ff.c قابل مشاهده است که در مرزهای Sector و Cluster ها یکسری شرط وجود دارد که می تواند منجر به تغییر در زمان نوشتن این تابع در فواصل زمانی مشخص شود. برای نوشتن اطلاعات با حداکثر سرعت و اگر خواندن فایل در یک سیستم با استاندارد FAT لازم نباشد، به نظر می رسد روش نوشتن ساده بصورت Sector های پشت سرهم از سرعت بالاتری برخوردار باشد. روش بسیار سریعتر هم استفاده از مد SD بجای SPI برای ارتباط است که البته پیاده سازی آن کار چندان ساده ای نیست و در مواقعی نیاز به سخت افزار پشتیبانی کننده این نوع ارتباط دارد. در منابع موجود، حداکثر سرعت تا 25 میلیون بایت در ثانیه را برای این مد مشاهده کرده ام. پیشنهاد کلی به شما این است که از روش ساده نوشتن Sector بدون رعایت استاندارد FAT استفاده کنید.
                            با سلام خدمت دوستان و استاد محترم جناب کی نژاد
                            سوالی که از استاد محترم جناب کی نژاد داشتم این است که شما فرمودید برای افزایش سرعت نوشتن در مموری کارت 1- استفاده از روش ساده sector بدون رعایت استاندارد FAT است , راستش من متوجه منظورتون نشدم , آیا با کتابخانه ای که شما در سایتتون قرار دادید امکان انجام آن هست؟ و آیا در صورت استفاده از روش sector , امکان خواندن اطلاعات کارت حافظه توسط کامپیوتر می باشد یا خیر؟
                            2- استفاده از مد SD بجای spi , آیا این روش را میتوان توسط کنترلر xmega صرفا بصورت نرم افزاری پیاده سازی کرد؟ ممنون میشم مثل همیشه بنده و سایر دوستان رو راهنمایی بفرمایید.
                            همچنین آیا میزان حداکثر سرعت نوشتن توسط کتابخانه مذکور اندازه گیری شده است؟
                            با تشکر
                            مشخصات من در لینک زیر
                            http://www.eca.ir/forum2/index.php?topic=1721.msg698645#msg698645

                            www.********

                            دیدگاه


                              #15
                              پاسخ : حداکثر سرعت نوشتن بر روی کار میکرو SD با استفاده از FATFS

                              باسلام و ادب :smile:
                              ببخشید که خارج از بحث سوال می پرسم :nerd:
                              اما
                              من هنوز مموری به پردازندم وصل نکردم :cry2:
                              فقط یه شماتیک و پی سی بی مطمئن می خوام :read:
                              خوهش :sad:
                              اگه نمونه کد راه اندازی هم باشه که تمومه
                              بازم تشکر که کمک می کنید...... :wow:

                              :applause:

                              دیدگاه

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