You are on page 1of 13

1.

Embedded system Introduction


Embedded System (hay còn gọi là hệ thống nhúng) là sự kết hợp hoàn hảo giữa phần cứng và phần mềm
của máy tính. Hệ thống này được thiết kế nhằm thể hiện các chức năng chung hoặc một số chức năng cụ
thể đối với một hệ thống máy chủ. Hệ thống này thường được lập trình sẵn nên có chức năng làm việc
ổn định.
Embedded System được ứng dụng phổ biến cho một số lĩnh vực như: máy móc công nghiệp, nông
nghiệp, thiết bị chế biến, y tế, điện tử tiêu dùng, ô tô, đồ gia dụng, máy bay, máy bán hàng tự động,..
Ngoài ra, các thiết bị di động cũng là một trong những lĩnh vực cần phải sử dụng các ứng dụng từ
Embedded System.
Embedded System thường có thể thực hiện duy nhất một nhiệm vụ nằm trong một hệ thống lớn
hơn. Bạn có thể hiểu theo ví dụ sau: Nếu như điện thoại di động không được xem là một Embedded
System thì nó được xem là sự kết hợp giữa hệ thống các nhúng với nhau để cho phép nó thực hiện một
loạt những tác vụ có mục đích chung trong toàn hệ thống.
Embedded Systems bên trong hệ thống sẽ được đảm nhận thêm những chức năng riêng biệt khác. Có thể
xem chúng là một trong những loại máy tính cụ thể có khả năng lập trình, tuy nhiên chúng lại chỉ được
thiết kế dành cho các mục đích cụ thể hơn mà không dành cho các mục đích chung.
Đặc điểm của Embedded System là gì?
Có thể thấy rằng, hệ thống nhúng đang ngày càng được dân IT sử dụng phổ biến hơn rất nhiều. Vậy, đặc
điểm của Embedded System là gì mà chúng được sử dụng ưa chuộng đến vậy?

 Embedded System: Được thiết kế gồm các phần mềm (gọi là software), phần cứng (gọi là hardware)
và phần sun (gọi là firmware).
 Đây là hệ thống được nhúng bên trong những hệ thống lớn hơn nên có thể thực hiện được một số
chức năng cũng như nhiệm vụ riêng biệt bên trong hệ thống mà không cần thực hiện các nhiệm vụ
khác.
 Chúng có thể hoạt được dựa vào bộ vi xử lý hoặc các vi điều khiển khác. Trong đó, cả hai đều là
những mạch tích hợp có thể cung cấp được các nguồn năng lượng cho việc tính toán hệ thống.
 Chúng thường xuyên được sử dụng các cảm biến và thời gian tính toán trên IoT và thiết bị có kết nối
internet mà không yêu cầu người dùng phải hoạt động.
 Hệ thống nhúng thường có chức năng khác nhau và có độ phức tạp khác nhau nên có thể làm ảnh
hưởng đến những phần như: phần cứng, phần sun khi đang sử dụng.
 Đa số chúng thường sẽ thực hiện các yêu cầu để có thể phát huy các chức năng bên trong với một
khoảng thời gian hạn chế để đảm bảo cho các hệ thống lớn hoạt động đúng cách hơn.
 Embedded System thường xuyên được sử dụng ở một loạt các ngành công nghiệp như: ô tô, máy móc
công nghiệp, các thiết bị y tế, điện thoại di động,...

Ứng dụng của Embedded System là gì?

Có thể thấy rằng, hệ thống nhúng được ứng dụng phổ biến trong một số lĩnh vực như: thiết bị y tế, viễn
thông, các thiết bị điện tử tiêu dùng, kỹ thuật số, tên lửa, máy móc công nghệ,... Các ứng dụng này cụ
thể như sau:
 Hệ thống nhúng được sử dụng vô cùng phổ biến trong các ngành công nghiệp ô tô như: kiểm soát
động cơ, theo dõi hành trình di chuyển, điều khiển động cơ hoạt động, đảm bảo an toàn cho thân xe,
điều khiển cho robot lắp ráp, giữ an toàn cho động cơ, hệ thống giải trí trên ô tô, ứng dụng để truy cập
E-com, hỗ trợ các kết nối trong điện thoại di động,...
 Embedded System được sử dụng trong hệ thống mạng lưới viễn thông, ứng dụng trong hệ thống
truyền thông không dây, ứng dụng trong điện toán di động,..
 Những hệ thống nhúng thường được sử dụng trong hệ thống thẻ thông minh của: ngân hàng, điện
thoại di động và bảo mặt.
 Sử dụng tại các hệ thống ứng dụng bên trong tên lửa, bên trong vệ tinh, ứng dụng trong hàng không
vũ trụ và truyền thông.
 Ứng dụng trong hệ thống mạng và các thiết bị ngoại vi máy tính với nhiệm vụ như: xử lý hình ảnh,
quản lý hệ thống mạng lưới, thẻ mạng, màn hình, các vật hiển thị,...
 Một ứng dụng quan trọng khác của hệ thống này như sau: Sử dụng trong các thiết bị điện tử tiêu
dùng kỹ thuật số như: Các loại tivi có độ phân giải cao, máy ảnh kỹ thuật số, đầu DVD,...
2. Microcontroller & Microprocessor
Vi điều khiển (Micro Controller Unit – MCU) là một mạch tích hợp trên một bộ chip có thể lập trình
được dùng để điều khiển hoạt động của hệ thống. Bộ vi điều khiển tiến hành đọc , lưu trữ thông tin, xử
lý thông tin, đo lường thời gian và tiến hành đọc mở một cơ cấu nào đó. Người lập trình có thể sử dụng
nhiều ngôn ngữ để lập trình cho vi điều khiển. Nhưng ngôn ngữ thường được sử dụng là C và Assembly.

- Ứng dụng của microcontroller là gì?


