Terdapat banyak teknik untuk membangunkan sistem terbenam kebolehpercayaan tinggi, daripada kitaran pembangunan yang dikawal dengan baik kepada pelaksanaan yang ketat dan semakan sistem.
Memperkenalkan kepada anda 7 petua yang mudah dikendalikan dan boleh digunakan untuk jangka masa yang lama Ianya sangat membantu dalam memastikan sistem berjalan dengan lebih dipercayai dan menangkap tingkah laku yang tidak normal. - Gunakan ROM Diisi Nilai yang diketahuiPembangun perisian cenderung menjadi kumpulan yang sangat optimistik dan hanya mahu kod mereka berjalan dengan setia untuk masa yang lama dan itu sahaja. Nampaknya agak jarang mikropengawal melompat keluar dari ruang aplikasi dan melaksanakan dalam ruang kod yang tidak diingini. Walau bagaimanapun, kemungkinan ini berlaku adalah tidak kurang berkemungkinan daripada limpahan penimbal atau penunjuk buruk kehilangan rujukannya. Ia memang berlaku! Tingkah laku sistem selepas ini berlaku akan tidak ditentukan, kerana ruang memori semuanya 0xFF secara lalai, atau kerana kawasan memori biasanya tidak ditulis, nilai di dalamnya mungkin hanya diketahui oleh Tuhan.
Walau bagaimanapun, terdapat teknik penghubung atau IDE yang cukup lengkap yang boleh digunakan untuk membantu mengenal pasti peristiwa tersebut dan memulihkan sistem daripadanya. Caranya ialah dengan menggunakan arahan FILL untuk mengisi ROM yang tidak digunakan dengan corak bit yang diketahui. Untuk mengisi memori yang tidak digunakan, terdapat banyak kemungkinan kombinasi berbeza yang boleh digunakan, tetapi jika anda ingin membina sistem yang lebih dipercayai, pilihan yang paling jelas ialah meletakkan pengendali kerosakan ISR di lokasi ini. Jika berlaku masalah dengan sistem dan pemproses mula melaksanakan kod di luar ruang program, ISR dicetuskan dan memberi peluang untuk menyimpan pemproses, daftar dan keadaan sistem sebelum memutuskan tindakan pembetulan. . ) untuk mengesahkan sama ada permohonan itu utuh berdasarkan jumlah semak ini. Menariknya, dalam kebanyakan kes ini, checksum hanya digunakan apabila memuatkan kod program pada peranti.
Walau bagaimanapun, jika CRC atau checksum disimpan dalam ingatan, maka mengesahkan bahawa aplikasi masih utuh semasa permulaan (atau secara berkala untuk sistem yang berjalan lama) adalah amat penting untuk memastikan perkara yang tidak dijangka tidak berlaku cara. Pada masa kini kebarangkalian perubahan aplikasi yang diprogramkan adalah sangat kecil, tetapi memandangkan berbilion-bilion mikropengawal dihantar setiap tahun dan persekitaran kerja yang berpotensi keras, peluang aplikasi itu ranap bukanlah sifar. Kemungkinan besar, kecacatan dalam sistem boleh menyebabkan tulis denyar atau pemadaman denyar berlaku pada sektor, dengan itu menjejaskan integriti aplikasi. . . Lagipun, perkakasan boleh gagal. (Nasib baik perisian tidak pernah gagal, ia hanya melakukan apa yang disuruh oleh kod itu, sama ada itu betul atau salah). Mengesahkan bahawa tiada masalah dalaman atau luaran pada RAM semasa but adalah cara yang baik untuk memastikan perkakasan berfungsi seperti yang diharapkan. Terdapat banyak cara yang berbeza untuk melakukan semakan RAM, tetapi kaedah biasa ialah menulis kepada corak yang diketahui dan kemudian tunggu sebentar sebelum membacanya semula. Hasilnya sepatutnya apa yang dibaca adalah apa yang ditulis. Sebenarnya dalam kebanyakan kes, semakan RAM lulus, itulah yang kita mahukan. Walau bagaimanapun, terdapat kemungkinan yang sangat kecil bahawa semakan tidak akan lulus, yang memberikan peluang yang sangat baik untuk sistem membenderakan masalah perkakasan.. Apabila perkara aneh mula berlaku, jurutera akhirnya buntu dan mula berfikir, mungkin ada sesuatu yang berlaku dalam timbunan. Hasilnya adalah membuta tuli melaraskan saiz dan kedudukan timbunan, dsb. Tetapi ralat itu selalunya bertindan-agnostik, tetapi bagaimana seseorang boleh begitu pasti? Lagipun, berapa ramai jurutera yang sebenarnya telah melakukan analisis saiz tindanan kes terburuk? Saiz tindanan diperuntukkan secara statik pada masa penyusunan, tetapi tindanan digunakan dalam cara yang dinamik. Semasa kod dilaksanakan, pembolehubah, alamat pemulangan dan maklumat lain yang diperlukan oleh aplikasi disimpan secara berterusan pada timbunan. Mekanisme ini menyebabkan timbunan berkembang secara berterusan dalam memori yang diperuntukkan. Walau bagaimanapun, pertumbuhan ini kadangkala melebihi had kapasiti yang ditentukan pada masa penyusunan, menyebabkan timbunan merosakkan data dalam kawasan memori bersebelahan. Salah satu cara untuk memastikan tindanan anda berfungsi dengan betul adalah dengan melaksanakan monitor tindanan sebagai sebahagian daripada kod "kesihatan" sistem anda (berapa ramai jurutera melakukan ini?). Pemantau tindanan mencipta kawasan penimbal antara tindanan dan kawasan memori "lain", dipenuhi dengan corak bit yang diketahui. Monitor kemudian terus memantau corak untuk sebarang perubahan. Jika corak bit itu berubah, ini bermakna timbunan telah berkembang terlalu besar dan akan mendorong sistem ke dalam neraka yang gelap! Pada ketika ini monitor boleh merekodkan kejadian, status sistem dan sebarang data berguna lain untuk kegunaan kemudian dalam mendiagnosis masalah. Pemantau tindanan tersedia dalam kebanyakan sistem pengendalian masa nyata (RTOS) atau sistem mikropengawal yang melaksanakan unit perlindungan memori (MPU). Perkara yang menakutkan ialah ciri ini dimatikan secara lalai, atau sering dimatikan dengan sengaja oleh pembangun. Carian pantas di web menunjukkan bahawa ramai orang mengesyorkan untuk mematikan monitor tindanan dalam sistem pengendalian masa nyata untuk menjimatkan 56 bait ruang kilat.Tunggu, ini tidak bernilai keuntungan! . sudah mula berubah. Pengawal mikro dari mewah hingga rendah kini mempunyai MPU, dan MPU ini memberi peluang kepada pembangun perisian terbenam untuk mempertingkatkan kekukuhan perisian tegar mereka. MPU telah digabungkan secara beransur-ansur dengan sistem pengendalian untuk mencipta ruang memori di mana pemprosesan diasingkan atau tugas boleh melaksanakan kod mereka tanpa rasa takut dipijak. Jika sesuatu berlaku, pemprosesan yang tidak terkawal akan dibatalkan dan langkah perlindungan lain akan dilaksanakan. Perhatikan mikropengawal dengan komponen ini, dan jika ya, manfaatkan ciri ini. . ), tetapi juga di mana anjing pemantau boleh dikosongkan dengan pemasa berkala; Tujuan penggunaan watchdog adalah untuk membantu memastikan jika ralat berlaku, watchdog tidak akan dibersihkan, iaitu apabila kerja digantung, sistem akan dipaksa untuk melakukan tetapan semula perkakasan (hardware reset) dengan teratur untuk pulih. Menggunakan pemasa yang bebas daripada aktiviti sistem membolehkan pengawas kekal dikosongkan walaupun sistem gagal.Pembangun terbenam perlu mempertimbangkan dan mereka bentuk dengan teliti cara tugas aplikasi disepadukan ke dalam sistem pengawas. Sebagai contoh, satu teknik mungkin membenarkan setiap tugasan yang dijalankan untuk tempoh masa tertentu untuk menunjukkan bahawa ia berjaya menyelesaikan tugasnya. Dalam acara ini, anjing pemerhati tidak dibersihkan dan dipaksa untuk menetapkan semula. Terdapat juga teknik yang lebih maju seperti menggunakan pemproses pengawas luaran, yang boleh digunakan untuk memantau prestasi pemproses utama dan sebaliknya. Untuk sistem yang boleh dipercayai, adalah penting untuk mewujudkan sistem pengawas yang berkuasa. Oleh kerana terdapat terlalu banyak teknologi, sukar untuk membincangkannya sepenuhnya dalam perenggan ini, tetapi saya akan menerbitkan artikel berkaitan mengenai topik ini pada masa hadapan. Petua 7 - Elakkan Peruntukan Memori Meruap. , bahasa yang membolehkan mereka menggunakan peruntukan memori yang tidak menentu. Lagipun, ini adalah teknik yang sering digunakan dalam sistem kalkulator, di mana memori diperuntukkan hanya apabila perlu. Sebagai contoh, apabila membangunkan dalam C, jurutera mungkin cenderung menggunakan malloc untuk memperuntukkan ruang pada timbunan. Operasi akan dilakukan, dan setelah selesai, percuma boleh digunakan untuk mengembalikan memori yang diperuntukkan supaya timbunan boleh digunakan. Dalam sistem kekangan sumber, ini boleh menjadi bencana! Salah satu masalah menggunakan peruntukan memori yang tidak menentu ialah kesilapan atau teknik yang tidak betul boleh menyebabkan kebocoran memori atau pemecahan memori. Jika masalah ini timbul, kebanyakan sistem terbenam tidak mempunyai sumber atau pengetahuan untuk memantau timbunan atau mengendalikannya dengan betul. Dan apabila mereka melakukannya, apakah yang berlaku jika aplikasi membuat permintaan untuk ruang, tetapi ruang yang diminta tidak tersedia? Masalah yang disebabkan oleh penggunaan peruntukan memori yang tidak menentu adalah sangat rumit, dan boleh dikatakan sebagai mimpi ngeri untuk menangani masalah ini dengan betul! Alternatifnya ialah dengan hanya memperuntukkan memori secara langsung secara statik. Sebagai contoh, bukannya meminta penimbal memori saiz ini melalui malloc, cuma buat penimbal dalam program anda yang panjangnya 256 bait.Memori yang diperuntukkan ini dikekalkan sepanjang hayat aplikasi tanpa kebimbangan tentang isu timbunan atau pemecahan memori. Ini hanyalah beberapa cara pembangun boleh mula membina sistem terbenam yang lebih dipercayai. Terdapat banyak teknik lain, seperti menggunakan piawaian pengekodan yang baik, mengesan lilitan bit, melakukan semakan sempadan tatasusunan dan penunjuk, dan menggunakan penegasan. Semua teknologi ini adalah rahsia yang membolehkan pereka bentuk membangunkan sistem terbenam yang lebih dipercayai
Atas ialah kandungan terperinci Beberapa rutin dan teknik pembangunan tertanam praktikal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!