Sunday, December 1, 2024

Microcontroller Memory Layout: The Warehouse Analogy. (sinhala)

 

Microcontroller Memory Layout: The Warehouse Analogy.
-
ඔබේ ක්ෂුද්‍ර පාලකය ගබඩාවක් ලෙස සිතන්න. මෙම ගබඩාව ප්රධාන කොටස් දෙකකට බෙදා ඇත.
-
1-RAM (සසම්භාවී ප්‍රවේශ මතකය) - එය දේවල් සක්‍රියව සකසන වැඩ කරන ප්‍රදේශය ලෙස සිතන්න.
-
2-ෆ්ලෑෂ් මතකය - ඔබ එය නැවත ක්‍රමලේඛනය කරන තෙක් දේවල් ස්ථිරව ගබඩා කර ඇති ගබඩා ප්‍රදේශය ලෙස සිතන්න.

-
සෑම කොටසකටම එහි මැදිරි ඇත, එක් එක් එහි යා හැකි දේ සහ එය භාවිතා කරන ආකාරය සඳහා නීති ඇත.
-
RAM: තාවකාලික වැඩබිම
-
RAM යනු වැඩසටහන ක්‍රියාත්මක වන විට දේවල් නිර්මාණය කර, වෙනස් කර විනාශ කරන වැඩ බංකුවක් වැනිය.
-

1. The Stack

මැදිරි නීතිය: භාණ්ඩ එකතු කිරීම (පුශ් කිරීම) හෝ ඉවත් කිරීම (පොප් කිරීම) තහඩු ගොඩගැසීම වැනි දැඩි අනුපිළිවෙලකට.
-

අරමුණ: function calls, ප්‍රාදේශීය විචල්‍ය සහ වැඩසටහන් ප්‍රවාහ කළමනාකරණය සඳහා භාවිතා වේ.
-

හැසිරීම: ශ්‍රිතයක් ආරම්භ වූ විට, එය විචල්‍යයන් තොගය මත තබයි. කාර්යය අවසන් වූ විට, එය ඒවා ඉවත් කරයි.
-

2. The Heap

මැදිරි නීතිය: ඉඩ ඇති ඕනෑම තැනක දේවල් තැන්පත් කර ඇති නම්‍යශීලී ගබඩාව, නමුත් ඔබ ඒවා ඔබම නිරීක්ෂණය කළ යුතුය.
-

අරමුණ: ගතිකව වෙන් කළ මතකය සඳහා (උදා: වැඩසටහන ක්‍රියාත්මක වන විට අරාවක් නිර්මාණය කිරීම).
-

හැසිරීම: ඔබ අවශ්‍ය පරිදි ඉඩ වෙන් කරයි, නමුත් ඔබ අවසන් වූ පසු පිරිසිදු කිරීමට මතක තබා ගත යුතුය.
-

3. ගෝලීය විචල්‍ය (දත්ත සහ BSS)

මැදිරි නීතිය: වැඩසටහනේ ජීවිත කාලය පුරාම පවතින විචල්‍යයන් සඳහා වෙන් කළ අවකාශයන්.

දත්ත කොටස: ආරම්භක විචල්‍ය ගබඩා කරයි (උදා., int x = 10;).
-

BSS කොටස: ආරම්භ නොකළ විචල්‍ය හෝ පැහැදිලිව 0 ලෙස සකසා ඇති ඒවා ගබඩා කරයි (උදා: int y;).

අරමුණ: functions හරහා බෙදාගත් හෝ ගෝලීය වශයෙන් භාවිතා කරන විචල්‍යයන් සඳහා.
-
ෆ්ලෑෂ්: ස්ථිර ගබඩාව
-

ෆ්ලෑෂ් මතකය ගබඩාවේ දිගු කාලීන ගබඩා රාක්ක වැනිය.

1. වැඩසටහන් කේතය

මැදිරි නීතිය: ඔබේ වැඩසටහන් උපදෙස් ගබඩා කරයි (CPU සඳහා වට්ටෝරු පොතක් වැනි).