Microcontroller đóng vai trò như là “bộ não” điều hành tất cả các hành vi của board mạch (thiết bị).
Vì vậy các Bạn sẽ phải lâp trình sao cho nó để nó thực hiện công việc mà mình mong muốn.
Vi điều khiển thường được sử dụng trong các thiết bị điều khiển tự động bao gồm các công cụ điện, đồ
chơi, thiết bị y tế cấy dưới da, máy móc văn phòng, hệ thống điều khiển động cơ, thiết bị, điều khiển từ
xa và hàng loạt các hệ thống nhúng khác.
- Các loại vi điều khiển (microcontroller)
Có rất nhiều loại vi điều khiển được lập trình theo nhiều dạng khác nhau, chủ yếu chúng được phân
loại và lập trình chuyên sâu theo một số thông số cơ bản, bao gồm Bits, kích thước Flash, kích thước bộ
nhớ RAM, số lượng các dòng đầu vào / đầu ra, loại bao bì, cung cấp điện áp và tốc độ. Người sử dụng
có khả năng tinh chỉnh các thông số kỹ thuật cần thiết trong bộ lọc tham số để vi điều khiển có thể cung
cấp đúng loại dữ liệu mình cần.

- Sự khác biệt giữa vi xử lý và vi điều khiển


Hầu hết các bộ vi xử lý sử dụng cấu trúc CISC và Von-Neumann. Tuy nhiên, bộ vi xử lý phổ biến sử
dụng cấu trúc CISC. Còn vi điều khiển sử dụng cấu trúc RISC và Harvard. Nhưng cũng có một số vi
điều khiển sử dụng cấu trúc CISC như 8051 và SHARC. Bộ vi xử lý có ROM, RAM, bộ nhớ lưu trữ thứ
cấp I / O thiết bị ngoại vi, timer bộ đếm(counters).. vv được xếp cùng trên một board và kết nối thông
qua bus được gọi là vi điều khiển.

Tốc độ CPU: Bộ vi xử lý có tốc độ nhanh hơn so với các bộ điều khiển bởi clock. Bộ vi xử lý có thể có
tốc độ xung nhịp (clock) cao.

Thời gian thiết kế: Thiết kế một vi điều khiển sẽ mất ít thời gian hơn khi thiết kế bộ vi xử lý. Việc giao
tiếp giữa các thiết bị ngoại vi và chương trình dễ dàng hơn khi so sánh với bộ vi xử lý. Vi điều khiển
được thiết kế để thực hiện một chức năng cụ thể.

Ứng dụng: bộ vi xử lý chủ yếu được sử dụng trong các hệ thống máy tính, hệ thống quốc phòng, mạng
thông tin liên lạc …vv vi điều khiển được sử dụng chủ yếu trong các ứng dụng nhúng như đồng hồ, điện
thoại di động, máy nghe nhạc mp3, vv

Vi xử lý là gì
Bộ vi xử lý là một thành phần máy tính điện tử được chế tạo từ các bóng bán dẫn có kích thước thu nhỏ
& một số thành phần mạch khác trên một IC bán dẫn đơn độc (mạch tích hợp) hoặc chip siêu nhỏ. Chữ
viết tắt của bộ vi xử lý là µP hoặc uP. CPU (đơn vị xử lý trung tâm) là bộ vi xử lý phổ biến nhất, nhưng
nhiều thành phần khác trong máy tính chứa chúng, giống như GPU (Bộ xử lý đồ họa) trên card video.
Trong cuộc đua của máy tính cá nhân, tên CPU & bộ vi xử lý được áp dụng thay thế cho nhau. Tại trung
tâm của tất cả các PC và các máy trạm, luôn có những bộ vi xử lý được kết hợp với nhau. Bộ vi xử lý
điều khiển logic của tất cả các máy kỹ thuật số, từ đồng hồ radio đến các cấu trúc phun nhiên liệu cho ô
tô. Bộ vi xử lý là một gói IC đơn trong đó một số chức năng được tích hợp.

Bộ vi xử lý CISM
Bộ vi xử lý CISM được viết tắt từ Complex Instruction Set Microprocessors. CISM phân loại một bộ
vi xử lý trong đó mỗi & mọi đơn hàng có thể được thực thi cùng với một số chức năng cấp thấp khác.
Các hàm này nhằm thực hiện các hành động như – tải dữ liệu vào thẻ nhớ, gọi lại hoặc tải xuống dữ liệu
từ thẻ nhớ hoặc tính toán toán học phức tạp trong một lệnh.

Bộ vi xử lý RISC
Bộ vi xử lý RISC được viết tắt từ Reduced Instruction Set Microprocessor. Chức năng của bộ vi xử lý
này nhằm tăng tốc bộ vi xử lý máy tính. Các loại bộ xử lý này được tạo ra theo chức năng trong đó bộ vi
xử lý có thể thực hiện những việc nhỏ trong các lệnh cụ thể. Theo cách này, các bộ xử lý này hoàn thành
nhiều lệnh hơn với tốc độ nhanh hơn.

Bộ xử lý Superscalar
Loại bộ xử lý này sao chép phần cứng trên bộ vi xử lý để nó có thể thực hiện nhiều hướng dẫn cùng một
lúc. Những bộ xử lý này có thể được sử dụng cho ALU hoặc bội số. Chúng có các đơn vị hoạt động
khác nhau và các bộ xử lý này có thể thực hiện nhiều lệnh bằng cách liên tục truyền một số lệnh đến các
đơn vị hoạt động bổ sung bên trong bộ xử lý.

Mạch tích hợp dành riêng cho ứng dụng


Còn được gọi là bộ vi xử lý ASIC dành cho các mục đích cực kỳ chính xác, có thể bao gồm kiểm soát
khí thải ô tô hoặc máy tính trợ lý kỹ thuật số cá nhân. ASIC đôi khi được chế tạo với thông số kỹ thuật
phù hợp, nhưng cũng có thể được sản xuất bằng cách sử dụng các thành phần có sẵn.

Bộ đa xử lý tín hiệu số (DSP)


DSP là bộ vi xử lý duy nhất được sử dụng để giải mã & mã hóa video, hoặc chuyển đổi kỹ thuật số hoặc
video thành analog và ngược lại. Các hoạt động này cần một bộ vi xử lý đặc biệt xuất sắc để thực hiện
các phép tính toán học. Chip DSP thường được sử dụng trong SONAR, điện thoại di động, RADAR,
thiết bị âm thanh rạp hát tại nhà và hộp giải mã cáp.

