اطلاعیه

Collapse
No announcement yet.

مخاسبه فلش میکروکنترلر...

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

    #16
    پاسخ : مخاسبه فلش میکروکنترلر...

    نوشته اصلی توسط ASHIT AXAR نمایش پست ها
    میشه واضح تر توضیح بدید. من متوجه نشدم.
    میکرو های AVR فقط فایل هگز رو اجرا میکنن نه چیز دیگه. ( و هگز فشرده ترین حالت کد هستش )
    میکرو به فایل هگز نیاز نداره ، این پروگرامر هست که به فایل هگز نیاز داره ، یعنی هگز و میدی به پروگرامر ، و پروگرامر میآد اونو تبدیل به کد باینری میکنه و میریزه داخل میکرو.
    میکرو فایل باینری رو از پروگرامر میخاد.

    عکسی که شما گذاشتید ظرفیت پارامتر های حافظه ATMega32 و در پایین اندازه برنامه ای که شما نوشتید (هگز) رو مشخص کرده
    اون که حافظه فلش میکرو بود.
    ولی اون فایل هگز نیست.فایل هگز همین برنامه 55 کیلوبایت هست ، وقتی دادم به نرم افزار سایز باینریشو داد.پایین اندازه فایل باینری فایل هگز من هست.
    جدیدترین ویرایش توسط hosseinam; ۲۳:۱۱ ۱۳۹۵/۰۷/۰۶.
    به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
    (پيش به سوي هدف)

    دیدگاه


      #17
      پاسخ : مخاسبه فلش میکروکنترلر...

      نوشته اصلی توسط hosseinam نمایش پست ها
      میکرو به فایل هگز نیاز نداره ، این پروگرامر هست که به فایل هگز نیاز داره ، یعنی هگز و میدی به پروگرامر ، و پروگرامر میآد اونو تبدیل به کد باینری میکنه و میریزه داخل میکرو.
      میکرو فایل باینری رو از پروگرامر میخاد.
      من از سطح mohammadne آگاه هستم و اینکه در زمینه میکرو کنترلر وارد هستن. (و میدونستم که چه چیزی رو میگفتن)
      بحث ما سر فرمت ها بود - ایشون ازنوع خاصی از فرمت کدهای ARM صحبت میکردن ولی موضوع این پست AVR بود برای همین خواستم که گفته شون رو تایید کنن چون AVR از فرمت کد های thumb پشتیبانی نمی کنه

      /*
      ‫Thumb یک زیرمجموعه از عمومی ترین دستورالعمل های ARM سی و دو بیتی را که درون کدهای عملیاتی (Opcode- کدهای عملیاتی بخشی از دستورالعمل های زبان ماشین هستند که اجرا شدن عملیات را مشخص می کند) با اندازه شانزده بیت فشرده شده است، فراهم می کند. در زمان اجرا، این دستورالعمل های شانزده بیتی می توانند از وضعیت فشرده خارج شده و به دستورالعمل های ARM سی و دو بیتی مبدل شود یا به طور مستقیم توسط یک واحد رمزگشایی اختصاصی Thumb اجرا شوند. اگر چه کد Thumb نسبت به کد ARM سی و دو بیتی معادل، چهل درصد بیشتر دستورالعمل استفاده می کند، اما به سی درصد فضای کمتر نیاز دارد. همچنین کد Thumb نسبت به کد ARM چهل درصد آهسته تر است. بنابراین Thumb موجب کاهش کارایی می شود و به طور معمول در کارهایی که حساس به کارایی نیستند، کاربرد دارد. Thumb اگرچه موجب کاهش کارایی می شود، اما موجب کاهش مصرف توان سیستم می شود که یک معیار بسیار مناسب برای سیسستم های همراه به شمار می آید.
      */
      منظور ایشون فرمت فایل BIN بود که کد های thumb رو پشتیبانی میکنه


      نوشته اصلی توسط hosseinam نمایش پست ها
      اون که حافظه فلش میکرو بود.
      ولی اون فایل هگز نیست.فایل هگز همین برنامه 55 کیلوبایت هست ، وقتی دادم به نرم افزار سایز باینریشو داد.پایین اندازه فایل باینری فایل هگز من هست.
      بالاتر مهندس Mahdi.Faani و هم من اشاره کردیم چرا میزان حجمی که مشاهده میشه با اندازه واقعی فایل همخوانی نداره
      اگه می خواید اندازه واقعی فایل رو حساب کنید می تونید این کار رو بکنید:
      ابتدا حجم فایل هگز رو نگاه کنید و به بایت ها توجه کنید (منظور سایز روی دیسک نیست)
      حالا هگز رو توی یک ویرایشگر متن باز کنید و آخرین شماره خط رو نگاه کنید (مثلا 300 خط کد)
      بعد باید از هر خط سیزده بایت رو کم کنید
      10 بایت آدرس
      یک بایت کاراکتر :
      و دو بایت کاراکتر انتهای خط (0x0D0A) در استاندارد فایل متنی

      مقدار مانده رو تقسیم بر دو کنید (هر دو کاراکتر ASCII یک بایت میباشد)
      این میشه حجم فایل نهایی هگز شما
      جدیدترین ویرایش توسط ASHIT AXAR; ۱۶:۲۰ ۱۳۹۵/۰۷/۰۷.
      If the wind will not serve, take to the oars

      دیدگاه


        #18
        پاسخ : مخاسبه فلش میکروکنترلر...

        نوشته اصلی توسط ASHIT AXAR نمایش پست ها
        من از سطح mohammadne آگاه هستم و اینکه در زمینه میکرو کنترلر وارد هستن. (و میدونستم که چه چیزی رو میگفتن)

        بالاتر مهندس Mahdi.Faani و هم من اشاره کردیم چرا میزان حجمی که مشاهده میشه با اندازه واقعی فایل همخوانی نداره
        اگه می خواید اندازه واقعی فایل رو حساب کنید می تونید این کار رو بکنید:
        ابتدا حجم فایل هگز رو نگاه کنید و به بایت ها توجه کنید (منظور سایز روی دیسک نیست)
        حالا هگز رو توی یک ویرایشگر متن باز کنید و آخرین شماره خط رو نگاه کنید (مثلا 300 خط کد)
        بعد باید از هر خط سیزده بایت رو کم کنید
        10 بایت آدرس
        یک بایت کاراکتر :
        و دو بایت کاراکتر انتهای خط (0x0D0A) در استاندارد فایل متنی

        مقدار مانده رو تقسیم بر دو کنید (هر دو کاراکتر ASCII یک بایت میباشد)
        این میشه حجم فایل نهایی هگز شما
        ممنون از توضیحات کاملتون .

        الان یکم بیشتر گشتم تو فایل هایی که کامپایلر بعد کامپایل تولید میکنه ، متوجه شدم که :
        مثلا وقتی که با بسکام کد میزنیم و کامپایل میکنیم ، چندتا فایل به ما میده که یکیش هگز و یکی دیگه فایل باینری هست و ... .

        فهمیدم مقدار مورد نیاز حافظه فلش میکرو ، به اندازه همون مقدار باینری تولید شده هست.
        مثلا من کد هگز 55 کیلو بایتی رو وقتی میدم به برنامه ای که قراره برام بیاد تبدیل به باینریش کنه و بریزه داخل میکرو ، سایز کد باینری رو 19.7 کیلو بایت زده ،
        و کد باینری تولید شده از کاپایلر بسکام هم 20 کیلو بایته .
        و یا کد های دیگه ای که همینجوری تست گرفتم ، دیدم به همون اندازه فایل باینری ایجاد شده هست. و فکر میکنم که فلش میکرو رو میشه از روی همون انتخاب کرد.

        فایل ایجاد شده توسط بسکام :


        فایل هگزی که داده شد به برنامه جهت پروگرام روی میکرو (سازی که برای نوشتن رو ی فلش نیاز داره ) :




        و البته ممنون بابت اینکه یادآوری کردید دستگاه های الکترونیکی با داده های باینری کارمیکنن
        من دلیل این حرف شما رو نمیفهمم.ولی در هرصورت ما اینجا سعی در بالا بردن اطلاعات همدیگه داریم ، اگه من اشتباه بگم ، دوستان دیگه لطف میکنن با راهنمایی هاشون منو راهنمایی میکنن،
        در ضمن اینجا کسی به هم تیکه نمیندازه.

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

        دیدگاه


          #19
          پاسخ : مخاسبه فلش میکروکنترلر...

          دلیل اختلاف حجم فایهای intel hex با باینری هایی که روی حافظه فلش میکرو ریخته میشه به این علت هست که در فایل intel hex داده ها به صورت hex و با کدینگ ascii در فایل ذخیره میشن، حالا اگه همین داده ها رو با نرم افزار hex2bin به باینری تبدیل کنین، حجم فایل با حجم کدی که قراره روی حافظه فلش میکرو ریخته بشه دقیقا برابری میکنه، البته فایل intel hex علاوه بر دیتاها اطلاعات دیگه ای مثل ادرس شروع ، ادرس نوشتن هر دیتا و CRC CHECK هم در خودش جا داده که این اطلاعات در فایل باینری حذف میشن.

          نحوه محاسبه حجم باینری ها از روی فایل Intel HEX (و در نتیجه حجم بایتهای مورد نیاز برای ریختن کدها روی میکرو) برای کاملپایلرهای مختلف فرق میکنه اما برای میکروهای ARM-AVR به این صورته: خطوطی که کاراکتر نهم از سمت چپشون 0 نیست رو از ابتدا و انتهای فایل پاک کنین، تعداد خطوط باقی مونده رو در 16 ضرب کنین، خط اخر هم چک کنین اگر مثل بقیه خطوط کامل نبود 9 کاراکتر اول و 2 کارارکتر اخر رو در نظر نگیرین و کاراکترهای باقی مونده رو تقسیم 2 کنین ، این بایتها رو هم با بایتهای قبلی جمع کنین تا حجم باینری هایی که قراره روی حافظه میکرو ریخته بشه رو حساب کرده باشین.
          جدیدترین ویرایش توسط محمد پورخلیلی; ۰۹:۳۹ ۱۳۹۵/۰۷/۰۹.

          دیدگاه

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