এসটিএম 32 এবং এসটি-লিঙ্ক - সফল প্রোগ্রামিংয়ের পরে এমসিইউতে সংযুক্ত হতে পারে না


13

আমি STM32F7-45VGT6 দিয়ে নিজস্ব বোর্ড তৈরি করেছি। আমি এটি সফলভাবে এসটি-লিঙ্ক ভি 2 দিয়ে প্রোগ্রাম করেছি (মূলটি যদিও এটি নয়) এবং এখন আমি এমসিইউয়ের সাথে সংযোগও করতে পারি না।

আমি এসটি এবং এসডাব্লুডি ইন্টারফেস থেকে এসটি-লিংক ইউটিলিটি ব্যবহার করি। এটি এমন পরিস্থিতিতে হতে পারে যে আমি এসডাব্লুডি পিনগুলি আউটপুট হিসাবে ব্যবহার করি এবং আমার কোডে আমি তাদের জিপিআইও আউটপুট হিসাবে সেট করি। এটা কি হতে পারে?

তবুও, আমি আমার রিসেট পিনটি জিএনডি-তে সংযুক্ত করেছি এবং এসটি-লিংক ইউটিলিটিতে "সংযুক্ত আন্ডার রিসেট" বিকল্পটি সেট করি তবে এটি কার্যকর হয় না ... আমি কী করতে পারি?

ইন্টারনেটে, আমি BOOT0 পিন ব্যবহার সম্পর্কে কিছু খুঁজে পেয়েছি, তবে আমি ঠিক জানি না ...


"এটি সম্ভব হতে পারে যে আমি এসডাব্লুডি পিনগুলি আউটপুট হিসাবে ব্যবহার করি" এটি সম্ভব তবে কেবলমাত্র তিনিই জানেন যে আপনি যদি না কোনও ফার্মওয়্যারের দুর্নীতিযুক্ত বোঝা বোঝেন না যা ইচ্ছাকৃতভাবে না করে তবে ফলস্বরূপ হতে পারে ত্রুটি, যা আসলে ঘটে। সাধারণত ম্যানুয়ালি বা স্বয়ংক্রিয়ভাবে দৃserted়ভাবে বলা হয়েছে যে হার্ডওয়্যার রিসেটের সাথে প্রাথমিক এসডাব্লুডি সংযোগ সম্পাদন করে এটি পুনরুদ্ধারযোগ্য। আপনি যদি SWD পিনগুলি ব্যবহার করতে চান যেহেতু I / O এর সেটিংটি তৈরি করার আগে কয়েক সেকেন্ড বিলম্বিত হতে পারে তবে সেটিংস বিকাশকে আরও সহজ করে তুলতে পারে, তবে এটি এখনও উপলব্ধি করে আপনি ডিবাগারটি ব্যবহার করতে পারবেন না।
ক্রিস স্ট্রাটন

উত্তর:


21

আমি যে সমস্যাটি সমাধান করতে পেরেছি। যদি কারও যদি একইরকম সমস্যার মুখোমুখি হয় তবে আমি এখানে যা করেছি তা এখানে:

আমি এসটি-লিংক ভি 2 এবং এসটি-লিংক ইউটিলিটি ব্যবহার করেছি। সেটিংয়ে, আমি "কানেক্ট আন্ডার রিসেট" এবং এসডাব্লুডি ইন্টারফেস সেট করেছি (আমি ফ্রিকোয়েন্সি সম্পর্কে নিশ্চিত নই)।
তারপরে আমি আমার বোর্ডের রিসেট বোতামটি টিপলাম এবং "টার্গেট" -> "মুছে ফেলুন চিপ" এ ক্লিক করেছিলাম এবং ঠিক তখনই আমি বোতামটি প্রকাশ করেছি - এটি চিপটি মুছে ফেলেছে তাই আমি এখন আমার এমসিইউ পুনরায় প্রোগ্রাম করতে পারি।


যাইহোক, যদি আপনাকে এসডব্লুডি পিনগুলি আউটপুট হিসাবে ব্যবহার করতে হয় তবে প্রোগ্রামের শুরুতে কিছুটা বিলম্ব যুক্ত করুন বা এই পিনগুলি আউটপুট হিসাবে সেট করতে অক্ষম / সক্ষম করতে কিছুটা জাম্পার ব্যবহার করুন।


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

1
লিনাক্সে, আমি চিপটি মুছে ফেলতে এই ব্যাশ কমান্ডটি ব্যবহার করেছি: স্ট্যান্ড-ফ্ল্যাশ মুছে ফেলুন
নাথান