Vi điều khiển là gì
Vi điều khiển là một máy tính trên một chip được tối ưu hóa để quản lý các thiết bị điện. Nó được dành
riêng cho các nhiệm vụ chính xác như kiểm soát một hệ thống cụ thể. Một bộ vi điều khiển đôi khi sử
dụng chữ viết tắt uC, µC hoặc MCU, về cơ bản là một loạt các bộ vi xử lý chuyên dụng nhằm mục đích
tự xử lý và điều khiển. Ngoài ra, một vi điều khiển là một phần của một tập hợp trong hệ thống, về cơ
bản là một bảng mạch hoàn chỉnh.

Vi điều khiển là gì?


Một hệ thống cố định là một hệ thống máy tính nhằm thực hiện một hoặc nhiều chức năng nhiều lần với
các giới hạn làm việc theo thời gian thực. Nó được nhúng như là một phần tử của một máy hoàn chỉnh
bao gồm các phần tử cơ khí và phần cứng. Một số thiết bị ngoại vi điện tử bên ngoài được giao tiếp với
vi điều khiển để có hiệu suất tốt hơn phụ thuộc vào các ứng dụng.

Ví dụ
- Minh họa cho các bộ vi điều khiển là các dòng 8051, Intel, 80196, Microchip, PIC và Motorola,
68HCxx. Bộ vi điều khiển thường được tích hợp trong đồ chơi, ô tô, thiết bị và máy văn phòng là những
thiết bị hợp nhất một số thành phần của hệ thống vi xử lý trên một vi mạch đơn:
- Bộ nhớ (cả ROM và RAM)Lõi CPU (bộ vi xử lý)Một số cổng I/O kỹ thuật số song song
- Bộ vi điều khiển là kết hợp của một số chức năng hữu ích vào một gói IC đơn độc. Các chức năng
này là: Khả năng thực hiện một tập hợp các lệnh tích lũy để thực hiện các công việc được người dùng
mô tả. Khả năng khai thác sử dụng chip bộ nhớ ngoại vi để đọc và ghi dữ liệu từ và vào bộ nhớ.
Các loại vi điều khiển
Các bộ điều khiển siêu nhỏ được sắp xếp theo chiều rộng của bus trong không gian, bộ điều khiển tích
hợp, bộ thứ tự, thiết kế cấu trúc bộ nhớ, chip IC hoặc lõi VLSI hoặc tệp Verilog & họ đơn vị. Đối với
một họ tương tự, có thể có một loạt các phiên bản với các nguồn khác nhau.
Bộ vi điều khiển 8 bit
Khi bus nội bộ trong MCU là bus 8 bit thì ALU thực hiện các phép toán logic & số học trên một byte
theo thứ tự. MCU là bộ vi điều khiển 8 bit. Ví dụ của MCU 8 bit là- Intel 8031/8051, Motorola
MC68HC11 & PIC1x.

Vi điều khiển 16 bit


Vi điều khiển 16 bit bao gồm một bus 16 bit và ALU thực hiện các phép toán số học và logic trên toán
hạng 16 bit. Nó cung cấp độ chính xác và hiệu suất cao hơn so với MCU 8 bit.

Bộ vi điều khiển 32 bit


Khi bus nội bộ cho chức năng truyền dữ liệu trong MCU là bus 32 bit thì ALU thực hiện các hàm logic
& số học trên các từ toán hạng 32 bit theo đơn đặt hàng. MCU là bộ vi điều khiển 32 bit. Chúng cung
cấp độ chính xác và hiệu suất tốt hơn so với MCU 16 bit.

Bộ vi điều khiển nhúng


Khi một hệ thống cố định hoặc nhúng bao gồm MCU có mỗi bộ phận phần cứng và phần mềm trong
một đơn vị độc lập, MCU được gọi là bộ vi điều khiển nhúng. Rất ít hoặc không có đơn vị hoặc hệ
thống ngoại vi bổ sung tồn tại để xử lý trong quá trình điều khiển hoặc sử dụng các thiết bị ngoại vi. Ví
dụ, một mạch thu điện thoại sử dụng bộ vi điều khiển tích hợp hoặc nhúng.

Bộ vi điều khiển bộ nhớ ngoài


Khi một hệ thống được xây dựng hoặc nhúng thêm MCU chỉ có phần cứng và phần mềm không phải là
một thành phần riêng lẻ và có thành phần bộ nhớ được giao thoa bên ngoài bằng cách phát ra một mạch
giao thoa được gọi là mạch dán, MCU được gọi là vi điều khiển bộ nhớ ngoại vi hoặc bộ nhớ ngoài. Ví
dụ, 8031 bao gồm một bộ nhớ chương trình được giao tiếp với nó. 8051 có cả bộ nhớ chương trình
ngoại vi cũng như trong nội bộ.

Sự khác biệt giữa vi xử lý và vi điều khiển


Điểm khác biệt giữa vi xử lý và vi điều khiển là vi điều khiển tích hợp các tính năng của bộ vi xử lý
(ALU, CPU, Thanh ghi) cùng với sự tồn tại của các đặc tính bổ sung như của ROM, RAM, bộ đếm,
cổng đầu vào/ đầu ra, … thể hiện chức năng của một thiết bị bằng cách sử dụng các chương trình cố
định được nạp trong ROM mà không sửa đổi theo thời gian thực.

Khác biệt giữa vi xử lý và vi điều khiển


Một quan điểm khác, sự khác biệt lớn giữa một bộ vi xử lý và bộ vi điều khiển thông thường chia ra với
các thuật ngữ kiến trúc là lĩnh vực ứng dụng của chúng. Các bộ vi xử lý thông thường như bộ xử lý họ
Pentium hoặc bộ xử lý Intel Core hoặc bộ xử lý tương tự đều có trong các máy tính như một máy lập
trình hoạt động phổ biến. Trong vòng đời của nó, nó phải quản lý nhiều nhiệm vụ và chương trình khác
nhau được chỉ định cho nó.

Ngược lại, một bộ vi điều khiển thuộc họ PIC hoặc họ 8051… được dùng trong các ứng dụng như trong
các hệ thống nhúng nhỏ như hệ thống điều khiển tín hiệu giao thông hoặc một loại hệ thống robot.
Ngoài ra các tiện ích này quản lý nhiệm vụ tương tự hoặc chương trình tương tự trong suốt vòng đời của
chúng.

Một điểm khác biệt nữa là vi điều khiển thường phải xử lý các tác vụ tức thời trong khi ngược lại, các bộ
vi xử lý trong hệ thống máy tính có thể sẽ không xử lý một tác vụ tức thời mọi lúc.

3. Processor Architecture
4. Instruction Set Architecture
Một tập lệnh, hoặc kiến trúc tập lệnh (tiếng Anh: Instruction Set Architecture, viết tắt ISA), là một phần
của kiến trúc máy tính liên quan đến lập trình, bao gồm các bản địa các loại dữ liệu, hướng
dẫn, đăng ký, giải quyết chế độ, kiến trúc bộ nhớ, làm gián đoạn và xử lý ngoại lệ, và bên
ngoài I / O. An ISA bao gồm một đặc điểm kỹ thuật của các thiết lập của opcode (ngôn ngữ máy), và
các lệnh bản địa thực hiện bởi một bộ xử lý cụ thể.
Tổng quan
Kiến trúc tập lệnh được phân biệt với các vi kiến trúc, mà là tập hợp các kỹ thuật thiết kế bộ vi xử lý
được sử dụng để thực hiện các tập lệnh. Máy vi tính với microarchitectures khác nhau có thể chia sẻ một
tập lệnh phổ biến. Ví dụ, Intel Pentium và AMD Athlon thực hiện các phiên bản gần như giống hệt nhau
của x86 tập lệnh, nhưng có thiết kế nội bộ hoàn toàn khác nhau.
Một số máy ảo có hỗ trợ bytecode như ISA của họ như Smalltalk, các máy ảo Java, và của
Microsoft Common Language Runtime, thực hiện điều này bằng cách dịch các bytecode cho thường sử
dụng mã đường dẫn vào mã máy.
Phân loại các kiến trúc tập lệnh
Một máy tính tập lệnh phức tạp (CISC) có nhiều hướng dẫn chuyên môn, một số trong đó chỉ có thể
hiếm khi được sử dụng trong các chương trình thực tế. Một máy tính giảm tập lệnh (RISC) đơn giản hoá
bộ vi xử lý bằng cách thực hiện hiệu quả các chỉ dẫn được sử dụng thường xuyên trong các chương
trình, trong khi hoạt động ít phổ biến được thực hiện như thủ tục con, có kết quả của họ thêm thời gian
thực hiện xử lý bù đắp bằng cách sử dụng không thường xuyên.
Về mặt lý thuyết loại quan trọng là những máy tính kiến trúc tập lệnh tối thiểu và các máy tính tập lệnh
một lệnh, nhưng những điều này không được thực hiện trong chế biến thương mại. Biến thể khác là từ
lệnh rất dài (VLIW), nơi các bộ xử lý nhận được nhiều hướng dẫn mã hóa và lấy ra trong một lời hướng
dẫn.
Ngôn ngữ máy
Ngôn ngữ máy được xây dựng lên từ rời rạc các câu lệnh hoặc chỉ dẫn. Về kiến trúc xử lý, một lệnh có
thể chỉ định:
 Cụ thể đăng ký cho số học, giải quyết, hoặc chức năng điều khiển
 Bộ nhớ vị trí cụ thể hoặc offset
 Đặc biệt chế độ địa chỉ được sử dụng để giải thích các toán hạng
Hoạt động phức tạp được xây dựng bằng cách kết hợp những hướng dẫn đơn giản, được thực hiện tuần
tự, hoặc theo chỉ dẫn của dòng điều khiển hướng dẫn.
Quá trình kiến trúc tập lệnh

Bất kỳ tập lệnh được đưa ra có thể được thực hiện trong nhiều cách khác nhau. Tất cả các cách để thực
hiện một bộ hướng dẫn cụ thể cung cấp cùng một mô hình lập trình, và tất cả hiện thực đó tập lệnh có
thể chạy các file thực thi nhị phân. Các cách khác nhau để thực hiện một lệnh đặt cho cân bằng khác
nhau giữa chi phí, hiệu suất, điện năng tiêu thụ, kích thước, vv

Khi thiết kế các vi cấu trúc của một bộ xử lý, các kỹ sư sử dụng các khối “cứng có dây” mạch điện tử
(thường được thiết kế riêng) như hổ, ghép kênh, đếm, thanh ghi, ALU vv Một số loại ngôn ngữ chuyển
đăng ký sau đó thường được sử dụng để mô tả giải mã và trình tự của mỗi chỉ dẫn của một ISA sử dụng
vi kiến trúc vật lý này. Có hai cách cơ bản để xây dựng một bộ điều khiển để thực hiện các mô tả này
(mặc dù rất nhiều mẫu thiết kế sử dụng những cách giữa hoặc thỏa hiệp):
 Một số mẫu thiết kế máy tính “buộc cố định” hoàn thành việc giải mã tập lệnh và trình tự (giống
như phần còn lại của vi kiến trúc).
 Thiết kế khác sử dụng vi thói quen hoặc bảng (hoặc cả hai) để làm điều này, điển hình như trên-
chip ROM hoặc PLAs hoặc cả hai (mặc dù RAMS và riêng biệt ROM đã được sử dụng trong lịch
sử).
Một số mẫu thiết kế sử dụng một sự kết hợp của thiết kế mạch điện điện và vi cho các đơn vị điều khiển.

Một số thiết kế CPU biên soạn các hướng dẫn thiết lập để một khả năng ghi nhớ RAM hoặc đèn
flash bên trong CPU (như Rekursiv bộ xử lý và các Imsys Cjip), hoặc một FPGA(máy tính cấu
hình lại). The Western Digital MCP-1600 là một ví dụ cũ, bằng cách sử dụng một chuyên dụng, ROM
riêng cho vi.

An ISA cũng có thể được mô phỏng trong phần mềm của một thông dịch viên. Đương nhiên, do các
nguyên cần giải thích, đây là chậm hơn so với trực tiếp chương trình đang chạy trên phần cứng mô
phỏng, trừ khi các phần cứng đang chạy giả lập là một đơn đặt hàng của các cường độ nhanh hơn. Hôm
nay, nó là thực tế phổ biến cho các nhà cung cấp của ISA mới hoặc microarchitectures để giả lập phần
mềm có sẵn cho các nhà phát triển phần mềm trước khi thực hiện phần cứng đã sẵn sàng.

