Sistem Tertanam - Persyaratan

Penghitung Program

Program Counter adalah register 16 atau 32-bit yang berisi alamat dari instruksi selanjutnya yang akan dieksekusi. PC secara otomatis menambah ke lokasi memori berurutan berikutnya setiap kali instruksi diambil. Cabang, lompat, dan operasi interupsi memuat Program Counter dengan alamat selain lokasi berurutan berikutnya.

Mengaktifkan power-on reset akan menyebabkan semua nilai di register hilang. Artinya nilai PC (program counter) adalah 0 saat reset, memaksa CPU untuk mengambil opcode pertama dari lokasi memori ROM 0000. Artinya kita harus menempatkan byte pertama dari upcode pada lokasi ROM 0000 karena disitulah letak CPU mengharapkan untuk menemukan instruksi pertama

Setel Ulang Vektor

Arti penting dari vektor reset adalah bahwa ia mengarahkan prosesor ke alamat memori yang berisi instruksi pertama firmware. Tanpa Reset Vector, prosesor tidak akan tahu dari mana harus memulai eksekusi. Setelah reset, prosesor memuat Program Counter (PC) dengan nilai vektor reset dari lokasi memori yang telah ditentukan. Pada arsitektur CPU08, ini di lokasi $ FFFE: $ FFFF.

Ketika vektor reset tidak diperlukan, pengembang biasanya menerima begitu saja dan tidak memprogram ke dalam gambar akhir. Akibatnya, prosesor tidak memulai pada produk akhir. Ini adalah kesalahan umum yang terjadi selama fase debug.

Stack Pointer

Stack diimplementasikan dalam RAM dan register CPU digunakan untuk mengaksesnya yang disebut register SP (Stack Pointer). Register SP adalah register 8-bit dan dapat menangani alamat memori dari kisaran 00h hingga FFh. Awalnya, daftar SP berisi nilai 07 untuk menunjuk ke lokasi 08 sebagai lokasi pertama yang digunakan untuk tumpukan oleh 8051.

Saat konten register CPU disimpan dalam tumpukan, ini disebut operasi PUSH. Saat konten tumpukan disimpan dalam register CPU, ini disebut operasi POP. Dengan kata lain, register didorong ke tumpukan untuk menyimpannya dan dikeluarkan dari tumpukan untuk mengambilnya.

Loop Tak Terbatas

Loop tanpa batas atau loop tanpa akhir dapat diidentifikasi sebagai urutan instruksi dalam program komputer yang dijalankan tanpa henti dalam satu loop, karena alasan berikut -

  • loop tanpa kondisi penghentian.
  • loop dengan kondisi penghentian yang tidak pernah bisa dipenuhi.
  • loop dengan kondisi penghentian yang menyebabkan loop untuk memulai kembali.

Perulangan tak terbatas seperti itu biasanya menyebabkan sistem operasi yang lebih lama menjadi tidak responsif, karena perulangan tak terbatas menghabiskan semua waktu prosesor yang tersedia. Operasi I / O yang menunggu input pengguna juga disebut "loop tak terbatas". Salah satu kemungkinan penyebab komputer "membeku" adalah loop tak terbatas; penyebab lainnya termasukdeadlock dan access violations.

Sistem tertanam, tidak seperti PC, tidak pernah "keluar" dari aplikasi. Mereka menganggur melalui Infinite Loop menunggu acara berlangsung dalam bentuk interupsi, atau apre-scheduled task. Untuk menghemat daya, beberapa prosesor memasukkan khusussleep atau wait modes alih-alih diam melalui Infinite Loop, tetapi mereka akan keluar dari mode ini baik melalui pengatur waktu atau Interupsi Eksternal.

Interupsi

Interupsi sebagian besar adalah mekanisme perangkat keras yang menginstruksikan program bahwa suatu peristiwa telah terjadi. Mereka dapat terjadi kapan saja, dan oleh karena itu tidak sinkron dengan aliran program. Mereka memerlukan penanganan khusus oleh prosesor, dan pada akhirnya ditangani oleh Interrupt Service Routine (ISR) yang sesuai. Interupsi perlu ditangani dengan cepat. Jika Anda membutuhkan terlalu banyak waktu untuk memperbaiki interupsi, Anda mungkin melewatkan interupsi lainnya.

Little Endian Vs Big Endian

Meskipun angka selalu ditampilkan dengan cara yang sama, namun tidak disimpan dengan cara yang sama di memori. Mesin Big-Endian menyimpan data byte paling signifikan di alamat memori terendah. Mesin Big-Endian menyimpan 0x12345678 sebagai -

ADD+0: 0x12 
ADD+1: 0x34 
ADD+2: 0x56 
ADD+3: 0x78

Mesin Little-Endian, di sisi lain, menyimpan data byte paling signifikan di alamat memori terendah. Mesin Little-Endian menyimpan 0x12345678 sebagai -

ADD+0: 0x78 
ADD+1: 0x56 
ADD+2: 0x34 
ADD+3: 0x12