اطلاعیه

Collapse
No announcement yet.

بوت لودر

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

    #16
    پاسخ : بوت لودر

    خواهش می کنم مثل خیلی بحثهای دیگه بدون سرانجام بحث رو رها نکنیم

    دیدگاه


      #17
      پاسخ : بوت لودر

      نوشته اصلی توسط ghasedak2716
      خوب فکر میکنم شما باید یه برنامه اصلی داشته باشین که hex رو از mmc بخونه و بریزه رو flash میکرو و بعد بحث بوت لودر . اما با این حساب هم فکر کنم باید از یه میکرو با فلش بالا باید استفاده کنید
      بستگی به مقدار برنامتون داره.مثلا تو مگا32 4 kb از فلش رو میشه به بوت اختصاص داد.فکر نمی کنم برنامه ی بوت از این بیشتر بشه.
      نوشته اصلی توسط داریوش عباسی
      با تشکر فراوان از شما آقای بهاری
      شما برنامه ای که گذاشتین مال کدوم طرفه ؟
      به نظر من دو تا برنامه نیاز است اولا برنامه ای که دفعه اول نوشته می شود و این برنامه هم می تواند اجرا شود و کار معمول خود را انجام دهد و هم این قابلیت را دارد که یک فایل هگز را مثلا از طریق rs232 دریافت کند و از این به بعد آن برنامه را اجرا کند و باز اگر فایل جدیدی آمد آنرا جایگزین کند
      برنامه دوم بایستی بتواند فایل هگزی بدهد که در آخر آن را در برنامه بریزیم که من فکر کنم یک برنامه عادی و معمولی باشد ولی اصولا شاید هم بایستی چیز خاصی داشته باشد.
      ولی برنامه اول بایستی مثلا چه تنظیماتی برای فیوز بیتها داشته باشد .
      کلا اگه میشه بحث رو شما ادامه بدین و ما بیسوادها رو هم آموزش بدین
      اختیار دارید آقای عباسی .ما هم سواد درست حسابی نداریم.
      بله حق با شماست ما به دوتا برنامه برای این کار نیاز داریم .همون طور که گفتم اون برنامه فقط برای آموزش قسمت بوت بود. دستور SPM(Store Program Memory) و LPM(Load Program Memory) فقط تو قسمت بوت فلش کار می کنند و استفاده از اونها تو قسمت Application هیچ کاری انجام نمی ده. به نظر من دیدن یه برنامه ی درست حسابی برای این کار تمام ابهامات رو برطرف میکنه.برنامه ای که تو سایت http://www.mictronics.de/download/mp3stick نوشته شده برنامه ی خیلی جالبه ایه.
      توی این آدرس اگه برنامه هایی که برای دانلود گزاشته رو یه نگاهی بندازید دو تا برنامه ی مختلف می بینید.firm ware برای برنامه ی کاربردی و boot loader برای قسمت بوت.توی قسمت application وقتی کلید بوت فشار داده میشه این زیر برنامه اجرا میشه:
      کد:
        case MENU_BOOTLOAD:
                  asm volatile("jmp 0xF000"); // start bootloader
                  break;
      این آدرس مربوطه به آدرس شروع حافظه ی بوت میکرو.اگه با دستورات اسمبلی حال نمی کنید میتونید تابع بوت که تو قسمت boot loader رو صدا کنید.بعد از این برنامه توابع فایل Boot loader رو اجرا می کنه.که از mmc برنامه رو میتونه دریافت کنه و وضعیتش رو به پورت سریال بفرسته. این مثال خیلی خوبیه از بوت لودر چون تقریبا کامل و تست شدست.تمام این برنامه با Win AVR نوشته شده. اگه جایی از برنامه رو متوجه نشدید بگید تا توضیح بدم.
      راستی تو قسمت بوت از توابع boot.h استفاده شده.این هدر فایل توی کتابخونه ی استاندارد win avr هست هست اگه لازم داشتید بگید تا اونم بزارم.البته با توجه به اسم توابع رو تین کار رو میشه فهمید.

      در مورد فیوز بیت ها هم به غیر از دوتا فیوز بیتی که مربوط به سایز حافظه ی بوت میشه بقیه فیوز بیت ها اهمیت خاصی ندارند.(بسته به نوع برنامه هر چی خواستید )
      در ضمن با بوت لودر میشه تمام فیوز بیت ها و بیت ها یقفل رو تغییر بدید.پس زیاد نگران اینها نباشید(با رجستر SPMCR و R0 )
      [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

      دیدگاه


        #18
        پاسخ : بوت لودر

        البته خیلی لطف کرده و این مثالهای عملی رو گذاشتین ولی من با code vision کار می کنم و هنوز نتونستم این برنامه را خوب آنالیز کنم مثالی با کدویژن ندارین ؟

        دیدگاه


          #19
          پاسخ : بوت لودر

          توضیحی در مورد رجستر SPMCR
          7 6 5 4 3 2 1 0
          SPMIE- RWWSB- not used -RWWSRE- BLBSET -PGWRT -PGERS -SPMEN

          بیت 7=(فعال کننده ی وقفه)روتین وقفه زمانی اجرا میشه که SPEN=1و وقفه ی سراسری هم فعال باشه.
          بیت 6=(پرچم مشغول بودن)به معنای اینکه برنامه در حال خواندن و یا نوشتن برنامه ی Boot Loader است.بعد از کامل شدن برنامه ریزی توسط سخت افزار پاک میشه.
          بیت5 =بلااستفاده
          بیت4=(فعال ساز خواندن)هنگام برنامه ریزی بخشRWWاین بخش برای خواندن بسته میشه(RWWSB=1).برای دوباره فعال کردن این بخش نرم افزار کاربر تا برنامه ریزی کامل صبر کند(SPEN=0)سپس اگر در بیت WWSREبه همراه SPEN یک نوشته شود,دستور SPM بعدی بخش RWW را دوباره فعال می کند.
          بیت3 (فعال ساز قفل)اگر در بیت همزمان باSPEN یک نوشته شود ,دستور SPM بعدی با توجه به مقادیر R0 بیت های قفل رو برنامه ریزی می کند.
          بیت2 (نوشتن صفحه)اگر این بیت همزمان با SPEN یک نوشته شود ,دستور SPM بعدی اطلاعات موجود در بافر موقت رو در صفحه ی مورد تظر کپی می کند.صفحه ی مورد نظر توسط ریجسترZ انتخاب میشود.
          بیت 1(پاک کردن صفحه)اگر در بیت همزمان باSPEN یک نوشته شود,دستور SPM بعدی صفحه ی مورد نظر در برنامه رو پاک می کند.آدرس صفحه ی مورد نظر در رجستر Z هست.
          بیت 0(فعال کننده SPM)این بیت دستور المعل SPM رو برای 4 سیکل فعال می کند.اگر این بیت به همراه )PGERS,RWWSRE,BLBSET,PGWRT(یک شود دستور SPM معنای به خصوصی دارد در غیر این صورت دستور SPM مقدار درون رجسترR0,R1 رو در آدرسی که توسط رجستر z تعیین میشود در بافر موقت تعیین می کند.
          این رجیستر برای کنترل قسمت boot به کار میره.برای کپی برنامه روی فلش باید برنامه رو از mmc یا.... بخونیدو در رجستر R0وR1 قرار بدید .سپس آدرس صفحه ی مورد نظر(پیش فرض 0)رو روی رجیستر Z انتقال بدید و صفحه ی مورد نظر رو پاک کنید.بعد R0وr1 رو روی بافر موقت انتقال بدید و بعد بافر رو روی فلش ذخیره کنید.دوباره از mmc می خونیم ومراحل بالا را تکرار می کنیم .فقط یادتون نره مقدار Zرو در هر حلقه زیاد کنید.
          این توضیح boot loader به ساده ترین حالت بود.تمام برنامه هایی که گفتم هم از این ترتیب استفاده می کنند.
          نوشته اصلی توسط داریوش عباسی
          البته خیلی لطف کرده و این مثالهای عملی رو گذاشتین ولی من با code vision کار می کنم و هنوز نتونستم این برنامه را خوب آنالیز کنم مثالی با کدویژن ندارین ؟
          شرمنده کدویژن ندارم :cry2: ولی win avr هم خیلی فرق نداره.جفتشون سی هستن
          [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

          دیدگاه


            #20
            پاسخ : بوت لودر

            اگه کسی مثالی از اسمبلی هم داره لطفا share کنه
            با تشکر

            دیدگاه


              #21
              پاسخ : بوت لودر

              یه نکته ی دیگه رو در مورد برنامه ریزی بیت های قفل یادم رفت بگم
              یت3 (فعال ساز قفل)اگر در بیت همزمان باSPEN یک نوشته شود ,دستور SPM بعدی با توجه به مقادیر R0 بیت های قفل رو برنامه ریزی می کند.
              قالب رجیستر R0 برای برنامه ریزی بیت های قفل عمومی این جوریه:
              _______________________________________
              |R0=| 1 | 1 | BLB12 | BLB11| BLB02| BLB01 | 1 | 1
              --------------------------------------------------------------------
              همون طور هم که میدونید اگه همه ی بیت ها رو یک کنید به معنی غیرفعال کردن قفل میکرو هست.

              [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

              دیدگاه


                #22
                پاسخ : بوت لودر

                اگه از دوستان مثالهای ساده همراه با توضیحات در این باره دارند ممنون میشم در این قسمت قرار بدهند خصوصا اگه با کدویژن باشه.
                ضمنا من در مورد تاپیک دیگری که دیروز به همین نام از طرف دوست دیگری گذاشته بود فقط به ذکر یک تذکر در همان قسمت که تکراری است و بحث را بهتر است در یکجا ادامه دهیم تا به نتیجه بهتری برسد بسنده کردم و هیچ گزارش تخلفی یا چیز دیگری رد نکردم و در قفل شدن آن مقصر نیستم ( این را برای توضیح گذاشتم چون برخی شاید بد برداشت کرده باشند )

                دیدگاه


                  #23
                  پاسخ : بوت لودر

                  با سلام

                  با وجود اینکه این تاپیک یه 4 ماهی هست که پستی نداشته ولی گفتم اینو بزارم شاید به درد کسی بخوره و مارو هم دعا منه

                  دوستان شما میتونید برای برنامه ریزی و پروگرام فلش میکرو از مموریهای MMC یا SD و استفاده از بوت لودر دو میکروی MEGA128 و MEGA64 از شماتیک و فایل های هگزی که در زیر براتون اپلود کردم استفاده کنید خود بنده از این روش برای اپدیت فریمویر تابلوهای تولیدی اسانسور خودمون استفاده میکنم
                  این شماتیکشه که خیلی ساده هست



                  این لینک فایل های هگزشه

                  http://s2.picofile.com/file/7202404836/SD_BOOT.rar.html

                  فقط کافیه فایل BIN (توجه کنید که HEX نیست) برنامتونو با نام app.bin در داخل روت اصلی یک مموری با فرمت fat16 یا fat32 بریزید
                  در داخل فایل زیپ دوتا فایل هگز هست که یکی مخصوص میکروی MEGA128 و دیگری مخصوص میکروی MEGA64 میباشد لذا حتما فایل مخصوص هر کدام را روی میکرو پروگرام کرده و بعد از مونتاژ و قرار دادن مموری در داخل سوکت میکرو رو ریست کنید
                  در مورد تغذیه هم باید بگم بنده از 3.3 ولت برای میکرو و مموری استفاده کردم که در صورت بالا بردن ولتاژ میکرو به رگلاتور 3.3 ولت و نقسیم مقاومتی برای ارتباط میکرو و مموری نیاز خواهد بود

                  به همین سادگی :nice:
                  تجربه معلم خشنی هست اول امتحان میگیره بعد درس میده !!!
                  به دلیل برخی مشکلات بوجود اماده دیگه امکان ادامه فعالت در این انجمن مقدور نیست.

                  دیدگاه


                    #24
                    پاسخ : بوت لودر

                    خیلی عالیه دستتون درد نکنه فقط ای کاش واسه میکرو های پر استفاده مثل 32 و 16 هم میذاشتید

                    معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

                    دیدگاه


                      #25
                      پاسخ : بوت لودر

                      نوشته اصلی توسط john lock
                      خیلی عالیه دستتون درد نکنه فقط ای کاش واسه میکرو های پر استفاده مثل 32 و 16 هم میذاشتید

                      دوست من برای میکروهای که بوت لودری زیر 4 کیلو دارند ممکن نیست خود این فایل هایی هم که گزاشتم حدود 95% از حجم بوت لودر رو اشغال میکنه

                      به همین سادگی:nice:
                      تجربه معلم خشنی هست اول امتحان میگیره بعد درس میده !!!
                      به دلیل برخی مشکلات بوجود اماده دیگه امکان ادامه فعالت در این انجمن مقدور نیست.

                      دیدگاه


                        #26
                        پاسخ : بوت لودر

                        نوشته اصلی توسط POLESTAR
                        دوست من برای میکروهای که بوت لودری زیر 4 کیلو دارند ممکن نیست خود این فایل هایی هم که گزاشتم حدود 95% از حجم بوت لودر رو اشغال میکنه

                        به همین سادگی:nice:
                        خیلی ممنون. دقیقا کار راه انداز. :applause:
                        اما من یک درخواست از شما داشتم، اگر امکان داره فایل کامپایل نشده آن را به هر زبانی که نوشتید (c یا بیسیک یا اسمبلی) آن را هم به اشتراک بگذارید که آموزش خوبی میشه برای همه دوستانی که به این موضوع علاقه دارند.
                        من به نوبه خود مجدد و پیشاپیش از شما تشکر می کنم.
                        حل المسایل آلتیوم
                        قطعات درخواستی آلتیوم
                        و آنچه در مورد آلتیوم نیاز دارید...
                        Altium 3D Lib

                        دیدگاه


                          #27
                          پاسخ : بوت لودر

                          نوشته اصلی توسط SaeidJorablo
                          خیلی ممنون. دقیقا کار راه انداز. :applause:
                          اما من یک درخواست از شما داشتم، اگر امکان داره فایل کامپایل نشده آن را به هر زبانی که نوشتید (c یا بیسیک یا اسمبلی) آن را هم به اشتراک بگذارید که آموزش خوبی میشه برای همه دوستانی که به این موضوع علاقه دارند.
                          من به نوبه خود مجدد و پیشاپیش از شما تشکر می کنم.
                          با سلام
                          دوست من به علت پاره ای مشکلات و محدودیت های کاری امکان قرار دادن سورس این پروژه وجود ندارد
                          ولی اگر زمان اجازه بده میتونم کمک و راهنمایی های لازم رو بدم تا خودتون برنامشو بنویسید

                          به همین سادگی :nice:
                          تجربه معلم خشنی هست اول امتحان میگیره بعد درس میده !!!
                          به دلیل برخی مشکلات بوجود اماده دیگه امکان ادامه فعالت در این انجمن مقدور نیست.

                          دیدگاه

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