اطلاعیه

Collapse
No announcement yet.

نحوه ی فهمیدن مقدار استفاده ی شده ی Sram در میکروکنترلر avr

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

    نحوه ی فهمیدن مقدار استفاده ی شده ی Sram در میکروکنترلر avr

    از کجا میشه فهمید برنامه ای که نوشته شده برای avr - به چه مقدار رم نیاز داره تا کم نیاریم تو برنامه هامون !؟
    حافطه فلش ومیشه فهمید . ولی رم و نه .

    ممنونم.
    به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
    (پيش به سوي هدف)

    #2
    پاسخ : نحوه ی فهمیدن مقدار استفاده ی شده ی Sram در میکروکنترلر avr

    به نظرم برنامه یا کمک نرم افزارهای دقیق در این مورد وجود نداره وبیشتر با آزمون وخطا میشه

    مثلا یه برنامه نوشته بودم که برای اجراش روی uno مدام وقفه داشت وکند عمل میکرد.هیچ پیغام خطایی هنگام آپلود هم نمایش نمیداد.مخصوصا وقتی برخی آپشنهای برنامه فعال میشود
    برای راه حل اول وتست:اینکه رم برد رو درنظر میگیریم.مثلا uno دارای 2kb حافظه sram بود.همونو روی مگا آپلود کردم بدون هیچ مشکلی وعالی کار میکرد
    تمام دستورات مربوط به نمایش در سریال مانیتور رو حذف کردم
    در جاهایی که متغیر ثابت وجود داشت از تابع ودستور داخلی (f( استفاده کردم که اگر در سایت رسمی آردوینو جستجو کنید شکل دستورش هست وکارش اینه که متغیرهای ثابت در برنامه رو بجای استفاده از sram در حافظه flash نگهداری میکنه یعنی همون قسمت که خود برنامه هم ذخیره میشه ودقت کنید که حافظه flash به اندازه کافی باشه
    اگر هم به سریال مانیتور نیاز دارید حتما از دستور if(serial....) استفاده کنید تا فقط زمانی که پورت سریال بازه ازش استفاده کنه ودرحالت عادی بافر سریال وsram پر واستفاده نشه

    دیدگاه


      #3
      پاسخ : نحوه ی فهمیدن مقدار استفاده ی شده ی Sram در میکروکنترلر avr

      از کجا میشه فهمید برنامه ای که نوشته شده برای avr - به چه مقدار رم نیاز داره تا کم نیاریم تو برنامه هامون !؟
      حافطه فلش ومیشه فهمید . ولی رم و نه .
      ممنونم.
      سلام، تو خود خروجی کامپایلر مگه نمینویسه که چقدر فلش و چقد اس رام مصرف شده؟
      توی کانال یوتیوب من قراراه طراحی انواع بردهای الکترونیکی مثل بردهای تک لایه، دو لایه یا به طور کلی بردهای چند لایه، بردهای مبتنی بر میکروکنترلر، بردهای صنعتی، بردهای الکترونیک قدرت و بردهای فرکانس بالارو یاد بگیریم.
      همینطور کدنویسی انواع میکروکنترلرهای 8 بینی مثل میکروکنترلرهای خانواده AVR-STM8، میکروکنترلرهای میبتی بر معماری ARM مثل STM32 و پردازنده های مخصوص اینترنت اشیاء مثل ESP32-ESP8266 و DSPها یاد میگیریم.
      https://www.youtube.com/@aKaReZa75​

      دیدگاه


        #4
        پاسخ : نحوه ی فهمیدن مقدار استفاده ی شده ی Sram در میکروکنترلر avr

        نوشته اصلی توسط hosseinam نمایش پست ها
        از کجا میشه فهمید برنامه ای که نوشته شده برای avr - به چه مقدار رم نیاز داره تا کم نیاریم تو برنامه هامون !؟
        حافطه فلش ومیشه فهمید . ولی رم و نه .

        ممنونم.
        سلام
        ببینید رم خودش چند بخشه. بخش هایی مثل stack، heap و Data Memory داره که هرکدوم کارکردهای خاص خودشونو دارن.
        متغیرهای گلوبال و استاتیک که تمام طول برنامه وجود دارن، داخل Data Memory قرار میگیرن و سایز و تعدادشون هنگام کامپایل مشخصه.
        حافظه
        stack به متغیرهای محلی و نقطه بازگشت توابع و سرویس وقفه ها اختصاص داره و هرچی برنامه تو در تو باشه و متغیرهای محلی بیشتر داشته باشیم، پر و خالی میشه.
        حافظه
        heap هم به متغیرهای داینامیک اختصاص پیدا میکنه که با توابع malloc و free معمولا مدیریتشون میکنیم. این متغیرها اصلا تضمین شده نیستن و ممکنه حافظه خالی باشه و متغیر ما رو بسازه، ممکنم هست نسازه!

        حافظه RAM مجموعه ای از این مواردی هست که گفتم و همونطوری که مشخصه خیلی به برنامه شما ربط پیدا میکنه و بسته به این که برنامتون چجوری باشه فرق میکنه. ممکنه در یک قسمت برنامه حافظه زیادی مورد نیاز باشه، ممکنم هست گاهی حافظه زیادی در یک لحظه مورد استفاده نباشه. تاجایی که دیدم اکثر IDE ها صرفا مقدار مصرفی
        Data Memory رو اعلام میکنن و اون دو قسمت دیگه رو باید خود شما تشخیص بدید چقدره. شایدم راه هایی باشه که من خبر ندارم.

        دیدگاه


          #5
          پاسخ : نحوه ی فهمیدن مقدار استفاده ی شده ی Sram در میکروکنترلر avr

          نوشته اصلی توسط hossein.m98 نمایش پست ها
          سلام
          ببینید رم خودش چند بخشه. بخش هایی مثل stack، heap و Data Memory داره که هرکدوم کارکردهای خاص خودشونو دارن.
          متغیرهای گلوبال و استاتیک که تمام طول برنامه وجود دارن، داخل Data Memory قرار میگیرن و سایز و تعدادشون هنگام کامپایل مشخصه.
          حافظه
          stack به متغیرهای محلی و نقطه بازگشت توابع و سرویس وقفه ها اختصاص داره و هرچی برنامه تو در تو باشه و متغیرهای محلی بیشتر داشته باشیم، پر و خالی میشه.
          حافظه
          heap هم به متغیرهای داینامیک اختصاص پیدا میکنه که با توابع malloc و free معمولا مدیریتشون میکنیم. این متغیرها اصلا تضمین شده نیستن و ممکنه حافظه خالی باشه و متغیر ما رو بسازه، ممکنم هست نسازه!

          حافظه RAM مجموعه ای از این مواردی هست که گفتم و همونطوری که مشخصه خیلی به برنامه شما ربط پیدا میکنه و بسته به این که برنامتون چجوری باشه فرق میکنه. ممکنه در یک قسمت برنامه حافظه زیادی مورد نیاز باشه، ممکنم هست گاهی حافظه زیادی در یک لحظه مورد استفاده نباشه. تاجایی که دیدم اکثر IDE ها صرفا مقدار مصرفی
          Data Memory رو اعلام میکنن و اون دو قسمت دیگه رو باید خود شما تشخیص بدید چقدره. شایدم راه هایی باشه که من خبر ندارم.
          ممنونم. خوب از کجا بفهمیم وقتی که آدرس
          نقطه بازگشت توابع و سرویس وقفه ها تو چند بایت جا میشه؟ یعنی چند بایتی هست که خودمون حداقل حساب کنیم .
          اطلاع دارین که تو اتمل استدیو چطور میشه مقدار حافطه stack و heap رو مشخص کرد؟

          سلام، تو خود خروجی کامپایلر مگه نمینویسه که چقدر فلش و چقد اس رام مصرف شده؟


          نه فقط flash و memory data رو میزنه.


          به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
          (پيش به سوي هدف)

          دیدگاه


            #6
            پاسخ : نحوه ی فهمیدن مقدار استفاده ی شده ی Sram در میکروکنترلر avr

            نوشته اصلی توسط hosseinam نمایش پست ها
            ممنونم. خوب از کجا بفهمیم وقتی که آدرس
            نقطه بازگشت توابع و سرویس وقفه ها تو چند بایت جا میشه؟ یعنی چند بایتی هست که خودمون حداقل حساب کنیم .
            اطلاع دارین که تو اتمل استدیو چطور میشه مقدار حافطه stack و heap رو مشخص کرد؟



            نه فقط flash و memory data رو میزنه.


            من راهی به جز تخمین نمیشناسم. شما همیشه باید حاشیه ایمنی رو برای کارتون رعایت کنید و یک مقدار بالاتر در نظر بگیرید.

            دیدگاه

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