এমবেডেড প্রোগ্রাম শেষ হয়ে গেলে কী ঘটে?


29

এম্বেড থাকা প্রসেসরে কী ঘটে যখন এক্সিকিউশন সেই চূড়ান্ত returnবিবৃতিতে পৌঁছায় সবকিছু ঠিক যেমন হিমায়িত হয়; আকাশে একটি দীর্ঘ চিরন্তন এনওপি সহ বিদ্যুত ব্যবহার ইত্যাদি? বা এনওপিগুলি ধারাবাহিকভাবে কার্যকর করা হয়, বা কোনও প্রসেসর পুরোপুরি বন্ধ হয়ে যাবে?

আমি যে কারণটি জিজ্ঞাসা করছি তার একটি অংশ আমি ভাবছি যে কোনও প্রসেসরের কার্যকর হওয়া শেষ হওয়ার আগেই বিদ্যুৎ চালিত হওয়া দরকার এবং যদি এটি যদি হাতের সামনে চালিত হয় তবে এটি কার্যকর হয় কীভাবে কার্যকর হয়?


22
এটি আপনার বিশ্বাসের উপর নির্ভর করে। কেউ কেউ বলেন যে এটি পুনর্জন্ম হবে।
টেলাকলাভো

9
এটি কোন ক্ষেপণাস্ত্রের জন্য?
লি কোয়ালকভস্কি

6
কিছু সিস্টেম এইচসিএফ (হাল্ট এবং ক্যাচ ফায়ার) নির্দেশকে সমর্থন করে । :)
স্টিফান পল নোক

1
এটি স্ব-ধ্বংসের রুটিনে শাখা করবে

উত্তর:


41

এটি এমন একটি প্রশ্ন যা আমার বাবা আমাকে সবসময় জিজ্ঞাসা করতেন। " কেন এটি কেবল সমস্ত নির্দেশাবলীর মধ্য দিয়ে চলে না এবং শেষে থামছে না? "

আসুন একটি প্যাথলজিকাল উদাহরণ দেখুন। নিম্নলিখিত কোডটি PIC18 এর জন্য মাইক্রোচিপের সি 18 সংকলকটিতে সংকলিত ছিল:

void main(void)
{

}

এটি নিম্নলিখিত এসেমব্লার আউটপুট উত্পাদন করে:

addr    opco     instruction
----    ----     -----------
0000    EF63     GOTO 0xc6
0002    F000     NOP
0004    0012     RETURN 0
.
. some instructions removed for brevity
.
00C6    EE15     LFSR 0x1, 0x500
00C8    F000     NOP
00CA    EE25     LFSR 0x2, 0x500
00CC    F000     NOP
.
. some instructions removed for brevity
.
00D6    EC72     CALL 0xe4, 0            // Call the initialisation code
00D8    F000     NOP                     //  
00DA    EC71     CALL 0xe2, 0            // Here we call main()
00DC    F000     NOP                     // 
00DE    D7FB     BRA 0xd6                // Jump back to address 00D6
.
. some instructions removed for brevity
.

00E2    0012     RETURN 0                // This is main()

00E4    0012     RETURN 0                // This is the initialisation code

আপনি দেখতে পাচ্ছেন, মেইন () বলা হয় এবং শেষে একটি রিটার্ন স্টেটমেন্ট থাকে যদিও আমরা তা স্পষ্টভাবে সেখানে নিজেরাই রাখিনি। যখন প্রধান ফিরে আসে, সিপিইউ পরবর্তী নির্দেশনা কার্যকর করে যা কোডের শুরুতে ফিরে যাওয়ার জন্য কেবল একটি গোটো। প্রধান () কেবল বার বার বলা হয়।

এখন, এটি বলার পরে, লোকেরা সাধারণত জিনিসগুলি করত এমন নয়। আমি এমন কোনও এমবেডেড কোড লিখিনি যা প্রধান () কে এই জাতীয়ভাবে প্রস্থান করতে দেয়। বেশিরভাগ ক্ষেত্রে, আমার কোডটি এর মতো দেখতে লাগবে:

void main(void)
{
    while(1)
    {
        wait_timer();
        do_some_task();
    }    
}

সুতরাং আমি সাধারণত কখনই প্রধান () থেকে বেরিয়ে আসি না।

"ঠিক আছে" আপনি বলছেন। এগুলি অত্যন্ত আকর্ষণীয় যে সংকলকটি নিশ্চিত করে যে কোনও শেষের বিবৃতি কখনও নেই। কিন্তু আমরা যদি বিষয়টি জোর করে বলি তবে কী ঘটে? আমি যদি আমার এসেম্বলারের হাত দিয়ে কোড করি এবং শুরুতে কোনও লাফ না রেখে দিয়েছি?

ঠিক আছে, স্পষ্টতই সিপিইউ কেবলমাত্র পরবর্তী নির্দেশাবলী কার্যকর করতে থাকবে। এগুলিকে এরকম কিছু দেখাবে:

addr    opco     instruction
----    ----     -----------
00E6    FFFF     NOP
00E8    FFFF     NOP
00EA    FFFF     NOP
00EB    FFFF     NOP
.
. some instructions removed for brevity
.
7EE8    FFFF     NOP
7FFA    FFFF     NOP
7FFC    FFFF     NOP
7FFE    FFFF     NOP

প্রধান () এ শেষ নির্দেশনার পরে পরবর্তী মেমরি ঠিকানা খালি is FLASH মেমরি সহ একটি মাইক্রোকন্ট্রোলারে, একটি খালি নির্দেশে 0xFFFF মান থাকে। কমপক্ষে একটি পিআইসি-তে, সেই বিকল্প কোডটি 'না' বা 'কোনও অপারেশন' হিসাবে ব্যাখ্যা করা হয়। এটি কেবল কিছুই করে না। সিপিইউ শেষ পর্যন্ত স্মৃতি থেকে নীচে n সমস্ত ন্যাপগুলি চালিয়ে যেতে থাকবে।

এর পরে কি?

শেষ নির্দেশে, সিপিইউর নির্দেশিকা পয়েন্টারটি 0x7FFe হয়। সিপিইউ তার নির্দেশ পয়েন্টারে 2 যোগ করলে, এটি 0x8000 পায়, যা কেবল 32k ফ্ল্যাশ সহ একটি পিকের ওভারফ্লো হিসাবে বিবেচিত হয়, এবং তাই এটি 0x0000 এর কাছাকাছি আবৃত হয়, এবং সিপিইউ আনন্দের সাথে কোডের শুরুতে নির্দেশাবলী কার্যকর করতে থাকে , যেমন এটি পুনরায় সেট করা হয়েছে।


আপনি পাওয়ারটি ডাউন করার প্রয়োজনীয়তা সম্পর্কেও জিজ্ঞাসা করেছিলেন। মূলত আপনি যা চান তা করতে পারেন এবং এটি আপনার আবেদনের উপর নির্ভর করে।

আপনার যদি এমন অ্যাপ্লিকেশন থাকে যা পাওয়ার পরে কেবল একটি কাজ করার দরকার পড়ে এবং অন্য কিছু না করে আপনি কিছুক্ষণ সময় দিতে পারেন (1); মূল () এর শেষে যাতে সিপিইউ লক্ষণীয় কিছু করা বন্ধ করে দেয়।

যদি অ্যাপ্লিকেশনটির সিপিইউটি পাওয়ার জন্য প্রয়োজন হয়, তবে, সিপিইউর উপর নির্ভর করে সম্ভবত বিভিন্ন স্লিপ মোড উপলব্ধ। তবে, সিপিইউগুলির আবার জেগে ওঠার অভ্যাস রয়েছে, তাই আপনাকে নিশ্চিত করতে হবে যে ঘুমের কোনও সময়সীমা ছিল না, এবং কোনও ওয়াচ কুকুর টাইমার সক্রিয় নয় ইত্যাদি have

এমনকি আপনি এমন কিছু বাহ্যিক সার্কিটরিও সংগঠিত করতে পারেন যা সিপিইউকে সম্পূর্ণরূপে নিজস্ব শক্তি কেটে দেওয়ার অনুমতি দেয়। এই প্রশ্নটি দেখুন: অন-অফ টগল স্যুইচটিকে ল্যাচিং হিসাবে একটি ক্ষণিকের পুশ বোতামটি ব্যবহার করা


20

সংকলিত কোডের জন্য, এটি সংকলকটির উপর নির্ভর করে। রাউলি ক্রস ওয়ার্কস জিসিসি এআরএম সংকলক যে আমি crt0.s ফাইলে কোডটিতে জাম্প ব্যবহার করি যার একটি অসীম লুপ রয়েছে। 16-বিট dsPIC এবং PIC24 ডিভাইসগুলির জন্য মাইক্রোচিপ সি 30 সংকলক (জিসিসির উপর ভিত্তি করে) প্রসেসরের পুনরায় সেট করে।

অবশ্যই, বেশিরভাগ এম্বেড থাকা সফ্টওয়্যার কখনই এর মতো শেষ হয় না এবং একটি লুপে ধারাবাহিকভাবে কোড চালায়।


13

এখানে দুটি পয়েন্ট করা দরকার:

  • একটি এম্বেডেড প্রোগ্রাম, কঠোরভাবে বলতে গেলে, "সমাপ্ত" করতে পারে না।
  • কিছু সময়ের জন্য একটি এমবেডেড প্রোগ্রাম চালানো এবং তারপরে "সমাপ্তি" খুব কমই প্রয়োজন হয়।

কোনও প্রোগ্রামের শাটডাউনের ধারণাটি এম্বেড থাকা পরিবেশে সাধারণত উপস্থিত থাকে না। নিম্ন স্তরে একটি সিপিইউ নির্দেশনা কার্যকর করতে পারে যখন তা পারে; "চূড়ান্ত রিটার্ন স্টেটমেন্ট" বলে কোনও জিনিস নেই। একটি সিপিইউ কার্যকর করা বন্ধ করতে পারে যদি এটি একটি অপ্রাপ্যযোগ্য ত্রুটির মুখোমুখি হয় বা স্পষ্টভাবে বন্ধ করে দেওয়া হয় (স্লিপ মোডে রাখে, একটি নিম্ন পাওয়ার মোড, ইত্যাদি) তবে নোট করুন এমনকি স্লিপ মোড বা অপরিবর্তনযোগ্য ত্রুটিগুলি সাধারণত গ্যারান্টি দেয় না যে আরও কোনও কোড যাচ্ছে না সংযত হন. আপনি ঘুমের মোডগুলি থেকে জাগ্রত করতে পারেন (এগুলি তারা সাধারণত ব্যবহৃত হয়), এবং এমনকি একটি লকআপ সিপিইউ এখনও একটি এনএমআই হ্যান্ডলার কার্যকর করতে পারে (এটি কর্টেক্স-এম এর ক্ষেত্রে)। একটি নজরদারি এখনও চালানো হবে এবং এটি সক্ষম হয়ে গেলে আপনি কিছু মাইক্রোকন্ট্রোলারগুলিতে এটি অক্ষম করতে পারবেন না। আর্কিটেকচারের মধ্যে বিশদগুলি ব্যাপকভাবে পরিবর্তিত হয়।

সি বা সি ++ এর মতো কোনও ভাষার লিখিত ফার্মওয়্যারের ক্ষেত্রে, মূল () প্রস্থান করলে স্টার্টআপ কোডটি নির্ধারিত হয় তবে কী হয়। উদাহরণস্বরূপ, এসটিএম 32 স্ট্যান্ডার্ড পেরিফেরাল লাইব্রেরি থেকে স্টার্টআপ কোডের প্রাসঙ্গিক অংশটি (একটি জিএনইউ সরঞ্জামচেনের জন্য, মন্তব্যগুলি আমার):

Reset_Handler:  
  /*  ...  */
  bl  main    ; call main(), lr points to next instruction
  bx  lr      ; infinite loop

এই কোড একটি অসীম লুপ প্রবেশ করবে যখন মূল () আয়, যদিও একটি অ-সুস্পষ্ট ভাবে ( bl mainলোড lrপরবর্তী নির্দেশ দিতে পারে কার্যকরভাবে নিজেই একটি লাফ হয় এর ঠিকানা সহ)। সিপিইউ থামাতে বা এটি একটি নিম্ন-বিদ্যুতের মোডে প্রবেশের চেষ্টা করা হয় না ইত্যাদি etc. আপনার আবেদনের যে কোনও প্রয়োজনের যদি আপনার বৈধ প্রয়োজন হয় তবে আপনাকে এটি নিজেই করতে হবে।

নোট করুন যে হিসাবে ARMv7-M ARM A2.3.1 এ উল্লিখিত হয়েছে, লিঙ্ক রেজিস্টারটি পুনরায় সেট করার সময় 0xFFFFFFFF এ সেট করা আছে, এবং সেই ঠিকানার একটি শাখা একটি ত্রুটি ট্রিগার করবে। সুতরাং কর্টেক্স-এম এর ডিজাইনাররা রিসেট হ্যান্ডলার থেকে ফিরে আসাটিকে অস্বাভাবিক হিসাবে বিবেচনা করার সিদ্ধান্ত নিয়েছে এবং তাদের সাথে তর্ক করা শক্ত।

ফার্মওয়্যারটি শেষ হওয়ার পরে সিপিইউ বন্ধ করার বৈধ প্রয়োজনের কথা বললে আপনার ডিভাইসের পাওয়ারডাউন আরও ভালভাবে পরিবেশিত হবে না এমন কোনও ধারণা করা শক্ত। (আপনি যদি নিজের সিপিইউ "ভাল" জন্য অক্ষম করেন তবে কেবলমাত্র আপনার ডিভাইসে যে কাজটি করা সম্ভব তা হ'ল পাওয়ার চক্র বা বাহ্যিক হার্ডওয়্যার রিসেট)) আপনি আপনার ডিসি / ডিসি রূপান্তরকারীটির জন্য একটি সক্ষম সিগন্যাল নির্মূল করতে পারেন বা আপনার বিদ্যুৎ সরবরাহ বন্ধ করে দিতে পারেন অন্য কোনও উপায়ে, যেমন এটিএক্স পিসি করে।


1
"আপনি ঘুমের মোড থেকে জেগে উঠতে পারেন (এগুলি তারা সাধারণত ব্যবহৃত হয়), এবং এমনকি একটি লকআপ সিপিইউ এখনও একটি এনএমআই হ্যান্ডলার চালাতে পারে (এটি কর্টেক্স-এম এর ক্ষেত্রে)" <- এর দুর্দান্ত অংশটির মতো শোনাচ্ছে একটি বই বা চলচ্চিত্রের প্লট। :)
মার্ক অ্যালেন

"ব্লা মেইন" নিম্নলিখিত নির্দেশের ঠিকানা দিয়ে "এলআর" লোড করবে ("বিএক্স এলআর"), তাই না? "বিএক্স এলআর" কার্যকর করা হলে "lr" তে অন্য কিছু রয়েছে বলে আশা করার কোনও কারণ আছে কি?
সুপারক্যাট

@ সুপের্যাট: আপনি অবশ্যই বলেছেন। আমি ত্রুটিটি সরাতে এবং এটি আরও প্রসারিত করতে আমার উত্তর সম্পাদনা করেছি। এটি চিন্তা করে, তারা এই লুপটি বাস্তবায়নের উপায়টি বেশ আশ্চর্যজনক; তারা সহজেই করতে পারে loop: b loop। আমি অবাক হয়েছি তারা আসলে ফিরতে চেয়েছিল কিন্তু সংরক্ষণ করতে ভুলে গিয়েছিল lr
ছেঁড়া

