اطلاعیه

Collapse
No announcement yet.

پروگرام از راه دور میکروکنترلر AVR

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

    پروگرام از راه دور میکروکنترلر AVR

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

    .



    #2
    پاسخ : پروگرام از راه دور میکروکنترلر AVR

    سلام
    از طریق gprs برنامه رو ارسال کنید و با بوت لودر پروگرام کنید
    البته با توجه به سوابق شما ، گمونم کنم این موردی که من عرض کردم رو خودتون می دونستید! حالا سوال شما همین بود؟
    این عکس همون دستگاهی هست که در موردش صحبت کردید؟
    هميشه به ياد خدا باش !

    دیدگاه


      #3
      پاسخ : پروگرام از راه دور میکروکنترلر AVR

      نوشته اصلی توسط DDR3 نمایش پست ها
      سلام
      از طریق gprs برنامه رو ارسال کنید و با بوت لودر پروگرام کنید
      البته با توجه به سوابق شما ، گمونم کنم این موردی که من عرض کردم رو خودتون می دونستید! حالا سوال شما همین بود؟
      این عکس همون دستگاهی هست که در موردش صحبت کردید؟
      میشه یکم توضیع بدین اینی که شما فرمودین یعنی چی؟؟
      من هیچ اطلاعاتی در مورد امر شما ندارم میشه بطور کامل توضیع بدین یا این که یه منبع معرفی کنید تا ما هم استفاده کنیم
      امام صادق عليه‏السلام :

      هرچيزى‏زكاتى دارد و زكات دانش، آموختن آن است به اهلش.

      دیدگاه


        #4
        پاسخ : پروگرام از راه دور میکروکنترلر AVR

        نوشته اصلی توسط DDR3 نمایش پست ها
        سلام
        از طریق gprs برنامه رو ارسال کنید و با بوت لودر پروگرام کنید
        البته با توجه به سوابق شما ، گمونم کنم این موردی که من عرض کردم رو خودتون می دونستید! حالا سوال شما همین بود؟
        این عکس همون دستگاهی هست که در موردش صحبت کردید؟

        سلام و ممنون از پاسخگوئی شما؛

        راستش بله، به موضوع بوت لود کردن خیلی فکر کردم.(مثلا می دونیم که می شه یک برد آردوینو را با یک آردوینوی دیگر پروگرام کرد). اما برای پروگرام از راه دور، در عمل برخی چالشهای تکنیکی پیش می آید. لذا ابتدا باید چند مورد رو در نظر داشت:

        یکی اینکه ما آنجا هیچ رایانه ای را متصل به میکرو نداریم و برای بوت لود کردن با برنامه های Bootloader رایج، بایستی وجود PC متصل به میکرو را به نحوی شبیه سازی کنیم. در واقع با وجودی که میکرو بلافاصله بعد از روشن شدن، مشغول اجرای وظایف از پیش تعریف شده خود می شود، باید اول برنامه موجود را تحت عنوان فایل Back Up جائی ذخیره کنیم (تا در صورت لزوم، بتوانیم همه چیز را به جای اول خود بازگردانیم).
        دوم اینکه باید مثل یک پروگرامر رومیزی معمولی بتوانیم از طریق کانکتورهای ISP ، ابتدا کل خانه های حافظه Flash (به جز بخشی از حافظه که برنامه بوت لود در آن ذخیره شده) و نیز احیانا E2PROM میکرو را از برنامه قبلی پاک کنیم. بعد طی مدت زمان لازم ، آنها را با کدهای جدید پر کرده و فیوز بیتها را نیز دوباره تنظیم و نهایتا میکرو را ریست کنیم. کل این روند هم؛ در حین پروگرام، به نحوی باید از راه دور مانیتور شود تا چنانچه خطائی بروز کرد، آن بخش از پروسه تکرار شود.
        لذا به نظر ابتدا باید نوعی مینی وب سرور بر پایه GPRS (یا برای برخی جاها LAN) داشته باشیم که سر فرصت، پکیجهای مربوط به فایل هگز را به درستی و تمامی دریافت و جائی ذخیره کند (مثلا روی SD Card). بعد یک برد میکروکنترلری رابط؛ وظایف معمول برنامه پروگرام رایانه + خود سخت افزار پروگرامر را (همزمان با ارسال داده های فیدبک نشانگر آخرین وضعیت روند پروگرامینگ) شبیه سازی و اجرا کند.
        بنابراین تو فکرم به عنوان یک ایده؛ از اساس یک ماژول اختصاصی Remote Programming برای میکروهای AVR، با انعطاف پذیری لازم برای کاربردهای اینچنینی پیدا یا طراحی کنیم.
        جدیدترین ویرایش توسط مهندس نوآور; ۱۳:۴۷ ۱۳۹۵/۰۶/۱۲.

        دیدگاه


          #5
          پاسخ : پروگرام از راه دور میکروکنترلر AVR

          نوشته اصلی توسط مهندس نوآور نمایش پست ها
          سلام و ممنون از پاسخگوئی شما؛

          راستش بله، به موضوع بوت لود کردن خیلی فکر کردم.(مثلا می دونیم که می شه یک برد آردوینو را با یک آردوینوی دیگر پروگرام کرد). اما برای پروگرام از راه دور، در عمل برخی چالشهای تکنیکی پیش می آید. لذا ابتدا باید چند مورد رو در نظر داشت:

          یکی اینکه ما آنجا هیچ رایانه ای را متصل به میکرو نداریم و برای بوت لود کردن با برنامه های Bootloader رایج، بایستی وجود PC متصل به میکرو را به نحوی شبیه سازی کنیم. در واقع با وجودی که میکرو بلافاصله بعد از روشن شدن، مشغول اجرای وظایف از پیش تعریف شده خود می شود، باید اول برنامه موجود را تحت عنوان فایل Back Up جائی ذخیره کنیم (تا در صورت لزوم، بتوانیم همه چیز را به جای اول خود بازگردانیم).
          دوم اینکه باید مثل یک پروگرامر رومیزی معمولی بتوانیم از طریق کانکتورهای ISP ، ابتدا کل خانه های حافظه Flash (به جز بخشی از حافظه که برنامه بوت لود در آن ذخیره شده) و نیز احیانا E2PROM میکرو را از برنامه قبلی پاک کنیم. بعد طی مدت زمان لازم ، آنها را با کدهای جدید پر کرده و فیوز بیتها را نیز دوباره تنظیم و نهایتا میکرو را ریست کنیم. کل این روند هم؛ در حین پروگرام، به نحوی باید از راه دور مانیتور شود تا چنانچه خطائی بروز کرد، آن بخش از پروسه تکرار شود.
          لذا به نظر ابتدا باید نوعی مینی وب سرور بر پایه GPRS (یا برای برخی جاها LAN) داشته باشیم که سر فرصت، پکیجهای مربوط به فایل هگز را به درستی و تمامی دریافت و جائی ذخیره کند (مثلا روی SD Card). بعد یک برد میکروکنترلری رابط؛ وظایف معمول برنامه پروگرام رایانه + خود سخت افزار پروگرامر را (همزمان با ارسال داده های فیدبک نشانگر آخرین وضعیت روند پروگرامینگ) شبیه سازی و اجرا کند.
          بنابراین تو فکرم به عنوان یک ایده؛ از اساس یک ماژول اختصاصی Remote Programming برای میکروهای AVR، با انعطاف پذیری لازم برای کاربردهای اینچنینی پیدا یا طراحی کنیم.
          طرح ساخت ماژول اختصاصی Remote Programming جالب هست. اما اگر در حال حاضر ضرروت بر آپدیت کردن سخت افزارهای خود مبتنی بر شبکه دارید. باید در ابتدا مشخصات بیشتری از سخت افزار خود را ارائه کنید. مواردی مثل :
          • نوع میکرو
          • میزان حافظه فلش مصرفی
          • میزان حافظه SRAM مصرفی
          • سرعت کلاک میکرو
          • میزان مشغول بودن میکرو
          • پین های مورد استفاده
          • و سخت افزار موجود جانبی در پروژه که میتواند در بوت لودر هم مورد استفاده قرار گیرد.


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

          نکات بسیار مهم در تهیه پروگرامر که متاسفانه فراموش میشود!

          دیدگاه


            #6
            پاسخ : پروگرام از راه دور میکروکنترلر AVR

            ایا با اضافه کردن امکان پروگرام کردن از راه دور ،هیچ خطری برای امنیت دستگاه پیش نمیاد؟
            اگه یکی دیگه یه فایل مخرب رو برای دستگاه ارسال کنه چه اتفاقی میوفته؟؟

            دیدگاه


              #7
              پاسخ : پروگرام از راه دور میکروکنترلر AVR

              نوشته اصلی توسط lachini نمایش پست ها
              طرح ساخت ماژول اختصاصی Remote Programming جالب است. اما اگر در حال حاضر ضرروت بر آپدیت کردن نرم افزارهای خود مبتنی بر شبکه دارید. باید در ابتدا مشخصات بیشتری از سخت افزار خود را ارائه کنید. مواردی مثل :
              • نوع میکرو
              • میزان حافظه فلش مصرفی
              • میزان حافظه SRAM مصرفی
              • سرعت کلاک میکرو
              • میزان مشغول بودن میکرو
              • پین های مورد استفاده
              • و سخت افزار موجود جانبی در پروژه که میتواند در بوت لودر هم مورد استفاده قرار گیرد.

              با توجه به نکات بالا میتوان امکاسنجی نمود که آیا واقعا نیاز به اضافه کردن مدار جانبی بعنوان پروگرامر هست؟ یا اینکه میتوان با سخت افزار موجود هم موارد مورد نظر شما را بدست آورد.
              ممنون و بسیار خوشحالم از حضور پر ارزش استاد لاچینی گرامی در این بحث؛

              البته برای این سیستم خاص، مشخصات رو اعلام می کنم اما همانطور که پیشتر ذکر کردم؛ هدف نهائی، یافتن یک پلت فرم مطمئن و منعطف برای پوشش کلی این نیاز است:
              • نوع میکرو: ATmega1284P
              • میزان حافظه فلش مصرفی: فایل هگز 214 و فایل باینری 76 کیلوبایت هستند
              • میزان حافظه SRAM مصرفی: این مورد رو مطمئن نیستم اما این میکروی خاص 16K رم دارد که در مقایسه با دیگر میکروهای AVR، مقدار قابل توجهی است.
              • سرعت کلاک میکرو: 16MHz با کریستال خارجی
              • میزان مشغول بودن میکرو : در هنگام Initialization فول تایم مشغول است اما پس از حدود دو دقیقه، به طور متوسط از هر یک ثانیه، حدود سیصد میلی ثانیه مشغولیت دارد.
              • پین های مورد استفاده : پینهای I/O همگی مشغولند اما پینهای میکرو مرتبط با In-System Programming و کانکتور ISP ده پین، مستقیما به آن متصلند و کارکرد دیگری ندارند.
              • و سخت افزار موجود جانبی در پروژه : ماژول SIM900 + تعدادی سنسور + GLCD + کلید ریست خارجی + تعدادی رله و البته وظایفی مثل شارژ باتری پشتیبان، اسکن صفحه کلید دستگاه، راه اندازی بازر و ... توسط یک میکروی ATmega8 کمکی انجام می شود.



              نوشته اصلی توسط lachini نمایش پست ها

              معمولا با یک میکرو مگا 32 میتوان علاوه بر راه اندازی شبکه بحث بوت لودر را نیز بصورت همزمان پیاده سازی نمود. تا برنامه میکرو بتواند آپدیت شود. اما اگر بدنبال ساخت ماژول هستید. میتوانید به مواردی همچون لینک زیر مراجعه کنید تا مطابق با موارد مورد نظر خود آنرا آپدیت و اصلاح کنید :
              http://www.fischl.de/ispnub/
              پروگرمر ذکر شده، از این جهت کهStand - alone بوده و مستقلا می تواند وظیفه erase/programming را انجام دهد، مثال جالبی است. اما به هر حال قبل از هر چیز، برای آماده به کار کردن آن، یک اسکریپت (جاوا) تحت ویندوز یا لینکوس، کد برنامه را به هگز تبدیل کرده و یک پروگرامر USBAsp به همراه نرم افزار رایانه ای AVR Dude ، میکروی پروگرامر را برنامه ریزی کرده اند. معضل اصلی هم دقیقا همین بخش است. یعنی انتقال از راه دور (بدون دخالت رایانه) فایل هگزجدید به فلش میکروی پروگرامر مستقل (به اضافه متوقف کردن کار معمول میکروی دستگاه اصلی و بردن آن به مود برنامه پذیری و Update)
              جدیدترین ویرایش توسط مهندس نوآور; ۱۶:۵۴ ۱۳۹۵/۰۶/۱۲.

              دیدگاه


                #8
                پاسخ : پروگرام از راه دور میکروکنترلر AVR

                سلام
                با توجه به مطالبى که فرمودىد
                بوت لودر اسمش روش هست.همون مىکروى مورد نظر برنامه بوت رو در ادرش شروع کپى مى کنن و هربار که مىکرو شروع به کار مى کنه.تو avr مىره به برنامه بوت و مننظر کامند مىمونه اگر چىزى نبود مىره به ادرس ربست و مابقى داستان
                شما باىد به اندازه حداقل دو برابر حافظه فلش مىکرو .حافظه بلا استفاده حالا از هر نوعى داشته باشىد.ىکى براى کپى برنامه در حال اجرا و ىکى براى کپى برنامه درىافت شده بعد تز درىافت صحت اطلاعات درىافتى رو باىستى چک کنى اگر درست بود شروع به پروگرام کنى.اگر پروگرام موفقىت امىز بود که هىچى اگر نبود برنامه قبلى رو پروگرام کن دوباره اىن روند کلى هست.ولى اجراش کار مىبره.
                قبلا اجرا کردم ولى نه با gprs
                موفق باشى
                هميشه به ياد خدا باش !

                دیدگاه


                  #9
                  پاسخ : پروگرام از راه دور میکروکنترلر AVR

                  با توجه به اینکه حدود نصف حافظه فلش مصرف شده و از طرف دیگر خود بوت لودر نیز بخشی از حافظه را بصورت دائم اشغال میکند. بهتر هست یک حافظه فلش از سری 25 به سخت افزار اضافه کنید.تا در حین ارتباط تحت شبکه اگر کدهای آپدیت دریافت شد آنرا در این چیپ حافظه فلش ذخیره کرده. و پس دریافت کامل و سالم اطلاعات برنامه بوت لودر جهت پروگرام میکرو با استفاده از داده های دریافتی انجام شود.
                  در همین بوت لودر برای اطمینان میتوانید قبل شروع به آپدیت میکرو، دستور بک آپ گرفتن از اطلاعات فعلی درون چیپ فلش را نیز انجام دهید.
                  جدیدترین ویرایش توسط lachini; ۱۷:۳۷ ۱۳۹۵/۰۶/۱۷.

                  نکات بسیار مهم در تهیه پروگرامر که متاسفانه فراموش میشود!

                  دیدگاه


                    #10
                    پاسخ : پروگرام از راه دور میکروکنترلر AVR

                    همین پروژه شما رو اقای کی نژاد به عنوان مسابقه در سال قبل در سایتشون قرار داده بودند و مبلغ جایزه هم فکر میکنم 5 میلیون تومان بوده باهاشون تماسی بگیرید شاید اماده داشته باشند

                    دیدگاه


                      #11
                      پاسخ : پروگرام از راه دور میکروکنترلر AVR

                      نوشته اصلی توسط voyager2020 نمایش پست ها
                      همین پروژه شما رو اقای کی نژاد به عنوان مسابقه در سال قبل در سایتشون قرار داده بودند و مبلغ جایزه هم فکر میکنم 5 میلیون تومان بوده باهاشون تماسی بگیرید شاید اماده داشته باشند
                      درسته و ظاهرا با وجود تعیین جایزه 4 میلیون تومانی، نهایتا کسی موفق به طراحی یک محصول با کارآئی مناسب نشده است. در ضمن بیشترین تاکید ایشون هم به مبحث امنیت خود کد و ارتباط بوده است (نکته ای که جناب saeed underline هم در پستهای قبلی، نسبت به آن تذکر دادند).

                      عین مطلب رو از سایت ایشون، در اینجا باز نشر می کنم:

                      .
                      مسابقه علمی سال 1394:

                      مقدمه:

                      یکی از قابلیت های مفید برای محصولات مبتنی بر میکروکنترلرها، امکان تغییر محتوای کد آنها با استفاده از BootLoader است که در این صورت یک محصول تولید شده که ممکن است با مبدا سازنده آن فاصله زیادی داشته باشد، قابلیت بروزرسانی را پیدا می کند. در پیاده سازی BootLoader ها در بسیاری از موارد به دلیل جلوگیری از امکان کپی کردن محصول، عملیات رمزنگاری با الگوریتم های شناخته شده روی محتوای اطلاعات انجام می شود تا دسترسی به آن برای ناظر بیرونی میسر نباشد. به این ترتیب بدون اینکه امکان کپی کردن اطلاعات بصورت غیر مجاز ممکن باشد، می توان میکروکنترلری را که مجهز به BootLoader مورد نظر است از نظر محتوای کد بروز رسانی کرد.


                      موضوع مسابقه:

                      موضوع دومین دوره مسابقه عبارت است از پیاده سازی ساز و کاری که بتوان از راه دور و از طریق خط تلفن و یا ماژول های gsm، برنامه یک میکروکنترلر AVR را بروز رسانی کرد. در این روش نباید ناظر خارجی امکان دسترسی به محتوای برنامه را داشته باشد. اولویت در این مسابقه با روش هایی است که با کمترین هزینه، امکان برنامه ریزی میکروکنترلر را فراهم کنند.

                      جایزه مسابقه:

                      جایزه مسابقه مبلغ چهار میلیون تومان بصورت نقدی است.

                      نتیجه مسابقه:

                      علیرغم اعلام آمادگی چندین نفر برای شرکت در مسابقه و چند ماه مهلت برای به نتیجه رساندن کار، در نهایت هیچ فرد یا گروهی موفق به انجام و ارائه طرح نهایی نگردید.

                      دیدگاه


                        #12
                        پاسخ : پروگرام از راه دور میکروکنترلر AVR

                        اگه صورت مسئله رو عوض کنیم راه حل اسون تری هست!
                        ینی بجای استفاده از بوت لودر و کاهش امنیت دستگاه بیایم یک سری دستورات برای دستگاه ارسال کنیم و در برنامه ی خود دستگاه شرطی بزاریم که اگر فلان دستور دریافت شد پس از اجرای برنامه ی اصلی __طبق دستور دریافت شده مثلا پورت ب را که در برنامه ی قبلی 1 بوده رو 0 کن...و اینجوری برنامه ابتدا عملکرد عادی خود را شروع میکند و پس از دریافت دستور ، برنامه ی خود را تغییر میدهد و تغییر مطابق دستور ما هست و در خروجی دستگاه به طور کامل اجرا میشود
                        .
                        .
                        .
                        این روش به خودی خود امنیت زیادی ندارد ولی با اضافه کردن بخشی به برنامه ی اصلی و اولیه میتوانیم به دستگاه این قابلیت را بدهیم تا تفاوت بین دستورات اپراتور دستگاه و دیگر دستورات که باید نادیده گرفته شوند را تشخیص دهد-
                        .
                        .
                        این کار را میتوانیم با چند شرط ساده انجام دهیم ینی دستگاه قبل از دریافت دستورات اصلاحی باید چند پیام پی در پی دریافت کند و اگر همه مقادیر دریافتی با مقادیر لحاظ شده در برنامه مطابقت داشت ان گاه دستگاه پیام های بعدی را به عنوان دستور میشناسد
                        .
                        .
                        حتی در این روش هم نمیتوان ادعا داشت که امنیت 100% است ولی نسبت به بقیه ی روش ها امن تر است

                        دیدگاه


                          #13
                          پاسخ : پروگرام از راه دور میکروکنترلر AVR

                          نوشته اصلی توسط saeed under line نمایش پست ها
                          یعنی بجای استفاده از بوت لودر و کاهش امنیت دستگاه بیایم یک سری دستورات برای دستگاه ارسال کنیم و در برنامه ی خود دستگاه شرطی بزاریم که اگر فلان دستور دریافت شد پس از اجرای برنامه ی اصلی __طبق دستور دریافت شده مثلا پورت ب را که در برنامه ی قبلی 1 بوده رو 0 کن...و اینجوری برنامه ابتدا عملکرد عادی خود را شروع میکند و پس از دریافت دستور ، برنامه ی خود را تغییر میدهد و تغییر مطابق دستور ما هست و در خروجی دستگاه به طور کامل اجرا میشود...
                          به نظرم شاید بتوان با این روش پیشنهادی شما - تا حدودی - انعطاف پذیری برنامه را برای پذیرش بهینه سازی های احتمالی در آتی افزایش داد اما حتما قبول دارید که در عمل، نیاز به یک تمرکز حواس، وقت، آینده نگری، هوشمندی و فراست بالائی دارد که بتوان همه نیازهای آینده را از همان ابتدا پیش بینی کرد و بیشینه الزامات و شرایط لازم را در یک برنامه مثلا 128 یا 256 کیلوبایتی لحاظ کرد.

                          بنابراین فعلا دارم می روم به سمت پیشنهاد آقای مهندس لاچینی و استفاده از یک حافظه فلش ارزان و کوچک مثل AT25F4096 یا W25Q64VF
                          .
                          جدیدترین ویرایش توسط مهندس نوآور; ۱۸:۳۳ ۱۳۹۵/۰۶/۱۷.

                          دیدگاه


                            #14
                            پاسخ : پروگرام از راه دور میکروکنترلر AVR

                            من خیلی وقته دنبال این این میگردم که چجوری میشه یک میکرو توسط یک میکرو دیگه به صورت spi پروگرام کرد
                            برای رفتن به حالت پروگرام باید میکرو توی حالت ریست نگه داشت . حالا نمیدونم چی باید فرستاد و چی باید گرفت و از کجا کد هگز بفرستم برای میکرو
                            توی دیتاشیت هم چیزی نبود . اگه بشه خیلی عالی میشه . دیتا روی مموری میریزیم یا اینکه توسط gprs دیتا میکرو میگیره و روی mmc ذخیره بکنه و بعد از اینکه
                            دیتا کامل اومد میکرو مورد نظر به صورت صورت spi پروگرام کنه . از کد usbasp چیزی نفهمیدم که چکار کرده . کسی میتونه راهنمایی کنه

                            دیدگاه


                              #15
                              پاسخ : پروگرام از راه دور میکروکنترلر AVR

                              اگر از میکروی ایکسمگا برای این کارها استفاده بشه یا ارم هایی که دارای موتور انکریپشن هستند امنیت هم موضوعش حل میشه ولی موضوع خیلی جالب و کار راه اندازیه و به نظرم مبلغ این پروژه برای اوپن سورس بودن خیلی کم بوده

                              دیدگاه

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