ইরেস চিপটি আমার পক্ষে কাজ করে নি। আমি টার্গেটে গিয়েছিলাম -> সেক্টরগুলি মুছুন -> সমস্ত নির্বাচন করুন -> আবেদন করুন। এর পরে আমি আমার বোর্ডের অ্যাক্সেস ফিরে পেয়েছি। আমি নিশ্চিত না কেন চিপটি মোছার শব্দটি বলা হয়নি
অ্যান্ড্রু

6

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


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

বুটলোডারের ভিতরে এসডাব্লুডি পিনগুলি অ্যাক্সেস পাওয়ার জন্য উপলব্ধ হওয়া উচিত, তবে আমি এটিতে 100% নিশ্চিত নই।

এসটি ফ্ল্যাশ লোডার বিক্ষোভকারী এমন একটি সরঞ্জাম যা আপনাকে ইউআআআরটি ইন্টারফেসটি ব্যবহার করে মাইক্রোটিকে মুছে ফেলার / প্রোগ্রাম করার অনুমতি দেয়। আপনি যদি আপনার মাইক্রোটির কোনও ইউআরটি অ্যাক্সেস করতে না পারেন তবে এই সমাধানটি আপনার পক্ষে কাজ করবে না।


আমি ইউএসআরটি 3 অ্যাক্সেস করতে পারি যা বুটলোডার দ্বারা সমর্থিত, তাই আমি পরে চেষ্টা করব - এটি কৌতূহলপূর্ণ হবে, পিসিবিতে জিএনডি-র সাথে BOOT0 বাঁধা আছে ... তবে আমি কী জানতে চাই তা জানতে চাই। আমি কী ভুল করেছি? আমি আমার মূল () ফাংশনে আউটপুট হিসাবে এসডাব্লুডি / জেটিএইচ পিন সেট করেছি। তবে এটি ম্যানুয়ালটিতে বলেছে যে রিসেটের সময় সমস্ত পিনের তাদের ডিফল্ট ফাংশন থাকে এবং তা অবিলম্বে ব্যবহার করা যায়। কেন আমি রিসেটের অধীনে ফ্ল্যাশ মুছতে পারি না? আমি ইউ-লিঙ্ক 2 প্রোগ্রামার এবং ইউভিশন ৫ও পরীক্ষা করেছি I আমি আশা করি কোনও সুরক্ষা স্তর ছিল না - কোনওভাবে দুর্ঘটনাক্রমে - সেট হয়েছিল। আমি এই জাতীয় কোনও বিট সেট করি নি, তবে সুরক্ষা বিট ঠিক আছে কিনা তা পরীক্ষা করার কোনও উপায় আছে কি?
zupazt3

@ zupazt3 আমার অর্থ অভদ্র শব্দের অর্থ নয়, তবে দয়া করে আমার প্রথম বাক্যটি আবার পড়ুন। এটিতে রিসেট আন্ডার রিসেটের সাথে সমস্যার উত্তর রয়েছে। যদি আপনি এটি বুঝতে না পারেন তবে আরও একটি নির্দিষ্ট মন্তব্য পোস্ট করুন।
আর্সেনাল

তবে আমি এটি সবসময় বেঁধে রাখি না :) আমার প্রথম পোস্টে আমি বোঝাতে চেয়েছিলাম যে আমি এটি সরাসরি জিন্ডের সাথে বেঁধে দিয়েছি কিনা তা পরীক্ষা করে দেখার জন্য। তবে সাধারণত আমি জিআরডি-তে এনআরএসটি বাঁধি না, তবে একটি প্রোগ্রামারের সাথে বেঁধে রাখি, সুতরাং এটি পুনরায় সেট করার উপর নিয়ন্ত্রণ রাখে। এবং এটি এখনও সংযুক্ত হবে না। আমি ইউ-লিঙ্ক 2 এবং কেইল ইউভিশন 5 ব্যবহার করার চেষ্টা করেছি কিন্তু একই ফলাফলের সাথে। এর কারণ কী হতে পারে?
zupazt3