এটা কৌতূহলী। আমি প্রত্যাশা করব যে অনেকগুলি এআরএম কোড এন্ট্রিতে রাখা একই মূল্য ধারণ করে এলআর সহ প্রস্থান করবে, তবে জানেন না যে এটির গ্যারান্টিযুক্ত। এই ধরনের গ্যারান্টিটি প্রায়শই কার্যকর হয় না তবে এটি ধরে রাখার জন্য রুটিনগুলিতে একটি নির্দেশ যুক্ত করা দরকার যা অন্য 14 টি রেজিস্টারে r14 অনুলিপি করে এবং তারপরে কিছু অন্য রুটিন কল করে। যদি রিটার্নে এলআরটিকে "অজানা" হিসাবে বিবেচনা করা হয়, তবে সংরক্ষিত অনুলিপিটি সহ যে কেউ রেজিস্টারটি "বিএক্স" করতে পারেন। যদিও এটি নির্দেশিত কোডের সাথে খুব অদ্ভুত আচরণের কারণ হতে পারে।
সুপারক্যাট

আসলে আমি নিশ্চিত যে নন-পাত ফাংশনগুলি LR ​​সংরক্ষণের প্রত্যাশা করে। এগুলি সাধারণত প্রোলগের স্ট্যাকের দিকে এলআর চাপায় এবং সেভ করা মানটিকে পিসিতে পপ করে ফিরে আসে। এটি হ'ল উদাহরণস্বরূপ একটি সি বা সি ++ প্রধান () কী করবে, তবে প্রশ্নে থাকা লাইব্রেরির বিকাশকারীরা অবশ্যই রিসেটহ্যান্ডলারে এর মতো কিছুই করেন নি।
কাঁটা

9

জিজ্ঞাসা করার সময় return, আপনি খুব উচ্চ স্তরের চিন্তা করছেন। সি কোডটি মেশিন কোডে অনুবাদ করা হয়। সুতরাং, আপনি যদি পরিবর্তে প্রসেসরটিকে অন্ধভাবে মেমরি থেকে নির্দেশাবলী টেনে আনতে এবং সেগুলি কার্যকর করার বিষয়ে চিন্তা করেন তবে কোনটি "চূড়ান্ত" তা কোন ধারণা নেই return। সুতরাং, প্রসেসরের কোনও অন্তর্নিহিত শেষ নেই, তবে পরিবর্তে শেষের কেসটি পরিচালনা করার জন্য এটি প্রোগ্রামারের উপর নির্ভর করে। লিওন তার উত্তরে উল্লেখ করেছেন, সংকলকগণ একটি ডিফল্ট আচরণ প্রোগ্রাম করেছেন, তবে প্রায়শই প্রোগ্রামার তাদের নিজস্ব শাটডাউন ক্রম চায় (আমি কম শক্তি মোডে প্রবেশ করা এবং থামিয়ে দেওয়া, বা ইউএসবি কেবলটি প্লাগ হওয়ার জন্য অপেক্ষা করার মতো বিভিন্ন কাজ করেছি) ইন এবং তারপরে রিবুট করা)।

অনেকগুলি মাইক্রোপ্রসেসরের নির্দেশাবলী স্থগিত করা হয়, যা পেরিপারালগুলিকে প্রভাবিত না করে প্রসেসরটিকে থামিয়ে দেয়। অন্যান্য প্রসেসর কেবল একই ঠিকানাটিতে বারবার ঝাঁপিয়ে "থামিয়ে" নির্ভর করতে পারেন। বিকল্পগুলি থাকতে পারে, তবে এটি প্রোগ্রামারের উপর নির্ভর করে কারণ প্রসেসরটি কেবল মেমরির কাছ থেকে নির্দেশাবলী পড়তে থাকবে, এমনকি যদি সেই মেমরিটি নির্দেশিকাগুলির উদ্দেশ্য নাও থাকে।


7

সমস্যাটি এম্বেড করা হয়নি (একটি এম্বেডড সিস্টেম লিনাক্স বা এমনকি উইন্ডোজ চালাতে পারে) তবে একা বা একা-ধাতু: সংকলিত অ্যাপ্লিকেশন প্রোগ্রামটি কম্পিউটারে চলমান একমাত্র জিনিস (এটি কোনও ব্যাপার না তবে এটি একটি মাইক্রোকন্ট্রোলার বা মাইক্রোপ্রসেসর)।

