বুলেটপ্রুফ ফার্মওয়্যার আপগ্রেড


16

কোনও ডিভাইস ফার্মওয়্যারের পোস্ট বিক্রয় নিরাপদে আপগ্রেড করতে কোনও ব্যবহারকারীকে সক্ষম করতে কোন ধরণের কৌশল ব্যবহার করা হয় ? আমি কর্টেক্স এম 3/4 মাইক্রোকন্ট্রোলার দিয়ে এটি করতে চাই, তবে আমার ধারণা কোনও মাইক্রোয়ের জন্য কৌশলগুলি করা উচিত।

অবশ্যই অতিরিক্ত কোর্সের কমপক্ষে পরিমাণের সাথে Pre

উত্তর:


16

আপনার কোডের জন্য আপনার প্রয়োজনীয় ফ্ল্যাশ মেমরির দ্বিগুণেরও বেশি একটি চিপ ব্যবহার করুন। কিছু ভুল হয়ে যাওয়ার পরে পুরানোটিকে রেখে যাওয়ার পরে আপনি এই স্মৃতিতে নতুন ফার্মওয়্যারটি পেতে পারেন।

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

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


10
ইলেক্ট্রনিক্সের ব্যবহারকারী হিসাবে, আমি যুক্ত করতে পারি যে পুরানো ফার্মওয়্যারটি বুট করার সময় বুট করার সময় কোথাও একটি বোতাম রাখলে ভাল লাগবে, যদি নতুনটির সঠিক চেকসাম থাকে তবে সফ্টওয়্যারটিতে নিজেই একটি বাগ রয়েছে।
Zan Lynx

4
এই সমস্যাটির সাথে আমি যে "সমস্যা" দেখছি তা হ'ল আপনার একরকম স্থানান্তরের টেবিল বা সম্পূর্ণ অবস্থানের স্বাধীন কোড দরকার। অন্যথায় আপনার কোড চলবে না।
নিকো এরফুর্থ

2
@ মাস্তা - ফার্মওয়্যারটি তার চূড়ান্ত (স্বাভাবিক) অবস্থানটিতে অনুলিপি করা হয়েছে সেই অংশটি আপনি বুঝতে পারছেন না।
কেভিন ভার্মির

3
@jpc - আমরা কাজের বাইরে কিছু গৃহ সরঞ্জামে একটি বাহ্যিক সিরিয়াল ফ্ল্যাশ চিপ সহ এই কৌশলটি ব্যবহার করি। আপনার যদি 8-পিন এসওআইসি বা কিউএফএন অংশের জন্য জায়গা থাকে তবে আপনার কাছে ফ্ল্যাশের দ্বিগুণের বেশি মাইক্রোকন্ট্রোলার থাকার দরকার নেই। 1 এমবি সিরিয়াল ফ্ল্যাশ স্মৃতিগুলি এক ডলারেরও কম দামের জন্য থাকতে পারে তাই কোনও কোনও ক্ষেত্রে মাইক্রোকন্ট্রোলারকে আপগ্রেড করার চেয়ে এই রুটে যাওয়া আরও সস্তা হতে পারে!
কেভিন ভার্মির 21

@ জ্যান - হ্যাঁ, আমরা এটিও ব্যবহার করি। একটি উদ্বেগ বা সুবিধা হ'ল আপনি যখন পুরানো ফার্মওয়্যারটি পুনরায় কপি করেন তখন ডিভাইসটি ডিফল্টগুলিতে পুনরায় সেট হয়ে যায় (আমাদের নিজের মাইক্রোতে EEPROM নেই; আমরা ম্যাক ঠিকানা এবং আইপি ঠিকানার মতো কনফিগারেশন ডেটা স্ব-লিখিত ফ্ল্যাশে সঞ্চয় করি)। আমাদের জন্য, যখন আমরা আইপি ঠিকানাটি ভুলে যাই তখন এটি বোর্ড খুঁজে পাওয়া সহজ করে দেয়।
কেভিন ভার্মির 21

12

একটি বুটলোডার এবং কয়েক কেবি অতিরিক্ত ফ্ল্যাশ ব্যবহার করুন।

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

যদি আপডেট ব্যর্থ হয় (পাওয়ার ব্যর্থতা, কেউ তার বা অন্য কোনও কারণে ছিটকে গেছে), তবে উইজেটটি কাজ করবে না, তবে বুটলোডারটি এখনও থাকবে যাতে আপগ্রেড আবার চেষ্টা করা যেতে পারে।

কোনও কোনও বাইটে একটি পতাকা সেট করা যেতে পারে যা মূল কোডটি ভুলভাবে কার্যকর করতে বাধা দেয় কারণ এটি পুরোপুরি আপডেট হয়নি।


বুটটি পাওয়ার-আপের কারণে যদি আপনি বুটলোডারটি চালাতে বাধ্য করতে পারেন তবে। আপনি অবিলম্বে ক্র্যাশ হয়ে যাওয়া খারাপ ফার্মওয়্যারে লোড করলে এটি সহায়তা করবে। এক্স সেকেন্ডের পরে অ্যাপ্লিকেশনটি চালানোর জন্য বুটলোডারটির একটি সময়সীমা প্রয়োজন।
রবার্ট