Thường thì các chi tiết của việc thực hiện có một ảnh hưởng mạnh mẽ trên các hướng dẫn cụ thể được
lựa chọn cho các tập lệnh. Ví dụ, nhiều cài đặt của đường ống dẫn chỉ cho phép một bộ nhớ tải đơn hoặc
bộ nhớ lưu trữ theo hướng dẫn, dẫn đến một kiến trúc load-store (RISC). Ví dụ khác, một số cách đầu
thực hiện các đường ống dẫn dẫn đến một khe chậm trễ.

Những yêu cầu của tốc độ cao xử lý tín hiệu kỹ thuật số đã bị đẩy vào các hướng dẫn hướng-buộc ngược
lại được thực hiện trong một cách đặc biệt. Ví dụ, để thực hiện các bộ lọc kỹ thuật số đủ nhanh, hướng
dẫn MAC trong một điển hình bộ xử lý tín hiệu số (DSP) phải sử dụng một loại kiến trúc Harvard có thể
nạp một lệnh và hai từ dữ liệu cùng một lúc, và nó đòi hỏi một chu trình đơn nhân-tích lũy nhân.
I. Phương pháp Polling
Đây là phương pháp phổ biến nhất mà ai cũng sử dụng được khi lập trình nhúng từ những bài tập đầu tiên như nhấp nháy
LED hay kiểm tra trạng thái nút nhấn để điều khiển LED. Với polling mọi câu lệnh đều được viết trong hàm main() và các
vòng lặp vô hạn như while(1) hay for(;;) hay loop() đối với Arduino. Các khối lệnh đảm nhận một chức năng của một hệ
thống sẽ được thực thi một cách tuần tự bằng cách kiểm tra các biến trạng thái, điều kiện. Phương pháp này phù hợp cho
các ứng dụng đơn giản không có sự phân biệt về mức độ ưu tiên giữa các nhiệm vụ trong ứng dụng đó.
– Ưu điểm của Polling:
+ Dễ code, đơn giản cho những ứng dụng đơn giản
+ Dễ debug, tìm lỗi, giám sát quá trình thực hiện của chương trình
+ Các hoạt động trong chương trình có thể dễ dàng dự đoán được
+ Các tài nguyên được sử dụng, chia sẻ giữa chức năng rõ ràng.
– Nhược điểm:
+ Khó phát triển cho những chương trình phức tạp
+ Đáp ứng chậm với các sự kiện
+ Luôn luôn tiêu thụ năng lượng ở mức cao nhất
+ Lãng phí tài nguyên, khả năng của vi điều khiển.

II. Phương pháp Interrupt


Với Interrupt, phần cứng sẽ thông báo cho CPU biết về một yêu cầu dịch vụ (yêu cầu ngắt – IRQ). Chương trình nền đang
thực hiện sẽ được tạm ngưng để thực thi chương trình phục vụ ngắt (ISR) tương ứng với yêu cầu đấy. Sau khi thực thi
xong ISR thì chương trình sẽ quay về thực thi tiếp chương trình nền. Phương pháp Interrupt thường được kết hợp với
phương pháp polling để vi điều khiển có thể làm những việc khác ngoài ISR hoặc có thể kết hợp với các chế độ năng lượng
thấp để tiết kiệm năng lượng cho hệ thống. Ngắt phù hợp cho những ứng dụng, chức năng yêu cầu đáp ứng nhanh về mặt
thời gian, có độ ưu tiên thực thi cao.
Một số ví dụ đơn giản với ngắt là các bạn có thể phát hiện người dùng nhấn nút mà không cần phải liên tục kiểm tra trạng
thái logic của chân gắn với nút nhấn, hay các bạn có thể nhấp nháy LED 1 giây bằng cách sử dụng ngắt timer thay vì các
hàm delay thông thường.
– Ưu điểm của ngắt:
+ Tốc độ đáp ứng nhanh hơn so với polling
+ Có thể sử dụng chế độ năng lượng thấp và ngắt sẽ đánh thức CPU
+ Hỗ trợ Nested Interrupt (ngắt có ưu tiên cao hơn sẽ được thực hiện và tạm ngưng thực thi ngắt có ưu tiên thấp hơn).
– Khuyết điểm:
+ Debug phức tạp hơn
+ Các tài nguyên có thể được sử dụng bất ngờ.

1. Ngắt là gì
Ngắt (Interrupt) là một số sự kiện khẩn cấp bên trong hoặc bên ngoài bộ vi điều khiển
xảy ra, buộc vi điều khiển tạm dừng thực hiện chương trình hiện tại, phục vụ ngay lập
tức nhiệm vụ mà ngắt yêu cầu – nhiệm vụ này gọi là trình phục vụ ngắt (ISR: Interrupt
Service Routine).

Vì sao nên sử dụng ngắt : với vi điều khiển có thể phục vụ cho nhiều thiết bị, có 2 cách
để thực hiện điều này đó là sử dụng các ngắt (Interrupts) và thăm dò (polling):

Phương pháp sử dụng ngắt: mỗi khi có một thiết bị bất kỳ cần được phục vụ thì nó báo
cho bộ vi điều khiển bằng cách gửi một tín hiệu ngắt. Khi nhận được tín hiệu ngắt thì bộ
vi điều khiển ngừng tất cả những gì nó đang thực hiện để chuyển sang phục vụ thiết bị
gọi ngắt. Chương trình ngắt được gọi là trình phục vụ ngắt ISR (Interrupt Service
Routine) hay còn gọi là trình quản lý ngắt (Interrupt handler). Sau khi phục vụ ngắt
xong, bộ vi xử lý lại quay trở lại điểm bị ngắt trước đó và tiếp tục thực hiện công việc.

2. Cách thức hoạt động của ngắt


Khi có một ngắt xảy ra, thì chương trình( trình phục vụ ngắt) sẽ được hoạt động như
sau

 Hoàn thành lệnh đang thực hiện.


 Dừng chương trình đang thực hiện
 Lưu địa chỉ của lệnh kế tiếp
 Thực hiện chương trình con phục vụ ngắt
 Sau khi thực hiện xong bước trên ,Vi điều khiển sẽ lấy lại địa chỉ lệnh kế tiếp và

thực hiện tiếp chương trình. Sơ đồ hoạt động của ngắt

Khi nhiều ngắt cùng xảy ra một lúc thì vi điều khiển sẽ dựa vào độ ưu tiên của ngắt để
tiến hành thứ tự thực hiện các chương trình con phục vụ ngắt.Độ ưu tiên các ngắt sẽ
được thiết lập trong các thanh ghi điều khiển riêng của từ ngắt. Trong V850 có thể thiết
lập 8 mức độ ưu tiên cho ngắt và mức độ được ưu tiên cao nhất là mức 0.Và nếu như
devloper không thiết lập mức độ ưu tiên thì sẽ được lấy giá trị default(tham khảo

manual của mỗi VĐK) Cách thức xử lý nhiều ngắt. Như hình trên ta thấy , 3 ngắt
a,b,c xảy ra đồng thời nhưng b và c có mức độ ưu tiên cao hơn(mức 1) nên sẽ thực hiện
b,c trước.Trong trường hợp b,c có cùng mức độ ưu tiên thì sẽ dựa vào giá trị default để
quyết định thực hiện b trước.

III. Phương pháp DMA


DMA là một kỹ thuật truyền dữ liệu mà không cần sự tham gia của CPU, dữ liệu có thể được truyền giữa các ngoại vi, giữa
ngoại vi với bộ nhớ và bộ nhớ với bộ nhớ với các kích cỡ có thể cấu hình được như byte, half-word, word. DMA có thể
thông báo cho CPU biết đã thực hiện được 1 nữa quá trình truyền hoặc hoàn thành quá trình truyền bằng yêu cầu ngắt.
Với chế độ circular của DMA cho phép dữ liệu được cập nhật tại 1 vị trí bộ nhớ hoặc một vùng nhớ nhất định. Các đường
truyền DMA có thể được cấu hình các mức ưu tiên khác nhau.
– Ưu điểm của phương pháp DMA:
+ Truyền dữ liệu nhanh hơn so với sử dụng CPU.
+ CPU có thể thực thi các việc khác trong khi dữ liệu được truyền, tăng tốc độ chung của hệ thống.
+ Có khả năng tự động tăng địa chỉ ở ngoại vi hoặc bộ nhớ để lưu trữ.
Nhược điểm:
+ Không phải dòng vi điều khiển nào cũng hỗ trợ DMA.

IV. Sử dụng RTOS


Không nhất thiết phải sử dụng RTOS cho các ứng dụng vừa và nhỏ, nhưng sử dụng RTOS sẽ làm đơn giản hóa hữu ích cho
những chương trình phức tạp, giúp chương trình có tổ chức hơn. Các task của RTOS sẽ chia thời gian và chiếm dụng CPU
và thực thi một cách đồng thời (nhìn về mặt các task thì là đồng thời, tuy nhiên các bạn lưu ý rằng, trong 1 thời điểm thì 1
CPU chỉ có thể thực thi được 1 lệnh). Có nhiều bản miễn phí có thể sử dụng trên nhiều dòng Vi điều khiển như FreeRTOS.

RTOS là hệ điều hành được thiết kế để hỗ trợ các ứng dụng thời gian thực. Các ứng dụng thời gian
thực là những ứng dụng mà việc xử lý dữ liệu và đưa ra phản hồi phải được thực hiện trong khoảng
thời gian nhất định để đảm bảo hiệu suất và độ chính xác.
RTOS thường cung cấp các tính năng như quản lý luồng, lập lịch, và giao tiếp giữa các nhiệm vụ.

– Ưu điểm của RTOS:


· Giúp chương trình của bạn dễ quản lý và phát triển vì nó giúp phân “chia” 1 v ấn đ ề
phức tạp thành các phần nhỏ hơn “để trị”.
· Tăng tính linh động và dễ bảo trì
· Dễ dàng hơn trong việc chia sẻ tài nguyên của CPU.

+ Đơn giản hóa các chương trình thức tạp


+ Hỗ trợ tốt cho các ứng dụng multitasking
+ Cố định được bộ nhớ sử dụng cho từng task.

RTOS có khả năng quản lý và phân chia thời gian CPU cho các tiến trình và luồng dữ liệu
một cách linh hoạt, đồng thời cung cấp các tính năng liên quan đ ến b ộ đ ịnh th ời, b ộ l ập l ịch,
bộ định thời thực, và các giải pháp kiểm soát lỗi.

Nếu các bạn đã từng viết ứng dụng về nhúng thì chắc hẳn đã quá quen thuộc với kiến trúc
của “siêu vòng lặp”. Ở đây, chúng không sử dụng hệ điều hành và cấu trúc khá đ ơn gi ản.
Sau khi khai báo biến, thư viện, … thì trong hàm main() sau khi đã kh ởi t ạo xong thì thì
chúng sẽ thực hiện nhiều tác vụ định kỳ trong vòng lặp while(1) (void loop đ ối v ới arduino).
Và tất nhiên đây là cách phổ biến để xây dựng một chương trình, vì nó dễ thực hi ễn và g ỡ
lỗi. Bạn thậm chỉ có thể thêm các ngắt để giúp cho chương trình được
“nuột” hơn.
Nhưng vấn đề chỉ thực sự xảy ra khi có quá nhiều nhiệm vụ cần phải hoàn thành trong 1 th ời
gian nhất định nhưng vẫn phải “xếp hàng” chờ cho nhiệm vụ trước hoàn thành xong. Đây là
lúc mà RTOS có thể ra tay trợ giúp. Thay vì thực hiện mọi thứ tuần tự thì v ề c ơ b ản b ạn có
thể thực hiện mọi thứ gần như đồng thời.
Khi sử dụng RTOS thì task vụ vấn bị gián đoạn bởi trình phục vụ ngắt. Sau đó nó vẫn sẽ ti ếp
tục thực thi task vụ bị ngắt trước đó.

1. FreeRTOS:
 FreeRTOS là một hệ thống điều khiển thời gian thực nhúng mã nguồn mở. Được phát
triển bởi Richard Barry, FreeRTOS là một trong những RTOS phổ biến trong cộng đồng
nhúng.
 FreeRTOS cung cấp một bộ các chức năng cơ bản như lập lịch, quản lý tài nguyên, và
kiểm soát luồng để hỗ trợ phát triển ứng dụng nhúng thời gian thực.

Tóm lại, RTOS là một loại hệ điều hành thiết kế đặc biệt cho các ứng dụng thời gian thực, trong khi
FreeRTOS là một thực hiện cụ thể của RTOS, được cung cấp dưới dạng mã nguồn mở để cộng đồng
phần mềm nhúng có thể sử dụng và tùy chỉnh.
FreeRTOS là một hệ điều hành nhúng thời gian thực (Real Time Operating System) mã
nguồn mở được phát triển bởi Real Time Engineers Ltd, sáng lập và sở hữu bởi Richard
Barry.

