বাধা সক্ষম করুন কিন্তু কোনও আইএসআর নেই


10

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

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

যা হতে পারে তার কোনও সমাধান সত্যিই আমাকে সহায়তা করতে পারে।

ধন্যবাদ।

হালনাগাদ:

আমি আমার ইউসিতে কনট্রপ্ট সক্ষম করতে পেরেছি, তবে কোনও আইএসআর সংজ্ঞায়িত করতে পারি নি। যখন আমি একটি অভ্যন্তরীণ লুপব্যাক পরীক্ষা করেছি, কোডটি একটি অসীম লুপে প্রবেশ করেছিল। LPC1778 এ কার্যকর করা হচ্ছে এমন অসীম লুপের ডিসঅ্যাসাভেজ কোডটি এখানে:

B       .
ENDP

হ্যাঁ, আপনি যদি বাধা ব্যবহার করে থাকেন তবে আইএসআর ব্যবহার করুন।


3
আপনার প্রধান ফাংশনে পতাকাগুলির জন্য পোল করতে সক্ষম হতে আপনাকে বাধা সক্ষম করার দরকার নেই। পতাকাটি নির্ধারণ করে এমন শর্তটি যদি ঘটে থাকে তবে সেই পতাকাটি আপনি সংযুক্ত বাধাকে সক্ষম করেছেন কিনা তা সেট হয়ে যাবে।
brhans

Sayingর বলছে যে একটি বাস আরবিট্রেশন হারানো বাধা ফ্ল্যাগটি সেট হয়ে যাবে যদিও আমি "বাস আরবিট্রেশন বিঘ্নিত হওয়া" সক্রিয় করতে সক্ষম না করি (যদিও এমন কোনও স্ট্যাটাস রেজিস্ট্রার নেই যা বাস আরবিট্রেশনটি ইন্টারপ্রেট স্ট্যাটাস রেজিস্টার বাদে হারিয়ে গেছে)?
আলফাগোকু

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

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

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

উত্তর:


17

যদি কোনও আইএসআর সংজ্ঞায়িত না করা হয় তবে বিঘ্নিত ভেক্টরটিতে জাম্পের নির্দেশের অবস্থানটি শূন্য হবে, এটি কোনও ব্যতিক্রম রুটিনে ঝাঁপ হতে পারে, এটি প্রোগ্রামের শুরুতে লাফিয়ে উঠতে পারে, বা এতে "ফিরে আসা" থাকতে পারে বাধা "(যেমন আরটিআই) নির্দেশনা।

এটিএমএগা 16 প্রসেসরের জন্য একটি বিঘ্নিত টেবিলের এক বিচ্ছিন্নতা যা এখানে একটি রুটিনের জন্য তিনটি অব্যবহৃত বাধা দেখানো হয় যা এই জাতীয় কেসগুলি পরিচালনা করে (এটি কেবল একটি অসীম লুপে যেতে পারে), এবং একটি বৈধ ভেক্টর।

  28:   0c 94 47 00     jmp 0x8e    ; 0x8e <__bad_interrupt>
  2c:   0c 94 5c 00     jmp 0xb8    ; 0xb8 <__vector_11>   // <-- ISR
  30:   0c 94 47 00     jmp 0x8e    ; 0x8e <__bad_interrupt>
  34:   0c 94 47 00     jmp 0x8e    ; 0x8e <__bad_interrupt>

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

আমি মনে করি এটি অভ্যন্তরীণ বাধা (যেমন কোনও ইউআরটি দ্বারা প্রাপ্ত একটি চরিত্র) স্তর-ট্রিগারযুক্ত বা প্রান্ত-ট্রিগার হিসাবে বিবেচিত কিনা তা চিপের আর্কিটেকচারের উপর নির্ভর করে। বাহ্যিক বাধা সাধারণত একটি বা অন্য হিসাবে কনফিগার করা যায়।

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

তবে কোনও সিস্টেমে বিঘ্ন ঘটানো এবং কোনও আইএসআর সংজ্ঞায়িত করা খারাপ অভ্যাস। এটা করবেন না।


2
...., বা এটি অপরিজ্ঞাত করা যেতে পারে।
ওয়াউটার ভ্যান ওইজেন

@ ওউটারওয়ানওইজেন বাধা ভেক্টরটি নাল হয়ে যাচ্ছিল তার অর্থ আমি এই।
tcrosley

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

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

1
এটিএসএএম 3 এক্স 8 ই-তে থাকা পিআইও ইন্টারপ্টগুলি প্রান্ত-ট্রিগার হতে পারে, তবে একবার সেট হয়ে গেলে বাধা শর্তটি পরিষ্কার করা হবে না যতক্ষণ না আপনি বাধা হ্যান্ডলারে আইএসআর (বিঘ্নিত স্থিতি রেজিস্ট্রার) পড়েন - যার ফলে লুপ @ ব্রাঙ্কস উল্লিখিত হয়।
সাইমন রাইট

1

এটি আপনার এমসিইউ, সংকলক এবং কোডের বাকী অংশের উপর নির্ভর করে।

আমার অভিজ্ঞতা থেকে:

  1. এভিআর - ডিফল্টরূপে যদি আপনি কোনও আইএসআর নির্দিষ্ট না করে থাকেন তবে ফ্ল্যাশটিতে বিঘ্নিত ভেক্টরটি 0x0000 হবে, যার অর্থ যখনই এই বাধা ঘটে তখনই আপনার অ্যাপ্লিকেশনটি পুনরায় সেট হয়ে যায়।

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

  2. এনএক্সপি কিনেটিস (এআরএম) - সমস্ত ভেক্টর ডিফল্টরূপে একটি ডিফল্ট হ্যান্ডলারের দিকে একটি ব্রেকপয়েন্ট রয়েছে বলে নির্দেশ করে, সিপিইউ কেবল এটি থামিয়ে আপনার ডিবাগারকে এটি বলবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.