এমসইউতে যুক্তিসঙ্গতভাবে সম্পর্কিত বিট ক্ষেত্রগুলি কেন প্রায়শই পৃথক স্থানে নিবন্ধিত হয়?


9

যদি এই প্রশ্নের উত্তর ইতিমধ্যে দেওয়া হয়ে থাকে তবে আমাকে ক্ষমা করুন, তবে আমি এই পৃষ্ঠায় বা বৃহত্তর ইন্টারনেটে কোনও উত্তর খুঁজে পেতে পারিনি।

আমি নিম্ন-স্তরের প্রোগ্রামিং সম্পর্কিত শালীন জ্ঞান সহ অভিজ্ঞ বিকাশকারী, তবে এম্বেডড বিকাশে তুলনামূলকভাবে নতুন। আমি নিজেকে ST-NUCLEO144 বোর্ড ব্যবহার করে এম্বেড হওয়া সিস্টেম বিকাশ শেখাচ্ছি, এতে একটি STM32F746ZG MCU বৈশিষ্ট্যযুক্ত। আমার কাছে একটি প্রশ্ন যা অপ্রত্যাশিত বলে মনে হয় তা হ'ল কেন নিবন্ধে যুক্তিযুক্তভাবে সম্পর্কিত বিট ক্ষেত্রগুলি বিভিন্ন স্থানে থাকতে পারে।

একটি উদাহরণ USART_CR1STM32746ZG- এ নিবন্ধক। M0এবং M1বিট ক্ষেত্র একসঙ্গে USART টেক্সাস / হয়েছে RX শব্দ দৈর্ঘ্য, একটি মিলিত 2-বিট মান নিয়ন্ত্রণ 0b00নির্দিষ্ট করে 8-বিট, 0b01, নির্দিষ্ট করে 9-বিট, ইত্যাদি এই সব বেশ সহজবোধ্য ছাড়া M0বিট 12 হয় এবং M1বিট এ 28 ... এটা কেন?

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

স্পষ্টতই বিট-মাস্কিংয়ের মাধ্যমে কাটিয়ে উঠতে এটি বেশ তুচ্ছ, তবে আমি কেবল কৌতূহলী।


1
বিশেষত ইউআরটির ক্ষেত্রে এটি খুব পুরানো প্রযুক্তি, সুতরাং কারণটি প্রায় সবসময় পিছনের দিকে সামঞ্জস্যপূর্ণ। ইউআআআরটি বিট-ফিল্ডগুলিতে রেজিস্ট্রি করার একই কারণেই প্রায়শই কৃপণ নাম থাকে যা পুরো জায়গাগুলি নেমস্পেসের সংঘর্ষ দেয়।
লন্ডিন

উত্তর:


13

এটি কি উত্তরাধিকার ডিজাইনের কারণে, যেমন কোনও নতুন বৈশিষ্ট্য পূর্ববর্তী সংরক্ষিত জায়গায় ?োকানো হয়েছিল?

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

উদাহরণস্বরূপ, এখানে USART_CR1পুরানো STM32F1xx পরিবারের রেজিস্টার।


STM32F1xx ইউএসউইন্টসিআরসিআর 1 বিট ব্যবহার নিবন্ধন করুন

চিত্র 1. STM32F10xxx USPointCR1 নিবন্ধ ব্যবহারের

চিত্র উত্স: STM32F10xxx পরিবারের রেফারেন্স ম্যানুয়াল RM0008, বিভাগ 27.6.4


যে দুটি পুরানো ইউএসআর্ট (কেবলমাত্র 2 শব্দ দৈর্ঘ্যের বিকল্পের সাথে) Mদুটি বিকল্পের মধ্যে ইউএসএআরটি শব্দের দৈর্ঘ্যটি কনফিগার করার জন্য কেবল একটি বিট প্রয়োজন , এবং এটি বিট 12। লক্ষ্য করুন 11 এবং 13 বিট কীভাবে ব্যবহৃত হয়, এবং ভবিষ্যতে "সম্প্রসারণ" এর জন্য অনুপলব্ধ ।

হিসাবে আপনি বললেন, নতুন STM32F7 (এবং, উদাহরণস্বরূপ, এছাড়াও STM32F4) এ USART এখন 3 শব্দ দৈর্ঘ্য অপশন (7, 8 এবং 9 বিট) এবং তাই অন্য কনফিগারেশন বিট প্রয়োজন - বিট 12 M0সঙ্গে, M1এখন একটু 28-এ (পূর্বে STM32F1 রেজিস্টার মানচিত্রে সংরক্ষিত, যেমন আপনি উপরে দেখুন)।


STM32F74xxx ইউএসউইন্টারসিআরসিআর 1 বিট ব্যবহার নিবন্ধন করুন

চিত্র 2. STM32F74xxx USPointCR1 নিবন্ধ ব্যবহারের

চিত্র উত্স: STM32F75xxx এবং STM32F74xxx পরিবারের রেফারেন্স ম্যানুয়াল RM0385, বিভাগ 31.8.1


তারা M1অন্য ফাংশনগুলির জন্য ইতিমধ্যে ব্যবহৃত রেজিস্টার বিটগুলি সরানো ছাড়াই 11 বা 13 টি রেজিস্ট্রার বিটগুলিতে নতুন বিটটি রাখতে পারেনি এবং সুতরাং বিদ্যমান কোডের সাথে (যেমন এসটিএম 32 এফ 1 এর জন্য) পশ্চাদগামী সামঞ্জস্যতা অপসারণ করেছে যা এগুলি ব্যবহার করে।

তাই তারা কিছুটা পিছনের সামঞ্জস্যতা রাখার চেষ্টা করেছে, যা অপ্রত্যাশিত জায়গায় নতুন রেজিস্টার বিট যুক্ত হতে পারে।

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


1
এটি উল্লেখ করার জন্য সময় দেওয়ার জন্য অনেক ধন্যবাদ। আমার জিজ্ঞাসার আগে সম্ভবত আমার পুরানো এফ পরিবারের রেফারেন্স সামগ্রীটি পরীক্ষা করা উচিত ছিল। আমি ভেবেছিলাম গল্পের আরও কিছু থাকতে পারে।
এজেक्सস

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

2
এটা যুক্তিসঙ্গত বলে মনে হচ্ছে, আমি আপনার পরামর্শ নেব! পরামর্শটি করার মতো সৌম্য হওয়ার জন্য আপনাকে ধন্যবাদ। আগামীকালের মধ্যে এর থেকে আরও ভাল উত্তর না এলে আমি আপনাদের গ্রহণ করব। আবার ধন্যবাদ.
এজেक्सস

5

আপনি ঠিক আছেন

".. উত্তরাধিকার নকশা কারণে যেমন একটি নতুন বৈশিষ্ট্য পূর্ববর্তী সংরক্ষিত জায়গায় spaceোকানো হয়েছিল .."

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

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

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