Professional Documents
Culture Documents
Mục lục
Chương I: TỔNG QUAN 5
1.1. Mở đầu.............................................................................................................................5
1.2. Khái niệm về hệ nhúng....................................................................................................6
1.3. Vai trò của hệ thống nhúng trong sự phát triển của lĩnh vực công nghệ cao “3C “........7
1.4. Đặc tính, phương pháp thiết kế và xu thế phát triển của các hệ nhúng...........................9
1.5. Môi trường thông minh..................................................................................................10
1.6. Các hệ điều hành nhúng và phần mềm nhúng...............................................................11
1.6.1. Hệ điều hành nhúng................................................................................................11
1.6.2. Phần mềm nhúng.....................................................................................................11
Chương II: LÝ THUYẾT THIẾT KẾ HỆ THỐNGNHÚNG 13
2.1. Quy trình thiết kế Top-Down.........................................................................................13
2.1.1. Pha phân tích...........................................................................................................13
2.1.2. Pha thiết kế nguyên lý.............................................................................................15
2.1.3. Pha thiết kế kỹ thuật................................................................................................16
2.1.4. Pha xây dựng hệ thống............................................................................................17
2.1.5. Pha kiểm tra............................................................................................................17
2.2. Quy trình Bottom-Up.....................................................................................................18
2.3. Đặc tả hệ thống..............................................................................................................19
2.3.1. Khái niệm đặc tả (specification).............................................................................19
2.3.2. Tại sao cần đặc tả....................................................................................................19
2.3.3. Phân loại các kỹ thuật đặc tả...................................................................................21
2.3.4. Ứng dụng và ưu việt khỉ sử dụng đặc tả.................................................................21
2.3.5. Phương pháp đặc tả sử dụng “Máy trạng thái hữu hạn FSM(Finite state machine)”
...........................................................................................................................................22
2.4. Các phương pháp biểu diễn thuật toán...........................................................................23
2.4.1. Ngôn ngữ tự nhiên..................................................................................................23
2.4.2. Dùng lưu đồ............................................................................................................24
2.4.3. Mã giả.....................................................................................................................27
Chương III: CẤU TRÚC PHẦN CỨNG 28
3.1. Cấu trúc tổng quát của hệ thống nhúng.........................................................................28
3.1.1. Kiến trúc cơ bản......................................................................................................28
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
2
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
3
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
4
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
5
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
6
càng cải thiện đưa đến vai trò và tầm quan trọng của các hệ thống nhúng ngày càng
cao trong nền kinh tế quốc dân.
Phát triển các hệ nhúng và phần mềm nhúng là quốc sách của nhiều quốc gia
trên thế giới, nhất là giai đoạn hậu PC hiện nay. Ở nước ta đáng tiếc lĩnh vực này lâu
nay đã bị lãng quên, do vậy cần có những điều chỉnh phù hợp trong chiến lược phát
triển để có thể theo kịp, rút ngắn khoảng cách tụt hậu đối với các nước trong khu vực
và trên thế giới trong quá trình hội nhập nền kinh tế toàn cầu không thể tránh khỏi hiện
nay.
1.2. Khái niệm về hệ nhúng
Hệ thống nhúng (tiếng Anh: Embedded system) là một thuật ngữ để chỉ một hệ
thống có khả năng tự trị được nhúng vào trong một môi trường hay một hệ thống mẹ.
Hệ thống nhúng có vai trò đảm nhận một phần công việc cụ thể của hệ thống mẹ. Hệ
thống nhúng có thể là một hệ thống phần cứng và cũng có thể là một hệ thống phần
mềm. (Wikipedia, 2010)
Ví dụ quanh ta có rất nhiều sản phẩm nhúng như lò vi sóng, nồi cơm điện, điều
hòa, điện thoại di động, ô tô, máy bay, tàu thủy, các đầu đo, cơ cấu chấp hành thông
minh v.v... ta có thể thấy hiện nay hệ thống nhúng có mặt ở mọi lúc mọi nơi trong
cuộc sống của chúng ta.
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
7
Như vậy công nghệ thống không chỉ đơn thuần là PC, mạng LAN, WAN,
Internet phần mềm quản lý ... như nhiều người thường nghĩ. Đó chỉ là bề nổi của một
tảng băng chìm. Phần chìm của công nghệ thông tin chính là các ứng dụng của các hệ
nhúng có mặt trong mọi ngành nghề của đời sống xã hội hiện nay.
Các hệ nhúng được tích hợp trong các thiết bị đo lường điều khiển tạo nên đầu
não và linh hồn của sản phẩm. Trong các hệ nhúng, hệ thống điều khiển nhúng đóng
một vai trò hết sức quan trọng.
Hệ điều khiển nhúng là hệ thống mà máy tính được nhúng vào vòng điều khiển
của sản phẩm nhằm điều khiển một đối tượng, điều khiển một quá trình công nghệ đáp
ứng các yêu cầu đặt ra. Hệ thống điều khiển nhúng lấy thông tin từ các cảm biến, xử lý
tính toán các thuật điều khiển và phát tín hiệu điều khiển cho các cơ cấu chấp hành.
Khác với các hệ thống điều khiển cổ điển theo nguyên lý thủy lực, khí nén, rơle,
mạch tương tự, hệ điều khiển nhúng là hệ thống điều khiển số được hình thành từ
những năm 1960 đến nay. Trước đây các hệ điều khiển số thường do các máy tính lớn
đảm nhiệm, ngày nay chức năng điều khiển số này do các chíp vi xử lý, các hệ nhúng
đã thay thế. Phần mềm điều khiển ngày càng tinh sảo tạo nên độ thông minh của thiết
bị và ngày càng chiếm tỉ trọng lớn trong giá thành của thiết bị.
Điểm qua về chức năng xử lý tin ở PC và ở các thiết bị nhúng có những nét
khác biệt. Đối với PC và mạng internet chức năng xử lý đang được phát triển mạnh ở
các lĩnh vực quản lý và dịch vụ như thương mại điện tử, ngân hàng điện tử, chính phủ
điện tử, thư viện điện tử, đào tạo từ xa, báo điện tử ... các ứng dụng này thường sử
dụng máy PC để bàn, mạng WAN, LAN hoạt động trong thế giới ảo. Còn đối với các
hệ nhúng thì chức năng xử lý tính toán được ứng dụng cụ thể cho các thiết bị vật lý
(thế giới thật) như mobile phone, quần áo thông minh, các thiết bị điện tử cầm tay,
thiết bị y tế, xe ô tô, tầu tốc hành, phương tiện vận tải thông minh, máy đo, đầu đo, cơ
cấu chấp hành thông minh, các hệ thống điều khiển, nhà thông minh, thiết bị gia dụng
thông minh v.v...
1.3. Vai trò của hệ thống nhúng trong sự phát triển của lĩnh vực công nghệ cao
“3C “.
Các hệ thống tự động đã được chế tạo trên nhiều công nghệ khác nhau như các
thiết bị máy móc tự động bằng các cam chốt cơ khí, các hệ thống tự động hoạt động
bằng nguyên lý khí nén, thủy lực, rơle cơ điện, mạch điện tử số ... các thiết bị, hệ
thống này có chức năng xử lý và mức độ tự động thấp so với các hệ thống tự động
hiện đại được xây dựng trên nền tảng của các hệ thống nhúng.
Trong khi các hệ thống tin học sử dụng máy tính để hỗ trợ và tự động hóa quá
trình quản lý, thì các hệ thống điều khiển tự động dùng máy tính để điều khiển và tự
động hóa quá trình công nghệ. Chính vì vậy các thành tựu của công nghệ phần cứng và
công nghệ phần mềm của máy tính điện tử được áp dụng và phát triển một cách có
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
8
chọn lọc và hiệu quả cho các hệ thống điều khiển tự động. Và sự phát triển như vũ bão
của công nghệ thông tin kéo theo sự phát triển không ngừng của lĩnh vực tự động hóa.
Ta có thể thấy quá trình các hệ nhúng thâm nhập vào từng phần tử, thiết bị
thuộc lĩnh vực tự động hóa như đầu đo, cơ cấu chấp hành, thiết bị giao diện với người
vận hành thậm chí vào các rơle, contactor, nút bấm mà trước kia hoàn toàn làm bằng
cơ khí.
Trước khi đầu đo gồm phần tử biến đổi từ tham số đo sang tín hiệu điện, mạch
khuyếch đại, mạch lọc và mạch biến đổi sang chuẩn 4-20mA để truyền tín hiệu đo về
trung tâm xử lý. Hiện nay đầu đo đã tích hợp cả chip vi xử lý, biến đổi ADC, bộ truyền
dữ liệu số với phần mềm đo đạc, lọc số, tính toán và truyền kết quả trên mạng số về
thẳng máy tính trung tâm. Như vậy đầu đo đã được số hóa và ngày càng thông minh
do các chức năng xử lý từ máy tính trung tâm trước kia nay đã được chuyển xuống xử
lý tại chỗ bằng chương trình nhúng trong đầu đo.
Tương tự như vậy cơ cấu chấp hành như môtơ đã được chế tạo gắn kết hữu cơ
với cả bộ servo với các thuật toán điều chỉnh PID tại chỗ và khả năng nối mạng số tới
máy tính chủ.
Các tủ rơle điều khiển chiếm diện tích lớn trong các phòng điều khiển nay được
co gọn trong các PLC(programble Logic Controller).
Các bàn điều khiển với hàng loạt các đồng hồ chỉ báo, các phím, núm điều
khiển, các bộ tự ghi trên giấy cồng kềnh nay được thay thế bằng một vài PC.
Hệ thống cáp truyền tín hiệu analog 4-20mA, ± 10V từ các đầu đo, cơ cấu chấp
hành về trung tâm điều khiển nhằng nhịt trước đây đã được thay thế bằng vài cáp đồng
trục hoặc cáp quang truyền dữ liệu số
Ta có thể nói các hệ nhúng đã “thay thế và chiếm phần ngày càng nhiều” trong
các phần tử, hệ thống thuộc lĩnh vực công nghệ cao “3C”.
Vào những năm 30 các hệ thống tự động bằng cam chốt cơ khí thường hoạt
động đơn lẻ với một chức năng xử lý. Các hệ thống tự động dùng rơle điện từ xuất
hiện vào những năm 40 có mức xử lý khoảng 10 chức năng. Các hệ thống tự động
dùng bán dẫn hoạt động theo nguyên lý tương tự (Analog) của thập kỷ 60 có mức xử
lý khoảng 30 chức năng. Vào những năm 70 các thiết bị điều khiển khả trình PLC ra
đời với mức độ xử lý lên hàng trăm và vào những năm 80 với sự tham gia của các máy
tính điện tử main frame mini đã hình thành các hệ thống điều khiển phân cấp với số
chức năng xử lý lên tới hàng chục vạn (105). Sang thập kỷ 90 với sự phát triển của
công nghệ phần cứng cũng như phần mềm, các hệ thống điều khiển phân tán ra
đời(DCS) cho mức xử lý lên tới hàng trục triệu (107). Và sang thế kỷ 21, những hệ
thống tự động có tính tự tổ chức, có tư duy hợp tác sẽ có mức xử lý lên tới hàng
tỷ(109). Tuy nhiên để đạt được độ thông minh như những sinh vật sống còn cần nhiều
thời gian hơn và các hệ thống tự động còn cần tích hợp trong nó nhiều công nghệ cao
khác như công nghệ cảm biến, công nghệ vật liệu mới, công nghệ quang và laser v.v...
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
9
Đây cũng là xu thế phát triển của các hệ thống tự động là ngày càng sử dụng nhiều
công nghệ mới hơn trong cấu trúc và hoạt động của mình.
Trong điều khiển quá trình công nghệ, việc áp dụng các hệ nhúng đã tạo ra khả
năng tự động hóa toàn bộ dây chuyền sản xuất. Kiến trúc hệ thống điều khiển trước kia
tập trung về xử lý tại một máy tính thì nay các đầu đo, cơ cấu chấp hành, giao diện với
người vận hành đều được thông minh hóa có nhiều chức năng xử lý tại chỗ và khả
năng nối mạng nhanh tạo thành hệ thống mạng máy điều khiển hoạt động theo chế độ
thời gian thực. Ngoài các chức năng điều khiển và giám sát dây chuyền sản xuất hệ
thống còn có nhiều cơ sở dữ liệu, khả năng tự xác định và khắc phục hỏng hóc, khả
năng thống kê, báo cáo và kết hợp hệ thống mạng máy tính quản lý, lập kế hoạch, thiết
kế và kinh doanh tạo thành hệ thống tự động hóa sản xuất toàn cục.
Trong lĩnh vực rôbôt, với sự áp dụng các thành tựu của các hệ nhúng, rôbôt đã
có thị giác và xúc giác. Việc áp dụng trí khôn nhân tạo vào rôbôt đã đưa rôbôt từ ứng
dụng chủ yếu trong công nghiệp sang các lĩnh vực dịch vụ và y tế. Kết hợp với các
thành tựu của cơ điện tử, rôbôt ngày càng uyển chuyển và thông minh hơn. Trong
tương lai rôbôt không chỉ thay thế hoạt động cơ bắp của con người mà còn có thể thay
thể các công việc đòi hỏi họat động trí não của con người. Lúc này hệ thống điều khiển
của rôbôt không chỉ là các vi xử lý mạnh mà còn có sự hỗ trợ của các máy tính mạng
nơron nhân tạo, xử lý song song nhúng trong rôbôt. Các nghiên cứu phát triển này hiện
nay còn ở giai đoạn ban đầu.
1.4. Đặc tính, phương pháp thiết kế và xu thế phát triển của các hệ nhúng
Các hệ nhúng là những hệ kết hợp phần cứng và phần mềm một cách tối ưu.
Các hệ nhúng là những hệ chuyên dụng, thường hoạt động trong chế độ thời gian thực,
bị hạn chế về bộ nhớ, giá thành phải rẻ nhưng lại phải hoạt động tin cậy và tiêu tốn ít
năng lượng. Các hệ nhúng rất đa dạng và có nhiều kích cỡ, khả năng tính toán khác
nhau. Ngoài ra các hệ nhúng thường phải hoạt động trong môi trường khắc nghiệt có
độ nóng ẩm, rung xóc cao. Ví dụ như các điều khiển các máy diesel cho tàu biển, các
thiết bị cảnh báo cháy nổ trong hầm lò. Các hệ thống nhúng lớn thường là các hệ nối
mạng. Ở máy bay, tàu vũ trụ thường có nhiều mạng nhúng kết nối để kiểm soát hoạt
động và điều khiển.Trong ô tô hiện đại có đến trên 80 nút mạng kết nối các đầu đo cơ
cấu chấp hành để bảo đảm ô tô hoạt động an toàn và thoải mái cho người sử dụng.
Thiết kế các hệ thống nhúng là thiết kế phần cứng và phần mềm phối hợp. Cách
thiết kế cổ điển là cách xác định trước các chức năng phần mềm (SW) và phần cứng
(HW) rồi sau đó các bước thiết kế chi tiết được tiến hành một cách độc lập ở hai khối.
Hiện nay đa số các hệ thống tự động hóa thiết kế (CAD) thường dành cho thiết kế
phần cứng. Các hệ thống nhúng hiện nay sử dụng đồng thời nhiều công nghệ như vi xử
lý, DSP, mạng và các chuẩn phối ghép, protocol, do vậy xu thế thiết kế các hệ nhúng
hiện nay đòi hỏi có khả năng thay đổi mềm dẻo hơn trong quá trình thiết kế 2 phần
HW và SW. Để có được thiết kế cuối cùng tối ưu, quá trình thiết kế SW và HW phải
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
10
phối hợp với nhau chặt chẽ và có thể thay đổi sau mỗi lần thử chức năng hoạt động
tổng hợp. Thiết kế các hệ nhúng đòi hỏi kiến thức đa ngành về điện tử, xử lý tín hiệu,
vi xử lý, thuật điều khiển và lập trình thời gian thực.
Phần mềm trong các hệ nhúng ngày càng chiếm tỉ trọng cao và đã trở thành một
thành phần cấu tạo nên thiết bị bình đẳng như các phần cơ khí, linh kiện điện tử, linh
kiện quang học ... các hệ nhúng ngày càng phức tạp hơn đáp ứng các yêu cầu khắt khe
về thời gian thực, tiêu ít năng lượng, hoạt động tin cậy ổn định hơn, có khả năng hội
thoại cao, có khả năng kết nối mạng, có thích nghi, tự tổ chức cao có khả năng tái cấu
hình như một thực thể, một tác nhân.
Và có khả năng tiếp nhận năng lượng từ nhiều nguồn khác nhau (ánh sáng, rung
động, điện từ trường, sinh học ...) để tạo nên các hệ thống tự tiếp nhận năng lượng
trong quá trình họat động.
Tuy nhiên hệ thống nhúng hiện nay còn phải đối mặt với nhiều thách. Độ phức
tạp của hệ thống tăng cao do nó kết hợp nhiều lĩnh vực đa ngành, kết hợp phần cứng -
mềm, trong khi các phương pháp thiết kế và kiểm tra chưa chín muồi. Khoảng cách
giữa lý thuyết và thực hành lớn và còn thiếu các phương pháp và lý thuyết hoàn chỉnh
cho khảo sát phân tích toàn cục của hệ nhúng bao gồm lý thuyết điều khiển tự động,
thiết kế máy, công nghệ phần mềm, điện tử, vi xử lý, các công nghệ hỗ trợ khác. Mặt
khác các hệ nhúng còn nhiều vấn đề cần giải quyết với độ tin cậy và tính mở của hệ
thống. Do hệ thống nhúng thường phải hội thoại với môi trường xung quanh nên nhiều
khi gặp những tình huống không lường trước dễ dẫn đến hệ thống bị loạn. Trong quá
trình hoạt động một số phần mềm thường phải chỉnh lại và thay đổi nên hệ thống phần
mềm có thể không kiểm soát được. Đối với hệ thống mở, các hãng thứ 3 đưa các
module mới, thành phần mới vào cũng có thể gây nên sự hoạt động thiếu tin cậy.
1.5. Môi trường thông minh
Công nghệ bán dẫn phát triển mạnh theo xu thế ngày càng rẻ, tích hợp cao, có
khả năng tính toán lớn, khả năng kết nối toàn cầu, khả năng phối hợp với các cảm biến
và cơ cấu chấp hành vi cơ điện và sinh học, khả năng giao diện không qua bàn phím
đang tạo tiền đề và cơ sở cho sự bùng nổ của các thiết bị vật dụng thông minh xung
quanh ta. Đây là sự khởi đầu của thời đại hậu PC - Môi trường thông minh. Các phần
mềm nhúng trong các chip vi hệ htống rất phong phú và có độ mềm dẻo, tái sử dụng
cao.
Sức đẩy của công nghệ sẽ đưa công nghệ vi điện tử tiếp cận và cộng năng với
công nghệ sinh học tạo nên công nghệ nano với độ phức tạp giga vào thập niên 2010-
2020. Các chip vi hệ thống xử lý hỗn hợp tương tự và số MS-SoC (Mixed Signal
System on chip) vào giai đoạn này sẽ có trên 2 tỷ transistor, 1000 lõi CPU, 100MB bộ
nhớ và hoạt động ở tần số 200GHz.
Với những vi hệ thống có khả năng tính toán siêu hạng này việc thiết kế các hệ
nhúng sẽ gặp không ít thách thức như xử lý song song, độ phức tạp của phần mềm
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
11
nhúng và khả năng cung cấp năng lượng cho các thiết bị cầm tay. Trong tương lai
năng lượng cho truyền dữ liệu sẽ lớn gấp từ 5 đến 30 lần năng lượng hoạt động của các
CPU.
Trước đây các hệ thống thường được thiết kế trên nền phần cứng là PC và phần
mềm là Windown hoặc Linux, thì ngày nay số lượng các hệ nền (platform) cho thiết kế
các hệ nhúng có khoảng 25. Trong tương lai các hệ nhúng sẽ được thiết kế trên nền các
chip MS-SoC tạo nên các platform thiết kế chuyên dụng với số lượng sẽ lên đến hơn
500 loại. Ta có thể liệt kê một số ví dụ điển hình như platform raptor II cho thiết kế
camera số, PXA240 cho thiết kế các thiết bị PDA, TL850 cho TV số, BLUECORE
cho công nghệ không dây Bluetooth, CDMA cho mobile phone 3G ... các hệ MS-SoC
sẽ có khả năng tái cấu hình và sẽ là công cụ chủ chốt cho các sản phẩm của công nghệ
cao “3C”.
1.6. Các hệ điều hành nhúng và phần mềm nhúng
1.6.1. Hệ điều hành nhúng
Khác với PC thường chạy trên nền hệ điều hành windows hoặc unix, các hệ
thống nhúng có các hệ điều hành nhúng riêng của mình. Các hệ điều hành dùng trong
các hệ nhúng nổi trội hiện nay bao gồm Embedded linux, VxWorks, WinCE, Lynyos,
BSD, Green Hills, QNX và DOS, Embeddde linux hiện đang phát triển mạnh. Năm
2001 hệ điều hành này chiếm 12% thị phần các hệ điều hành nhúng thì năm 2002
chiếm 27% và chiếm vị trí số 1. Hiện nay 40% các nhà thiết kế các hệ nhúng cân nhắc
đầu tiên sử dụng Embedded linux cho các ứng dụng mới của mình và sau đó mới đến
các hệ điều hành nhúng truyền thống như VxWorks, WinCE. Các đối thủ cạnh tranh
của Embedded linux hiện nay là các hệ điều hành nhúng tự tạo và windows CE. Sở dĩ
Embedded linux có sự phát triển vượt bậc là do có sức hấp dẫn đối với các ứng dụng
giá thành thấp và đòi hỏi thời gian đưa sản phẩm ra thị trường nhanh. Mặt khác Linux
là phần mềm mã nguồn mở nên bất kỳ ai cũng có thể hiểu và thay đổi theo ý mình.
Linux cũng là một hệ điều hành có cấu trúc module và chiếm ít bộ nhớ trong khi
windows không có các đặc tính ưu việt này. Do thị trường của các sản phẩm nhúng
tăng mạnh lên các nhà sản xuất ngày càng sử dụng các hệ điều hành nhúng để đảm bảo
sản phẩm có sức cạnh tranh và Embedded linux đang là sản phẩm hệ điều hành nhúng
có uy tín chiếm vị trí số 1 trong những năm tới.
1.6.2. Phần mềm nhúng
Phần mềm nhúng là phần mềm tạo nên phần hồn, phần trí tuệ của các sản phẩm
nhúng. Phần mềm nhúng ngày càng có tỉ lệ cao trong giá trị của các sản phẩm nhúng.
Hiện nay phần lớn các phần mềm nhúng nằm trong các sản phẩm truyền thông và các
sản phẩm điện tử gia dụng (consumer electronics) tiếp đến là trong các sản phẩm ô tô,
phương tiện vận chuyển, máy móc thiết bị y tế, các thiết bị năng lượng các thiết bị
cảnh báo bảo vệ và các sản phẩm đo và điều khiển. Để có thể tồn tại và phát triển, các
sản phẩm công nghiệp và tiêu dùng cần phải thường xuyên đổi mới và ngày càng có
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
12
nhiều chức năng tiện dụng và thông minh hơn. Các chức năng này phần lớn do các
chương trình nhúng tạo nên. Phần mềm nhúng là một lĩnh vực công nghệ then chốt
cho sự phát triển kinh tế của nhiều quốc gia trên thế giới như Nhật Bản, Hàn Quốc,
Phần Lan và Trung Quốc. Tại Mỹ có nhiều chương trình hỗ trợ của nhà nước để phát
triển các hệ thống và phần mềm nhúng. Hàn Quốc có những dự án lớn nhằm phát triển
công nghệ phần mềm nhúng như các thiết bị gia dụng nối mạng Internet, hệ thống
phần mềm nhúng cho phát triển thành phố thông minh, dự án phát triển ngành công
nghiệp phần mềm nhúng, trung tâm hỗ trợ các ngành công nghiệp hậu PC v.v... Hàn
Quốc cũng chấp nhận Embedded linux như một hệ điều hành chủ chốt trong việc phát
triển các sản phẩm nhúng của mình. Thụy Điển coi phát triển các hệ nhúng có tầm
quan trọng chiến lược cho sự phát triển của đất nước. Phần Lan có những chính sách
quốc gia tích cực cho nghiên cứu phát triển các hệ nhúng đặc biệt là các phần mềm
nhúng. Những quốc gia này còn thành lập nhiều viện nghiên cứu và trung tâm phát
triển các hệ nhúng.
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
13
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
14
Thiết kế nguyên lý
(High level design)
Thiết kế kỹ thuật
(Engineering design) Các cấu trúc dữ liệu
Các giao tiếp vào ra
Biểu đồ quan hệ giữa các
khối chức năng
Phần cứng
Phần mềm
Kiểm tra
Không Đạt (Test)
Đạt yêu cầu
yêu cầu
Hình 2: Sơ đồ khối quy trình Top-Down
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
15
6) Chịu được quá tải khi gặp chướng ngại vật trong khoảng thời gian dài.
7) ....
Trong các bài toán cụ thể, với các hệ thống mẹ cụ thể, mỗi hệ thống nhúng sẽ có
các yêu cầu khác nhau. Tuy nhiên vẫn có những tiêu chuẩn và yêu cầu chung mà hầu
hết các hệ thống phải tính đến như:
- Tính đến chi phí bảo trì định kỳ
- Kích thước và trọng lượng
- Khả năng thực thi: Thời gian đáp ứng, độ chính xác, độ phân giải, ...
- Nguồn nuôi
- Tính mềm dẻo, khả năng nâng cấp, khả năng tương thích, khả năng phục
hồi sau khi mất nguồn,...
- Thời gian thử
- Thời gian để thương mại sản phẩm
- Độ an toàn
- Khả năng chống lại sự phá hoại hay xâm nhập.
- ...
2.1.2. Pha thiết kế nguyên lý
Mục tiêu của pha này là xác định các giải pháp công nghệ từ các yêu cầu đặt ra
ở pha Phân tích, từ đó đi thiết kế mô hình, sơ đồ nguyên lý cho toàn bộ hệ thống bao
gồm cả phần cứng và phần mềm.
Để thực hiện bước này thông thường trải qua các bước sau:
- Trước tiên ta phải xây dựng một sơ đồ mô hình tổng quát của toàn hệ thống.
- Sau đó phân tách thành các module hay các hệ thống con
- Định giá cho hệ thống, lập kế hoạch phát triển và ước lượng thời gian phát
triển hệ thống.
- Xây dựng các sơ đồ luồng dữu liệu giữa các module hay các hệ thống con
trong hệ thống.
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
16
Ví dụ 2: Xây dựng và phân tách các module trong mô hình tổng tổng quát của bài
toán điều khiển động cơ
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
17
Hình 4: Sơ đồ quan hệ (call graph) giữa các module phần cứng và phân mềm trong hệ thống điều khiển động cơ
Để phát hiện và hạn chế tối đa các lỗi mà hệ thống sẽ gặp phải sau khi được xây
dựng, ta có thể mô hình hóa các thành phần hoặc toàn bộ hệ thống nếu có thể, nhằm
thử nghiệm hoặt động của hệ thống với các đầu vào và tình huống giả lập, đồng thời
thử nghiệm tính thân thiện của giao diện người dùng.
2.1.4. Pha xây dựng hệ thống
Từ các bản thiết kế, bước này tiến hành xây dựng hoàn thiện hệ thống trên cả
phân mềm và phần cứng. Trong suốt quá trình xây dựng phải tuân thủ theo các bước
và sơ đồ công nghệ từ các bản thiết kế kỹ thuật. Đặc biệt là các tham số vào ra giữa
các hàm, điều này ảnh hưởng đến việc tích hợp các module giữa các nhóm làm việc
khác nhau hay sự kế thừa từ các module khác. Các linh kiện và thiết bị sử dụng phải
tuân thủ theo bản thiết kế, nhằm giúp hệ thống thỏa mãn đầy đủ các thông số rằng
buộc đã được đặt ra ở pha phân tích.
Việc phát triển hệ thống có thể được phân tách thành nhiều nhóm, nhiều phần
không cần tuân theo tuần tự, hoặc có thể trên nhiều môi trường khác nhau miễn sao
đảm bảo việc trao đổi tham số giữa các module là tương thích và đầy đủ. Nếu chúng ta
phân tách và thiết kế tốt, việc phát triển hệ thống có thể được tiến hành song song,
hoặc kế thừa cái có sẵn, sẽ làm giảm thời gian phát triển hệ thống đáng kể mà vẫn đảm
bảo các yêu cầu đã đặt ra.
Một số các kỹ thuật nhằm phát hiện và hạn chế lỗi mà người phát triển có thể áp
dụng trong pha này là Debug hay mô phỏng Simulation. Tuy nhiên trong một bài toán
cụ thể việc Debug là rất khó, thông thường người phát triển luôn sử dụng một trình mô
phỏng (Simulation) với các phép thử trên các tín hiệu giả lập.
2.1.5. Pha kiểm tra
Mục tiêu của pha này là đánh giá khả năng thực thi của hệ thống sau khi đã
hoàn thiện, thông thường ta thực hiện các bước sau:
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
18
Đầu tiên ta tiến hành gỡ lỗi (debug) và kiểm định cho từng chức năng cơ bản
của hệ thống.
Tiếp theo đánh giá khả năng thực thi của hệ thống dựa trên nhiều tiêu chí khác
nhau như: Tốc độ, độ chính xác, tính ổn định,…
Ngày nay rất nhiều công ty trên nhiều lĩnh vực tuyển dụng nhân sự riêng cho
pha này gọi là testing hay các tester. Nhiệm của của các Tester không chỉ là kiểm các
tính năng của sản phẩm có phù hợp với các yêu cầu đã đề ra hay không, mà còn phải
nghĩ ra các tình huống, các mẫu,… để tìm ra các lỗi mà người thiết kế hay người phát
triển chưa phát hiện ra được.
Các thông tin kết quả của bước này quyết định một sản phẩm có thể được
thương mại hóa hay không, hay phải bắt đầu một chu kỳ mới với pha đầu tiên là pha
phân tích bao gồm các thông tin mới thu thập được từ bước này.
2.2. Quy trình Bottom-Up
Quy trình Bottom-Up trong thực tế thường áp dụng trong các bài toán chưa lựa
chọn hay chưa tìm ra được giải pháp công nghệ. Mấu chốt của quy trình tập trung chủ
yêu và quá trình thử nghiệm với hệ thống và tín hiệu thực, từ đó chọn ra giải pháp
công nghệ và linh kiện phù hợp nhất cho bài toán. Sơ đồ tổng quát của quy trình như
hình 5.
Quy trình Bottom-Up bắt đầu từ các ý tưởng đơn lẻ, sau đó xây dựng luôn thiết
kế kỹ thuật. Như ta thấy quy trình hoàn toàn ngược so với Top-Down. Quy trình này
thường áp dụng có các bài toán chưa lắm chắc về lời giải, người thiết kế mới chỉ có ý
tưởng về một vấn đề nào đó và muốn tìm một giải pháp hoặc giải pháp tốt nhất để giải
quyết vấn đề. Việc giải quyết các ý tưởng có thể 1 hoặc nhiều để có một sản phẩm
hoàn chỉnh. Ở quy trình này ta cần chú ý có 2 khâu test nhằm kiểm định chính xác lại
các thiết kế kỹ thuật và thiết kế nguyên lý trước khi lựa chọn 1 giải pháp tối ứu nhất.
Chính từ việc thí nghiệm và thiết kế thử hệ thống trước, sau đó mới có thể phân
tích nguyên lý để chọn các đặc tính mới, rằng buộc mới cho một hệ thống mới. Với
quy trình này khâu thiết kế kỹ thuật và Test sau khi xây dựng hệ thống là quan trọng
nhất. Vì với Top-Down việc xây dựng một sản phẩm là theo nhu cầu của người dùng
và môi trường đặt hệ thống. Còn với Bottom-Up có thể người ta còn chưa tìm ra cách
để thiết kế ra sản phẩm đó, hoặc sản phẩm đó chưa hề có trên thị trường, khi đó cả
người dùng và người thiết kế chưa thể có thông tin gì về các yêu cầu cho sản phẩm hay
các đặt tính kỹ thuật của sản phẩm, vì vậy khâu thiết kế kỹ thuật và Test sau thực thi
các kỹ sư phải tìm ra các đặt tính đó, nhằm xác định được các ưu việt cũng như các
hạn chế của sản phẩm mới.
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
19
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
20
Thiết kế nguyên lý
(High level design)
Đạt yêu cầu Đạt yêu cầu
Đạt yêu cầu Không Đạt
Không Đạt
Kiểm tra Kiểm tra yêu cầu
Kiểm tra yêu cầu
(Test) (Test) (Test)
Đặc tả mang tính hợp đồng: Mô tả đầy đủ và chi tiết sự thống nhất giữa người
sử dụng và người phát triển, chính vì thế đây là cơ pháp lý và khoa học để
người pháp triển thiết kế, còn người sử dụng thì giám sát và kiểm định.
Giúp sản phẩm hợp thức hoá: Sản phẩm được phát triển theo các yêu cầu đã
thoả thuận, vì thế sản phẩm đương nhiên sẽ đặt yêu cầu với người sử dụng.
Đặc tả là công cụ để trao đổi: Ngồn ngữ đặt tả là một ngôn ngử được quy định
chung và thống nhất vì thế các đặc tả có thể được trao đổi giữa các người thiết
kế với nhau. Đồng thời thông qua đó người sử dụng cũng có thể có cái nhình
tổng quát về sản phẩm.
Tái sử dụng: Một đặc tả có thể được lưu giữ để phát triển tiếp hoặc được bổ
sung nâng cấp về sau.
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
21
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
22
Hình 6: Biểu đồ so sánh chi phí phát triẻn hệ thống sử dụng dặc tả và không sử dụng
Qua biểu đồ ta dễ dành nhận ra tổng chi phí khi sử dụng đặc tả giảm đi rất
nhiều, điều nay sẽ là cho giá thành sản phẩm đạt được tính cạnh tranh.
2.3.5. Phương pháp đặc tả sử dụng “Máy trạng thái hữu hạn FSM(Finite state
machine)”
Trong thực tế có một số phương pháp đặc tả như:
Máy trạng thái hữu hạn
Mạng Petri (thường dùng để mô tả các hệ thống phức tạp không đồng bộ, có
nhiều khâu làm việc song song)
Điều kiện trước sau (thường dùng đặc tả cho các hàm hoặc module)
Kiểu trừu tượng (mô tả dữ liệu và các thao tác trên dữ liệu đó ở một mức trừu
tượng độc lập với cách cài đặt dữ liệu bởi ngôn ngữ lập trình)
Trong phạp vi này bài giảng chỉ tập trung trình bày về kỹ thuật đặc tả sử dụng
máy trạng thái hữu hạn, do tính đơn giản và phù hời với các hệ thống nhỏ có tính
moudle và tuần tự cao.
Phương pháp máy trạng thái hữu hạn:
Phương pháp mô tả các luông điều khiển trong hệ thống
Biểu diễn hệ thống dưới dạng đồ thị
Đồ thị bao gồm:
o Nút: mỗi nút là một trạng thái S của hệ thống
o Nhãn: Mô tả dữ liệu đầu vào, là nhãn của một cung
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
23
o Cung: Một chuyển tiếp T : S x I -> S (chuyển tiếp mô tả một sự biến đổi
trạng thái khi một trạng có dữ liệu vào)
Ví dụ 1:
Hình 7: Đặc tả cách thức làm việc của một máy điện thoại sử dụng máy trạng thái hữu hạn
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
24
tắc cố định nào trong việc thể hiện thuật toán bằng ngôn ngữ tự nhiên. Tuy vậy, để dễ
đọc, ta nên viết các bước con lùi vào bên phải và đánh số bước theo quy tắc phân cấp
như 1, 1.1, 1.1.1
Ví dụ: Biểu diễn thuật toán giải phương trình bậc hai dùng ngôn ngữ tự nhiên
(không xét đến nghiệm phức)
Đầu vào: Phương trình ax2 + bx + c =0
Đầu ra: Nghiệm
Bước 1: Xác định hệ số a,b,c
1.1. Nếu a≠0 chuyển đến bước 2
1.2. Nếu a=0 không thực hiện vì la phương trình bậc nhất
Bước 2: Tính Δ = b2 - 4ac
Bước 3: Kiểm tra Δ
3.1. Nếu Δ>0 đến bước 4
3.2. Nếu Δ=0 đến bước 5
3.3. Nếu Δ<0 báo phương trình vô nghiệm, kết thúc thuật toán
Bước 5: Phương trình có nghiệm kép x1=x2=-b/2a, kết thúc thuật toán
2.4.2. Dùng lưu đồ
Lưu đồ hay sơ đồ khối là một công cụ trực quan để diễn đạt các thuật toán.
Biểu diễn thuật toán bằng lưu đồ sẽ giúp người đọc theo dõi được sự phân cấp các
trường hợp và quá trình xử lý của thuật toán. Phương pháp lưu đồ thường được dùng
trong những thuật toán có tính rắc rối, khó theo dõi được quá trình xử lý.
Ðể biểu diễn thuật toán theo sơ đồ khối, ta phải phân biệt hai loại thao tác. Một
thao tác là thao tác chọn lựa dựa theo một điều kiện nào đó. Chẳng hạn : thao tác "nếu
a = b thì thực hiện thao tác B2, ngược lại thực hiện B4" là thao tác chọn lựa. Các thao
tác còn lại không thuộc loại chọn lựa được xếp vào loại hành động. Chẳng hạn, "Chọn
một hộp bất kỳ và để lên đĩa cân còn trống." là một thao tác thuộc loại hành động.
a) Thao tác chọn lựa (hay còn gọi khối điều kiện)
Thao tác chọn lựa được biểu diễn bằng một hình thoi, bên trong chứa biểu thức
điều kiện.
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
25
c) Ðường đi (route)
Khi dùng ngôn ngữ tự nhiên, ta mặc định hiểu rằng quá trình thực hiện sẽ lần
lượt đi từ bước trước đến bước sau (trừ khi có yêu cầu nhảy sang bước khác). Trong
ngôn ngữ lưu đồ, do thể hiện các bước bằng hình vẽ và có thể đặt các hình vẽ này ở vị
trí bất kỳ nên ta phải có phương pháp để thể hiện trình tự thực hiện các thao tác.
Hai bước kế tiếp nhau được nối bằng một cung, trên cung có mũi tên để chỉ
hướng thực hiện. Chẳng hạn trong hình dưới, trình tự thực hiện sẽ là B1, B2, B3.
Từ thao tác chọn lựa có thể có đến hai hướng đi, một hướng ứng với điều kiện
thỏa và một hướng ứng với điều kiện không thỏa. Do vậy, ta dùng hai cung xuất phát
từ các đỉnh hình thoi, trên mỗi cung có ký hiệu Ð/Ðúng/Y/Yes để chỉ hướng đi ứng
với điều kiện thỏa và ký hiệu S/Sai/N/No để chỉ hướng đi ứng với điều kiện không
thỏa.
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
26
Hình 8: Lưu đồ biểu diễn thuật toán giải phương trình bậc 2
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
27
Ở trên chỉ là các ký hiệu cơ bản và thường được dùng nhất. Trong thực tế, lưu
đồ còn có nhiều ký hiệu khác nhưng thường chỉ dùng trong những lưu đồ lớn và phức
tạp. Ðối với các thuật toán trong cuốn sách này, ta chỉ cần sử dụng các ký hiệu trên là
đủ.
2.4.3. Mã giả
Tuy sơ đồ khối thể hiện rõ quá trình xử lý và sự phân cấp các trường hợp của
thuật toán nhưng lại cồng kềnh. Ðể mô tả một thuật toán nhỏ ta phải dùng một không
gian rất lớn. Hơn nữa, lưu đồ chỉ phân biệt hai thao tác là rẽ nhánh (chọn lựa có điều
kiện) và xử lý mà trong thực tế, các thuật toán còn có thêm các thao tác lặp.
Khi thể hiện thuật toán bằng mã giả, ta sẽ vay mượn các cú pháp của một ngôn
ngữ lập trình nào đó để thể hiện thuật toán. Tất nhiên, mọi ngôn ngữ lập trình đều có
những thao tác cơ bản là xử lý, rẽ nhánh và lặp. Dùng mã giả vừa tận dụng được các
khái niệm trong ngôn ngữ lập trình, vừa giúp người cài đặt dễ dàng nắm bắt nội dung
thuật toán. Tất nhiên là trong mã giả ta vẫn dùng một phần ngôn ngữ tự nhiên. Một khi
đã vay mượn cú pháp và khái niệm của ngôn ngữ lập trình thì chắc chắn mã giả sẽ bị
phụ thuộc vào ngôn ngữ lập trình đó.
Ví dụ: Một đoạn mã giả của thuật toán giải phương trình bậc hai
if Delta > 0 then
begin
x1=(-b-sqrt(delta))/(2*a)
x2=(-b+sqrt(delta))/(2*a)
xuất kết quả : phương trình có hai nghiệm là x1 và x2
end
else
if delta = 0 then
xuất kết quả : phương trình có nghiệm kép là -b/(2*a)
else {trường hợp delta < 0 }xuất kết quả : phương trình vô nghiệm
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
28
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
29
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
30
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
31
a) CPU
CPU đóng vai trò như bộ não chịu trách nhiệm
thực thi các phép tính và thực hiện các lệnh. Phần chính
của CPU đảm nhiệm chức năng này là đơn vị logic toán
học ALU (Arthimetic Logic Unit). Ngoài ra để hỗ trợ
hoạt động của ALU còn có thêm một số thành phần khác
trong CPU như bộ giải mã, bộ tuần tự và các thanh ghi.
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
32
b) Bộ nhớ
Kiển trúc bộ nhớ
Kiến trúc bộ nhớ được chia ra làm hai loại chính và được áp dụng rộng rãi trong
hầu hết các Chip xử lý nhúng hiện nay là kiến trúc bộ nhớ von Neumann và Havard.
Trong kiến trúc von Neumann không phân biệt vùng chứa dữ liệu và mã chương
trình.Cả chương trình và dữ liệu đều được truy nhập theo cùng một đường. Điều này
cho phép đưa dữ liệu vào vùng mã chương trình ROM, và cũng có thể lưu mã chương
trình vào vùng dữ liệu RAM và thực hiện từ đó.
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
33
Hình 13: Nguyên lý cấu tạo và hoạt động xóa của EPROM
Bộ nhớ Flash
Cũng giống như EPROM được cấu tạo bởi một mảng transistor khả trình nhưng
có thể xoá được bằng điện và chính vì vậy có thể nạp lại chương trình mà không cần
tách ra khỏi nền phần cứng VXL. Ưu điểm của bộ nhớ flash là có thể lập trình trực tiếp
trên mạch cứng mà nó đang thực thi trên đó.
Bộ nhớ dữ liệu - RAM
Vùng để lưu hoặc trao đổi dữ liệu trung gian trong quá trình thực hiện chương
trình. Có hai loại RAM được sử dụng trong thực tế là SRAM(static RAM) và
DRAM(dynamic RAM).
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
34
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
35
tương thích với I2C đều có thêm một giao diện tích hợp trên Chip để truyền thông trực
tiếp với các thiết bị tương thích I2C khác. Việc truyền dữ liệu nối tiếp theo hai hướng 8
bit được thực thi theo 3 chếđộ sau:
- Chuẩn (Standard)—100 Kbits/sec
- Nhanh (Fast)—400 Kbits/sec
- Tốc độ cao (High‐Speed)—3.4 Mbits/sec
Đường bus thực hiện truyền thông nối tiếp I 2C gồm hai đường là đường truyền
dữ liệu nối tiếp SDA và đường truyền nhịp xung đồng hồ nối tiếp SCL. Vì cơ chế hoạt
động là đồng bộ nên nó cần có một nhịp xung tín hiệu đồng bộ. Các thiết bị hỗ trợ I 2C
đều có một địa chỉ định nghĩa trước, trong đó một số bit địa chỉ là thấp có thể cấu hình.
Đơn vị hoặc thiết bị khởi tạo quá trình truyền thông là đơn vị Chủ và cũng là đơn vị
tạo xung nhịp đồng bộ, điều khiển cho phép kết thúc quá trình truyền. Nếu đơn vị Chủ
muốn truyền thông với đơn vị khác nó sẽ gửi kèm thông tin địa chỉ của đơn vị mà nó
muốn truyền trong dữ liệu truyền. Đơn vị Tớ đều được gán và đánh địa chỉ thông qua
đó đơn vị Chủ có thể thiết lập truyền thông và trao đổi dữ liệu. Bus dữ liệu được thiết
kế để cho phép thực hiện nhiều đơn vị Chủ và Tớ ở trên cùng Bus.
Quá trình truyền thông I2C được bắt đầu bằng tín hiệu start tạo ra bởi đơn vị
Chủ. Sau đó đơn vị Chủ sẽ truyền đi dữ liệu 7 bit chứa địa chỉ của đơn vị Tớ mà nó
muốn truyền thông, theo thứ tự là các bit có trọng số lớn nhất MSB sẽ được truyền
trước. Bit thứ tám tiếp theo sẽ chứa thông tin để xác định đơn vị Tớ sẽ thực hiện vai
trò nhận (0) hay gửi (1) dữ liệu. Tiếp theo sẽ là một bit ACK xác nhận bởi đơn vị nhận
đã nhận được 1 byte trước đó hay không. Đơn vị truyền (gửi) sẽ truyền đi 1 byte dữ
liệu bắt đầu bởi MSB. Tại điểm cuối của byte truyền, đơn vị nhận sẽ tạo ra một bit xác
nhận ACK mới. Khuôn mẫu 9 bit này (gồm 8 bit dữ liệu và 1 bit xác nhận) sẽ được lặp
lại nếu cần truyền tiếp byte nữa. Khi đơn vị Chủ đã trao đổi xong dữ liệu cần nó sẽ
quan sát bit xác nhận ACK cuối cùng rồi sau đó sẽ tạo ra một tín hiệu dừng STOP để
kết thúc quá trình truyền thông.
I2C là một giao diện truyền thông đặc biệt thích hợp cho các ứng dụng truyền
thông giữa các đơn vị trên cùng một bo mạch với khoảng cách ngắn và tốc độ thấp. Ví
dụ như truyền thông giữa CPU với các khối chức năng trên cùng một bo mạch như
EEPROM, cảm biến, đồng hồ tạo thời gian thực... Hầu hết các thiết bị hỗ trợ I 2C hoạt
động ở tốc độ 400Kbps, một số cho phép hoạt động ở tốc độ cao vài Mbps. I 2C khá
đơn giản để thực thi kết nối nhiều đơn vị vì nó hỗ trợ cơ chế xác định địa chỉ.
- SPI
SPI là một giao diện cổng nối tiếp đồng bộ ba dây cho phép kết nối truyền
thông nhiều VĐK được phát triển bởi Motorola. Trong cấu hình mạng kết nối truyền
thống này phảicó một VĐK giữ vai trò là Chủ (Master) và các VĐK còn lại có thể
hoặc là Chủ hoặc là Tớ. SPI có 4 tốc độ có thể lập trình, cực và pha nhịp đồng hồ khả
trình và kết thúc ngắt truyền thông. Nhịp đồng hồ không nằm trong dòng dữ liệu và
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
36
phải được cung cấp như một tín hiệu tách độc lập. Có ba thanh ghi SPSR, SPCR và
SPDR cho phép thực hiện các chức năng điều khiển, trạng thái và lữu trữ. Có bốn chân
cơ bản cần thiết để thực thi chuẩn giao diện truyền thông này.
- Dữ liệu ra MOSI (Master Output – Slave Input)
- Dữ liệu vào MISO (Master Input – Slave Output)
- Nhịp xung chuẩn SCLK (Serial Clock)
- Lựa chọn thành phần tớ SS (Slave Select)
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
37
ứng dụng một đơn vị Chủ và một đơn vị Tớ. Tuy nhiên trong các ứng dụng với nhiều
đơn vị Tớ việc thực thi lại khá phức tạp vì thiếu cơ chế xác định địa chỉ, và sự phức
tạp sẽ tăng lên khi số đơn vị Tớ tăng.
3.2. Một số nền phần cứng thông dụng
Hiện trên thị trường có rất nhiều nhà sản xuất phát triển nhiều loại chip
VXL/VĐK nhúng khác nhau, mỗi loại đều có những tính năng và ưu việt riêng. Trong
thực tế mỗi dòng chip ra đời được thiết kế chuyên biệt cho một phân khúc ứng dụng
nào đấy, vì thế không có một nguyên tắc chung hay một loại VXL/VĐK chung cho
mọi bài toán. Tuỳ vào khả năng và nhiệm vụ cụ thể của hệ thống mà ta chọn lựa loại
chip phù hợp. Trong một số bài toán và một số dòng chip thì sự phân biệt giữa các
chip là không rõ dàng, nghĩa là có thể việc sử dụng các chip khác nhau nhưng mạng lại
hiệu qua như nhau.
Ngoài vi xử lý của máy tính, ta có thể phân loại ra hai dòng chip nhúng là vi xử
lý nhúng và vi điều khiển nhúng. Vi xử lý nhúng được sử dụng rộng rãi với thị phần
lớn nhất hiện nay là ARM, còn vi điều khiển thì có nhiều loại như AVR, PIC, 8051,...
Tuy nhiên trong phạm vi bài giảng này chi trình bày tóm lược 3 loại chip là PIC, 8051
và ARM
3.3.1. Họ vi điều khiển 8051
Vi điều khiển 8051 là vi điều khiển 8bit được intel giới thiệu vào năm 1981,
hiện nay họ 8051 được phát triển thành nhiều dòng với các đặc tính khác nhau về cấu
hình, số các module tích hợp sẵn,…, một số dòng điển hình như 8052, 8031. Ngoài ra
có rất nhiều hãng sãn xuất chip có kiến trúc tương thích với 8051 như Philip, Atmel,..
Tuy nhiên cấu trúc chung của một chip họ 8051 có thể được biểu thị như hình 20.
Hình 16: Cấu trúc tông quan của vi điều khiển họ 8051 của intel
Một số đặc tính chung của chip họ 8051:
- Dải điện áp hoạt động 4.0V đến 5.5V
- Tần số hoạt động: 0 Hz to 33 MHz
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
38
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
39
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
40
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
41
- Là công nghệ có chức năng nhân cứng (MCA0 cho phép phát triển các
thuật toán xử lý nhanh các phép tính như của chip DSP (Digital Signal
Processing).
- Đầu tư cho các công cụ phát triển, hệ thống phần mền thiết kế chip và
các IP (Intellectual Properties) rẻ hơn nhiều so với các công cụ phát triển
và phần mền thiết kế FPGA.
Mộ số đặc tính PSoC CY8C29466
- Vi xử lý kiến trúc Harvard mạnh mẽ
- Tốc độ tối đa M8C lên đến 24 MHz
- Hai bộ nhân 8x8, 32bit tích lũy
- Điện áp hoạt động 3V đến 5.25V
- 12 khối tương tự:
Chuyển đổi ADC lên đến 14-bit (ADCs)
Chuyển đổi DAClên đến 9-bit (DACs)
Bộ khuếch đại lập trình được (PGAs)
Bộ so sánh là lọc lập trình được
- 16 khối số:
Timer/counter 8 đến 32-bit, và điều chế độ rộng xung (PWMs)
Có các bộ kiểm tra lỗi CRC và PRS
Lên đến 4 bộ truyền thông (UARTs)
Nhiều bộ truyền thông SPI chủ và tớ
Có thể kết nối đến tất cả các chân như là chân ra vào số đa dụng
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
42
Hình 17: Một vài sản phẩm công nghệ tiêu biểu ứng dụng bộ xử lý ARM
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
43
MPU
ARM966E-S không có cache, TCMs
ARM968E-S không có cache, TCMs
ARM926EJ-S Jazelle DBX thay đổi được, TCMs, 220 MIPS @ 200
MMU MHz
ARM996HS Clockless không caches, TCMs,
processor MPU
ARM10E ARM1020E (VFP) 32KB/32KB, MMU
ARM1022E (VFP) 16KB/16KB, MMU
ARM1026EJ-S Jazelle DBX variable, MMU or MPU
ARM11 ARM1136J(F)-S SIMD, Jazelle variable, MMU
DBX, (VFP)
ARM1156T2(F)- SIMD, Thumb- thay đổi được, MPU
S 2, (VFP)
ARM1176JZ(F)- SIMD, Jazelle thay đổi được,
S DBX, (VFP) MMU+TrustZone
ARM11 MPCore 1-4 core SMP, thay đổi được, MMU
SIMD, Jazelle
DBX, (VFP)
Cortex Cortex-A8 Application variable (L1+L2), lên đến 2000 (2.0
profile, NEON, MMU+TrustZone DMIPS/MHz in speed
Jazelle RCT, from 600 MHz to
Thumb-2 greater than 1 GHz)
Cortex-R4 Embedded variable cache, MMU 600 DMIPS
profile optional
Cortex-M3 Microcontroller no cache, (MPU) 120 DMIPS @
profile 100MHz
XScale 80200/IOP310 I/O Processor
/IOP315
80219
IOP321
IOP33x
PXA210/ Applications
PXA250 processor
PXA255 32KB/32KB, MMU 400 BogoMips @400
MHz
PXA26x
PXA27x 800 MIPS @ 624
MHz
PXA800(E)F
Monahans 1000 MIPS @ 1.25
GHz
PXA900
IXC1100 Control Plane
Processor
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
44
IXP2400/
IXP2800
IXP2850
IXP2325/
IXP2350
IXP42x
IXP460/IXP465
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
45
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
46
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
47
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
48
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
49
Loại
Tên Chân Loạ
Bộ Giải thích
chân số i IO
đệm
MCLR 1 I ST Chân reset PIC, PIC sẽ reset khi chân này mức
thấp
VPP 1 I ST Chân lập trình (nạp PIC), ngõ vào điện áp cao
OSC1 13 I ST Dao động thạch anh đầu vào hoặc nguồn đầu vào
đồng hồ bên ngoài. Bộ đệm ST khi cấu hình
trong chế độ RC, CMOS khác.
OSC2 14 O - Đầu ra của bộ dao động thạch anh
VDD 11, P Nguồn 5v cho PIC và logic 1 cho các IO
32
VSS 12, P Mass cho PIC và các mức logic 0 cho IO
31
CLKI 13 I CMOS Nguồn dao động từ bên ngoài vào. Luôn luôn kết
hợp với chức năng OSC1 pin. (Xem liên quan
chân OSC1/CLKI, OSC2/CLKO)
CLKO 14 O - Trong chế độ RC, chân OSC2 xuất xung ra
CLKO, trong đó có tần số bằng 1/4 của OSC1 và
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
50
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
51
Trong đó:
TTL = TTL tương thích với đầu vào ST = Schmitt Trigger đầu vào với mức
CMOS
O = ra, I=vào P = Power
OD = Open Drain (không có diode P nối tới vdd) CMOS = CMOS compatible
input or outpu
3.3.5.3. Sơ đồ khối:
Sơ đồ khối của PIC 18F452 như hình 25
Cấu trúc bộ nhớ của 18F452:
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
52
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
53
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
54
3.3.5.4. Vào ra số
Để xuất/nhập cổng vào ra của PIC, ta phải thông qua 3 thanh ghi:
TRISx: TRISA, TRISB, TRISC,… để xác định hướng vào/ra. Nếu bit nào đó
của TRISx =1 thì bít tương ứng của cổng x sẽ là cổng vào, và ngược lại.
PORTx: PORTA, PORTB, PORTC,… để nhập (có thể xuất) giá trị ra cổng
LATx: LATA, LATB,..để xuất giá trị ra cổng
Điện trở treo của cổng RB, có thể được sử dụng thông qua lập trình cho thanh ghi
INTCON2
Cổng RB còn có tính năng tạo ngắt on-change, tức là nếu có bất kỳ thay đổi gì
trên chân RBi thì sẽ sinh ngắt, nên rất thuận lợi cho việc ghép nối với phím bấm.
3.3.5.5. Timer
a) Timer0
Khối Timer0 có các tính năng:
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
55
Có thể lựa chọn băng phần mềm bộ timer hoạt động dạng 8-bit hoặc 16 bit
timer/counter
Có thể đọc hoặc ghi
Có thể lựa chọn tần số bằng cách đặt tham số prescale
Nguồn xung clock có thể lựa chọn nội hay ngoại
Ngắt tràn từ FFh xuống 00h ở chế độ 8 bit và FFFFh xuống 0000h trong chế độ
16 bit
Có thể chọn cạnh cho nguồn dao động ngoài
Các thanh ghi liên quan:
Timer0 có thể làm việc ở 2 chế độ 8bit/16bit thông qua lập trình:
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
56
b) Timer1
Timer1 là bộ timer 16bit với các thanh ghi liên quan như sau:
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
57
d) Timer 3
Khối Timer 3 có các tính năng:
Timer 16 bit (2 thanh ghi 8-bit, TMR3H và TMR3L)
Có thể đọc/ghi
Ngắt khi tràn từ FFFFh về 0000h
Các thanh ghi có liên quan:
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
58
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
59
Trong đó:
Desired Baud Rate: tốc độ baud yêu cầu
Solving for X: Tìm X
Calculated Baud Rate : Tính tốc độ baud
Error: lỗi
Truyền thông không đồng bộ, có khung truyền 1-bit start, 8 hay 9 bit dữ liệu, 1-
bit stop. UART truyền bit LSB trước. Bộ truyền nhận bắt buộc phải có cùng khung
truyền và tốc độ baud. Bộ tạo tốc độ baud sinh ra một xung nhịp để dịch bit, có thể
nhân tốc độ x16 hoặc x64, phụ thuộc vào bit BRGH (TXSTA<2>). Truyền thông nối
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
60
tiếp không hỗ trợ Parity bằng phần cứng, nếu muốn, có thể tính bằng phần mềm, thông
qua bit thứ 9. Truyền thông sẽ ngừng khi ở chế độ ngủ (SLEEP).
Bộ truyền dữ liệu nối tiếp USART:
Bộ truyền thông nối tiếp truyền thanh ghi dịch TSR. Thanh ghi dịch là bộ đệm
chứa dữ liệu đọc/ghi truyền, TXREG. TXREG chứa dữ liệu khi muốn truyền bằng lập
trình phần mềm. Thanh ghi TSR sẽ không được cập nhật dữ liệu cho đến khi bit STOP
truyền hết. Khi TXREG truyền dữ liệu đi và cập nhật nó vào thanh ghi TSR, TXREG
sẽ rỗng, và cờ TXIF (PIR1<4>) được lập (và không thể xóa bằng phần mềm, nó chỉ
được xóa khi có dữ liệu mới ghi vào TXREG). Ngắt này được bật/tắt bởi bit TXIE
(PIE1<4>).
Thứ tự thiết lập truyền dữ liệu:
Khởi tạo thanh ghi tốc độ baud: SPBRG, nếu muốn truyền tốc độ cao,
BRGH=1
Cho phép truyền thông: SYNC=0 và SPEN=1
Nếu cần ngắt: TXIE=1
Nếu cần truyền thông 9 bit: TX9=1
Cho phép truyền: TXEN=1, TXIF=1
Nếu bit thứ 9 được chọn, TX9D sẽ được nạp
Ghi dữ liệu vào TXREG để truyền đi
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
61
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
62
Nếu dùng ngắt, chắc chắn rằng bit GIE=1 và PEIE=1 trong thanh ghi
INTCON (INTCON<7:6>)
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
63
• A/D Control Register 1 (ADCON1): Dạng kết quả, tần số chuyển đổi, chọn chân
A/IO, Vref,…
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
64
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
65
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
66
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
67
Xung nhịp dao động của PIC, được chia cho 4 trước khi đưa vào hệ thống.
Chân MCLR:
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
68
7402 – NOR
7404 – Not
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
69
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
70
Nhóm đếm
74HC193 – bộ đếm nhị phâ n
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
71
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
72
74LS148 – Mã hó a 8 về 3-bit
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
73
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
74
Sơ đồ khối nguyên lý
741
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
75
ULN2803
b. Cảm biến
Cả m biến nhiệt độ
Cả m biến á nh sá ng
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
76
1.0 LDR1
LDR
Cả m biến hồ ng ngoạ i
Cả m biến tiệm cậ n
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
77
b. LED 7 thanh
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
78
c. LCD
d. LED ma trận
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
79
b. DAC
DAC0808: DAC0808/DAC0807/DAC0806 8-Bit D/A Converters
DS12C887A
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
80
L298
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
81
c. IC truyền thông
Chuẩ n RS232: Max 232
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
82
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
83
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
84
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
85
U2
+10V
10
RE2/CS/AN7
9
RE1/WR/AN6
40 8
39
RB7/PGD RE0/RD/AN5 U1 R1 R3
RB6/PGC
38 30 5 14
RB5/PGM RD7/PSP7 A1 VREF+
37 29 6 R2
RB4 RD6/PSP6 A2 5.00k 5.00k
36 28 7 15
RB3/CCP2B RD5/PSP5 A3 VREF-
35 27 8
RB2/INT2 RD4/PSP4 A4 1k
34 22 9 4 DAC out
RB1/INT1 RD3/PSP3 A5 IOUT
33 21 10
RB0/INT0 RD2/PSP2 A6
20 11 16
RD1/PSP1 A7 COMP
14 19 12 3
RA6/OSC2/CLKO RD0/PSP0 A8 VEE
7
RA5/AN4/SS/LVDIN
6
RA4/T0CKI RC7/RX/DT
26 DAC0808 C1
5 25 0.1u
RA3/AN3/VREF+ RC6/TX/CK
4 24
RA2/AN2/VREF- RC5/SDO
3 23
RA1/AN1 RC4/SDI/SDA
2 18
RA0/AN0 RC3/SCK/SCL
17
RC2/CCP1
1 16
MCLR/VPP RC1/T1OSI/CCP2A
13 15
OSC1/CLKI RC0/T1OSO/T1CKI
-5V
PIC18F452
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
86
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
87
Sơ đồ đo nhiệt độ
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
88
* Bộ phận vẽ mạch in. Bộ phận vẽ mạch nguyên lý cho biết tính đúng đắn về sự liên
kết đường mạch. Bộ phận này sẽ xuất ra một tập tin (thường gọi là netlist) để chuyển
cho bộ phận vẽ mạch in. Bộ phận vẽ mạch in sẽ chuyển hóa các biểu tượng linh kiện
thành các linh kiện các kích thước, hình dạng cơ học chính xác như linh kiện thật và
đồng thời đánh dấu các chân linh kiện được kết nối với nhau.
Các tính năng cơ bản mà một phần mềm thiết kế mạch in đáp ứng:
* Tạo hình dạng và kích thước bản mạch
* Cho phép nhập thư viện linh kiện. Cho phép tạo thư viện linh kiện mới.
* Xoay, lật linh kiện
* Kiểm tra các xung đột mạch như: khoảng cách tối thiểu giữa hai linh kiện; khoảng
cách tối thiểu giữa hai đường mạch; chập đường mạch như chân đất đấu với chân
nguồn;...
* Tự động chạy đường mạch
Quy trình thiết kế mạch in
Sau đây là các bước cơ bản để hoàn thiện việc thiết kế mạch in trên phần mềm:
* Thiết kế mạch nguyên lí, xuất ra một tập tin chuẩn (netlist)
* Nhập tập tin chuẩn vào bộ phận thiết kế mạch in
* Sắp xếp linh kiện.
* Đi dây đường mạch
* Kiểm tra các xung đột mạch
j. Altium Designer
Altium Limited (ASX:ALU) là nhà phát triển giải pháp thiết kế điện tử với
phương châm hợp nhất các quá trình thiết kế vào một môi trường phát triển hợp nhất.
Các sản phẩm của Altium cho phép tất cả các kỹ sư điện tử, các kỹ sư thiết kế, phát
triển, và các tổ chức có thể tận dụng tối đa các lợi thế của công nghệ thiết kế tiên tiến,
tạo ra những sản phẩm thông minh hơn và thời gian đưa ra thị trường nhanh hơn
Altium Designer là một hệ thống phát triển điện tử thống nhất đầu tiên trên thế
giới cho phép các kỹ sư thiết kế sản phẩm điện tử từ những khái niệm ban đầu cho đến
khi hoàn thành mạch in cuối cùng trong một môi trường đơn nhất.
Altium Designer cung cấp một ứng dụng kết hợp tất cả công nghệ và chức năng
cần thiết cho việc phát triển sản phẩm điện tử hoàn chỉnh, như thiết kế hệ thống ở mức
bo mạch và FPGA, phát triển phần mềm nhúng cho FPGA và các bộ xử lý rời rạc, bố
trí mạch in (PCB)… Altium Designer thống nhất toàn bộ các quá trình lại và cho phép
bạn quản lý được mọi mặt quá trình phát triển hệ thống trong môi trường tích hợp duy
nhất. Khả năng đó kết hợp với khả năng quản lý dữ liệu thiết kế hiện đại cho phép
người sử dụng Altium Designer tạo ra nhiều hơn những sản phẩm điện tử thông minh,
với chi phí sản phẩm thấp hơn và thời gian phát triển ngắn hơn.
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
89
Altium Designer là hệ thống phát triển các sản phẩm điện tử cho các thiết kế
điện tử công nghiệp, phá bỏ mọi rào cản gây bởi các quá trình thiết kế riêng rẽ và hợp
nhất các công đoạn thiết kế trong một môi trường phát triển sản phẩm duy nhất - thiết
kế phần cứng, phần cứng khả trình, phần mềm nhúng. Môi trường thiết kế hợp nhất
Altium Designer tận dụng những công nghệ điện tử tiên tiến nhất, chuyển sang
phương pháp ‘thiết kế mềm’ mà không cần kỹ năng quá chuyên nghiệp về sử dụng và
thiết kế các thiết bị khả trình. Điều này cho phép các công ty tăng sự linh hoạt của thiết
kế giảm giá thành sản phẩm và thời gian đưa sản phẩm ra thị trường. Altium Designer
cũng hỗ trợ khả năng tự do chuyển đổi giữa các linh kiện khả trình của nhiều nhà sản
xuất khác nhau, tại bất kỳ thời điểm nào. Altium Designer cũng làm giảm tổng chi phí
phát triển khi không cần tích hợp thêm những thiết bị với giá cao để tăng thêm tính
năng hoặc tạo một giải pháp hoàn chỉnh.
k. OrCAD
OrCAD — gói phần mềm dùng để tự động hóa thiết kế điện tử. Được dùng chính
trong chế tạo các bản điện tử mạch in để chế tạo mạch in, cũng như để tạo các sơ đồ
điện tử và các chế bản của chúng.
Tên gọi OrCAD được tạo ra từ các từ Oregon và CAD.
Các sản phẩm của chuỗi OrCAD thuộc về công ty Cadence Design Systems. Bản cuối
cùng của OrCAD có khả năng tạo và hỗ trợ cơ sở dữ liệu các vi mạch sẵn có. Cơ sở dữ
liệu có thể được bổ sung bằng cách tải về các gói các thành phần sản xuất, như Texas
Instruments.
Trong gói có các module sau:
Capture — biên tập các sơ đồ nguyên lý,
Capture CIS Option — điều hành các thư viện Active Parts,
PSpice Analog Didital — gói của chế bản tương tự-số,
PSpice Аdvanced Аnalysis — gói của tối ưu tham số,
PSpice SLPS option — giao diện liên lạc với gói Matlab,
PCB Designer — biên tập các топологий các mạch in,
SPECCTRA for OrCAD — chương trình của трассировки tương tác và tự
động,
Signal Explorer — module phân tích sự nguyên vẹn của các tín hiệu và của các
biến dạng giao
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
90
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
91
o. Máy Oscilloscope
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
92
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
93
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
94
}
4.2.3. Các kiểu dữ liệu
Các kiểu dữ liệu được hỗ trợ :
int1: số 1 bit = true hay false ( 0 hay 1)
int8: số nguyên 1 byte ( 8 bit)
int16: số nguyên 16 bit
int32: số nguyên 32 bit
char: ký tự 8 bit
float: số thực 32 bit
short: mặc định như kiểu int1
byte: mặc định như kiểu int8
int: mặc định như kiểu int8
long: mặc định như kiểu int16 5
Cách khai báo số có dấu và không dấu, cách khai báo biến tương tự cấu trúc C
đã học. Tuy nhiên với VĐK PIC cần chú ý khi khai báo mảng, nếu loại PIC sử dụng là
PIC 14 (ví dụ 16F877) thì tất cả các biến mảng không được phép quá 256Byte. Với
PIC 18 thì kích thước mảng chỉ phục thuộc vào kích thước của RAM.
4.2.4. Một số chỉ thị tiền xử lý
1. #asm và #endasm
- Chức năng: Cho phép đặt mã assembly giữa 2 mã này
- Cú pháp:
#asm
Begin:
// mã ASM
……
Begin _return_
#endasm
2. #include
- Chức năng: Khai bao sử dụng hay kế thừa các khai báo, các hàm chức
năng có sẵn từ 1 file khác
- Cú pháp:
#include <filename.h> hoặc #include <filename.c>
3. #BIT , #BYTE , #LOCATE và # DEFINE
Các chỉ thị #byte, #bit, #locate là định nghĩa một nhãn thay cho một địa chỉ vật
lý cụ thể, sau định nghĩa này người lập trình chỉ cần sử dụng nhãn đã khai báo sẽ
tương tự như việc dùng địa chỉ vật lý. Bản chất công việc này do trình biên dịch thực
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
95
hiện, nó sẽ thay thế các dòng lệnh trong chương trình có các nhãn bằng địa chỉ vật lý
đã khai báo. Giống việc khai báo Macro.
Ví dụ:
#bit motor 0x1A.2 // khai báo nhãn “motor” thay cho bit thứ 2 trong byte 0x1A
#byte data 0x62 // khai báo nhãn “data” thay cho byte có địa chỉ 0x62
#locate data2 0x01 // khai bão nhãn data2 thay cho byte có địa chỉ 0x01, locate chỉ
khác #byte ở chỗ là địa chỉ khái báo cho nhãn (ở đây là 0x01) sẽ không cho trình biên
dịch cấp phát vào việc khác.
Chỉ thị # DEFINE khai báo một macro, hay khai báo một nhãn cho một chuỗi
số hay văn bản nào đó, sau đó trong chương trình ơ đâu có nhãn này sẽ được trình biên
dịch thay bằng chuỗi đã khai báo
Ví dụ:
#define a 12345 // khai báo nhãn a thay cho 12345
4. # DEVICE
- Chức năng: Khai báo loại chip và tùy chọn cấu hình cho ADC hoặc ngắt. Chú
ý nếu là khai báo thiết bị dùng chỉ thị #include thì không dùng chỉ thị này nữa.
- Cú pháp: #device chip option. Trong đó
o Chip: *5, *8, *16 (khai bao con trỏ biến, cho biết kích thước tối đa của
biến được khia báo)
o Option: các tùy chọn nếu
ADC=x trong đó x=8,10,12,… cho biết độ phân giải muốn sử
dụng của ADC, giá trị x tối đa tùy thuộc vào từng loại chip
HIGH_INTS = TRUE cho phép ngắt có độ ưu tiên cao
Ví dụ: #device *16 ADC=10
5. # ORG
- Chức năng: đặt các hàm khai báo sau chỉ thị này tại đúng địa chỉ ROM được
chỉ ra.
- Cú pháp:
o # org start , end //hàm nằm trong khoảng start đến end
o # org segment //hàm nằm tùy ý trong khoảng từ segment đến hết
ROM
o #org start , end { } // vùng từ start đến end không dùng
Ví dụ:
Org 0x30 , 0x1F
Void xu_ly( )
{
} // // hàm này bắt đầu ở địa chỉ 0x30
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
96
6. # USE DELAY
- Chức năng khai báo giá trị tần số thạch anh dùng cho hàm delay (tần số này
phải trùng với tần số thạch anh ghép nối với chip)
- Cú pháp: # USE delay ( clock = speed )
Ví dụ: dùng thạch anh dao động 40Mhz thì : #use delay( clock = 40000000)
7. #USE I2C
- Chức năng: Khai báo sử dụng chuẩn truyền thông nối tiếp I2C
- Cú pháp: #use I2C ( options )
Option bao gồm các thông số sau, cách nhau bởi dấu phẩy :
- Master : chip ở chế độ master
- Slave : chip ở chế độ slave
- SCL = pin : chỉ định chân SCL
- SDA = pin : chỉ định chân SDA
- ADDRESS =x : chỉ định địa chỉ chế độ slave
- FAST : chỉ định FAST I2C
- SLOW : chỉ định SLOW I2C
- RESTART_WDT : restart WDT trong khi chờ I2C_READ( )
- FORCE_HW : sử dụng chúc năng phần cứng I2C ( nếu chip hỗ trợ )
- NOFLOAT_HIGH : không cho phép tín hiệu ở float high ( ??? ) , tín hiệu
được lái từ thấp lên cao.
- SMBUS : bus dùng không phải bus I2C , nhưng là cái gì đó tương tự .
Ví dụ: #use I2C ( master , sda=pin_B0 , scl = pin_B1 )
#use I2C (slave , sda= pin_C4 , scl= pin_C3 , address = 0xa00 , FORCE_HW )
8. #USE RS232
- Chức năng: Khai báo sử dụng chuẩn truyền thông nối tiếp RS232
- Cú pháp: #use RS232 (option)
Option thông dụng bao gồm :
- BAUD = x : thiết lập tốc độ baud rate : 19200 , 38400 , 9600 , . . .
- PARITY = x : x= N ,E hay O , với N : không dùng bit chẵn lẻ .
- XMIT = pin : set chân transmit ( chuyển data)
Ví dụ : #use rs232(baud=19200,parity=n,xmit=pin_C6,rcv=pin_C7)
4.2.5. Hàm tạo trễ DELAY
Để sử dụng các hàm delay, cần có khai báo tiền xử lý ở đầu file, VD : sử dụng
OSC 20 Mhz, bạn cần khai báo: #use delay ( clock = 20000000 ). Khai báo này là cơ
sở để hàm delay tính toán độ trễ chính xác.
a) delay_cycles (count ): Hàm dùng delay 1 số chu kỳ lệnh cho trước
Trong đó Count là hằng số từ 0 – 255 chi số chu kỳ lệnh cần trễ (1 chu kỳ lệnh
bằng 4 chu kỳ máy). Hàm không trả về trị.
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
97
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
98
AN0_AN1_AN2_AN3_AN4 : A0 A1 A2 A3 A5
AN0_AN1_AN3 : A0 A1 A3 , Vref = Vdd
AN0_AN1_VSS_VREF : A0 A1 VRefh = A3
AN0_AN1_AN4_AN5_AN6_AN7_VREF_VREF : A0 A1 A5 E0 E1 E2
VRefh=A3 , VRefl=A2 .
AN0_AN1_AN2_AN3_AN4_AN5 : A0 A1 A2 A3 A5 E0
AN0_AN1_AN2_AN4_AN5_VSS_VREF : A0 A1 A2 A5 E0 VRefh=A3
AN0_AN1_AN4_AN5_VREF_VREF : A0 A1 A5 E0 VRefh=A3 VRefl=A2
AN0_AN1_AN4_VREF_VREF : A0 A1 A5 VRefh=A3 VRefl=A2
AN0_AN1_VREF_VREF : A0 A1 VRefh=A3 VRefl=A2
AN0 : A0
AN0_VREF_VREF : A0 VRefh=A3 VRefl=A2
3) Set_ADC_channel ( channel ); // chọn kênh trước khi đọc giá trị AD
Trong đó channel có giá trị từ 0-7 tương ứng với 8 kênh ADC (với 18F452) như
sau:
0-chân A0 4-chân A5
1-chân A1 5-chân E0
2-chân A2 6-chân E1
3-chân A3 7-chân E2
4) Read_ADC ( mode ); // đọc giá trị ADC từ kệnh được chọn qua hàm
set_adc_channel
Mode có thể có hoặc không, nếu có thì nhận một trong 3 giá trị sau:
ADC_START_AND_READ : giá trị mặc định
ADC_START_ONLY : bắt đầu chuyển đổi và trả về
ADC_READ_ONLY : đọc kết quả chuyển đổi lần cuối
Giá trị hàm trả về là 8 bít nếu ADC là 8bit, là 16bit nếu ADC lớn hơn 8 bit
Ví dụ: Chương trình ví dụ sau câu hình kênh AN0 hoặt động ở chế độ ADC 8bit,
chương trình luôn đọc giá trị từ AN0 và gửi ra cổng D.
Sơ đồ mạch trên proteus
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
99
Chương trình
#include <18F452.h >
#device ADC=8 // cấu hình ADC với độ phân giải 8bit
void main ( )
{
setup_adc(ADC_CLOCK_INTERNAL); // tần số lấy mẫu lad OSC
setup_adc_ports(AN0); // cho phép AN0 làm việc
set_tris_D(0x00); // đặt cổng D là cổng ra
set_adc_channel(0); // chọn cổng AN0 để đọc dữ liệu
while(1)output_D(read_adc()); // đọc AN0 và đưa ra cổng D
}
4.2.7. Các hàm truy xuất vào ra
1) Output_low (pin) , Output_high (pin): Thiết lập mức 0 (low, 0V) hay mứ c 1
(high , 5V) cho chân IC với pin chỉ vị trí chân.
VD : chương trình xuất xung vuông chu kỳ 500ms , duty =50% ra chân B0 ,nối B0 với
1 led sẽ làm nhấp nháy led:
Sơ đồ mạch trên proteus
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
100
Chương trình
#include <18F452.h>
#use delay(clock=20000000)
void main(){
while(1)
{
output_high(pin_B0); // B0=1
delay_ms(250); // tre 250ms
output_low(pin_B0); //B0=0
delay_ms(250); // te 250ms
}
}
2) Output_bit ( pin , value ); // hàm gửi giá trị value ra chân pin với value là biến 1
bit
VD: Chương trình sau kiểm tra nếu button ở A0=1 thì bật led ở B0, trái lại tắt.
Mạch trên proteus
Chương trình
#include <18F452.h>
#use delay(clock=20000000)
void main(){
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
101
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
102
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
103
VD:
disable_interrupts (int_timer0);// cho phép ngắt timer 0 làm việc
disable_interrupts (int_timer1 ) ;// cho phép ngắt timer 1 làm việc
disable_interrupts ( global );// cho phép ngắt toàn cục
3) clear_interupt (int_); // xóa cờ ngắt
VD:
Clear_interrupts(int_time0);// xóa cờ ngắt của timer0
4) ext_int_edge ( source , edge ); // thiết lập nguồn ngắt cho ngắt ngoại vi
Trong đó:
- source: ngắt được thiết lập, với PIC 18 có 3 ngắt ngoại vi EXT0, EXT1, EXT2
tương ứng với source = 1, hoặc 2, hoặc 3.
- edge: = L_TO_H ngắt tại cạnh dương, = H_TO_L ngắt tại cạnh âm
e) Một ví dụ
Ví dụ đơn giản chi bắt ngắt trên cổng B (bất kỳ tín hiệu nào xuất hiện tiừ B4-
B7) sau đó đưa ra vị trí tương ứng nhưng trên cổng D. Trong chương trình này dễ dàng
nhận thấy chương trình chính không làm gì, chỉ khi có ngắt chip mới thực hiện đọc giá
trị từ B đưa ra D.
Mạch trên proteus
Chương trình
#include <18C452.h >
#device *=16
#use delay (clock = 20000000 )
#INT_RB // khai bao su dung ngat thay do trang thai tren cong B
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
104
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
105
thực hiện một công việc không sinh công để sinh ra thời gian cần trễ, việc này làm tổn
hao hiệu xuất của CPU và không thích hợp với các hệ thống yêu cầu thời gian thực,
còn với chức năng định thời của các timer thì CPU vẫn có thể làm một việc khác trong
khi việc định thời giao cho Timer thực hiện, hay nói cách khác CPU và timer lúc này
cùng thực hiện song song.
Chức năng counter hay còn gọi là đếm sự kiện, lúc này bộ timer phải được cấu
hình lấy nguồn xung đếm từ các chân ngoại vi, timer sẽ trở thành các bộ couter dùng
cho việc đếm xác xung đầu vào được gửi về từ các sensor số.
Các hàm xử lý timer0:
1) setup_timer_0 (mode); // hàm cấu hình cho timer0
Trong đó : mode có thể là 1 hoặc 2 trong 2 nhóm tham số sau:
- RTCC_INTERNAL, RTCC_EXT_L_TO_H hoặc RTCC_EXT_H_TO_L
- RTCC_DIV_2, RTCC_DIV_4, RTCC_DIV_8, RTCC_DIV_16,
RTCC_DIV_32, RTCC_DIV_64, RTCC_DIV_128, RTCC_DIV_256
- Nếu là PIC18 có thêm: RTCC_OFF, RTCC_8_BIT
Khi sử dụng 2 hằng số phải được ghép bằng phép hoặc “|”.
VD: setup_timer_0 (RTCC_DIV_2|RTCC_EXT_L_TO_H);
2) set_timer0(value) ; // thiết lập giá trị đếm cho timer, lưu ý là tất cả các bộ timer
đều đếm tiến, khi bị tràn timer lại tiếp tục đếm từ 0. Value là giá trị nạp, cần lưu
ý value là 8 bit nếu timer là 8bit, 16bit nếu timer là 16bit.
3) get_timer0; // hàm trả về giá trị hiện thời của timer0.
Ví dụ: Một ví dụ đơn giản sửu dụng ngắt timer1
#if defined(__PCM__)
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#elif defined(__PCH__)
#include <18F452.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#endif
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
106
void main() {
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); // Chọn nguồn xung hệ thống
enable_interrupts(INT_TIMER1); // cho phép ngắt timer1
enable_interrupts(GLOBAL);
while(TRUE); // chương trình chính không làm gì
}
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
107
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
108
#use delay(clock=40000000)
#use rs232(baud=9600 , parity=n , xmit=pin_C6 , rcv=pin_C7 )
unsigned int8 data;
void main ( )
{
set_tris_D(0x00);
while(1){
while(!kbhit());
data=getch();
output_D(data);
}
}
Sơ đồ mạch mô phỏng trên Proteus
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
109
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
110
Như chúng ta đã được biết đối với các hệ thống thời gian thực, yêu cầu thiết kế
một hệ điều hành khá đặc biệt. Hệ nhúng thời gian thực lại yêu cầu hệ điều hành phải
thực hiện với một nguồn tài nguyên thường rất hạn hẹp. Mặc dù kích thước bộ nhớ
tích hợp on‐chip sẽ có thể tăng lên trong tương lai nhưng với sự phát triển hiện nay hệ
điều hành cho các hệ nhúng chỉ nên cỡ khoảng nhỏ hơn 32 Kbytes.
Hệ thống điều hành đảm nhiệm việc điều khiển các chức năng cơ bản của hệ
thống bao gồm chủ yếu là quản lý bộ nhớ, ngoại vi và vào ra giao tiếp với hệ thống
phần cứng. Một điểm khác biệt cơ bản như chúng ta đã biết về hệ điều hành với các
phần mềm khác là nó thực hiện chức năng điều khiển sự kiện thực thi trong hệ thống.
Có nghĩa là nó thực hiện các tác vụ theo mệnh lệnh yêu cầu từ các chương trình ứng
dụng, thiết bị vào ra và các sự kiện ngắt.
Bốn nhân tố chính tác động trực tiếp tới quá trình thiết kế hệ điều hành là (1) khả
năng thực hiện, (2) năng lượng tiêu thụ, (3) giá thành, và (4) khả năng tương thích.
Hiện nay chúng ta cũng có thể bắt gặp rất nhiều hệ điều hành khác nhau đặc biệt cho
các hệ nhúng cũng vì sự tác động của 4 nhân tố nêu trên. Hầu hết chúng đều có kiểu
dạng và giao diện khá giống nhau nhưng cơ chế quản lý và thực thi các tác vụ bên
trong rất khác nhau. Mỗi hệ điều hành được thiết kế phục vụ trực tiếp các chức năng
đặc thù phần cứng của hệ nhúng và không dễ dàng so sánh được giữa chúng với nhau.
Hai thành phần chính trong thiết kế hệ điều hành là: phần hạt nhân (kernel) và
các chương trình hệ thống. Hạt nhân nó chính là phần lõi của hệ điều hành. Nó được
sử dụng để phục vụ cho các bộ quản lý quá trình, bộ lập lịch bộ quản lý tài nguyên và
bộ quản lý vào ra. Phần hạt nhân đảm nhiệm chức năng lập lịch, đồng bộ và bảo vệ hệ
thống bởi việc sử dụng sai, xử lý ngắt…Chức năng điều khiển chính của nó là phục vụ
điều khiển phần cứng bao gồm ngắt, các thanh ghi điều khiển, các từ trạng thái và các
bộ định thời gian. Nó nạp các phần mềm điều khiển thiết bị để cung cấp các tiện ích
chung và phối hợp với các hoạt động vào ra với hệ thống. Phần hạt nhân có vai trò
điều khiển rất quan trọng để đảm bảo tất cả các phần của hệ thống có thể làm việc ổn
định và thống nhất.
Hai kiến trúc thiết kế phần hạt nhân kinh điển nhất là kiến trúc vi hạt nhân và đơn
hạt nhân (monolithic). Các vi hạt nhân cung cấp các chức năng điều hành cơ bản cốt
lõi (thô) theo cơ chế các module tương đối độc lập đảm nhiệm các tác vụ cụ thể và
chuyển rời rất nhiều các dịch vụ điển hình điều hành hệ thống thực thi trong không
gian người sử dụng. Nhờ cơ chế này mà các dịch vụ có thể được khởi tạo hoặc cấu
hình lại mà không nhất thiết phải khởi tạo lại toàn bộ hệ thống. Kiến trúc vi hạt nhân
cung cấp độ an toàn cao bởi vì dịch vụ hệ thống chạy ở tầng người sử dụng với hạn
chế về truy nhập vào tài nguyên của hệ thống và có thể được giám sát. Kiến trúc vi hạt
nhân có thể được xây dựng một cách mềm dẻo để phù hợp với cấu hình phần cứng
khác nhau một cách linh hoạt hơn so với kiểu kiến trúc hạt nhân monilithic. Tuy nhiên
do tính độc lập tương đối giữa các modul trong vi hạt nhân nên cần thiết phải có một
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
111
cơ chế trao đổi thông tin hay truyền thông giữa các modul đó vì vậy có thể là lý do làm
chậm tốc độ và giảm tính hiệu quả hoạt động của hệ thống. Đặc điểm nổi bật và cốt lõi
của kiến trúc vi hạt nhân là kích thước nhỏ và dễ dàng sửa đổi cũng như xây dựng linh
hoạt hơn. Các dịch vụ thực thi ở tầng trên của hạt nhân vì vậy đạt được độ an toàn cao.
Kiến trúc vi hạt nhân được phát triển mạnh mẽ trong các hệ thống đa xử lý ví dụ như
Windows 2000, Mach và QNX.
Kiểu kiến trúc monolithic cung cấp tất cả chức năng/dịch vụ chính yếu thông qua
một qua trình xử lý đơn lẻ. Chính vì vậy kích thước của chúng thường lớn hơn kiểu
kiến trúc vi hạt nhân. Loại hình kiến trúc này thường được áp dụng chủ yếu cho các
phần cứng cụ thể mà hạt nhân monolithic có sự tương tác trực tiếp với phần cứng nhờ
vậy mà khả năng tối ưu cũng dễ dàng hơn so với áp dụng kiểu kiến trúc vi hạt nhân.
Chính vì vậy cũng là lý do tại sao kiến trúc monolithic không thể thay đổi mềm dẻo
linh hoạt như kiểu vi hạt nhân. Ví dụ điển hình về loại hình kiến trúc hạt nhân
monolithic bao gồm Linux, MacOS, và DOS.
Vì hệ điều hành cũng đòi hỏi về tài nguyên và kiêm cả chức năng quản lý chúng
vì vậy người thiết kế cần phải nắm được thông tin về chúng một cách đầy đủ. Ví dụ
như đối với hệ thống điều hành cho Sun Microsystem Solaris yêu cầu tối thiểu không
gian bộ nhớ trên đĩa là 8MB; Windows 2000 yêu cầu khoảng gấp hai lần như vậy.
4.4.2. Bộ nạp khởi tao Boot – loader
Thuật ngữ “bootstrap” bắt nguồn từ cách diễn đạt cổ xưa có nghĩa là tự mình
vươn lên bằng chính nỗ lực của bản thân “pulling yourself up by your own
bootstraps”. Nó đã được sử dụng như một thuật ngữ rất phổ biến để gọi tên một phần
mềm thực thi việc khởi tạo chương trình thực thi trên các nền vi điện tử khả trình nói
chung. Chương trình này thường rất nhỏ gọn và đảm nhiệm chức năng tiền hoạt động
của hệ điều hành. Cũng rất phổ biến hiện nay người ta cũng thường dùng thuật ngữ
“boot‐loader” (bộ nạp khởi tạo) thay vì “bootstrap”. Bộ nạp khởi tạo thực chất là một
chương trình nhỏ thực hiện trong hệ thống và đảm nhiệm chức năng cần thiết để đưa
hệ điều hành vào hoạt động. Trong các hệ nhúng, các lệnh được thực hiện đầu tiên
thường nằm trong các vùng nhớ ROM và thường thuộc loại chậm. Dó đó, một trong
những tác vụ phổ biến của bộ nạp khởi tạo là sao chép chương trình ứng dụng chính
(main program) vào trong vùng bộ nhớ nhanh trước khi chúng được thực hiện. Bộ nạp
khởi tạo cũng có nhiệm vụ khởi tạo vùng nhớ dữ liệu và các thanh ghi hệ thống trước
khi nhảy tới chương trình ứng dụng chính. Cũng có rất nhiều dạng khác nhau của bộ
nạp khởi tạo, từ dạng đơn giản đến phức tạp. Dạng đơn giản nhất có thể chỉ là một
lệnh nhảy tới chương trình ứng dụng chính ngay sau khi reset mà không thực hiện bất
kỳ một tác vụ khởi tạo hay nạp chương trình gì. Chương trình ứng dụng chính sẽ phải
tự thiết lập để thực thi tác vụ của mình. Các bộ nạp khởi tạo phức tạp hơn có thể thực
hiện nhiệm vụ chuẩn đoán bộ nhớ và khởi tạo hệ thống, kiểm tra chương trình và nạp
chúng trước khi cho bộ xử lý nhảy tới thực hiện chương trình ứng dụng chính.
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
112
Sau đây chúng ta sẽ tìm hiểu về một môi trường phát triển khá điển hình và
thảo luận về một số các thuộc tính nguyên lý cơ bản của bộ nạp khởi tạo.
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
113
Boot‐loader cũng có nhiều dạng khác nhau. Hình 21 mô tả một bộ nạp khởi tạo
cho một ứng dụng C nhúng. Trong ví dụ này vector RESET trỏ tới thủ tục c_int00 thực
hiện tác vụ khởi tạo. Ngoài việc khởi tạo các thanh ghi, ngăn xếp… các biến C cũng
cần được khởi tạo trước khi được thực thi. Quá trình này sẽ sao chép từ phần .cinit và
viết vào các địa chỉ dữ liệu tương ứng của chúng trong phần .bss. Sau khi hoàn thành
chương trình chính main() mới được gọi và bắt đầu thực thi. Trong ví dụ đơn giản này
bộ nạp khởi tạo tổ hợp vector RESET cùng với hàm khởi tạo c_int00 và giả thiết rằng
cả chương trình bộ nạp khởi tạo và chương trình ứng dụng chính đều nằm cùng trong
vùng nhớ vật lý non‐volatile. Trong các trường hợp hệ thống phức tạp hơn, bộ nạp
khởi tạo có thể bao hàm cả tác vụ sao chép chương trình chính vào trong vùng nhớ fast
volatile trước khi nó được gọi và thực thi. Bộ nạp khởi tạo cũng có thể đảm nhiệm cả
chức năng chuẩn đoán, gỡ rối và nâng cấp hệ thống nếu có. Chức năng chuẩn đoán có
thể chỉ là kiểm tra bộ nhớ, ngoại vi và độ tương thích tích hợp trong hệ thống. Chức
năng gỡ rối cũng có thể là một giao diện giám sát cung cấp thông tin và trạng thái thời
gian thực về hệ thống mà người ta vẫn thường biết tới với tên gọi là chương trình
monitoring. Việc nâng cấp hoặc thay đổi chương trình bộ nạp khởi tạo cũng có thể
được thực thi nhờ khả năng lập trình FLASH in‐circuit và nạp từ bộ nhớ ngoài thông
qua giao diện với trạm chủ hoặc chức năng tương tự.
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
114
Hệ thống điều hành thời gian thực là hệ điều hành hỗ trợ khả năng xây dựng các
hệ thống thời gian thực.
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
115
(1) Hệ thống thời gian thực nhỏ: Với loại này các phần mềm được phát triển mà không
cần có hệ điều hành, người lập trình phải tự quản lý và xử lý các vấn đề về điều khiển
hệ thống bao gồm:
Xử lý ngắt
Điều khiển quá trình/ tác vụ
Quản lý bộ nhớ
(2) Công nghệ đa nhiệm
Mỗi quá trình có một không gian bộ nhớ riêng
Các quá trình phải được chia nhỏ thành các Thread cùng chia sẻ không gian bộ
nhớ.
(3) Các dịch vụ cung cấp bởi hạt nhân
Tạo và kết thúc quá trình/ tác vụ
Truyền thống giữa các quá trình
Các dịch vụ về định thời gian
Một số các dịch vụ cung cấp hỗ trợ việc thực thi liên quan đến điều khiển
hệthống
Đặc điểm cơ bản của hạt nhân thời gian thực điển hình:
Kích thước nhỏ (lưu trữ toàn bộ trong ROM)
Hệ thống ngắt
Không nhất thiết phải có các cơ chế bảo vệ
o Chỉ hỗ trợ phần kiểm tra chương trình ứng dụng
o Tăng tốc độ chuyển ngữ cảnh và truyền thông giữa các quá trình
o Khi các quá trình ứng dụng đang thực hiện thì các yêu cầu hệ thống điều
hành có thể được thực hiện thông qua các lời gọi hàm thay vì sử dụng cơ
chế ngắt mềm
Vi hạt nhân (Micro‐kernel): Bao gồm một tập nhỏ các dịch vụ hỗ trợ
o Quản lý quá trình
o Các dịch vụ truyền thông giữa các quá trình nếu cần
o Các phần mềm điều khiển thiết bị là các quá trình ứng dụng
Hạt nhân điển hình cơ bản
Loại hạt nhân đơn giản nhất là một vòng lặp vô hạn thăm dò các sự kiện xuất
hiện trong hệ thống và phản ứng lại theo sự thay đổi nếu có.
Với một bộ xử lý cấu hình nhỏ nhất, không phải lúc nào nó cũng có thể lưu cất
ngữ cảnh vì không thể thay đổi con trỏ ngăn xếp hoặc vùng ngăn xếp rất hạn
chế.
Thay vì sử dụng các thanh ghi thiết bị, vòng lặp thăm dò có thể giám sát các
biến mà chịu sự thay đổi cập nhật bởi các bộ xử lý ngắt.
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
116
Hạt nhân có thể được xây dựng sao cho tất cả các tín hiệu logic được điều khiển
bởi vòng lặp và nhịp được điều khiển bởi các ngắt.
Các tác vụ lớn cần nhiều thời gian thực hiện có thể được chia nhỏ thành các tác
vụ nhỏ và được thực hiện tại các thời điểm khác nhau nhờ vào cơ chế chuyển và
sử dụng bộ đếm.
Các hạt nhân thực thi theo cơ chế ngắt rất giống với loại hạt nhân thực hiện theo
cơ chế vòng lặp thăm dò. Nó xử lý tất cả các tác vụ thông qua các dịch vụ ngắt.
Các hạt nhân lớn và phức tạp hơn sẽ bao gồm một số các dịch vụ phụ phục
vụcho việc truyền thông giữa các quá trình. Và nếu được bổ sung đầy đủ nó sẽ
trở thành một hệ điều hành đầy đủ.
Các kiểu loại hạt nhân cơ bản
Hạt nhân thực hiện vòng lặp thăm dò
Hạt nhân thực hiện theo cơ chế ngắt
Hạt nhân quá trình vận hành quá trình
Việc lựa chọn loại hạt nhân nào hoàn toàn tùy thuộc vào các bộ xử lý và kích
thước phần mềm, tuy nhiên riêng loại hạt nhân vận hành theo quá trình không phù hợp
với các bộ xử lý nhỏ.
Hạt nhân quá trình
Các hạt nhân quá trình rõ ràng là phức tạp hơn các hạt nhân thực hiện theo cơ
chế thăm dò và điều khiển ngắt. Các đường truyền tín hiệu logic bên trong các quá
trình và các dịch vụ ngắt được tích hợp và thực hiện thông qua việc truyền dữ liệu.
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
117
Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên