Hệ thống nhúng - Điều khoản
Bộ đếm chương trình
Bộ đếm chương trình là một thanh ghi 16 hoặc 32 bit chứa địa chỉ của lệnh tiếp theo sẽ được thực thi. PC tự động tăng đến vị trí bộ nhớ tuần tự tiếp theo mỗi khi một lệnh được tìm nạp. Các hoạt động rẽ nhánh, bước nhảy và ngắt tải Bộ đếm chương trình có địa chỉ khác với vị trí tuần tự tiếp theo.
Kích hoạt thiết lập lại khi bật nguồn sẽ làm mất tất cả các giá trị trong thanh ghi. Nó có nghĩa là giá trị của PC (bộ đếm chương trình) là 0 khi đặt lại, buộc CPU phải tìm nạp opcode đầu tiên từ vị trí bộ nhớ ROM 0000. Điều đó có nghĩa là chúng ta phải đặt byte đầu tiên của mã upcode vào vị trí ROM 0000 vì đó là nơi CPU mong đợi để tìm ra lệnh đầu tiên
Đặt lại vectơ
Ý nghĩa của vectơ đặt lại là nó trỏ bộ xử lý đến địa chỉ bộ nhớ chứa lệnh đầu tiên của phần sụn. Nếu không có Véc tơ đặt lại, bộ xử lý sẽ không biết bắt đầu thực thi ở đâu. Sau khi đặt lại, bộ xử lý tải Bộ đếm chương trình (PC) với giá trị vectơ đặt lại từ vị trí bộ nhớ được xác định trước. Trên kiến trúc CPU08, đây là vị trí $ FFFE: $ FFFF.
Khi vector đặt lại là không cần thiết, các nhà phát triển thường coi nó là điều hiển nhiên và không lập trình vào hình ảnh cuối cùng. Do đó, bộ xử lý không khởi động trên sản phẩm cuối cùng. Đó là một lỗi phổ biến diễn ra trong giai đoạn gỡ lỗi.
Con trỏ ngăn xếp
Ngăn xếp được thực hiện trong RAM và một thanh ghi CPU được sử dụng để truy cập nó được gọi là thanh ghi SP (Stack Pointer). Thanh ghi SP là thanh ghi 8 bit và có thể đánh địa chỉ bộ nhớ có phạm vi từ 00h đến FFh. Ban đầu, thanh ghi SP chứa giá trị 07 để trỏ đến vị trí 08 là vị trí đầu tiên được 8051 sử dụng cho ngăn xếp.
Khi nội dung của thanh ghi CPU được lưu trữ trong một ngăn xếp, nó được gọi là hoạt động PUSH. Khi nội dung của ngăn xếp được lưu trữ trong thanh ghi CPU, nó được gọi là hoạt động POP. Nói cách khác, một thanh ghi được đẩy vào ngăn xếp để lưu nó và bật ra khỏi ngăn xếp để lấy nó.
Vòng lặp vô hạn
Một vòng lặp vô hạn hoặc một vòng lặp vô tận có thể được xác định là một chuỗi các lệnh trong một chương trình máy tính thực thi liên tục trong một vòng lặp, vì những lý do sau:
- vòng lặp không có điều kiện kết thúc.
- vòng lặp với một điều kiện kết thúc mà không bao giờ có thể được đáp ứng.
- vòng lặp với điều kiện kết thúc khiến vòng lặp bắt đầu lại.
Các vòng lặp vô hạn như vậy thường khiến các hệ điều hành cũ trở nên không phản hồi, vì một vòng lặp vô hạn tiêu tốn tất cả thời gian có sẵn của bộ xử lý. Các hoạt động I / O chờ đợi đầu vào của người dùng còn được gọi là "vòng lặp vô hạn". Một nguyên nhân có thể khiến máy tính "đóng băng" là một vòng lặp vô hạn; các nguyên nhân khác bao gồmdeadlock và access violations.
Hệ thống nhúng, không giống như PC, không bao giờ "thoát" ứng dụng. Họ nhàn rỗi thông qua Vòng lặp vô hạn chờ đợi một sự kiện diễn ra dưới dạng gián đoạn, hoặcpre-scheduled task. Để tiết kiệm năng lượng, một số bộ xử lý nhập đặc biệtsleep hoặc là wait modes thay vì chạy không tải qua Vòng lặp vô hạn, nhưng chúng sẽ thoát ra khỏi chế độ này khi có bộ hẹn giờ hoặc Ngắt bên ngoài.
Ngắt
Ngắt hầu hết là các cơ chế phần cứng hướng dẫn chương trình rằng một sự kiện đã xảy ra. Chúng có thể xảy ra bất cứ lúc nào và do đó không đồng bộ với dòng chương trình. Chúng yêu cầu bộ xử lý xử lý đặc biệt và cuối cùng được xử lý bởi một Quy trình Dịch vụ Ngắt tương ứng (ISR). Các ngắt cần được xử lý nhanh chóng. Nếu bạn mất quá nhiều thời gian để sửa chữa một ngắt, thì bạn có thể bỏ lỡ một ngắt khác.
Ít endian vs lớn endian
Mặc dù các số luôn được hiển thị theo cùng một cách, nhưng chúng không được lưu trữ theo cùng một cách trong bộ nhớ. Máy Big-Endian lưu trữ byte dữ liệu quan trọng nhất trong địa chỉ bộ nhớ thấp nhất. Một cửa hàng máy Big-Endian 0x12345678 như -
ADD+0: 0x12
ADD+1: 0x34
ADD+2: 0x56
ADD+3: 0x78
Mặt khác, máy Little-Endian lưu trữ byte dữ liệu ít quan trọng nhất trong địa chỉ bộ nhớ thấp nhất. Cửa hàng máy A Little-Endian 0x12345678 như -
ADD+0: 0x78
ADD+1: 0x56
ADD+2: 0x34
ADD+3: 0x12