@ zupazt3 যা আপনার প্রশ্ন থেকে পুরোপুরি পরিষ্কার ছিল না। হতে পারে এসডাব্লুডি ঘড়ি বাড়ানো সাহায্য করতে পারে, কারণ লক্ষ্যটি আউটপুট পরিবর্তন করার আগে এটি সংযোগ পেতে পারে। তবে আমি দুর্ঘটনাক্রমে এসডাব্লুডি পিনগুলি আউটপুটে সেট করেছি এবং আমার টার্গেটের সাথে কোনও সংযোগ পেতে সক্ষম হয়েছি এবং কেবলমাত্র BOOT0 ব্যবহার করে আমি এটি পুনরুদ্ধার করতে সক্ষম হয়েছি, যদি আপনি তাদের সরাসরি মাটিতে বেঁধে রাখেন (একটি রেজিস্টার ছাড়াই) এটি হবে শক্ত।
আর্সেনাল

1
আমি অবশেষে চিপ মুছতে পেরেছি! এসটি-লিংক ইউটিলিটি সহ - আমি রিসেট বোতাম টিপলাম, "সম্পূর্ণ মুছে ফেলুন" এবং রিলিজ বোতামটি ক্লিক করেছি এবং এটি কোনওভাবে নিজেকে মুছে ফেলেছে এবং এখন এটি কার্যকর হয়। আমি এটি চেষ্টা করেছিলাম তবে এখন এটি কাজ করেছে।
zupazt3

3

আপনি যদি stmcubemx ব্যবহার করে থাকেন তবে আপনাকে স্টেমক्यूब পিনআউট ট্যাবে সিরিয়াল তারটি কনফিগার করতে হবে। পিনআউট ট্যাবে, এসওয়াইএস ক্লিক করুন এবং সিরিয়াল তারে ডিবাগ বিকল্পটি পরিবর্তন করুন। এটি আমার সমস্যাটি সমাধান করে এবং সম্ভবত আপনার সমস্যাও।


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

আমি প্রথমে আমার পিনগুলি SYS_SW হিসাবে সেট করেছি .... তবে সেগুলি কমলা রঙে। কোডটি আপলোড করার পরে চিপের সাথে সংযোগ করতেও সমস্যা হয়েছিল। আমি যখন এসওয়াইএস-সিরিয়াল ওয়্যারে ডিবাগ মোডটি নির্বাচন করেছি, চিপটি স্বাচ্ছন্দ্যের পরে সাধারণত সংযুক্ত হয়।
gtu

1

আমি আমার নিজস্ব STM32F427 বোর্ডে কিছু কোড ডাউনলোড করেছি। তারপরে আমি আর এসটি-লিংক ইউটিলিটি ব্যবহার করে আমার বোর্ডের সাথে সংযোগ করতে পারি না। আমি মনে করি আমার কোডটি ডিবাগ পোর্ট পিন কনফিগারেশনগুলিকে মেসআপ করবে (? এটি নিশ্চিত করতে পারে না) আমি যা করেছি তা হ'ল সংযোগটি তৈরি করতে এবং আমার বোর্ডটিকে পুনরায় প্রোগ্রাম করতে:

  1. এসটি-লিংক ইউটিলিটিটি খুলুন এবং লক্ষ্য মেনুতে "সংযুক্ত" হওয়ার জন্য প্রস্তুত হন get
  2. আপনার বোর্ডকে পাওয়ার করুন (আমার ক্ষেত্রে আমি একটি ইউএসবি কেবল ব্যবহার করি) এবং একই সময়ে এসটি-লিঙ্ক ইউটিলিটি থেকে "সংযুক্ত করুন" ক্লিক করুন।

আমি এই কৌশল দিয়ে 2 বোর্ড পুনরুদ্ধার করেছি। আশাকরি এটা সাহায্য করবে. --Bob


1

ডিলির মতো বলেছেন:

আপনি যদি stmcubemx ব্যবহার করে থাকেন তবে আপনাকে স্টেমক्यूब পিনআউট ট্যাবে সিরিয়াল তারটি কনফিগার করতে হবে। পিনআউট ট্যাবে, এসওয়াইএস ক্লিক করুন এবং সিরিয়াল তারে ডিবাগ বিকল্পটি পরিবর্তন করুন। এটি আমার সমস্যাটি সমাধান করে এবং সম্ভবত আপনার সমস্যাও।

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


0

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


-1

বুট পিনগুলি (কিছু সংস্করণে বিট) ডিবাগারটি শুরু হতে আটকাতে পারে। নিশ্চিত হয়ে নিন যে আপনি শুরুতে বুট প্যাটার্নটি প্রয়োগ করেন না (বুট0 এবং বুট 1 পিনের নির্দিষ্ট বাইনারি প্যাটার্ন), অন্যথায় আপনার এমসিইউ বুট অবস্থায় চলে যাবে into


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

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