আপনি যদি একটি সাধারণ প্রোটোকল (একটি অ্যাসিঙ্ক সিরিয়াল, টিটিএল বা 485 এর মতো) ব্যবহার করতে পারেন তবে এটি ভাল ধারণা। আরও জড়িত মামলার জন্য (এসডি কার্ড, জিপিআরএস, ইউএসবি) আমি জটিল সমর্থন কোডটি (অ-আপগ্রেডযোগ্য) বুটলোডারটিতে অন্তর্ভুক্ত করব না। ইথারনেট ওটিওএইচ (কাঁচা ইউডিপি বা টিএফটিপি) এর জন্য যথেষ্ট সহজ।
jpc

3

যদি আপনার ডিভাইস তুলনামূলকভাবে ব্যয়বহুল হয় এবং আপনি ব্যয় বহন করতে পারেন (এবং আপনার গ্রাহকরা আপগ্রেড সম্পর্কে যত্নশীল হন) আপনি এটি করতে পারেন ...

(সাধারণত এই কৌশলটির জন্য হয় বাহ্যিক স্টোরেজ বা জেট্যাগের বিভ্রান্তিকর ব্যবহার প্রয়োজন ..)

একটি স্থির প্রোগ্রাম মাইক্রো রাখুন (সামান্য পিআইসির মতো) যা সিস্টেমটি থামিয়ে পুনরায় প্রোগ্রাম করতে পারে।

কারণ আপনি "আপগ্রেড প্রসেসর" ফার্মওয়্যারটি পরিবর্তন করতে পারবেন না, এটি কখনও ভুল হতে পারে না।

1) ব্যবহারকারী ডিভাইসটি আপগ্রেড করতে পারে

2) যদি কোনও আপগ্রেড ব্যর্থ হয় তবে তারা সর্বদা আবার চেষ্টা করতে পারে। এটি ব্রিক করা যাবে না

3) এমনকি যখন আপনার টার্গেট ডিভাইস কোনও বুট-লোডার সমর্থন করে না (এটি কেবল বুট করে চালাতে চায়) আপনি এখনও যা করতে চান তা করতে পারেন।

এফপিজিএ, ডিএসপি এবং অন্যান্য অডবল লক্ষ্যগুলিতে কাজ করে।

সত্যই ঝরঝরে ইউজার ইন্টারফেস থাকতে পারে (একটি পিআইসি একটি ওয়েব সার্ভার চালাতে পারে ....)


2

আপনার পণ্যটি বেশ কয়েকটি সহজ সিরিয়াল ইন্টারফেস রয়েছে তা নিশ্চিত করুন , পছন্দমতো EIA232। আপনার যদি ডিবি -9 এর জন্য জায়গা না থাকে তবে একটি অ-মানক সংযোগকারী ঠিক আছে। উদাহরণস্বরূপ একটি টিআরএস সংযোজক আপনার প্রয়োজন টিএক্সডি, আরএক্সডি এবং গ্রাউন্ডের জন্য।

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

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


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

5
@ কেভিন - আমি মনে করি যে তিনি বোঝাতে চেয়েছিলেন যে বুটলোডারটি এত সহজ হওয়া উচিত যে আপনি কখনই এটি "আপগ্রেড" করার কথা ভাববেন না।
jpc

@ জেপিসি - আহ, আপনি ঠিক বলেছেন, এটার ভুল ব্যাখ্যা করা হয়েছে। আমরা চুক্তিতে আছি!
কেভিন ভার্মির 21

1

'আপগ্রেডার' এর কোন সরঞ্জামগুলি পাওয়া যাবে? একটি পিসি, একটি ইউএসবি স্টিক, একটি মাইক্রো এসডি কার্ড?

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

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


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

ডেটাশিট, বিভাগ 'বুটলোডার' পরীক্ষা করুন। এটি সত্যিই 'হ্যান্ডস অফ' করতে আপনার 1 টি উপায় প্রয়োজন the চিপটি পুনরায় সেট করুন; ২. বুটলোডারটি সক্রিয় করুন (চিপটি একটি সিরাটিন পিনটি পরীক্ষা করে)। এটি একটি জাম্পার এবং একটি (রিসেট) সুইচ দ্বারা করা যেতে পারে, তবে আরও সুবিধাজনক উপায় (বিশেষত আপনার ডেস্কে) কৌশলটি 'হ্যান্ডস অফ' করতে দুটি হ্যান্ডশেক লাইন ব্যবহার করা। বেশিরভাগ পিসি ডাউনলোড প্রোগ্রাম (যেমন ফ্ল্যাশমেজিক, এলপিসি 21 ইএসপি) আপনার জন্য হ্যান্ডশেকিং যাদু করতে পারে (যদি আপনি হ্যান্ডশেকের লাইনগুলি সঠিকভাবে তারে ফেলে থাকেন)।
ওয়াউটার ভ্যান ওইজেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.