কীভাবে রাস্পবেরি পাই 2 তে 1,2,3 কোর শুরু করবেন


10

আমি একটি খালি ধাতু মাল্টি কোর উদাহরণ লিখেছি।

কোড, সার্কিট ডায়াগ্রামটি এখানে রয়েছে - https://github.com/jeffreyantony/multpi/tree/master/Example_01

আমার উদাহরণ হিসাবে, রাস্পবেরি পাই এর জিপিআইও পিনের সাথে 3 টি এলইডি সংযুক্ত রয়েছে। রাস্পবেরি পাই 2 তে সম্পূর্ণ 4 টি কোর রয়েছে প্রতিটি কোরকে তার সম্পর্কিত এলইডি ঝলকানোর জন্য নির্ধারিত করা হয়।

আমি নীচের ঠিকানাগুলিতে প্রতিটি কোর দ্বারা সম্পাদিত হতে কোডের ঠিকানাটি লিখলাম 0x4000009C কোর 1 0x400000AC কোর জন্য 0 2xx0000 বিবি কোর 3 জন্য

কোডটি সংকলনের পরে, কেবলমাত্র কোর 1 এর জন্য নির্ধারিত এলইডি জ্বলজ্বল করছে (এই উদাহরণ হিসাবে, হলুদ LED)। অন্যরা হয় না।

এর অর্থ কোর 2 এবং 3 এর কোড চলছে না (যেহেতু অন্যান্য এলইডি জ্বলজ্বল করছে না)। এছাড়াও আমি দেখতে পেলাম যে সমস্ত কোর শুরু করার পরে কোডটিও চলছে না অর্থাৎ কোর0_সুবাইন () - এই ফাংশনটি রাস্পবেরি পাইতে অ্যাক্ট এলইডি ঝলকানো উচিত

কেউ কি আমাকে জানাতে পারেন সমস্যা কি? চারটি কোর একই জিপিআইও রেজিস্টারে লেখার চেষ্টা করেছে এবং কেবল কোর 1 লেখায় জিতেছে বলেই কি?

আমি " অ্যাট্রিবিউট ((নগ্ন)) যুক্ত করার চেষ্টা করেছি ;" কোর0_সুবমাইন () এর জন্য তবে কোনও ব্যবহার হয়নি।

আমি এখান থেকে টুলচেন ব্যবহার করছি https://launchpad.net/gcc-arm-

আবার কোড - https://github.com/jeffreyantony/multpi/blob/master/Example_01/main.c

মেকফাইল - https://github.com/jeffreyantony/m લ્ટpi/blob/master/Example_01/Makefile

আপডেট 20 অক্টোবর 2015 : আমি JTAG- র জন্য সমর্থন যোগ করেছি। তবে 25 অক্টোবর 2015-এ ডিবাগ ইন্টারফেস আপডেট করতে সফল হয়নি
: ইস্যু ঠিক করা হয়েছে। উত্তর দেখুন।

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


এটা সত্যিই দুর্দান্ত মনে হচ্ছে। আমি এটার দিকে নজর রাখব. আমি বলতে চাই, রাস্পবিয়ানে এমন কিছু সফ্টওয়্যার থাকতে পারে যা কেবলমাত্র 1 টি কোর ব্যবহার করে যদি না অন্যদের শক্তি বা কিছু সঞ্চয় করার জন্য প্রয়োজন হয় ...
কাচামেনাস

উত্তর:


6

আপডেট 25 অক্টোবর 2015:

রাস্পবেরি পাই ফোরাম আমাকে উত্তর দিয়েছে ।

  1. -Nostdlib ব্যবহার করার সময় _স্টার্টের ধারণা নেই

  2. কোডটি প্রথমে কার্যকর করতে হবে লিংকারে পাস করার প্রথম ফাইল be

  3. যদি আরও ভাল নিয়ন্ত্রণের প্রয়োজন হয় তবে কোডটি একটি init বিভাগে স্থাপন করা প্রয়োজন এবং লিঙ্কারকে এই বিভাগটি অনুলিপি করতে বলুন 0x8000

সমর্থনের জন্য ধন্যবাদ। জিএনইউ সি সংকলক সম্পর্কে অনেক কিছু শিখেছে।

24 অক্টোবর 2015 আপডেট করুন:

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

আমি কিছুটা সাফল্য পেয়েছি। নতুন কোডটি গিথুবে চেক করা আছে

উদাহরণটি পুরোপুরি চলছে না। সংকলন নিয়ে কিছু সমস্যা রয়েছে। আমি প্রতিটি ব্যাখ্যা করব:

  1. আসলে আমি প্রত্যাশা করছিলাম যে _startআমার কাস্টম শুরু থেকে প্রতীকটি নেওয়া হবে S এস নেওয়া হবে। তবে ঘটনাটি ছিল না। এটির কারণে স্ট্যাক পয়েন্টারটি কনফিগার করা হয়নি এবং লাফটি মেইন ঘটেনি।

আমি ইতিমধ্যে এই সম্পর্কে একটি প্রশ্ন জিজ্ঞাসা করেছি । তবে আমি তেমন অগ্রগতি করি নি। সুতরাং আমি মূল ফাংশনে স্ট্যাক পয়েন্টারটি লোড করতে একটি ইনলাইন অ্যাসেমব্লি যুক্ত করেছি।

  1. তবুও কোডটি চালানো হয়নি। আমি যখন সমাবেশের তালিকাটি যাচাই করেছিলাম তখন আমি দেখতে পেলাম যে 0x8000রাস্পবেরি পাই এর ঠিকানায় (যেখানে ফাঁসি কার্যকর হয়) কোর 1 - এর কোড void core1_main(void)। আমার ধারণা ছিল যে 0x8000সেখানে _start(যা শুরু থেকে নয় S ফাইলটি সংকলনের জন্য নেওয়া হয় না) বা কমপক্ষে শূন্য মূল (শূন্য) ফাংশনটি থাকবে। -O2জিসিসির অপ্টিমাইজেশনের কারণে এটি ঘটে । জিসিসিতে উচ্চতর অপ্টিমাইজেশন স্তরগুলির সাথে, ফাংশনগুলি পুনরায় সাজানো হয় .. যখন আমি অপ্টিমাইজেশন ( -O0) বন্ধ করেছিলাম , তখন ঠিকানায় 0x8000, প্রধান উপস্থিত ছিল।

আপনি এখানে ফাংশন পুনরায় অর্ডারিং সম্পর্কে পড়তে পারেন

সংক্ষিপ্তসার: বর্তমান কোডটি কেবল একটি ঠিক। মূল ইস্যু সমাধান করতে হবে - কেন _ স্টার্টকে ডাকা হয় না স্টার্ট.এস থেকে? যদি ঠিক করা হয় তবে ঠিকানায়0x8000 _start আসবে। এটির সাথে আমাদের উচ্চতর অপ্টিমাইজেশনের সময় জিসিসি দ্বারা সম্পাদিত ফাংশন ক্রমটি যত্ন নেওয়ার দরকার নেই।

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


এইচটিপ উত্স কোডটি স্ক্রিনে মাল্টি কোর ডেটা দেখানোর জন্য তারা কী করে তা দেখুন এবং দেখুন।
পাইটর কুলা

3
@ পিপমকিন এটি অর্থহীন। htopএকটি * নিক্স ভিত্তিক ব্যবহারকারীল্যান্ড সরঞ্জাম। লিনাক্সে এটি কেবল কার্নেল থেকে তার তথ্য পায় /proc। এটি খালি ধাতব জিনিস। কোয়েরিতে কোনও কার্নেল নেই।
স্বর্ণলোকস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.