বেশিরভাগ ভাষার ক্ষেত্রে 'প্রধান' অবসান হয় এবং সেখানে ফিরে আসার জন্য কোনও ওএস না থাকলে কী হয় তা ভাষা নির্ধারণ করে না। সি এর জন্য এটি স্টার্টআপফাইলে কী রয়েছে তার উপর নির্ভর করে (প্রায়শই crt0.s)। বেশিরভাগ ক্ষেত্রে ব্যবহারকারী স্টার্টআপ কোড সরবরাহ করতে পারে (বা এমনকি অবশ্যই), তাই চূড়ান্ত উত্তরটি হ'ল: আপনি যা লিখবেন তা হ'ল স্টার্টআপ কোড, বা আপনি যে স্টার্টআপ কোডটি নির্দিষ্ট করেছেন তাতে কী ঘটে।

অনুশীলনে 3 টি পদ্ধতি রয়েছে:

  • কোন বিশেষ ব্যবস্থা গ্রহণ। মূল আয়গুলি অপরিজ্ঞাত হলে কী হয়।

  • 0 এ চলে যান, বা অ্যাপ্লিকেশনটি পুনরায় চালু করতে অন্য কোনও উপায় ব্যবহার করুন।

  • প্রসেসরের চিরতরে লক করে রাখা, একটি টান লুপ প্রবেশ করুন (বা বিঘ্ন নিষ্ক্রিয় করা এবং একটি থামানোর নির্দেশ কার্যকর করে) enter

কি উপযুক্ত তা আবেদনের উপর নির্ভর করে। একটি পশম-এলিস গ্রিটিং কার্ড এবং একটি ব্রেক-নিয়ন্ত্রণ-সিস্টেম (কেবলমাত্র দুটি এমবেডেড সিস্টেম উল্লেখ করার জন্য) সম্ভবত পুনরায় আরম্ভ করা উচিত। পুনঃসূচনা করার অবক্ষয়টি হ'ল সমস্যাটি নজরে নাও যেতে পারে।


5

আমি অন্যদিন কিছু ATtiny45 বিযুক্ত (সিআর ++ এআর-জিসিসি দ্বারা সংকলিত) কোডটি দেখছিলাম এবং কোডটির শেষে এটি কী করে তা 0x0000 এ চলে যায়। মূলত একটি রিসেট / পুনঃসূচনা করুন।

যদি 0x0000 এ শেষ জাম্পটি সংকলক / এসেম্বলারের দ্বারা ছেড়ে যায় তবে প্রোগ্রাম মেমোরির সমস্ত বাইটকে 'বৈধ' মেশিন কোড হিসাবে ব্যাখ্যা করা হয় এবং প্রোগ্রামের কাউন্টারটি 0x0000 পর্যন্ত না গড়িয়ে যাওয়া পর্যন্ত এটি সর্বত্র চলে।

এভিআর-তে একটি 00 বাইট (কোনও সেল খালি থাকলে ডিফল্ট মান) একটি এনওপি = অপারেশন নয়। সুতরাং এটি সত্যিই দ্রুত চলেছে, কিছুটা সময় ব্যতীত কিছুই করছে না।


1

সাধারণত সংকলিত mainকোডটি পরে স্টার্টআপ কোডের সাথে সংযুক্ত থাকে (এটি আপনার দ্বারা লিখিত চিপ বিক্রেতার দ্বারা সরবরাহিত সরঞ্জামচেইনে সংহত হতে পারে)।

