A2L ফাইল ব্যবহার করে এইচএক্স ফাইলের (ইসিইউ প্রোগ্রাম) প্যারামিটারগুলি অ্যাক্সেস করা হচ্ছে


3

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

এখন উদাহরণ হিসাবে এইচএক্স-ফাইলটি দেখতে এমন দেখাচ্ছে:

[…]
:2001C00000000000000000000000000000000000000000000000000000000000000000001F
:2001E0000000000000000000000000000000000000000000000000000000000000000000FF
:2002000054710780809A0780809A0780809A07808C530680000011A0140011A000000000D4
:200220000000000000000000000000000000000000000000000000000000000000000000BE
:2002400000000000000000000000000000000000000000000000000000000000000000009E
:2002600000000000000000000000000000000000000000000000000000000000000000007E
[…]

(দয়া করে মনে রাখবেন এটি কেবল একটি অনুকরণীয় অংশ)

নির্দিষ্ট প্যারামিটারের ঠিকানাটি A2L থেকে উদাহরণস্বরূপ পড়তে পারে ‘0xA0143B0B’। এক্সসিপি-প্রোটোকলের স্পেসিফিকেশন থেকে আমি জানি যে A2L- তে ঠিকানা 40-বিট দীর্ঘ (32-বিট ঠিকানা এবং 8-বিট এক্সটেনশন)। আপনি যে ঠিকানাটি পড়েছেন তা দেখতে দেখতে 64৪-বিট। এখন যদি আমি ঠিক এটি পাই তবে আমার অনুকরণীয় ঠিকানাটি ‘A01’সংরক্ষিত, ‘4’ঠিক ঠিকানা বিস্তৃতকরণ এবং ‘3B0B’আসল 32-বিট ঠিকানা।

কেউ ভুল করতে পারলে এটি কি নিশ্চিত করতে পারে বা আমাকে সংশোধন করতে পারে?

এইচএক্স-ফাইল থেকে ডেটা পজিশনে পড়া ‘3B0B’ভুল। আমার সহকর্মীরা আমার ফলাফলগুলি যাচাই করার জন্য একটি পাঠ্য ফাইলে আমার জন্য ডেটা রফতানি করেছিলেন এবং সেগুলি স্পষ্টভাবে পৃথক। অবস্থানটি সম্বোধন করা হলে ':' গণনা করা হয়?

সম্পাদনা: আমি সবেমাত্র জানতে পেরেছি যে 'A01'ডেটা লিখিত র‌্যাম-সেগমেন্টকে সংজ্ঞায়িত করে But তবে কীভাবে আমি এইচএক্স-ফাইলের মধ্যে এই বিভাগটি খুঁজে পেতে পারি?


আমি উল্লেখ করতে ভুলে গেছি: তথ্যটি আমি জানি না এমন ঠিকানাটির জন্য ইন্টেল স্বরলিপি (সামান্য এডিয়ান) রয়েছে।
জেএম

উত্তর:


1

এটি ইন্টেল হেক্স ফর্ম্যাট, আপনার কাঁচা হেক্স ডাম্প নয় - সুতরাং না, ফাইলটিতে অবস্থান খুব বেশি সহায়ক হবে না। এগুলি দৈর্ঘ্য, ঠিকানা, রেকর্ডের ধরণ, ডেটা এবং চেকসাম সহ রেকর্ডগুলি।

এখানে চিত্র বর্ণনা লিখুন

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


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

@ জেএম: বিন্যাসের চশমা অনুসরণ করে, এর আশেপাশে কোনও সহজ উপায় বা শর্টকাট নেই (যদি না আপনি এটি করতে পারেন এমন কোনও লাইব্রেরি না পাওয়া যায়)।
এসএফ

ঠিক আছে, এখন আমি একটি স্ক্রিপ্ট লিখেছি এবং প্রায় বাইনারি দিয়ে শেষ করি। 3.6 মিলিয়ন বিট। আমি এখন এ 2 এল থেকে পড়া ঠিকানাগুলি কীভাবে ব্যবহার করব? আমি উদাহরণস্বরূপ '0x3B0B' ব্যবহার করব? আপনি কি জানেন যে সংরক্ষিত '4' এর জন্য ব্যবহৃত হয়?
জেএম

@ জেএম: আহ, ৩.6 মিলিয়ন বিট ? আমি আশা করি বাইটে বান্ডিল হয়ে গেছে, এবং '0' এবং '1' অক্ষরগুলি আলাদা করে দিচ্ছি না? ঠিক আছে, আমি এক্সসিপি-প্রোটোকলটি জানি না তবে এখন আপনি ইনটেল হেক্সকে বাইনারি থেকে প্যাক করেছেন, আপনি এক্সসিপি অনুসারে বাইনারি প্রক্রিয়া করেন। এছাড়াও: 0xA0143B0B আসলে 32 বিট, 64 নয় - প্রতিটি হেক্স অক্ষর 4 বিট উপস্থাপন করে। আমি আশঙ্কা করছি যদিও আমি আপনাকে এটির পক্ষে সাহায্য করতে পারি না; এক্সসিপি দিয়ে কখনই কিছু করেনি এবং কীভাবে এটি ডিকোড করতে হবে তার আমার কোনও ধারণা নেই।
এসএফ

হ্যাঁ অবশ্যই রূপান্তরিত। ঠিক আছে, আমাকে এই ক্ষেত্রে এক্সসিপি প্রোটোকলটি সন্ধান করতে হবে .. বাইনারিতে ঠিকানার মতো যতগুলি বাইট নেই সেহেতু এটি এত সহজ হতে পারে না। এবং আপনি ঠিক ঠিক ঠিক ঠিকানাটি - এটি 32 টি বিট: - /
জেএম 14

0

ইন্টেল এইএইএক্স ফর্ম্যাটটি ভালভাবে ডকুমেন্টেড আছে। মূলত, এটিতে নির্দিষ্ট ঠিকানায় একগুচ্ছ বাইট রয়েছে।

অবশ্যই এখানে অনেকগুলি ইউটিলিটি রয়েছে যা এইচএক্স ফাইলগুলি পড়ে এবং সেগুলির তথ্য সহ বিভিন্ন কাজ করে। উদাহরণস্বরূপ, আপনার সরবরাহিত স্নিপেটটিতে আমার এইচএক্স_ডাম্প ইউটিলিটি চালিত হয়েছে:

000001C0-000001DF (32): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000001E0-000001FF (32): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000200-0000021F (32): 54 71 07 80 80 9A 07 80 80 9A 07 80 80 9A 07 80 8C 53 06
  80 00 00 11 এ0 14 00 11 এ0 00 00 00 00
00000220-0000023F (32): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000240-0000025F (32): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000260-0000027F (32): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

এই আউটপুট আপনাকে প্রতিটি রেখার ফলাফল, সেই লাইনে ডেটা বাইটের সংখ্যা, তারপরে এইচএক্সের প্রকৃত ডেটা বাইটের ফলাফল দেখাচ্ছে।

সেই ডেটাটির অর্থ কী এবং আপনি এটি দিয়ে কী করবেন তা অবশ্যই আপনার to

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