sunyboy
07-08-2010, 12:07 PM
در کامپيوترهايXT باتوجه به تعداد محدود پارامترها، پيکربندي سيستم بااستفاده از ميکروسوئيچ امکان پذير مي باشد اما در سيستم هاي AT به دليل بالا بودن تعداد پارامترهاي قابل برنامه ريزي توسط استفاده کننده ، حضور يک منبع که هم به راحتي در دسترس باشد و هم جاي کمي اشغال نمايد ، ضروري به نظر مي رسد. اين منبع در کامپيوترهاي AT حافظه CMOS ناميده مي شود .
حافظه CMOS داراي 64 بايت و يا بيشتر ظرفيت مي باشد که توسط دو پورت H70 و H71 قابل دسترسي مي باشد. و از آن براي نگهداري ساعت ، تاريخ و پيکربندي سيستم استفاده مي شود. همچنين تعدادي از بيت هاي اين حافظه براي چک کردن پيکربندي سيستم تحت عنوان CHECKSUM استفاده مي شود.
محتويات اين حافظه در زمان خاموش بودن سيستم توسط يک باطري پشتيبان 6/3 ولتي نگهداري مي شود. اين باطري ممکن است در داخل و يا در خارج از مادربورد قرار داشته باشد . البته در بعضي از سيستمها مجموعه باطري و حافظه به صورت يکپارچه ارائه شده که نمونه آن مارک DALLAS مي باشد.
از نظر عملکرد و نحوه دستيابي هيچ تفاوتي بين انواع متفاوت CMOS وجود ندارد و همگي با استفاده از دو پورت يادشده قابل دسترسي و برنامه ريزي مي باشند.
تغيير در محتويات CMOS بطور معمول از طريق برنامه SETUP امکان پذير است اما در صورتي که در ست آپ سيستم رمز تعريف شده باشد و رمز مربوطه را هم در اختيار نداشته باشيد در اينصورت امکان ورود به برنامه ست آپ و تغيير در پيکر بندي سيستم ( اطلاعات CMOS ) امکان پذير نخواهد بود . در اين موارد راهي جز پاک کردن محتويات CMOS نداريم . دراين مواقع در احتمال وجود دارد .
1) براي وارد شدن به سيستم رمز تعريف شده باشد.
2) براي وارد شدن به ست آپ رمز تعريف شده باشد.
در حالت اول با توجه به بوت نشدن کامپيوتر کاري از نرم افزارها ساخته نيست و بايد اقدام به پاک کردن محتويات CMOS به صورت سخت افزاري نمود .
اين کار معمولا با برداشتن باطري پشتيبان ست آپ براي چند دقيقه ، يااتصال کوتاه بر روي جامپر مربوطه ( J8 ) و يا تعويض تراشه CMOSامکان پذير مي باشد . البته اين روشها در صورتي کارآمد خواهد بود که شما مجاز به بازکردن کيس کامپيوتر باشيد که البته در اکثر مواقع اين امکان وجود ندارد .
شايان ذکر است در صورتي که اعمال فوق درست صورت نگيرد احتمال سوختن و خراب شدن CMOS وجود دارد بنابراين تا حد امکان بايد از کاربرد اين روش اجتناب شود مگر در مواقعي که ضرورت ايجاب نمايد.
در حالت دوم با توجه به بوت شدن کامپيوتر نيازي به اقدامات فوق نبوده و مي توان با استفاده از نرم افزارهاي مناسب اقدام به پاک کردن و يا ذخيره اطلاعات CMOS نماييم . از آنجايي که هميشه نرم افزار مناسب وجود ندارد و يا در دسترس نيست بعنوان يک مهندس نرم افزار بايد قادر باشيم تا با استفاده از امکانات موجود بر روي کامپيوتر اين کار را انجام دهيم .
با استفاده از برنامه DEBUG.EXE که همراه فايلهاي سيستم عامل DOS و ويندوز وجود دارد مي توان با خواندن و يا نوشتن در پورت هاي H70 و H71 تغييرات لازم را در محتوياتCMOS اعمال نمود
از دو پورت فوق پورت H70 بعنوان گذرگاه آدرس( ADDRESS BUS ) و پورت H71 بعنوان گذرگاه داده بکار مي رود. الگوريتم کلي کار به اين صورت است که CMOS را بعنوان يک آرايه يک بعدي در نظر مي گيريم که داراي 256 خانه مي باشد . براي دسترسي به هر خانه بايد ابتدا انديس ( آدرس ) خانه را در پورت H70 بنويسيم و بعد از دسترسي به خانه مورد نظر مي توان دادة دلخواه را درآن نوشت و يا از آن خواند . دسترسي به داده ها نيز فقط از طريق پورت H71 امکان پذير مي باشد . آخرين نکته اينکه عمل نوشتن و يا خواندن از پورت ها به کمک ثبات AL و توسط دستورهاي IN و OUT مربوط به زبان اسمبلي امکان پذير است .
الگوريتم کلي حذف اطلاعات حافظه CMOS
void CLR_CMOS(void){
for(int i=0;i<256;i++){
move value of i to register Al ;
Out Register Al to Port 70h ;
Set register Al to zero ;// Al=0
Out Register Al to Port 71h
}
return;
}
پياده سازي اين الگوريتم به کمک زبان اسمبلي بسيار آسان مي باشد . اما از آنجا که قرار است اين الگوريتم را با استفاده از debug پياده سازي کنيم قبل از هر چيز بايد با تعدادي از دستورات اين نرم افزار آشنا شويم
با اجراي فايل debug.exe مي توانيد وارد محيط نرم افزار debug شويد محيط اصلي نرم افزار يک علامت خط تيره مي باشد که بعد از اجراي فايل debug.exe ظاهر مي شود.
اين نرم افزار داراي تعدادي دستور مي باشد که با تايپ يک علامت سئوال و فشردن کليد ENTER مي توان ليست فرمانها را مشاهده نمود . در زير تعدادي از فرمانها را که براي پياده سازي اين الگوريتم به آن نياز داريم توضيح مي دهيم و ساير فرامين را به خواننده واگذار مي کنيم تا درصورت نياز با مراجعه به راهنماي نرم افزار با نحوه کار هريک آشنا شود
حافظه CMOS داراي 64 بايت و يا بيشتر ظرفيت مي باشد که توسط دو پورت H70 و H71 قابل دسترسي مي باشد. و از آن براي نگهداري ساعت ، تاريخ و پيکربندي سيستم استفاده مي شود. همچنين تعدادي از بيت هاي اين حافظه براي چک کردن پيکربندي سيستم تحت عنوان CHECKSUM استفاده مي شود.
محتويات اين حافظه در زمان خاموش بودن سيستم توسط يک باطري پشتيبان 6/3 ولتي نگهداري مي شود. اين باطري ممکن است در داخل و يا در خارج از مادربورد قرار داشته باشد . البته در بعضي از سيستمها مجموعه باطري و حافظه به صورت يکپارچه ارائه شده که نمونه آن مارک DALLAS مي باشد.
از نظر عملکرد و نحوه دستيابي هيچ تفاوتي بين انواع متفاوت CMOS وجود ندارد و همگي با استفاده از دو پورت يادشده قابل دسترسي و برنامه ريزي مي باشند.
تغيير در محتويات CMOS بطور معمول از طريق برنامه SETUP امکان پذير است اما در صورتي که در ست آپ سيستم رمز تعريف شده باشد و رمز مربوطه را هم در اختيار نداشته باشيد در اينصورت امکان ورود به برنامه ست آپ و تغيير در پيکر بندي سيستم ( اطلاعات CMOS ) امکان پذير نخواهد بود . در اين موارد راهي جز پاک کردن محتويات CMOS نداريم . دراين مواقع در احتمال وجود دارد .
1) براي وارد شدن به سيستم رمز تعريف شده باشد.
2) براي وارد شدن به ست آپ رمز تعريف شده باشد.
در حالت اول با توجه به بوت نشدن کامپيوتر کاري از نرم افزارها ساخته نيست و بايد اقدام به پاک کردن محتويات CMOS به صورت سخت افزاري نمود .
اين کار معمولا با برداشتن باطري پشتيبان ست آپ براي چند دقيقه ، يااتصال کوتاه بر روي جامپر مربوطه ( J8 ) و يا تعويض تراشه CMOSامکان پذير مي باشد . البته اين روشها در صورتي کارآمد خواهد بود که شما مجاز به بازکردن کيس کامپيوتر باشيد که البته در اکثر مواقع اين امکان وجود ندارد .
شايان ذکر است در صورتي که اعمال فوق درست صورت نگيرد احتمال سوختن و خراب شدن CMOS وجود دارد بنابراين تا حد امکان بايد از کاربرد اين روش اجتناب شود مگر در مواقعي که ضرورت ايجاب نمايد.
در حالت دوم با توجه به بوت شدن کامپيوتر نيازي به اقدامات فوق نبوده و مي توان با استفاده از نرم افزارهاي مناسب اقدام به پاک کردن و يا ذخيره اطلاعات CMOS نماييم . از آنجايي که هميشه نرم افزار مناسب وجود ندارد و يا در دسترس نيست بعنوان يک مهندس نرم افزار بايد قادر باشيم تا با استفاده از امکانات موجود بر روي کامپيوتر اين کار را انجام دهيم .
با استفاده از برنامه DEBUG.EXE که همراه فايلهاي سيستم عامل DOS و ويندوز وجود دارد مي توان با خواندن و يا نوشتن در پورت هاي H70 و H71 تغييرات لازم را در محتوياتCMOS اعمال نمود
از دو پورت فوق پورت H70 بعنوان گذرگاه آدرس( ADDRESS BUS ) و پورت H71 بعنوان گذرگاه داده بکار مي رود. الگوريتم کلي کار به اين صورت است که CMOS را بعنوان يک آرايه يک بعدي در نظر مي گيريم که داراي 256 خانه مي باشد . براي دسترسي به هر خانه بايد ابتدا انديس ( آدرس ) خانه را در پورت H70 بنويسيم و بعد از دسترسي به خانه مورد نظر مي توان دادة دلخواه را درآن نوشت و يا از آن خواند . دسترسي به داده ها نيز فقط از طريق پورت H71 امکان پذير مي باشد . آخرين نکته اينکه عمل نوشتن و يا خواندن از پورت ها به کمک ثبات AL و توسط دستورهاي IN و OUT مربوط به زبان اسمبلي امکان پذير است .
الگوريتم کلي حذف اطلاعات حافظه CMOS
void CLR_CMOS(void){
for(int i=0;i<256;i++){
move value of i to register Al ;
Out Register Al to Port 70h ;
Set register Al to zero ;// Al=0
Out Register Al to Port 71h
}
return;
}
پياده سازي اين الگوريتم به کمک زبان اسمبلي بسيار آسان مي باشد . اما از آنجا که قرار است اين الگوريتم را با استفاده از debug پياده سازي کنيم قبل از هر چيز بايد با تعدادي از دستورات اين نرم افزار آشنا شويم
با اجراي فايل debug.exe مي توانيد وارد محيط نرم افزار debug شويد محيط اصلي نرم افزار يک علامت خط تيره مي باشد که بعد از اجراي فايل debug.exe ظاهر مي شود.
اين نرم افزار داراي تعدادي دستور مي باشد که با تايپ يک علامت سئوال و فشردن کليد ENTER مي توان ليست فرمانها را مشاهده نمود . در زير تعدادي از فرمانها را که براي پياده سازي اين الگوريتم به آن نياز داريم توضيح مي دهيم و ساير فرامين را به خواننده واگذار مي کنيم تا درصورت نياز با مراجعه به راهنماي نرم افزار با نحوه کار هريک آشنا شود