اطلاعیه

Collapse
No announcement yet.

سوال :کمبود حافظه فلش avr

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

    #16
    پاسخ : سوال :کمبود حافظه فلش avr

    برای رفع مشکلت شما باید ساختار برنامه رو تحلیل کنی. مثلا:
    - در مرحله اول یک سری کد و دیتا داریم. فعلا فرض رو بر این میذاریم که کد ها رو نمیشهو نمیخواییم به حافظه جنبی منتقل کنیم. پس میمونه دیتا.
    - دیتا رو میشه بفرم ثابت و متغیر در نظر گرفت. داده ثابت میتونه یک رشته باشه مثل "Hello World" میتونه یک فونت باشه یا عکس. اما یادتون باشه که در مگا 32 شما میتونی اطلاعتت رو مستقیما از فلش بخونی اما موقعی که اطلاعات به حافظه بیرونی انتقال پیدا میکنه باید ابتدا داخل میکرو آورده بشه و بعد استفاده بشه. اینجور مواقع شاید درست نباشه مثلا یک عکس تمام صفحه برای نمایش روی ال سی دی 64 در 128 رو که 1024 بایت حجمش هست رو یکباره داخل حافظه آورد. و مثلا بهتره این 1 کیلو بایت در واحد های مثلا 8 بایتی خونده بشه و برای جلوگیری از کاهش سرعت نمایش مستقیما در بافر lcd نوشته بشه. یا یک فونتی که ممکنه 3 الی 4 کیلو حجمش باشه رو اصلا نمیتونی تو 2 کیلو حافظه رم میکرو جا بدی. پس باید یک مکانیسم caching استفاده کنی و این لازمه اش اینه که روالهای نمایش متن رو عوض کنی......

    میبینی. خیلی فاکتورهای متفاوتی وسط میاد. تازه بگذریم که جنابعالی باید حداقل چیزی حدود 700 تا 800 بایت برای استفاده از mmc حروم کنی که این ممکنه با استفاده از at24 به کمتر از 200 بایت برسه. اما به ازای 64 کیلو بایت حافظه باید 3 الی 4 تومن پول بدی.

    راحتت کنم! روی مرز محدودیت های سیستم از همه نظر داری راه میری. تا اطلاعات جزئی وسط نباشه یا یه کمی مرز ها رو اونورتر نبری با انتخاب آی سی بزرگتر؛ فقط دنبال دردسر میری.

    دیدگاه


      #17
      پاسخ : سوال :کمبود حافظه فلش avr

      نوشته اصلی توسط Solsal
      XMEGA از خانواده AVR تا 384 کیلوبایت کد را پشتیبانی می کند.
      اسما وجود داشت ولی هیچ وقت این نوع میکرو با این حافظه تولید نشد

      دیدگاه


        #18
        پاسخ : سوال :کمبود حافظه فلش avr

        با سلام خدمت دوستان باز هم سوال

        با توجه به پیشنهاد دوستان من از میکروی بزرگتر استفاده کردم حالا تعدادی سوال مطرح شده است در رابطه با حافظه های جانبی سری AT24xx من باید به چه صورت عمل نمایم

        میخواهم تعدادی ارایه را درون این حافظه ها لود نموده وبعد از روی ان فراخوانی نمایم

        سوال اول : باید این ارایه ها را به چه صورت از برنامه خارج کنم ؟ (داخل فایل متنی ذخیره شود و با win hex خروجی از ان بگیریم )

        سوال دوم: باید این فایل خروجی به چه صورت لود شود تا ما بدانیم کدام خانه شروع ارایه , مثلا 1 ماست , و کدام خانه پایان ارایه 1 ماست تا در برنامه آن را فراخانی کنیم اگر بطور مثال 10 ارایه داشته باشیم از کجا بدانیم هر کدام از این ارایه ها در کجای حافظه قرار دارند ؟


        ( ببخشید که سوال من خیلی مبتدیانه است کاری که من تا بحال با حافظه های خارجی کردم این بوده که مثلا با خود میکرو در خانه فلان مینوشتم بعد از همان خانه اطلاعات را فرا خوانی میکردم )


        سوال سوم : دوستان برای این کار چه پروگرمری را پیشنهاد می کنید با همین پروگرم های چهار سیمه جواب میدهد ؟

        سوال چهارم : دوستان اگر در رابطه با رم خارجی اطلاعاتی دارید نیز راهنمایی کنید ؟

        (ایا با رم خارجی مشکل حل میشود لطفا شماره اسی و شماتیک معرفی کنید)

        بازهم از دوستانی که همفکری میکنند تشکر دارم

        خواهشن دوستان در صورت امکان به هر چهار سوال جواب دهید. باتشکر.


        :angry: :read: :angry:

        دیدگاه


          #19
          پاسخ : سوال :کمبود حافظه فلش avr

          دوستان خواهشن همفکری کنید




          :angry: :read: :angry:

          دیدگاه


            #20
            پاسخ : سوال :کمبود حافظه فلش avr

            ببخشید. من عادت دارم همیشه از آخر به اول میام. :mrgreen:
            برای حافظه خارجی در مرحله اول به میکرویی احتیاج داری که خودش رم خارجی رو ساپورت کنه. مثل مگا 162 یا 64 یا 128 یا 2560. در مرحله دوم تنها به یک آی سی لچ احتیاج داری. شماتیکش راحته. یه چیزی مثل این:


            مرحله دوم اینکه اگه از رم خارجی استفاده میکنی میتونی براحتی از روالهایی مثل avr-dos استفاده کنی و توسط یک ram-reader تحت ویندوز فایلهاتو روی یک mmc خالی کنی و در برنامه اونها رو توی رم خارجی بخونی و استفاده کنی.

            مسلما با این کار به پروگرامر هم احتیاجی نداری.

            برای ساختن فایل حاوی این اطلاعات میتونی یک برنامه تحت ویندوز بنویسی و این اطلاعات رو توسط اون برنامه داخل فایلهایی بریزی و بعد اون فایلها رو روی رم ریدر بریزی.

            این شماتیکی که گذاشتم به شما 32 کیلو بایت رم میده که برای پرهیز از دردسر میتونی با استفاده از دو تا آی سی 32 کیلویی یا یک آی سی 64 کیلویی میزان رم ات را تا نزدیک 64 کیلو ارتقاء بدی. منتها اولش حتما بایستی میکروی مورد استفاده رو مشخص کنی. اگر خواستی از این برد یکی دو تا بسازی میتونی از آی سی های cache موجود روی مادر برد های 386 و 486 قدیمی استفاده کنی. هم سرعت بالایی دارن (15 تا 20 نانو ثانیه) و هم مفت درمیاد. ولی هر کدومش راست یک مگا هشت جا میگیره. ضمنا برد ات هم دورو درمیاد.

            برای آدرس دهی هم میتونی یک سری آرایه در رم خارجی تصور کنی و اطلاعات رو درون اونها بریزی. اما بهرحال برای راحتی باید یه کمی نوع و اندازه اطلاعاتت رو لو بدی.

            از همه اینا گذشته بنظر میاد که برنامه ات بطور ساختاری نوشته نشده باشه و هر جا رسیدی کد نوشتی. این رو هم میشه با دونستن منطق برنامه ات یک نمونه کد آماده کرد.

            از آی سی های سری AT24 هم میتونی استفاده کنی ولی هم دنگ و فنگ بیشتری داره. هم برای حجم های بالا گرونتر درمیاد. ولی فکر میکنم روالهای پایه دسترسی رو توی کد ویژن داری.

            دیدگاه


              #21
              پاسخ : سوال :کمبود حافظه فلش avr

              دوست عزیز با تشکر از پاسخ شما

              من بیس را روی حافظه های eeprom , i2c spi گرفتم چون این پروژه یک وسیله خانگی است و جالب نیست از mmc اسفاده شود و اینطور که من فهمیدم رم خارجی نیز باید کنار گزاشته شود چون تعداد ساخت محدود نیست

              اگر امکان دارد یک مقدار توضیح در رابطه با همان AT24xx یا AT25xx بدهید ؟

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


              میخواهم تعدادی ارایه را درون این حافظه ها لود نموده وبعد از روی ان فراخوانی نمایم

              سوال اول : باید این ارایه ها را به چه صورت از برنامه خارج کنم ؟ (داخل فایل متنی ذخیره شود و با win hex خروجی از ان بگیریم )

              سوال دوم: باید این فایل خروجی به چه صورت لود شود تا ما بدانیم کدام خانه شروع ارایه , مثلا 1 ماست , و کدام خانه پایان ارایه 1 ماست تا در برنامه آن را فراخانی کنیم اگر بطور مثال 10 ارایه داشته باشیم از کجا بدانیم هر کدام از این ارایه ها در کجای حافظه قرار دارند ؟


              سوال سوم : دوستان برای این کار چه پروگرمری را پیشنهاد می کنید با همین پروگرم های چهار سیمه جواب میدهد ؟


              :angry: :read: :angry:

              اگر امکان دارد در رابطه با این دو موضوع یک مقدار توضیح دهید

              نوشته اصلی توسط رضا آقازاده

              برای ساختن فایل حاوی این اطلاعات میتونی یک برنامه تحت ویندوز بنویسی و این اطلاعات رو توسط اون برنامه داخل فایلهایی بریزی و بعد اون فایلها رو روی رم ریدر بریزی.

              برای آدرس دهی هم میتونی یک سری آرایه در رم خارجی تصور کنی و اطلاعات رو درون اونها بریزی. اما بهرحال برای راحتی باید یه کمی نوع و اندازه اطلاعاتت رو لو بدی.

              کارییی برنامه چیست ؟

              آدرس دهی را یک مقدار باز ش میکنید چون مشکل اساسی من در همین ادرس دهی است ؟




              بازهم تشکر دارم . ممنون از همفکری شما .


              :angry: :read: :angry:

              دیدگاه


                #22
                پاسخ : سوال :کمبود حافظه فلش avr

                با سلام
                داده های موجود :
                عکسهای منو ها را که به صورت منو کروم سیاه و سفید به اندازه سایز lcd ساخته اید ، با برنامه های مبدل تصویر به آرایه ، تبدیل می کنید به آرایه.
                این ارایه ها را با همان برنامه مبدل ، یا کمپایلر خود، تبدیل به hex یا bin می کنید.
                با یک پروگرامر مثل ECA multi AVR programmer که قابلیت نوشتن در AT24Cxxx را دارد ، داده های فوق را در آدرس های معین و دلخواه و متوالی ضبط می کنید.
                ( یک برد شما هم می تواند برای هدف برنامه ریزی AT24cxxx تغییر کاربری داده شود، یعنی فقط کارش نوشتن داده های ثابت در ئییپرام باشد و این ئییپرامها را در بردهای دیگر استفاده کنید.)
                ( هر تصویر lcd یک آرایه مستقل در ادرس مستقل ذخیره می شود.)
                در برنامه ، شما این آدرسها را دارید، در موقع نیاز ، از آدرس مذکور شروع به خواندن به صورت خردخرد و ارسال به lcd می نمایید.

                با سپاس
                گشتی در لاله زار
                http://www.eca.ir/forum2/index.php?topic=76138.0

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

                دیدگاه


                  #23
                  پاسخ : سوال :کمبود حافظه فلش avr

                  Solsal عزیز متشکرم از پاسخ شما

                  منتهی خیلی راهنمایی شما کلی گویی است چون این مطالب که شما ارائه دادید در ابتدا به ذهن میرسد ولی وقتی در مرحله عمل میرسد تمامی چیزهایی که اشاره گذرا کردید خود یک معما میشود(با سواد کم من) خواهشن در رابطه با موارد زیر توضیح کامل دهید

                  .
                  نوشته اصلی توسط Solsal

                  با برنامه های مبدل تصویر به آرایه ، تبدیل می کنید به آرایه.
                  این ارایه ها را با همان برنامه مبدل ، یا کمپایلر خود، تبدیل به hex یا bin می کنید.
                  چگونه چند ارایه ی خروجی از برنامه مبدل تصویر به ارایه را در فایل ریخته وبا کامپایلر (کدویژن) تبدیل به هکز کرد


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

                  با یک پروگرامر مثل ECA multi AVR programmer که قابلیت نوشتن در AT24Cxxx را دارد ، داده های فوق را در آدرس های معین و دلخواه و متوالی ضبط می کنید.
                  یعنی این نرم افزار قابلیت مشخص کردن ادرس شروع هگز برای لود کردن را دارد ؟ (نرم افزار پروگرم را معرفی کنید)

                  چگونه باید آدرس پایان هگز را بدست اورد تا فضای eeprom بهینه استفاده شود آ‌؟

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

                  ( یک برد شما هم می تواند برای هدف برنامه ریزی AT24cxxx تغییر کاربری داده شود، یعنی فقط کارش نوشتن داده های ثابت در ئییپرام باشد و این ئییپرامها را در بردهای دیگر استفاده کنید.)
                  شرمنده ولی دیگه اصلا متوجه داخل پرانتز نشدم لطفا توضیح دهید .

                  باز هم تشکر از همفکری دوستان بخصوص جناب اقازاده و Solsal عزیز

                  منتظر همفکری دوستان هستم .



                  دیدگاه


                    #24
                    پاسخ : سوال :کمبود حافظه فلش avr

                    آقا جون بذار دو تا مورد رو بهت بگم تا کارت یه کمی راحت بشه.
                    1- یک برنامه پروگرامر هست بنام ponyprog اگر اشتباه نکنم سایتش lancos.com هست. با یک مبدل کوچولو میتونی این ایپرام ها رو پروگرام کنی. و در هر آدرسی هر دیتایی میخوای بریزی.
                    2- انواع اطلاعاتت رو (و نه خود اونها رو) مثلا رشته ها و محتوای lcd گرافیکی و غیره رو مشخص کنی تا با یک برنامه بشه فایل باینری نهایی رو از روی یک مجموعه اطلاعات برات تولید کرد. یک چیزی مثل resource compiler. این کار خیلی زیادی نمیبره. خروجی این برنامه میتونه شامل یک فایل خروجی باینری برای ارسال روی ایپرام و یک فایل هدر برای دارا بودن اطلاعات بازیافت اطلاعات باشه. ضمنا باید یک سری روال برای دسترسی به این اطلاعات نوشته بشه.

                    دیدگاه

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