লিঙ্কার তারপরে সমস্ত অ্যাপ্লিকেশন এবং স্টার্টআপ কোড মেমোরি বিভাগগুলিতে রাখে, সুতরাং আপনার প্রশ্নের উত্তরগুলির উপর নির্ভর করে: 1. সূচনা থেকে কোড, কারণ এটি উদাহরণস্বরূপ:

  • খালি লুপ ( bl lrবা b .) দিয়ে শেষ হবে যা "প্রোগ্রাম শেষ" এর সমান হবে, তবে পূর্বে সক্ষম হওয়া বাধা এবং পেরিফেরিয়ালগুলি এখনও পরিচালনা করবে,
  • প্রোগ্রামের শুরুতে লাফ দিয়ে শেষ করুন (হয় পুরোপুরি পুনরায় চালনা করুন বা জাসুট থেকে main)।
  • mainরিটার্নের কল করার পরে কেবল "পরবর্তী কী হবে" উপেক্ষা করুন ।

    1. তৃতীয় বুলেটে, যখন প্রোগ্রামের কাউন্টারে mainআচরণ থেকে ফিরে আসার পরে কেবল বৃদ্ধিগুলি আপনার লিঙ্কার (এবং / অথবা লিঙ্কিংয়ের সময় ব্যবহৃত লিঙ্কার স্ক্রিপ্ট) এর উপর নির্ভর করবে।
  • যদি আপনার পরে অন্য ফাংশন / কোড স্থাপন করা হয় তবে mainএটি অবৈধ / অপরিজ্ঞাত আর্গুমেন্ট মান সহ কার্যকর করা হবে,

  • খারাপ নির্দেশের সাথে নিম্নলিখিত মেমরিটি শুরু হলে ব্যতিক্রম উত্পন্ন হতে পারে এবং এমসিইউ শেষ পর্যন্ত পুনরায় সেট হবে (যদি ব্যতিক্রম পুনরায় সেট করে তবে)।

যদি ওয়াচডগ সক্ষম করা থাকে, তবে আপনার অবশেষে থাকা সমস্ত অন্তহীন লুপগুলি সত্ত্বেও এটি এমসিইউটিকে পুনরায় সেট করবে of


-1

এম্বেড থাকা ডিভাইস বন্ধ করার সর্বোত্তম উপায় হ'ল এনওপি নির্দেশাবলী সহ চিরকাল অপেক্ষা করা।

দ্বিতীয় উপায়টি হ'ল ডিভাইসটি নিজেই ব্যবহার করে ডিভাইসটি বন্ধ করা। আপনি যদি আপনার নির্দেশাবলীর সাথে রিলে নিয়ন্ত্রণ করতে পারেন তবে আপনি কেবল স্যুইচটি খুলতে পারেন যা আপনার এম্বেডড ডিভাইসটিকে শক্তিশালী করছে এবং হু হ্যাঁ আপনার এম্বেডড ডিভাইসটি কোনও বিদ্যুৎ খরচ ছাড়াই চলে গেছে।


এটি আসলে প্রশ্নের উত্তর দেয় না।
ম্যাট ইয়ং

-4

ম্যানুয়ালটিতে এটি পরিষ্কারভাবে ব্যাখ্যা করা হয়েছিল। সাধারণত একটি সাধারণ ব্যতিক্রম সিপিইউ দ্বারা নিক্ষেপ করা হবে কারণ এটি স্টেম বিভাগের বাইরে থাকা একটি মেমরির অবস্থান অ্যাক্সেস করবে। [স্মৃতি সুরক্ষা ব্যতিক্রম]।

আপনি এম্বেড থাকা সিস্টেম বলতে কী বোঝাতে চেয়েছিলেন? মাইক্রোপ্রসেসর বা মাইক্রোকন্ট্রোলার? যে কোনও উপায়ে এটি ম্যানুয়ালটিতে সংজ্ঞায়িত।

X86 সিপিইউতে আমরা এসিআইপি নিয়ন্ত্রকের কাছে কমান্ড প্রেরণ করে কম্পিউটারটি বন্ধ করে দিয়েছি। সিস্টেম পরিচালনা মোডে প্রবেশ করা হচ্ছে। সুতরাং যে নিয়ামকটি একটি আই / ও চিপ এবং আপনাকে ম্যানুয়ালি এটিকে বন্ধ করার দরকার নেই।

আরও তথ্যের জন্য এসিপিআই স্পেসিফিকেশন পড়ুন।


3
-1: টিএস কোনও নির্দিষ্ট সিপিইউ উল্লেখ করেনি, তাই খুব বেশি অনুমান করবেন না। বিভিন্ন সিস্টেম বিভিন্ন ক্ষেত্রে এই কেস পরিচালনা করে handle
ওয়াউটার ভ্যান ওইজেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.