اطلاعیه

Collapse
No announcement yet.

مشکل با مقدار RAM در ATmega8

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

    مشکل با مقدار RAM در ATmega8

    سلام..
    برنامه ای در CodeVision نوشتم که این خطا رو داره :

    Linker error: global RAM variables size: 923 bytes is too large

    مگه مگا 8 رمش 1کیلو نیست..؟

    در ضمن در قسمت configure پروژه در تب C compiler >> Code Generator اون قمست که مربوط به RAM هست چه کاربردی داره...؟؟ :redface:

    سوال دیگر اینکه آیا به طور پیش فرض در Codevision از کل ظرفیت Ram استفاده میشه..؟

    دوستان لطفا کمک کنید..
    با تشکر :job:

    #2
    پاسخ : مشکل با مقدار RAM در ATmega8

    بحث هایی مثل استک رو فراموش نکنید چون از اس رم استفاده میکنه
    [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

    دیدگاه


      #3
      پاسخ : مشکل با مقدار RAM در ATmega8

      میشه بیشتر توضیح بدید...دقیقا برای بهینه مصرف کردن Sram برای استک چه کارهایی میشه کرد...
      در حالت عادی (طوری که اون ارور قبلی رو نمیده) موقع کامپایل میزنه :
      Hardware Stack : 433 byte
      این یعنی چی...میزان استفاده برنامه از SRAM هست...؟؟؟؟؟

      کاش یکی بیاد کامل مارو گاه کنه.. :cry:

      لطفا اگر میتونید سوال های پست قبل رو هم جواب بدید.

      ممنونم :job:

      دیدگاه


        #4
        پاسخ : مشکل با مقدار RAM در ATmega8

        در باره stack یکی از ویدوئوهای استاد کینژاد کامل توزیح دادند.

        درکل
        فضای برای متغیرهای محلی و آدرس فانکشن های کال شده در برنامه .

        حالا در CV بصورت پیش فرض یه مقدار مشخصی حافظه به این کار اختصاص داده میشه .

        برای مثال در mega8 کل حافظه sram 1024 بایت میباشد

        که از این مقدار 256 بایت به stack اختصاص داده میشود .(در AVR GCC از پاییین به بالا sram )


        مقدار حافظه باقی مانده برای شما 767 بایت میباشد .
        از جمله ی رفتگان این راه دراز
        باز آمده ای کو که به ما گوید راز
        هان بر سر این دو راهه از روی نیاز
        چیزی نگذاری که نمی آیی باز

        دیدگاه


          #5
          پاسخ : مشکل با مقدار RAM در ATmega8

          سلام...
          یعنی میگید برم رو یه میکرو با رم بالاتر.. :sad:
          خیلی تلاش کردم که این پروژه رو روی mega8 پیاده کنم...همین تست های آخر که داشتم برنامه ها رو ادغام میکردم این مشکل پیش اومد....
          متاسفانه تو برنامه از چندین هدر استفاده میکنم که امکان تغییر اونها و بهینه کردنشون برای Data stack وجود نداره....
          اگر هم وجود داشت بنده نمیدنم چطور این کار رو انجام بدم....
          من تو این برنامه از SD کارت میخونم (توسط هدر pff.h) و تو یه lcd گرافیکی نشون میدم....فکر کنم یه راهش اینه که هر فریم رو تو چند مرحله بخونم...درسته....؟؟؟؟
          فقط اینجوری سرعتم کم میشه و شاید نتوم انیمه نشون بدم... :sad:
          کسی راه دیگه به ذهنش میرسه....یا برم سراغ میکرو های با ram بیشتر...؟؟؟

          ممنون. :job:

          دیدگاه


            #6
            پاسخ : مشکل با مقدار RAM در ATmega8

            راستی من خواستم آرایه ای که نقش بافر رو بین خواندن از SD تا نوشتن در lcd رو بازی میکنه در flash تعریف کنم ولی ارور داد......چرا نمیشه در flash آرایه تعریف کرد...؟؟؟؟

            دیدگاه


              #7
              پاسخ : مشکل با مقدار RAM در ATmega8

              توی قسمت برنامه نمیشه محتویات حافظه فلش رو تغییر داد.فقط اینکار تو قسمت بوت لودر و با دستور spm امکان پذیر است. درضمن برا نمایش یک عکس برا یه السیدی 240*320 به اندازه 240*320*2byte فضا میخواد که میشه نزدیک به 155 کیلو بایت. نظر خوبیه از sd خوند ولی نمیتونی کلش رو بریزی تو sram میکرو بعد بدی به السیدی
              راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
              کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
              نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
              http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
              انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

              دیدگاه

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