අරමුණ: ක්ෂුද්‍ර පාලකයට කළ යුතු දේ පවසන තර්කය අඩංගු වේ. -

2. ආරම්භක කේතය

මැදිරි නීතිය: ඔබේ වැඩසටහන ආරම්භ වීමට පෙර ක්ෂුද්‍ර පාලකයේ මූලික සැකසුම හසුරුවයි (උදෑසන ගබඩාව අගුළු හැරීම වැනි).

අරමුණ: පද්ධතිය සකස් කරයි, විචල්‍යයන් ආරම්භ කරයි, සහ ක්‍රියාත්මක වීමට සියල්ල සූදානම් කරයි.
-

3. දෛශික වගුව

මැදිරි නීතිය: බාධා කිරීම් හැසිරවීමට ලිපින ගබඩා කරයි (උදා: නිශ්චිත සිදුවීම් සඳහා හදිසි උපදෙස්).

අරමුණ: බොත්තම එබීම වැනි විශේෂ දෙයක් සිදු වූ විට පැනිය යුතු ස්ථානය CPU වෙත දැනුම් දෙයි.
-

4. පරිශීලක ගබඩාව

මැදිරි නීතිය: බල චක්‍ර හරහා පැවතිය යුතු පරිශීලක දත්ත ගබඩා කරයි (උදා: වින්‍යාස සැකසුම්).

අරමුණ: සුරකින ලද preferences හෝ logs වැනි දේවල් සඳහා.
-

5. Initialized Variables

මැදිරි නීතිය: පෙර සැකසූ අගයන් සහිත විචල්‍ය ගබඩා කරයි (උදා., int number = 5;).

අරමුණ: වැඩසටහන ආරම්භ වන විට මෙම අගයන් ෆ්ලෑෂ් සිට RAM වෙත පිටපත් කරනු ලැබේ.
-
RAM සහ Flash අතර අන්තර්ක්‍රියා
-

ක්ෂුද්‍ර පාලකය ක්‍රියාත්මක වන විට:

1. ආරම්භක කේතය Flash වෙතින් ක්‍රියාත්මක වන අතර, පරිසරය සැකසීම.

2. ගෝලීය විචල්‍යයන් සහ ආරම්භක විචල්‍යයන් ෆ්ලෑෂ් සිට RAM වෙත පිටපත් කරනු ලැබේ.

3. වැඩසටහන ක්‍රියාත්මක වීමට පටන් ගනී, RAM හි ගතිකව stack සහ heap නිර්මාණය කරයි.

4. බාධාවක් සිදුවුවහොත්, CPU එක යා යුතු ස්ථානය දෛශික වගුව කියයි.
-
ඔවුන් එකට වැඩ කරන්නේ කෙසේද?
-
ෆ්ලෑෂ් ධාවන වේලාවේදී කියවීමට පමණක් වන නමුත් RAM කළ යුතු දේ සඳහා සැලැස්ම ලෙස ක්‍රියා කරයි.
-
RAM ගතික වන අතර ඔබේ වැඩසටහනේ තත්‍ය කාලීන සැකසුම් හසුරුවයි.
-
සෑම කොටසකටම දැඩි නීති ඇත, ක්ෂුද්‍ර පාලකය සම්පත් හිඟ නොවී කාර්යක්ෂමව ක්‍රියා කරන බව සහතික කරයි.
-
ආරම්භක විචල්‍යයන් "දත්ත" ලෙස හඳුන්වන්නේ ඇයි?
-

Initialized variables වලට දැනටමත් ඔබේ කේතයේ int x = 10; වැනි නිශ්චිත අගයන් පවරා ඇත. - ඔබගේ වැඩසටහන සම්පාදනය කරන විට, මෙම අගයන් microcontroller මතකයේ (Flash) දත්ත කොටසේ ගබඩා වේ. වැඩසටහන ආරම්භයේදී මෙම කොටස RAM වෙත පිටපත් කරනු ලැබේ, එබැවින් මෙම විචල්යයන් වහාම භාවිතා කිරීමට සූදානම් තත්වයේ ඇත. - එය දත්ත අංශය ලෙස හඳුන්වනු ලබන්නේ එහි සත්‍ය "දත්ත"—ඔබ පැහැදිලිව සපයා ඇති අගයන් අඩංගු වන බැවිනි. -