FreeRTOS

Phù hợp cho nhiều hệ nhúng nhỏ gọn vì nó chỉ triển khai rất ít các chức năng như: Cơ chế
quản lý bộ nhớ và tác vụ cơ bản, các hàm API quan trọng cho cơ chế đồng bộ.
Nó không cung cấp sẵn các giao tiếp mạng, drivers, hay hệ thống qu ản lý t ệp (file system)
như những hệ điều hành khác.

Tuy vậy, FreeRTOS có nhiều ưu điểm:

Hỗ trợ nhiều kiến trúc vi điều khiển khác nhau (PIC, AVR, MSP430, ARM…),

Kích thước nhỏ gọn,

Phát triển với nhiều trình biên dịch C khác nhau (GCC, OpenWatcom, Keil, IAR, Eclipse,
v.v.),

Cho phép không giới hạn các tác vụ chạy đồng thời, không hạn chế quyền ưu tiên th ực thi,
khả năng khai thác phần cứng.

Ngoài ra, nó cũng cho phép triển khai các cơ chế điều độ giữa các ti ến trình nh ư: hàng đ ợi
(queue), cờ đếm (counting semaphore), loại trừ lẫn nhau (mutex).

RTOS là gì:

RTOS (Real-Time operating system) hay được gọi là hệ điều hành thời gian thực mà cho
phép ứng dụng của bạn chạy đa tác vụ và có thể đáp ứng được “deadline” theo thời gian
thực.

Khi nào cần sử dụng RTOS:

· Chạy các dự án lớn đòi hỏi xử lý nhiều công việc nhưng vẫn phải đáp ứng được về
mặt thời gian
· Các ứng dụng về viễn thông và IOT, các thiết bị liên quan đến y tế…
Tại Sao phải dùng RTOS:
So Sánh “Siêu Vòng Lặp” và đa tác vụ:

Ở trong FreeRtos thì người ta coi “task” là “thread” nhưng bạn cần phải phân bi ệt chúng 1
cách rạch ròi:
· Task: tập hợp các lệnh được tải vào bộ nhớ. Có thể hiểu đơn giản đây là 1 số đơn vị
công việc hoặc mục tiêu cần phải hoàn thành.
· Thread: là 1 đơn vị của CPU với bộ đếm chương trình và bộ nhớ ngăn xếp của riêng
nó.

Chốt lại: Có nên sử dụng RTOS không? Câu trả lời là có nếu bạn cần chạy nhiều tác v ụ đ ể
hoàn thành mục tiêu có đòi hỏi coi về thời gian đáp ứng. Nếu không thì t ốt nh ất v ẫn nên s ử
dụng cấu trúc “siêu vòng lặp”.
Đặc biệt việc sử dụng RTOS cũng vô cùng có ích trong làm việc nhóm khi ta có th ể phân
chia 1 vấn đề phức tạp thành các task nhỏ, và mỗi thành viên có thể quản lý 1 s ố task nh ất
định để dự án được phát triển đồng thời (nhưng có yêu cầu phải thống nhất về việc giao ti ếp
giữa các task).

RTOS là gì?
RTOS (Real-Time Operating System) một hệ điều hành thời gian thực, được dùng trong lĩnh
vực thiết kế các hệ thống nhúng. RTOS được thiết k ế đ ể gi ải quy ết các yêu c ầu v ề ph ản h ồi
thời gian thực và hiệu suất cao cho các ứng d ụng c ần x ử lý s ố l ượng l ớn d ữ li ệu và th ực hi ện
nhiều tác vụ đồng thời.
Với các tính năng này, RTOS cho phép các ứng d ụng nhúng th ực hi ện các tác v ụ phân tán,
đáp ứng nhanh, và đáp ứng các yêu cầu hàng đ ầu c ủa các ứng d ụng nh ư: IoT, xe t ự lái, đi ện
toán đám mây,...

RTOS hoạt động dựa trên hai cơ chế là hướng sự kiện (event-driven) ho ặc chia s ẻ th ời gian
(time-sharing):
 Cơ chế hướng sự kiện sẽ giải quyết và điều phối các tác vụ (task) thông qua mức đ ộ ưu
tiên của chúng.
 Cơ chế chia sẻ thời gian sẽ chuyển đối các tác vụ dựa trên phản ứng ngắt c ủa xung
nhịp.
Phần lớn các hệ điều hành RTOS đều sử dụng giải thuật pre-emptive scheduling (t ạm d ịch là
lập lịch trước)

Phân loại RTOS

RTOS thường được chia làm 3 loại chính:

 Hard Real-Time Operating System: Loại hệ điều hành này có khả năng đáp ứng các
yêu cầu về thời gian thực trong mọi trường hợp, không bao giờ bị lỡ hẹn. Các ứng d ụng
sử dụng hard real-time operating system thường là các thiết b ị yêu c ầu x ử lý ngay l ập
tức như xe tự lái, máy bay không người lái, v.v.
 Soft Real-Time Operating System: Loại hệ điều hành này đảm bảo đáp ứng các yêu
cầu về thời gian thực nhưng có thể bị lỡ hẹn trong một số tình huống nhất định. Các
ứng dụng sử dụng soft real-time operating system thường là các ứng dụng IoT, đi ện
toán đám mây, v.v.
 Firm Real-Time Operating System: Loại hệ điều hành này nằm giữa Hard và Soft
Real-Time Operating System. Nó đảm bảo thực hiện các tác vụ theo thời gian quy
định, tuy nhiên có thể có một số trường hợp bị lỡ hẹn. Các ứng dụng sử dụng firm real-
time operating system thường là các ứng dụng xử lý dữ liệu và đáp ứng nhanh nh ư
các hệ thống điều khiển tự động.

Các chức năng cơ bản của RTOS

Bộ lập lịch (Scheduler)

Có ba trạng thái:

 Ready to run: Là trạng thái mà task đã có đủ các tài nguyên để khởi chạy nhưng
chưa chạy. Đây là trạng thái chuẩn bị của task.
 Running: Là trạng thái mà task đang được thực thi.
 Blocked: Khi task không có đủ các tài nguyên cần thiết để chạy thì nó s ẽ đ ược đ ưa
về trạng thái blocked
Dịch vụ thời gian thực (Real Time Services)
Các dịch vụ của RTOS bao gồm:
 Xử lý ngắt (Interrupt handling services).
 Dịch vụ quản lý thời gian (Time services).
 Dịch vụ quản lý thiết bị (Device management services).
 Dịch vụ quản lý bộ nhớ (Memory management services).
 Dịch vụ quản lý các kết nối Vào - Ra (IO services).
Đồng bộ và thông điệp (Synchronization and Messaging)

Các thông điệp sử dụng để trao đổi thông tin gi ữa các h ệ th ống khác nhau ho ặc gi ữa các
task. Các dịch vụ quản lý thông điệp bao gồm:
 Semaphores: Dùng để đồng bộ hóa quyền truy cập vào các tài nguyên dùng chung.
 Event Flags: Dùng để đồng bộ hóa các hoạt động cần có sự phối hợp của nhiều task.
 Mailboxes, Pipes, Message queues: Dùng để quản lý các thông điệp gửi đi - đến giữa
các task.

Ưu điểm của RTOS

 Độ ổn định và tin cậy cao, nên có thể hoạt động trong thời gian dài mà không c ần quá
nhiều sự can thiệp của con người.
 Xử lý một cách nhanh chóng và hiệu quả cho các thiết bị đòi hỏi độ chính xác cao.
 Sử dụng rất ít tài nguyên và không cần bộ nhớ Ram quá lớn.
 RTOS rất ít phát sinh lỗi và khi có phát sinh lỗi thì cũng rất dễ đễ phát hiện.

Các ứng dụng của RTOS

RTOS là một hệ thống đơn giản, nhẹ được sử dụng cho các h ệ th ống h ạn ch ế ho ặc đ ơn gi ản,
chẳng hạn như các thiết bị nhúng. Điều này làm cho chúng hoàn hảo cho ứng dụng như:
 Chuyển mạch điện thoại.
 Kiểm soát công nghiệp.
 Điều khiển bay.
 Mô phỏng trong thời gian thực.
 Ứng dụng quân sự.
 Đồ gia dụng.
 Các thiết bị điện tử tiêu dùng cơ bản.
Trong số các hệ điều hành mã nguồn mở thì FreeRTOS là một hệ điều hành nhúng thời gian thực (Real Time
Operating System) được phát triển bởi Real Time Engineers Ltd, phù hợp với nhiều hệ nhúng nhỏ gọn vì nó chỉ
triển khai rất ít các chức năng như quản lý bộ nhớ, thiết lập tác vụ cơ bản và chứa các hàm API (Application
Programming Interface) quan trọng cho cơ chế đồng bộ.
Cụ thể, FreeRTOS có nhiều ưu điểm: kích thước nhỏ gọn, sử dụng mã nguồn Ứng dụng hệ điều hành FreeRTOS
và vi điều khiển ESP32 trong hệ thống trồng rau thủy canh Tống Việt Hùng, Hà Quốc Trung, Ngô Minh Phước,
Ngô Văn Thành, Nguyễn Thị Hồng Trung tâm Công nghệ thông tin, Bộ KH&CN Ở những nước phát triển, mặc dù
tỷ trọng ngành nông nghiệp trong GDP không lớn, nhưng nhờ áp dụng công nghệ mới (hệ điều hành mã nguồn
mở, Internet kết nối vạn vật - IoT, trí tuệ nhân tạo...), nên sản lượng nông sản không ngừng tăng lên, đáp ứng
hiệu quả nhu cầu trong nước và xuất khẩu. Do đó, trong bối cảnh cuộc cách mạng công nghiệp 4.0 đang diễn ra
mạnh mẽ, việc ứng dụng các thành tựu khoa học và công nghệ để nâng cao năng suất, chất lượng và độ tin cậy
của sản phẩm trở thành xu hướng tất yếu đối với hoạt động sản xuất nông nghiệp ở Việt Nam. Trong bài báo
này, các tác giả giới thiệu mô hình sử dụng hệ điều hành mã nguồn mở FreeRTOS và vi điều khiển ESP32 để tối
ưu hóa các hệ thống trồng rau thủy canh dựa trên công nghệ IoT và trí tuệ nhân tạo. 41 khoa học - công nghệ
và đổi mới sáng tạo Soá 3 naêm 2019 mở nên được miễn phí bản quyền; hỗ trợ trên 30 kiến trúc hệ thống
nhúng (ARM7 và ARM Cortex-M3); được viết bằng ngôn ngữ C nên có thể sử dụng, phát triển với nhiều trình
biên dịch C khác nhau, cho phép không giới hạn các tác vụ chạy đồng thời, không hạn chế quyền ưu tiên thực
thi, khả năng khai thác phần cứng; cho phép triển khai các cơ chế điều phối giữa các tiến trình như: queues,
counting semaphore, mutexes. Đặc biệt, FreeRTOS là hệ điều hành chạy được trên ESP32, cho phép cập nhật
firmware qua OTA mã hóa, giúp nhà phát triển sản phẩm có thể nâng cấp phần mềm ngay cả khi thiết bị đang
được sử dụng. ESP32-WROOM-32 là một module đa dụng, được sử dụng rộng rãi trong thiết kế mạch PCB Wifi-
Bluetooth, BLE được ứng dụng rất phổ biến cho nhiều ứng dụng về IoT. Phạm vi ứng dụng từ mạng sensor tiết
kiệm năng lượng đến những ứng dụng với nhiều tác vụ phức tạp, như mã hóa âm thanh, âm nhạc trực tuyến
đến giải mã MP3. Lõi của module là dòng chip nhúng ESP32-D0WDQ6, được thiết kế với khả năng mở rộng và
tùy biến cao. Có đến 2 lõi CPU độc lập nên chip này có thể điều chỉnh tần số clock của CPU từ 80 đến 240 MHz.
Người lập trình có thể tắt CPU để sử dụng bộ đồng xử lý công suất thấp, giúp theo dõi sự biến đổi hoặc vượt
ngưỡng của các ngoại vi nhờ tích hợp bộ ngoại vi khá phong phú từ cảm biến điện dung, cảm biến Hall, SD card,
Ethernet, SPI tốc độ cao, đến UART, I2S hay I2C.

You might also like