Firmware thường là phần mã nguồn được chạy đầu tiên trong một hệ thống nhúng khi khởi động. Do đó, nó là một trong những thành phần quan trọng nhất. Firmware rất
Có nhiều định nghĩa về firmware, chúng ta dùng định nghĩa sau:
Firmware là phần mềm nhúng cấp thấp cung cấp giao diện giữa phần cứng và các phần mềm ứng dụng hoặc hệđiều hành. Firmware thường được lưu trên ROM và chạy khi hệ thống nhúng được khởi động.
Đối với một hệ thống có hệđiều hành, khi khởi động lên, hệ thống cần chạy một chương trình từ ROM để nạp hệđiều hành và dữ liệu để sau đó có thể chạy trên RAM. Do đó, người ta thường dùng định nghĩa sau:
Bootloader là một ứng dụng để nạp hệđiều hành hoặc ứng dụng của một hệ thống. Bootloader thường chỉ tồn tại tới thời điểm hệđiều hành hoặc ứng dụng chạy. Bootloader thường được tích hợp cùng với firmware.
Chu trình chạy thường gặp của một hệ thống nhúng như sau
Bước đầu tiên là thiết lập nền tảng của hệ thống (hay chuẩn bị môi trường để khởi
động một hệđiều hành).
o Bước này bao gồm đảm bảo hệ thống được khởi tạo đúng (VD như thay
đổi bản đổ bộ nhớ hoặc thiết lập các giá trị thanh ghi..).
o Sau đó, firmware sẽ xác định chính xác nhân chíp và hệ thống. Thường thì thanh ghi số 0 của bộđồng xử lý lưu loại VXL và tên nhà sx.
o Tiếp theo, phần mềm chuẩn đoán hệ thống sẽ xác định xem có vấn đề gì với các phần cứng cơ bản không.
o Thiết lập giao diện sửa lỗi: khả năng sửa lỗi hỗ trợ cho việc sửa lỗi phần mềm chạy trên phần cứng. Các sự hỗ trợ này bao gồm
Thiết lập breakpoint trong RAM.
Liệt kê và sửa đổi bộ nhớ.
Hiển thị nội dung của các thanh ghi.
Disassemble nội dung bộ nhớ thành các lệnh ARM và Thumb.
o Thông dịch dòng lệnh (Command Line Interpreter hoặc CLI) : Tính năng thông dịch dòng lệnh cho phép người sử dụng thay đổi hệđiều hành được khởi động bằng cách thay đổi cấu hình mặc định thông qua các lệnh tại command prompt. Đối với hệ điều thành nhúng, CLI được điều khiển từ
một ứng dụng chạy trên máy host. Việc liên lạc giữa host và target thường qua cáp nối tiếp hoặc kết nối mạng
Bước thứ hai là trừu tượng hóa phần cứng. Lớp trừu tượng hóa phần cứng (HAL) là một lớp phần mềm giấu chi tiết về phần cứng phía dưới bằng cách cung cấp một tập hợp giao diện lập trình đã được định sẵn trước. Khi chuyển sang một nền tảng khác, các giao diện lập trình này được giữ nguyên nhưng phần cứng phía dưới có thể thay đổi. Đối với mỗi một phần cứng cụ thể, phần mềm HAL để giao tiếp với phần cứng đó gọi là trình điều khiển thiết bị (device driver). Trình điều khiển thiết bị cung cấp giao diện lập trình ứng dụng (API) chuẩn đểđọc và ghi tới một thiết bị riêng.
Bước thứ ba là nạp một ảnh khởi động được (bootable image). File này có thể lưu
ở trong ROM, network hoặc thiết bị lưu trữ khác. Đối với chip ARM, format phổ
Bước thứ tư là từ bỏ quyền điều khiển. Đến đây khi hệđiều hành đã bắt đầu được nạp lên và chạy, firmware sẽ chuyển quyền điều khiển hệ thống cho hệđiều hành. Trong một số trường hợp đặc biệt, firmware vẫn có thể giữ quyển điều khiển hệ
thống.
o Trong hệ thống sử dụng chip ARM, trao quyền điều khiển có nghĩa là cập nhật bảng vector và thay đổi thanh ghi PC. Thay đổi bảng vector sẽ làm chúng chỉ đến các hàm điều khiển các ngắt và các ngoại lệ. Thanh ghi PC
được cập nhật để chỉđến địa chỉ ban đầu của hệđiều hành.