ආරම්භ නොකළ විචල්‍යයන් "BSS" ලෙස හඳුන්වන්නේ ඇයි?
-
BSS යන පදය පැමිණෙන්නේ මුල් පරිගණක ඉතිහාසයෙනි. එය Block Started by Symbol සඳහා වන අතර එහි මූලාරම්භය assembly භාෂා වැඩසටහන්කරණයේ ඇත. එය එසේ නම් කිරීමට හේතුව මෙන්න:

Uninitialized variables (e.g., int y;) හෝ පැහැදිලිවම ශුන්‍යයයෙන් ආරම්භ කරන ලද (උදා., int z = 0;) සම්පාදනය කරන ලද වැඩසටහන තුල නිශ්චිත දත්ත අගයන් නොමැති variables වේ. - ශුන්‍ය ගබඩා කිරීමෙන් වැඩසටහනේ ද්විමය ගොනුවේ ඉඩ නාස්ති කරනවා වෙනුවට, සම්පාදකය මෙම විචල්‍යයන් සඳහා මතකයේ කොටසක් වෙන් කර වැඩසටහන ආරම්භ වන විට එය බිංදුවට පත් කිරීම සහතික කරයි. - මෙම මතක කොටස BSS කොටස ලෙස හැඳින්වේ. මුල් assembly භාෂා සංවර්ධකයින් විසින් මෙම වචනය යොදා ගත් අතර එය විශේෂයෙන් විස්තරාත්මක නොවූවත්, එතැන් සිට රැඳී තිබේ. -

Data සහ BSS වෙනස?
-

කාර්යක්ෂමතාව:

ආරම්භ කරන ලද විචල්‍යයන් (දත්ත) වැඩසටහන් ධාවනය හරහා ඒවායේ නිශ්චිත අගයන් රඳවා ගැනීමට අවශ්‍ය වේ, එබැවින් ඒවායේ අගයන් ද්විමයයේ කොටසක් ලෙස ෆ්ලෑෂ් මතකයේ ගබඩා වේ. -

Uninitialized variables (BSS) සඳහා ක්‍රමලේඛ ද්විමය තුළ ගබඩා කිරීම අවශ්‍ය නොවේ - ඒවා සරලවම RAM හි ඉඩ වෙන් කර ඇති අතර, ක්ෂුද්‍ර පාලකය ආරම්භයේදී ඒවා ශුන්‍යයේ සිට ආරම්භ කරයි.
-

පැහැදිලිකම:

මෙම වෙන් කිරීම පද්ධතියට මතකය කාර්යක්ෂමව සංවිධානය කිරීමට සහ වැඩසටහන ක්‍රියාත්මක වන විට සියලු විචල්‍යයන් සඳහා පුරෝකථනය කළ හැකි හැසිරීම සහතික කරයි. -

සාරාංශය

දත්ත අංශය: ක්‍රමලේඛකයා විසින් සපයන ලද අර්ථවත් ආරම්භක දත්ත අඩංගු විචල්‍යයන් සඳහා.
-

BSS කොටස: සම්පාදනය කරන අවස්ථාවේ නිශ්චිත අගයන් නොමැති නමුත් ශුන්‍ය ලෙස ආරම්භ කිරීමට සහතික වන විචල්‍යයන් සඳහා.
-
තාමත් අපේ group එකේ නැත්තන් group එකට සෙට් වෙන්න :⁣

https://www.facebook.com/groups/paperclipx

මේ group එකේ දාන දේවල් හොඳයි කියල හිතෙනවනම් ඕගොල්ලොන් ගේ යාලුවන්වත් group එකට එකතු කරන්න !⁣

No comments:

Post a Comment