خوب خیلی ها پی این مسئله هستن که میکرویی دارن که lock bit هاش program شده ولی لاقل hex برنامه اون رو می خوان بخونن تا کپیش کنن !
روش های مختلفی براش بود که من یک سری رو سر سری شنیده بودم اما تا امروز تجربه هیچ کدوم رو نداشتم.
چیز هایی که شنیدم رو توو این تاپیک می گذارم !
روش اولی که شنیده بودم، این هست که توو سری قدیمی mcs51 ، همونطور که خیلی ها باهاش کار کردن، پایه ای هست که با 0 و 1 کردن اون، به میکرو میگیم قراره برنامه رو از حافظه داخلی اجرا کنه یا حافظه خارجی . برنامه ای ساده که عملکردش این هست :
دیتای اولین آدرس برنامه رو بخون، تووی پورت X قرار بده، قدم بعد دیتای دوم رو بخون، بعد بعدی و ... به همین شکل بایت به بایت دیتا های بخش برنامه رو بخون، تووی یکی از پورت ها قرار بده.
داخل یک حافظه خارجی پروگرم مشه، این حافظه با برنامه اش به میکرو وصل مبشه. پالس میکرو به صورت دستی با 0 و1 کردن پایه های داده میشه تا روال اجرا دست خودمون باشه. می دونیم برنامه برای رسیدن به اون خط که قرار هست بایت بایت بخونه و توو خروجی قرار بده، چد پالش نیاز داره. اول اون پایه ای که برای اجرا شدن برنامه از حافظه داخلی یا خارجی هست رو طوری ست می کنیم که برنامه حافظه خارجی رو اجرا کنه، به تعداد رسیدن به اونجا که گفتم پالس به میکرو اعمال مبشه . اون پایه که مربوط به محل برنامه هست، طوری تغییر داده مشه که الان ، پوینتر به آدرس حافظه داخلی میکرو اشاره کنه !
حالا با هر پالسی که به میکرو داده میشه، میکرو دیتای بایتهای داخلی حافظه که قفل هستن رو می خونه، و توو یکی از پورتها می گذاره ! دوباره پایه هه رو ست می کنیم روو اجرای برنامه از حافظه خارجی، باز به لحظه ای که قرار هست بایت خونده و ارسال بشه می رسیم، پایه رو تغییر می دیم تا بایت برنامه داخلی خونده بشه ...
با این روش کل بایتهای داخلی میکرو خونده میشه و برنامه رو می تونیم بایت بایت روی پایه هاش داشته باشیم !