TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP
KHOA ĐIỆN TỬ
BỘ MÔN KỸ THUẬT MÁY TÍNH
BÀI GIẢNG PHÁT CHO SINH VIÊN
(LƯU HÀNH NỘI BỘ)
Theo chương trình 150 TC thay 180 TC hoặc tương ñương
Sử dụng cho năm học 2009 – 2010
Tên bài giảng: Hệ thống nhúng
Số tín chỉ: 03
2
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ỐNG NHÚNG........................................... 12 2.1. Quy trình thiết kế Top-Down........................................................................................ 12 2.1.1. Pha phân tích.......................................................................................................... 12 2.1.2. Pha thiết kế nguyên lý............................................................................................ 14 2.1.3. Pha thiết kế kỹ thuật............................................................................................... 15 2.1.4. Pha xây dựng hệ thống........................................................................................... 16 2.1.5. Pha kiểm tra ........................................................................................................... 16 2.2. Quy trình Bottom-Up .................................................................................................... 17 2.3. Đặc tả hệ thống ............................................................................................................. 17 2.3.1. Khái niệm ñặc tả (specification) ............................................................................ 17 2.3.2. Tại sao cần ñặc tả ................................................................................................... 18 2.3.3. Phân loại các kỹ thuật ñặc tả.................................................................................. 19 2.3.4. Ứng dụng và ưu việt khỉ sử dụng ñặc tả ................................................................ 20 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)” .......................................................................................................................................... 21 2.4. Các phương pháp biểu diễn thuật toán.......................................................................... 22 2.4.1. Ngôn ngữ tự nhiên ................................................................................................. 22 2.4.2. Dùng lưu ñồ ........................................................................................................... 23 2.4.3. Mã giả .................................................................................................................... 26 Chương III: CẤU TRÚC PHẦN CỨNG ............................................................................. 27 3.1. Cấu trúc tổng quát của hệ thống nhúng......................................................................... 27 3.1.1. Kiến trúc cơ bản ..................................................................................................... 27 3.1.2. Cấu trúc phần cứng ................................................................................................ 27 3.2. Một số nền phần cứng thông dụng................................................................................ 34 3.3.1. Họ vi ñiều khiển 8051............................................................................................ 35 3.3.2. Họ vi ñiều khiển AVR ........................................................................................... 36 3.3.3. Họ vi ñiều khiển PsoC ........................................................................................... 36 3.3.4. Họ vi ñiều khiển ARM........................................................................................... 39 3.3.5. Họ vi ñiều khiển PIC.............................................................................................. 41 3.4. Một số vi mạch thường dùng ........................................................................................ 63 3.4.1. Nhóm linh kiện số .................................................................................................. 63 3.4.2. Nhóm linh kiện tương tự........................................................................................ 71 3.4.4. Nhóm hiển thị......................................................................................................... 74 3.4.4. Nhóm chuyển ñổi dữ liệu....................................................................................... 75 3.4.5. Nhóm IC chức năng ............................................................................................... 77 3.4.6. Một số ví dụ ñiển hình ........................................................................................... 80 3.5. Công cụ thiết kế, mô phỏng và kiểm thử phần cứng .................................................... 85 3.5.1. Công cụ thiết kế phần cứng.................................................................................... 85 3.5.2. Công cụ mô phỏng ................................................................................................. 87 3.5.3. Công cụ kiểm thử ................................................................................................... 89 3.5.4. Một số mạch ví dụ.................................................................................................. 89 Chương IV: PHẦN MỀM NHÚNG ..................................................................................... 93 4.1. Đặc ñiểm phần mềm nhúng .......................................................................................... 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
3 4.2. Lập trình nhúng với C ................................................................................................... 93 4.2.1. Giới thiệu về CCS................................................................................................... 93 4.2.2. Cấu trúc chương trình............................................................................................. 94 4.2.3. Các kiểu dữ liệu ...................................................................................................... 94 4.2.4. Một số chỉ thị tiền xử lý.......................................................................................... 95 4.2.5. Hàm tạo trễ DELAY............................................................................................... 97 4.2.6. Hàm truy cập các kênh ADC.................................................................................. 97 4.2.7. Các hàm truy xuất vào ra........................................................................................ 99 4.3. Một số kỹ thuật lập trình nhúng .................................................................................. 101 4.3.1. Xử lý ngắt ............................................................................................................. 101 4.3.2. Xử lý TIMER........................................................................................................ 104 4.3.3. Truyền thông chuẩn RS232 .................................................................................. 106 4.4. Hệ ñiều hành nhúng..................................................................................................... 108 4.4.1. Khái niệm và yêu cầu chung................................................................................. 108 4.4.2. Bộ nạp khởi tao Boot – loader.............................................................................. 111 4.4.3. Hệ ñiều hành thời gian thực.................................................................................. 113
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
Danh mục hình ảnh Hình 1: Một số ví dụ về các thống nhúng thông dụng ............................................................... 6 Hình 2: Sơ ñồ khối quy trình Top-Down ................................................................................. 13 Hình 3: Sơ ñồ tổng quát của 1 hệ thống ñiều khiển ñộng cơ.................................................... 15 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ơ ................................................................................................................... 16 Hình 5: Sơ ñồ khối quy trình Bottom-Up................................................................................. 19 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........... 21 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 . 22 Hình 8: Lưu ñồ biểu diễn thuật toán giải phương trình bậc 2 .................................................... 1 Hình 9: Kiến trúc cơ bản của 1 HTN.......................................................................................... 1 Hình 10: Cấu trúc thông dụng của một VXL/VĐK nhúng....................................................... 27 Hình 11: Ví dụ về kiến trúc của họ VĐK AVR........................................................................ 28 Hình 12: Sơ ñồ khối chức năng PIC16F873A.......................................................................... 29 Hình 13: CPU ............................................................................................................................. 1 Hình 14: Kiến trúc bộ nhớ Von Newmann và Havard ............................................................. 30 Hình 15: Nguyên lý cấu tạo và hoạt ñộng xóa của EPROM .................................................... 31 Hình 16: Cấu trúc nguyên lý bộ nhớ RAM .............................................................................. 32 Hình 17: Nguyên lý ñiển hình của 1 cổng I/O............................................................................ 1 Hình 18: Nguyên lý kết nối 1 Master và 1 Slave sử dụng SPI ................................................. 34 Hình 19: Sơ ñồ kết nối SPI 1 Master với nhiều Slaver .............................................................. 1 Hình 20: Cấu trúc tông quan của vi ñiều khiển họ 8051 của intel ........................................... 35 Hình 21: Một vài sản phẩm công nghệ tiêu biểu ứng dụng bộ xử lý ARM ............................. 39 Hình 22: Sơ ñồ khối của 1 chip ARM core ARM7 .................................................................. 42 Hình 23: Sơ ñồ chân PIC 18F452............................................................................................. 45 Hình 24: Cấu trúc bộ nhớ của 18F452...................................................................................... 47 Hình 25: Sơ ñồ khối PIC18F452 .............................................................................................. 48 Hình 26: Sơ ñồ khối gắp nối vào ra số ..................................................................................... 49
4 Hình 27: Sơ ñồ khối timer0 chế ñộ 8bit................................................................................... 50 Hình 28: Sơ ñồ khối của timer0 ở chế ñộ 16bit ....................................................................... 50 Hình 29: Sơ ñồ khối timer1...................................................................................................... 51 Hình 30: Sơ ñồ khối Timer2 .................................................................................................... 52 Hình 31: Sơ ñồ khối timer3...................................................................................................... 53 Hình 32: Sơ ñồ giao tiếp chuẩn RS232.................................................................................... 53 Hình 33: Sơ ñồ khối truyền dữ liệu UART ............................................................................... 55 Hình 34: Sơ ñồ khối và giản ñồ thời gian nhận dữ liệu ........................................................... 57 Hình 35: Biểu ñồ khối chuyển ñổi ADC.................................................................................. 59 Hình 36: Sơ ñồ khối timer...................................................................................................... 104 Hình 37: Kiến trúc một HĐH................................................................................................. 109 Hình 38: Nguyên lý thực hiện của boot - loader.................................................................... 111 Hình 39: Cấu trúc của một boot - loader................................................................................ 113 Hình 40: So sánh kiến trúc RTOS và OS chuẩn .................................................................... 113 Hình 41: Cấu trúc một RTOS ................................................................................................ 114 Hình 42: Mô hình trạng thái của quá trình............................................................................. 116
Tài liệu tham khảo
1. Bình, N. T. (2008). Bài giảng: Các kỹ thuật ñặc tả. Đại học Bách khoa Đà nẵng.
2. Công, N. H. (2007). Hệ thống nhúng và sự phát triển của lĩnh vực công nghệ cao "3C".
ĐH KTCN Thái Nguyên.
3. John Regehr, Assist.Prof.Dr.Osman Kaan EROL. (2009). Embedded System Design.
4. Việt, T. L. (2008). HỆ THỐNG ĐIỀU KHIỂN NHÚNG. Hà Nội: ĐH BKHN.
5. Wikipedia. (2010). Retrieved from Wikipedia, Bách khoa toàn thư mở:
http://vi.wikipedia.org/wiki/H%E1%BB%87_th%E1%BB%91ng_nh%C3%BAng
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
Chương I: TỔNG QUAN
Mục tiêu của chương
Giúp sinh viên hiểu ñược khái niệm và nhận diện ñược một hệ thống nhúng, nắm bắt ñược nhu cầu và vài trò quan trọng của hệ thông nhúng trong sự phát triển của ngành công nghệ cao.
Tóm tắt
Giới thiệu và nêu khái niệm hệ thống nhúng. Trình bày vai trò của hệ thống
nhúng trong ngành công nghệ cao.
1.1. Mở ñầu
Trong sự phát triển mạnh mẽ của khoa học kĩ thuật với nền kinh tế trí thức và xu hướng hội nhập toàn cầu như hiện nay, thế giới và Việt Nam ñang thực hiện việc kết hợp giữa các ngành thuộc lĩnh vực công nghệ cao trong một Khoa hoặc cơ sở ñào tạo. Đó là lĩnh vực khoa học dưới 3 ngọn cờ: Máy tính, Điện tử- Viễn thông và Điều khiển tự ñộng mà ta thường gọi là “3 C” (Computer – Communication - Control). Có thể nói, các quá trình sản xuất và quản lí hiện nay như: các hệ thống ño lường ñiều khiển tự ñộng trong sản xuất công nghiệp; các hệ thống di ñộng và không dây tiên tiến, các hệ thống thông tin vệ tinh, các hệ thống thông tin dựa trên Web, chính phủ ñiện tử, thương mại ñiện tử, các cơ sở dữ liệu của nhiều ngành kinh tế và của Quốc gia, các hệ thống thiết bị Y tế hiện ñại, các thiết bị ñiện tử dân dụng, ... ñều là sản phẩm của sự kết hợp giữa các lĩnh vực khoa học trên.
Hiện nay chúng ta ñang ở thời ñại hậu PC sau giai ñoạn phát triển của máy tính lớn (Mainframe) 1960-1980, và sự phát triển của PC-Internet giai ñoạn 1980-2000. Giai ñoạn hậu PC-Internet này ñược dự ñoán từ năm 2000 ñến 2020 là giai ñoạn của môi trường thông minh mà hệ thống nhúng là cốt lõi và ñang làm nên làn sóng ñổi mới trong công nghệ thông tin nói riêng và lĩnh vực công nghệ cao “3C”, nói chung. Một thực tế khách quan là thị trường của các hệ thống nhúng lớn gấp khoảng 100 lần thị trường PC, trong khi ñó chúng ta mới nhìn thấy bề nổi của công nghệ thông tin là PC và Internet còn phần chìm của công nghệ thông tin chiếm 99% số processor trên toàn cầu này nằm trong các hệ nhúng thì còn ít ñược biết ñến.
Sức ñẩy của công nghệ ñưa công nghệ vi ñiện tử, công nghệ vi cơ ñiện, công nghệ sinh học hội tụ tạo nên các chip của công nghệ nano, là nền tảng cho những thay ñổi cơ bản trong lĩnh vực công nghệ cao “3C, sức kéo của thị trường ñòi hỏi các thiết bị phải có nhiều chức năng thân thiện với người dùng, có mức ñộ thông minh ngày 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.
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
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
6 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.
Hình 1: Một số ví dụ về các thống nhúng thông dụng
Các nhà thống kê trên thế giới ñã thống kê ñược rằng số chip vi xử lý ở trong các máy PC và các server, các mạng LAN, WAN, Internet chỉ chiếm khoảng 1% tổng số chip vi xử lý có trên thế giới, 99% số vi xử lý còn lại nằm trong các hệ thống 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
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.
7 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ó 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í.
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
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ề
8 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.
Ta có thể nói các hệ nhúng ñã “thay thế và chiếm phần ngày càng nhiều” trong
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ố 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... Đâ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.
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
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.
9 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 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.
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
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.
10
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 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.
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
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”.
11
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
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
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ó 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.
12
Chương II: LÝ THUYẾT THIẾT KẾ HỆ THỐNG NHÚNG
Mục tiêu của chương
Giúp sinh viên biết ñược quy trình triên khai một hệ thống nhúng từ lúc có ý tưởng ñến khi hoàn thiện sản phẩm, từ ñó có thể chủ ñộng triên khai 1 bài toán cụ thể theo ñúng phương pháp.
Tóm tắt
Trình bày các quy trình thiết kế một hệ thống nhúng và các kỹ thuật ñặc tả hệ thống.
2.1. Quy trình thiết kế Top-Down
Quy trình Top-Down thường ñược áp dụng cho các bài toán ñã có giải pháp công nghệ cả về phần mềm cũng như phần cứng. Các giải pháp này ñã ñược phát triển trước ñó ở các ứng dụng khác, và ñã ñược kiểm ñịnh.
Trong thực tế chúng ta sẽ thấy, bản chất hay mấu chốt của quy trình là vấn ñề tìm hiểu và xác ñịnh bài toán, làm sao ñể xác ñịnh ñược chính xác và ñầy ñủ nhất các yêu cầu cũng các rằng buộc mà hệ thống phải ñạt ñược. Sơ ñồ khối quy trình kế top-down ở hình 2 2.1.1. Pha phân tích Pha này là pha quan trọng nhất quyết ñịnh hệ thống có ñạt yêu cầu hay không. Một hệ thống nhúng cụ thể phải ñược ñặt vào (nhúng vào) một hệ thống lớn cụ thể. Vì thế ta cần phải biết có những yêu cầu nào cho nó, môi trường hay ñiều kiện làm việc của nó. Thông tin này gọi là các yêu cầu và các ñiều kiện rằng buộc cho hệ thống, nó giúp cụ thể hoá ñược việc chọn giải pháp công nghệ và thiết bị cho các kỹ sư thiết kế ở pha sau.
- Các yêu cầu: Các thông tin chi tiết về nhiệm vụ mà hệ thống phải giải quyết
ñược, các tham số ñầu vào ñầu ra, các giới hạn trong hệ thống cụ thể,...
- Các rằng buộc: Điều kiện làm việc và các hạn chế như thời tiết, ñộ ẩm, ñộ nhiễu, ñộ chính xác, tính thời gian thực, loại tín hiệu giao tiếp với hệ thống mẹ,...
Ví dụ: Xét bài toán thiết kế hệ thống ñiều khiển cho 1 cửa tự ñộng
Giả sử qua quá trình khảo sát thực tế và yêu cầu của bên khác hàng ta phải xác ñịnh
ñược các thông số tối thiểu sau: a) Yêu cầ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
1) Hệ thống áp dụng cho 1 cửa hai chiều (vào/ra) 2) Cửa cao 2,5m rộng 3m 3) Có người trong phạm vi 2m trước và sau cửa là cửa phải mở 4) Thời gian mở và ñóng cửa 3s
13
Các yêu cầu và ñiều kiện rằng buộc cho hệ thống mới
Phân tích vấn ñề (Analyze the proplem)
Các yêu cầu và các ñiều kiện rằng buộc ñã ñược xác ñịnh cụ thể
Thiết kế nguyên lý (High level design)
Sơ ñồ khối và các biểu ñồ luồng dữ liệu
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
Xây dựng hệ thống
(Implementation)
- Phần cứng
- Phần mềm
Kiểm tra (Test)
Đạt yêu cầu
Không Đạt yêu cầu
Hình 2: Sơ ñồ khối quy trình Top-Down
5) Cửa ñang ñóng gặp vật cản phải mở ra ngay 6) Làm việc ñiện áp 220v/50Hz 7) Chi phí cho bộ ñiều khiển không quá 10 triệu VNĐ 8) Hệ thống thống có 2 chế ñộ làm việc tự ñộng và bằng tay 9) Sensor và công nghệ tuỳ chọn
b) Điều kiện rằng buộc
1) Sử dụng ñộng cơ ñộng lực có sẵn loại AC một pha 220V/50Hz 3kW. 2) Nơi ñặt cửa có nhiều người qua lại, nên hệ thống sẽ phải làm việc với tần suất
cao.
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) Điều kiện môi trường: Trong nhà, nhiệt ñộ từ 180C ñến 360C 4) Bộ ñiều khiển bằng tay ñặt cạnh cửa phía bên trong nhà 5) Hệ thống ñiện cấp mới từ ñầu 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) ....
14
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
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
trong hệ thống.
15
Hình 3: Sơ ñồ tổng quát của 1 hệ thống ñiều khiển ñộng cơ
Ví dụ 2: Xây dựng và phân tách các module trong mô hình tổng quát của bài toán ñiều khiển ñộng cơ
2.1.3. Pha thiết kế kỹ thuật • Xây dựng các thiết kế chi tiết cho cả phần cứng phần mềm, các bản thiết kế này sẽ ñược chuyển sang pha thực thi ñể xây dựng hệ thống. Vì thế ở pha này người thiết kế phải ñưa ra các bản thiết kế như: 1. Sơ ñồ khối, sơ ñồ thuật toán. 2. Cấu trúc dữu liệu, dữ liệu chia sẻ. 3. Sơ ñồ nguyên lý mạch, chi tiết về các ñầu vào/ra, loại tín hiệu hay giao thức
giao tiếp.
4. Thông số linh kiện ñược chọn hoặc có thể thay thế. 5. Các tham số vào/ra cho hệ thống. 6. Lựa chọn thiết bị, công cụ phát triển hệ thống, các tài nguyên sẽ sử dụng. 7. ...
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
• Xây dựng sơ ñồ quan hệ giữa các module và các hàm trong hệ thống (call graph), sơ ñồ này mô tả cách thức tương tác giữa phần cứng và phần mềm trong hệ thống.
16 Ví dụ: Sơ ñồ Call graph của hệ thống ñiều khiển ñộng cơ
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ơ
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 ñã
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
Để 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 hoàn thiện, thông thường ta thực hiện các bước sau:
17 • Đầ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.
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
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. 2.3. Đặc tả hệ thống 2.3.1. Khái niệm ñặc tả (specification) Kỹ thuật ñặc tả nhằm ñịnh nghĩa một hệ thống, module hay sản phẩm cần phải làm gì, nhưng không mô tả nó phải làm thế nào. Nghĩa là ñặc tả chỉ tập trung vào việc
18 mô tả các chức năng, ñầu vào và ñầu ra, còn giải pháp ñể từ ñầu vào có ñược ñầu ra như thế nào thì không mô tả. Đồng thời nêu nên các tính chất của vấn ñề ñặt ra. Như vậy bản chất ta sử dụng một công cụ ñể mô hình hoá một hệ thống thành các module, các luồng dữ liệu vào ra, các yêu cầu của tín hiệu hay dữ liệu, các thông tin trao ñổi giữa các module,... Sao cho toàn bộ quy trình làm việc của hệ thống có thể ñọc ñược thông qua ñặc tả. Ở ñây ta không quan tâm ñến công nghệ của hệ thống, mà chỉ quan tâm ñến chức năng, nhiệm vụ và các tính chất mà hệ thống phải có ñược.
Đặc tả có thể ñược tiến hành ở nhiều giai ñoạn, nhiều lần trong tiến trình phát triển
hệ thống như:
• Đặc tả yêu cầu (requirement specification): Nhằm mô tả ñầy ñủ và chi tiết những thống nhất giữa người sử dụng tương lai và người thiết kế về hệ thống. Đây là các thông tin cơ sở ñể người thiết kế thiết hệ thống của mình, nhiệm vụ người thiết kế pahỉ thiết kế ñầy ñủ và hoàn thiện theo yêu cầu ñã thống nhất, người sử dụng tương lại ñược phép ñỏi hỏi, giám sát việc thực thi các yêu cầu trong phạm vi ñã thoả thuận.
• Đặc tả kiến trúc hệ thống (system architect specification): Nhằm mô tả sự thống nhất giữa người thiết kế và người cài ñặt. Các ñặt tả nhằm chỉ ra ñược các chức năng, tính chất và nhiệm vụ cho các thành phần hệ thống chuẩn bị ñược cài ñặt. Việc xác ñịnh các yêu cầu từ ñó chuyển thành bản thiết kế ñã ñược ñặc tả ởkhâu ñặc tả yêu cầu, vì thế khâu này người cài ñặt chỉ quan tầm ñến bản thiết kế và những rằng buộc ñã thống nhất với người thiết kế.
Việc ñặc tả là rất cần thiết trước khi xây dựng một hệ thống bất kỳ trong lĩ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
• Đặc tả Module (module specification): Mô tả sự thống nhất giữa người lập trình cài ñặt module và người lập trình sử dụng module. Quá trình cài ñặt hệ thống có thể ñược phân ra thành nhiều module ñược cài ñặt một cách song song, hay kế thừa từ module có sẵn hay module ñặt hàng, vì thế người cài ñặt và người sử dụng module cần ñặc tả chi tiết các chức năng, nhiệm vụ và ñặc biệt các giao tiếp của hàm, ñể sao cho có thể ghép nối tương thích và hiệu quả module ñó vào hệ thống. 2.3.2. Tại sao cần ñặc tả vực nào bời vì:
19
Đạt yêu cầu
Phân tích vấn ñề (Analyze)
Kiểm tra (Test)
Không Đạt yêu cầu
Sơ ñồ khối và các biểu ñồ luồng dữ liệu
Các yêu cầu và ñiều kiện rằng buộc cho hệ thống
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 yêu cầu
Không Đạt yêu cầu
Kiểm tra (Test)
Kiểm tra (Test)
Kiểm tra (Test)
Không Đạt yêu cầu
Phần cứng Phần mềm
Phần cứng Phần mềm
Phần cứng Phần mềm
Xây dựng hệ thống (Implementation)
Xây dựng hệ thống (Implementation)
Xây dựng hệ thống (Implementation)
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
Thiết kế kỹ thuật (Engineering design)
Thiết kế kỹ thuật (Engineering design)
Thiết kế kỹ thuật (Engineering design)
Ý tưởng
Ý tưởng
Ý tưởng
Hình 5: Sơ ñồ khối quy trình Bottom-Up
• Đặ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át 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ữ ñặc 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ìn 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. 2.3.3. Phân loại các kỹ thuật ñặc 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
a) Đặc tả phi hình thức: Sử dụng 1 trong các công cụ sau ñể mô tả hệ thống
20
o Ngôn ngữ tự nhiên tự do o Ngôn ngữ tự nhiên có cấu trúc o Các ký hiệu ñồ họa
b) Đặc tả nửa hình thức: Sử dụng hỗn hợp cả ngôn ngữ tự nhiên, các ký hiệu toán
học và các ký hiệu ñồ họa
c) Đặc tả hình thức: Sử dụng các ký hiệu toán học ñể mô hình hóa hệ thống, các
ký hiệu toán học là các ký hiệu thống nhất chung có thể là:
o Ngôn ngữ ñặc tả o Ngôn ngữ lập trình
So sánh ñặc tả hình thức và ñặc tả phi hình thức:
Đặc tả hình thức Đặc tả phi hình thức
• Chính xác (vì sử dụng các ký hiệu toán học ñã ñược thống nhất trên thế giới). • Phương pháp sử dụng ngôn ngữ tự nhiên, tự do và bản ñịa nên dễ hiểu, dễ sử dụng.
• Khả năng mềm dẻo cao, vì công cụ mô tả là ngôn ngữ dễ thay thế. • Thiếu sự chính xác và ñầy ñủ do hạn chế của ngôn ngữ và mang tính chủ quan. • Nhập nhằng.
• Hợp thức hóa hình thức. • Sử dụng là công cụ trao ñổi giữa các người thiết kế, tuy nhiên vì sử dụng các ký hiệu toán học chuyên ngành nên khó ñọc và khó hiểu. • Chỉ dành cho những người có kiến thức chuyên môn nên khó sử dụng.
2.3.4. Ứng dụng và ưu việt khỉ sử dụng ñặc tả
a) Ứng dụng • Đặc tả thường sử dụng trong giai ñoàn ñầu của tiến trình phát triển sản phẩm • Nhằm hạn chế lỗi trong quá trình phát triển phần mềm, thông qua việc ñặc tả chi tiết và ñầy ñủ các chức năng, nhiệm vụ và tính chất cho tất cả các thành phần của sản phẩm
• Kỹ thuật ñặc tả thường dùng khi phát triển các hệ thống
o Hệ thống ñiều khiển o Hệ thống nhúng o Hệ thống thời gian thực
b) Ưu việt khi sử dụng ñặc tả
Ưu ñiểm khi sử dụng ñặc tả ñược thể hiện rõ nhất qua qua chi phí phát triển hệ
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
thống, ta có thể thấy rõ qua biểu ñồ sau:
21
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.
(cid:1) 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 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)
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
Ví dụ 1:
22
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
2.4. Các phương pháp biểu diễn thuật toán
Khi chứng minh hoặc giải một bài toán trong toán học, ta thường dùng những ngôn từ toán học như : "ta có", "ñiều phải chứng minh", "giả thuyết", ... và sử dụng những phép suy luận toán học như phép suy ra, tương ñương, ...Thuật toán là một phương pháp thể hiện lời giải bài toán nên cũng phải tuân theo một số quy tắc nhất ñịnh. Ðể có thể truyền ñạt thuật toán cho người khác hay chuyển thuật toán thành chương trình máy tính, ta phải có phương pháp biểu diễn thuật toán. Có 3 phương pháp biểu diễn thuật toán :
1. Dùng ngôn ngữ tự nhiên. 2. Dùng lưu ñồ-sơ ñồ khối (flowchart). 3. Dùng mã giả (pseudocode)
2.4.1. Ngôn ngữ tự nhiê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
Trong cách biểu diễn thuật toán theo ngôn ngữ tự nhiên, người ta sử dụng ngôn ngữ thường ngày ñể liệt kê các bước của thuật toán . Phương pháp biểu diễn này không yêu cầu người viết thuật toán cũng như người ñọc thuật toán phải nắm các quy tắc. Tuy vậy, cách biểu diễn này thường dài dòng, không thể hiện rõ cấu trúc của thuật toán, ñôi lúc gây hiểu lầm hoặc khó hiểu cho người ñọc. Gần như không có một quy 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)
23
Đầ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
, kết thúc thuật toán Bước 4: Báo phương trình có 2 nghiệm
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) Thao tác xử lý (process) Thao tác xử lý ñược biểu diễn bằng một hình chữ nhật, bên trong chứa nội dung
xử lý.
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
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.
24
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.
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
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.
25
Hình 8: Lưu ñồ biểu diễn thuật toán giải phương trình bậc 2
d) Ðiểm cuối (terminator) Ðiểm cuối là ñiểm khởi ñầu và kết thúc của thuật toán, ñược biểu diễn bằng
hình ovan, bên trong có ghi chữ bắt ñầu/start/begin hoặc kết thúc/end. Ðiểm cuối chỉ có cung ñi ra (ñiểm khởi ñầu) hoặc cung ñi vào (ñiểm kết thúc). Xem lưu ñồ thuật toán giải phương trình bậc hai ở trên ñể thấy cách sử dụng của ñiểm cuối.
e) Ðiểm nối (connector) Ðiểm nối ñược dùng ñể nối các phần khác nhau của một lưu ñồ lại với nhau. Bên trong ñiểm nối, ta ñặt một ký hiệu ñể biết sự liên hệ giữa các ñiểm 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
f) Ðiểm nối sang trang (off-page connector)
26
Tương tự như ñiểm nối, nhưng ñiểm nối sang trang ñược dùng khi lưu ñồ quá lớn, phải vẽ trên nhiều trang. Bên trong ñiểm nối sang trang ta cũng ñặt một ký hiệu ñể biết ñược sự liên hệ giữa ñiểm nối của các trang. chaof
Ở 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
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
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
27
Chương III: CẤU TRÚC PHẦN CỨNG
Mục tiêu của chương
Giúp sing viên có kiến thức tổng quan về một số dòng vi ñiều khiển và vi xử lý nhúng tiến tiến. Giúp sinh viên có các kỹ thuật cũng như các công cụ ñể thiết kế hệ thống phần cứng cho một hệ thống nhúng.
Tóm tắt
Trình bày một số dòng vi ñiều khiển như 8051, AVR, PIC, ARM,… Các công
cụ thiết kế và kiểm thử hệ thống.
3.1. Cấu trúc tổng quát của hệ thống nhúng
3.1.1. Kiến trúc cơ bản Kiến trúc cơ bản của hệ thống nhúng ñược miêu tả ở hình 8, như vậy một hệ thống ñầy ñủ về cơ bản có 3 thành phần:
1. Chương trình ứng dụng: là các chương trình chạy trên nền hệ thống nhúng. Người sử dụng tác ñộng trực tiếp trên các phần mềm này.
Hình 9: Kiến trúc cơ bản của 1 HTN
Cấu trúc tổng quát thông dụng nhất của một vi xử lý/vi ñiều khiển nhúng ñược ñưa ra
ở hình 10.
2. Hệ ñiều hành: Hệ ñiều hành giúp cho việc phát triển phần mềm và phần cứng có thể tách biệt trên 2 công nghệ không cần liên quan ñến nhau nhưng vẫn có thể kết hợp ñể có một sản phẩm tốt nhất. Cũng như máy tính hệ ñiều hành giúp người khác thác hệ thống ñược hiệu quả và dễ dàng hơn, hệ thống nhúng có hệ ñiều hành thường linh hoạt và mềm dẻo hơn. 3. Phần cứng: Đây là thành phần cốt lõi không thể thiếu, thành phần phần cứng quan trọng nhất là CPU, các thành phần khác có thể tùy biến theo từng ứng dụng cụ thể. 3.1.2. Cấu trúc phần cứng
Hình 10: Cấu trúc thông dụng của một VXL/VĐK 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
28
VXL/VĐK nhúng là một chủng loại rất ñiển hình và ñang ñược sử dụng rất phổ biến hiện này. Chúng ñược ra ñời và sử dụng theo sự phát triển của các Chip xử lý ứng dụng cho máy tính. Vì ñối tượng ứng dụng là các thiết bị nhúng nên cấu trúc cũng ñược thay ñổi theo ñể ñáp ứng các ứng dụng. Hiện nay chúng ta có thể thấy các họ vi xử lý ñiều khiển của rất nhiều các nhà chế tạo cung cấp như, Intel, Atmel, Motorola, Infineon. Về cấu trúc, chúng cũng tương tự như các Chíp xử lý phát triển cho PC nhưng ở mức ñộ ñơn giản hơn nhiều về công năng và tài nguyên. Phổ biến vẫn là các Chip có ñộ rộng bus dữ liệu là 8bit, 16bit, 32bit. Về bản chất cấu trúc, Chip vi ñiều khiển là chip vi xử lý ñược tích hợp thêm các ngoại vi. Các ngoại vi thường là các khối chức năng ngoại vi thông dụng như bộ ñịnh thời gian, bộ ñếm, bộ chuyển ñổi A/D, giao diện song song, nối tiếp…Mức ñộ tích hợp ngoại vi cũng khác nhau tuỳ thuộc vào mục ñích ứng dụng sẽ có thể tìm ñược Chip phù hợp. Thực tế với các ứng dụng yêu cầu ñộ tích hợp cao thì sẽ sử dụng giải pháp tích hợp trên chip, nếu không thì hầu hết các Chip ñều cung cấp giải pháp ñể mở rộng ngoại vi ñáp ứng cho một số lượng ứng dụng rộng và mềm dẻo.
Hình 11: Ví dụ về kiến trúc của họ VĐK AVR
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
Hình 12: Sơ ñồ khối chức năng PIC16F873A
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.
Hình 13: CPU
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) Bộ nhớ
(cid:2)
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ừ ñó.
Hình 14: Kiến trúc bộ nhớ Von Newmann và Havard
Kiến trúc Havard tách/phân biệt vùng lưu mã chương trình và dữ liệu. Mã chương trình chỉ có thể ñược lưu và thực hiện trong vùng chứa ROM và dữ liệu cũng chỉ có thể lưu và trao ñổi trong vùng RAM. Hầu hết các vi xử lý nhúng ngày nay sử dụng kiến trúc bộ nhớ Havard hoặc kiến trúc Havard mở rộng (tức là bộ nhớ chương trình và dữ liệu tách biệt nhưng vẫn cho phép khả năng hạn chế ñể lấy dữ liệu ra từ vùng mã chương trình). Trong kiến trúc bộ nhớ Havard mở rộng thường sử dụng một số lượng nhỏ các con trỏ ñể lấy dữ liệu từ vùng mã chương trình theo cách nhúng vào trong các lệnh tức thời. Một số Chip vi ñiều khiển nhúng tiêu biểu hiện nay sử dụng cấu trúc Havard là 8031, PIC, Atmel AVR90S. Nếu sử dụng Chip 8031 chúng ta sẽ nhận thấy ñiều này thông qua việc truy nhập lấy dữ liệu ra từ vùng dữ liệu RAM hoặc từ vùng mã chương trình. Chúng ta có một vài con trỏ ñược sử dụng ñể lấy dữ liệu ra từ bộ nhớ dữ liệu RAM, nhưng chỉ có duy nhất một con trỏ DPTR có thể ñược sử dụng ñể lấy dữ liệu ra từ vùng mã chương trình. Hình 13 mô tả nguyên lý kiến trúc của bộ nhớ von Neumann và Harvard.
Ưu ñiểm nổi bật của cấu trúc bộ nhớ Harvard so với kiến trúc von Neumann là có hai kênh tách biệt ñể truy nhập vào vùng bộ nhớ mã chương trình và dữ liệu nhờ vậy mà mã chương trình và dữ liệu có thể ñược truy nhập ñồng thời và làm tăng tốc ñộ luồng trao ñổi với bộ xử lý. (cid:2) Bộ nhớ chương trình – PROM (Programmable Read Only Memory)
Vùng ñể lưu mã chương trình. Có ba loại bộ nhớ PROM thông dụng ñược sử
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
dụng cho hệ nhúng và sẽ ñược giới thiệu lần lượt sau ñây.
31
• EPROM
Bao gồm một mảng các transistor khả trình. Mã chương trình sẽ ñược ghi trực tiếp và vi xử lý có thể ñọc ra ñể thực hiện. EPROM có thể xoá ñược bằng tia cực tím và có thể ñược lập trình lại. Cấu trúc vật lý của EPROM ñược mô tả như trong Hình 11.
Hình 15: Nguyên lý cấu tạo và hoạt ñộng xóa của EPROM
(cid:2) 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 ñó. (cid:2) Bộ nhớ dữ liệu - 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
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).
32
Hình 16: Cấu trúc nguyên lý bộ nhớ RAM
c) Giao tiếp ngoại vi
(cid:2) Giao diện song song 8bit/16bit
Hình 17: Nguyên lý ñiển hình của 1 cổng I/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
Các cổng song song là một dạng giao diện vào ra ñơn giản và phổ biến nhất ñể kết nối thông tin với ngoại vi. Có nhiều loại cấu trúc giao diện vật lý ñiện tử từ dạng cổng vào ra ñơn giản cực Collector TTL hở trong các ứng dụng cổng máy in ñến các loại cấu trúc giao diện cổng tốc ñộ cao như các chuẩn bus IEEE-488 hay SCSI. Hầu hết các chip ñiều khiển nhúng có một vài cổng vào ra song song khả trình (có thể cấu hình). Các giao diện ñó phù hợp với các cổng vào ra ñơn giản như các khoá chuyển. Chúng cũng phù hợp trong các bài toán phục vụ giao diện kết nối ñiều khiển và giám sát theo các giao diện như kiểu rơle bán dẫn. (cid:2) Giao diện nối tiếp I2C (Inter-IC) Giao thức ưu tiên truyền thông nối tiếp ñược phát triển bởi Philips Semiconductor và ñược gọi là bus I2C. Vì nguồn gốc nó ñược thiết kế là ñể ñiều khiển liên thông IC (Inter IC) nên nó ñược ñặt tên là I2C. Tất cả các chíp có tích hợp và 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
33 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 I2C 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ợ I2C ñề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ợ I2C hoạt ñộng ở tốc ñộ 400Kbps, một số cho phép hoạt ñộng ở tốc ñộ cao vài Mbps. I2C 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
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
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à 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.
34
- 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)
Hình 18: Nguyên lý kết nối 1 Master và 1 Slave sử dụng SPI
Hình 17 chỉ ra nguyên lý kết nối giữa một ñơn vị Chủ và một ñơn vị Tớ trong truyền thông SPI. Trong ñó tín hiệu SCLK sẽ ñược tạo ra bởi ñơn vị Chủ và là tín hiệu vào của ñơn vị Tớ. MOSI là ñường truyền dữ liệu ra từ ñơn vị Chủ tới ñơn vị Tớ và MISO là ñường truyền dữ liệu vào ñơn vị Chủ ñến từ ñơn vị Tớ. Đơn vị Tớ ñược lựa chọn khi ñơn vị Chủ kích hoạt tín hiệu SS.
Hình 19: Sơ ñồ kết nối SPI 1 Master với nhiều Slaver
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
Nếu hệ thống có nhiều ñơn vị tớ ñơn vị Chủ sẽ tạo phải ra các tín hiệu tách biệt ñể chọn ñơn vị Tớ. Cơ chế ñó ñược thực hiện nhờ sơ ñồ kết nối nguyên lý mô tả như trong Hình 18. Đơn vị Chủ sẽ tạo ra tín hiệu chọn ñơn vị Tớ nhờ các chân tín hiệu logic ña chức năng. Các tín hiệu này phải ñược ñiều khiển và ñảm bảo ổn ñịnh về thời gian ñể tránh trường hợp tín hiệu bị thay ñổi trong quá trình ñang truyền dữ liệu. Một ñiều dễ nhận ra rằng SPI không hỗ trợ cơ chế xác nhận trong quá trình thực hiện truyền thông. Điều này phụ thuộc vào giao thức ñịnh nghĩa hoặc phải thực hiện bổ sung thêm một số các mở rộng phụ bên ngoài. Khả năng truyền thông ñồng thời hai chiều với tốc ñộ lên ñến khoảng vài Mbit/s và nguyên lý khá ñơn giản nên SPI hoàn toàn phù hợp ñể thực hiện truyền thông giữa các thiết bị yêu cầu truyền thông tốc ñộ chậm, ñặc biệt hiệu quả trong các ứ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
35 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 một số loại chip là PIC, 8051, 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 20: 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:
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
- Dải ñiện áp hoạt ñộng 4.0V ñến 5.5V - Tần số hoạt ñộng: 0 Hz to 33 MHz - 32 ñường vào/ra lập trình ñược - Có thể mở rộng tối ña 64K ROM nội - Có thể mở rộng tối ña 64K bộ nhớ dữ liệu ngoài - Có thể mở rộng tối ña 64K bộ nhớ lập trình ngoài - 128Byte RAM Nội - Tích hợp sẵn cổng truyền thông chuẩn RS232 - Tích hợp sẵn các bộ ñịnh thời Timer 8/16bit
36 3.3.2. Họ vi ñiều khiển AVR
AVR là một họ vi ñiều khiển do hãng Atmel sản xuất. AVR là chip vi ñiều khiển 8 bits với cấu trúc tập lệnh ñơn giản hóa theo kiến trúc RISC(Reduced Instruction Set Computer), một kiểu cấu trúc ñang thể hiện ưu thế trong các bộ xử lí.
So với các chip vi ñiều khiển 8 bits khác, AVR có nhiều ñặc tính hơn hẳn, hơn
cả trong tính ứng dụng (dễ sử dụng) và ñặc biệt là về chức năng:
- AVR tích hợp gần như ñầy ñủ các module chức năng thông dụng. - Thiết bị lập trình (mạch nạp) cho AVR ñơn giản - Bên cạnh lập trình bằng ASM, cấu trúc AVR ñược thiết kế tương thích với
ngôn ngữ C.
- Các tính năng chung của AVR:
o Có thể sử dụng xung clock lên ñến 16MHz, hoặc sử dụng xung clock
nội lên ñến 8 MHz (sai số 3%)
o Bộ nhớ chương trình Flash có thể lập trình lại rất nhiều lần và dung lượng lớn, có SRAM (Ram tĩnh) lớn, và ñặc biệt có bộ nhớ lưu trữ lập trình ñược EEPROM.
o Nhiều ngõ vào ra (I/O PORT) 2 hướng (bit-directional). o 8 bits, 16 bits timer/counter tích hợp PWM. o Các bộ chuyển ñối Analog – Digital phân giải 10 bits, nhiều kênh. o Chức năng Analog comparator. o Giao diện nối tiếp USART (tương thích chuẩn nối tiếp RS-232). o Giao diện nối tiếp Two –Wire –Serial (tương thích chuẩn I2C)
Master và Slaver.
...
• ATmega8/8515/8535 • ATmega16 • ATmega161 • ATmega162 • ATmega163 • ATmega169 • ATmega32 • ATmega323 • ATmega103 • ATmega64/128/2560/2561 • AT86RF401.
• AT90S1200 • AT90S2313 • AT90S2323 and AT90S2343 • AT90S2333 and AT90S4433 • AT90S4414 and AT90S8515 • AT90S4434 and AT90S8535 • AT90C8534 • ATtiny10, ATtiny11 and ATtiny12 • ATtiny15 • ATtiny22 • ATtiny26 • ATtiny28
....
o Giao diện nối tiếp Serial Peripheral Interface (SPI) o Một số chip AVR thông dụng:
3.3.3. Họ vi ñiều khiển PsoC
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
PSoC viết tắt từ Programmable System On Chip, nghĩa là hệ thống khả trình trên một chíp. Các chíp chế tạo theo công nghệ PSoC cho phép thay ñổi ñược cấu hình
37 bằng cách gán chức năng cho các khối tài nguyên có sẵn trên chíp. PsoC là chip dựa trêm công nghệ CsoC(Configurable System on Chip - ) thực sự là một công nghệ ưu việt nó tích hợp cả Processor và bộ nhớ RAM, FLASH, cho phép ta lập trình các thuật toán phức tạp một cách dễ dàng bằng ngôn ngữ C hoặc Assembler. So với các vi ñiều khiển thông dụng như 8051, Motorola 68HC908, Microchip PIC16Fxx có cấu trúc CPU và ngoại vi cố ñịnh (fixel digital and analog penpherals) thì chíp PSoC có khả năng mềm dẻo thích ứng với ña dạng ứng dụng và nhất là khả năng tái cấu hình (reconfigurable) tạo thành nhiều loại chip khác nhau trên một chip ở những thời ñiểm khác nhau trong một ứng dụng. Ví dụ chip PSoC của hãng Cypress Micro System, ta có thể thiết kế cho nó thành một chip ñiều khiển ổn ñịnh nhiệt ñộ lò, ổn ñịnh và ñiều khiển chiều quay, tốc ñộ quay của ñộng cơ ñiện.
Công nghệ chế tạo chip thông minh trong ño lường và ñiều khiển trên cơ sở CSoC có tính hiệu quả kinh tế, nhất là ñối với chip PSoC của Cypress Micro System vì có khả năng xử lý hỗn hợp dữ liệu tương tự và số. Nó cho ta khả năng phát triển các sản phẩm mới nhanh dễ dàng mở rộng những chức năng mới sau này. Công nghệ này cho nhiều giải pháp lựa chọn và hỗ trợ ña dạng ứng dụng từ ño lường, ñiều khiển, xử lý, truyền thông, kết nối mạng trên cùng một chip với giá thành thấp. Hệ thống phần mềm hỗ trợ thiết kế chip PSoC Disigner của Cypress Micro System có ñầy ñủ các chức năng thiết kế, sắp xếp các khối chức năng, mô phỏng, lập trình, tìm lỗi và nạp chíp hiện ñại, có các module ứng dụng (user module) phong phú giúp ta không phải lập trình trên ngôn ngữ HDL (Hardware Description Languages) vừa khó bao quát, vừa không hiệu quả. Ngoài ra giá thành của các chíp PSoC trắng từ 1- 5 USD/ chip rẻ hơn rất nhiều so các chip ngoại khác. ñây là một cơ hội cho các doanh nghiệp và các nhóm say mê nghiên cứu, sáng tạo có thể ñạt ñến thành công lớn với các sản phẩm ñộc ñáo có các chip thông minh chứa các ý tưởng sáng tạo và bí quyết riêng của mình. Trong số các hãng cung cấp công nghệ CSoC, thì công nghệ PSoC của hãng Cypress Micro System là phù hợp hơn cả cho ño lường và ñiều khiển do:
-
-
-
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
Là công nghệ mới (ñược bình chọn là công nghệ sáng tạo năm 2001) của thế giới và ñược ñịnh hướng ñể phát triển các chip thông minh cho các thiết bị ño lường và ñiều khiển có số lượng lớn và giá thành thấp. Là chip ñầu tiên trên thế giới cho phép tạo ra các chip có processor và khả năng xử lý ñồng thời các tín hiệu tương tự, số và truyền thông phong phú nhất trong các công nghệ CSoC hiện có (Mix – Signal Divice). Các giải pháp Processo + FPGA của hãng altera hoặc Xilinx và các hãng khác chỉ có thể cho phép ta tạo ra các chip số có Processor(Digital IC) hoặc một số chức năng analog cố ñịnh. 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).
38
-
Đầ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.
(cid:2) Mộ số ñặc tính PSoC CY8C29466
- - - - -
-
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
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ự: (cid:3) Chuyển ñổi ADC lên ñến 14-bit (ADCs) (cid:3) Chuyển ñổi DAClên ñến 9-bit (DACs) (cid:3) Bộ khuếch ñại lập trình ñược (PGAs) (cid:3) Bộ so sánh là lọc lập trình ñược 16 khối số: (cid:3) Timer/counter 8 ñến 32-bit, và ñiều chế ñộ rộng xung (PWMs) (cid:3) Có các bộ kiểm tra lỗi CRC và PRS (cid:3) Lên ñến 4 bộ truyền thông (UARTs) (cid:3) Nhiều bộ truyền thông SPI chủ và tớ (cid:3) 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
39
3.3.4. Họ vi ñiều khiển ARM
ARM (viết tắt từ tên gốc là Acorn RISC Machine) là một loại cấu trúc vi xử lý 32-bit kiểu RISC ñược sử dụng rộng rãi trong các thiết kế nhúng. Do có ñặc ñiểm tiết kiệm năng lượng, các bộ CPU ARM chiếm ưu thế trong các sản phẩm ñiện tử di ñộng, mà với các sản phẩm này việc tiêu tán công suất thấp là một mục tiêu thiết kế quan trọng hàng ñầu.
Ngày nay, hơn 75% CPU nhúng 32-bit là thuộc họ ARM, ñiều này khiến ARM trở thành cấu trúc 32-bit ñược sản xuất nhiều nhất trên thế giới. CPU ARM ñược tìm thấy khắp nơi trong các sản phẩm thương mại ñiện tử, từ thiết bị cầm tay (PDA, ñiện thoại di ñộng, máy ña phương tiện, máy trò chơi cầm tay, và máy tính cầm tay) cho ñến các thiết bị ngoại vi máy tính (ổ ñĩa cứng, bộ ñịnh tuyến ñể bàn.) Một nhánh nổi tiếng của họ ARM là các vi xử lý Xscale của Intel.
Hình 21: Một vài sản phẩm công nghệ tiêu biểu ứng dụng bộ xử lý ARM
Các dạng lõi và tính năng của một số dòng ARM:
Họ
Lõi
Đặc tính
Cache (I/D)/MMU
MIPS ñiển hình @ MHz
15 MIPS @ 16.8 MHz
3-tầng pipeline
không
ARM7TDMI ARM7TDMI(-S)
36 MIPS @ 40 MHz
MMU
ARM710T
8KB unified, MMU
60 MIPS @ 59.8 MHz
ARM720T
MPU
ARM740T
ARM7EJ-S
Jazelle DBX
không
5-tầng pipeline
không
ARM9TDMI ARM9TDMI
16KB/16KB, MMU
200 MIPS @ 180 MHz
ARM920T
ARM922T
8KB/8KB, MMU
ARM940T
4KB/4KB, MPU
ARM946E-S
ARM9E
thay ñổi ñược, tightly coupled memories, MPU
ARM966E-S
không có cache, TCMs
ARM968E-S
không có cache, TCMs
ARM926EJ-S
Jazelle DBX
220 MIPS @ 200 MHz
thay ñổi ñược, TCMs, MMU
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
ARM996HS
Clockless processor
không caches, TCMs, MPU
ARM1020E
(VFP)
32KB/32KB, MMU
ARM10E
ARM1022E
(VFP)
16KB/16KB, MMU
ARM1026EJ-S
Jazelle DBX
variable, MMU or MPU
ARM1136J(F)-S
variable, MMU
ARM11
SIMD, Jazelle DBX, (VFP)
ARM1156T2(F)-S SIMD, Thumb-2,
thay ñổi ñược, MPU
(VFP)
ARM1176JZ(F)-S SIMD, Jazelle
DBX, (VFP)
thay ñổi ñược, MMU+TrustZone
thay ñổi ñược, MMU
ARM11 MPCore
1-4 core SMP, SIMD, Jazelle DBX, (VFP)
Cortex-A8
Cortex
variable (L1+L2), MMU+TrustZone
lên ñến 2000 (2.0 DMIPS/MHz in speed from 600 MHz to greater than 1 GHz)
Application profile, NEON, Jazelle RCT, Thumb-2
Cortex-R4
600 DMIPS
Embedded profile
variable cache, MMU optional
no cache, (MPU)
Cortex-M3
Microcontroller profile
120 DMIPS @ 100MHz
I/O Processor
XScale
80200/IOP310 /IOP315
80219
IOP321
IOP33x
PXA210/PXA250 Applications
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
IXP2400/IXP2800
IXP2850
IXP2325/IXP2350
IXP42x
IXP460/IXP465
(cid:2) Các ñặc tính thiết kế:
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
Để ñạt ñược một thiết kế gọn, ñơn giản và nhanh, các nhà thiết kế ARM xây
dựng nó theo kiểu nối cứng không có vi chương trình, giống với bộ vi xử lý 8-bit 6502 ñã từng ñược dùng trong các máy vi tính trước ñó của hãng Acorn.
Cấu trúc ARM bao gồm các ñặc tính của RISC như sau:
- Cấu trúc nạp/lưu trữ. - Không cho phép truy xuất bộ nhớ không thẳng hàng (bây giờ ñã cho
phép trong lõi Arm v6)
- Tập lệnh trực giao - File thanh ghi lớn gồm 16 x 32-bit - Chiều dài mã máy cố ñịnh là 32 bit ñể dễ giải mã và thực hiện pipeline,
ñể ñạt ñược ñiều này phải chấp nhận giảm mật ñộ mã máy. - Hầu hết các lệnh ñều thực hiện trong vòng một chu kỳ ñơn.
So với các bộ vi xử lý cùng thời như Intel 80286 và Motorola 68020, trong
ARM có một số tính chất khá ñộc ñáo như sau:
- Hầu hết tất cả các lệnh ñều cho phép thực thi có ñiều kiện, ñiều này làm giảm việc phải viết các tiêu ñề rẽ nhánh cũng như bù cho việc không có một bộ dự ñoán rẽ nhánh.
- Trong các lệnh số học, ñể chỉ ra ñiều kiện thực hiện, người lập trình chỉ
cần sửa mã ñiều kiện
- Có một thanh ghi dịch ñóng thùng 32-bit mà có thể sử dụng với chức năng hoàn hảo với hầu hết các lệnh số học và việc tính toán ñịa chỉ.
- Có các kiểu ñịnh ñịa chỉ theo chỉ số rất mạnh - Có hệ thống con thực hiện ngắt hai mức ưu tiên ñơn giản nhưng rất
nhanh, kèm theo cho phép chuyển từng nhóm thanh ghi.
3.3.5. Họ vi ñiều khiển PIC
PIC là một họ vi ñiều khiển RISC ñược sản xuất bởi công ty Microchip Technology. Dòng PIC ñầu tiên là PIC1650 ñược phát triển bởi Microelectronics Division thuộc General Instrument .
PIC bắt nguồn là chữ viết tắt của "Programmable Intelligent Computer" (Máy tính khả trình thông minh) là một sản phẩm của hãng General Instruments ñặt cho dòng sản phẩm ñầu tiên của họ là PIC1650. Lúc này, PIC1650 ñược dùng ñể giao tiếp với các thiết bị ngoại vi cho máy chủ 16bit CP1600, vì vậy, người ta cũng gọi PIC với cái tên "Peripheral Interface Controller" (Bộ ñiều khiển giao tiếp ngoại vi). CP1600 là một CPU tốt, nhưng lại kém về các hoạt ñộng xuất nhập, và vì vậy PIC 8-bit ñược phát triển vào khoảng năm 1975 ñể hỗ trợ hoạt ñộng xuất nhập cho CP1600. PIC sử dụng microcode ñơn giản ñặt trong ROM, và mặc dù, cụm từ RISC chưa ñược sử dụng thời bây giờ, nhưng PIC thực sự là một vi ñiều khiển với kiến trúc RISC, chạy một lệnh một chu kỳ máy (4 chu kỳ của bộ dao ñộ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
Năm 1985 General Instruments bán bộ phận vi ñiện tử của họ, và chủ sở hữu mới hủy bỏ hầu hết các dự án - lúc ñó ñã quá lỗi thời. Tuy nhiên PIC ñược bổ sung EEPROM ñể tạo thành 1 bộ ñiều khiển vào ra khả trình. Ngày nay rất nhiều dòng PIC
42 ñược xuất xưởng với hàng loạt các module ngoại vi tích hợp sẵn (như USART, PWM, ADC...), với bộ nhớ chương trình từ 512 Word ñến 32K Word.
Hình 22: Sơ ñồ khối của 1 chip ARM core ARM7
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
Một vài ñặc tính
Hiện nay có khá nhiều dòng PIC và có rất nhiều khác biệt về phần cứng,
nhưng chúng ta có thể ñiểm qua một vài nét như sau:
• 8/16 bit CPU, xây dựng theo kiến trúc Harvard có sửa ñổi • Flash và ROM có thể tuỳ chọn từ 256 byte ñến 256 Kbyte • Các cổng Xuất/Nhập (I/O ports) (mức logic thường từ 0V ñến 5.5V, ứng với
• 8/16 Bit Timer • Công nghệ Nanowatt • Các chuẩn Giao Tiếp Ngoại Vi Nối Tiếp Đồng bộ/Không ñồng bộ USART,
logic 0 và logic 1)
• Bộ chuyển ñổi ADC Analog-to-digital converters, 10/12 bit • Bộ so sánh ñiện áp (Voltage Comparators) • Các module Capture/Compare/PWM • LCD • MSSP Peripheral dùng cho các giao tiếp I²C, SPI, và I²S • Bộ nhớ nội EEPROM - có thể ghi/xoá lên tới 1 triệu lần • Module Điều khiển ñộng cơ, ñọc encoder • Hỗ trợ giao tiếp USB • Hỗ trợ ñiều khiển Ethernet • Hỗ trợ giao tiếp CAN • Hỗ trợ giao tiếp LIN • Hỗ trợ giao tiếp IrDA • Một số dòng có tích hợp bộ RF (PIC16F639, và rfPIC) • KEELOQ Mã hoá và giải mã • DSP những tính năng xử lý tín hiệu số (dsPIC)
AUSART, EUSARTs
(cid:2) Vi ñiều khiển PIC18F452 3.3.5.1. Tính năng
Tập lệnh, cấu trúc ñược tối ưu hóa theo ngôn ngữ C
o Mã nguồn tương thích với tập lệnh PIC17 và PIC16
Địa chỉ bộ nhớ chương trình tuyến tính ñến 32 Kbytes Địa chỉ bộ nhớ dữ liệu tuyến tính ñến 1.5 Kbytes Hoạt ñộng lên ñến 10MIPs
o Đầu vào dao ñộng thạch anh lên ñến 40 MHz o Đầu vào dao ñộng thạch anh với PLL: 4 MHz - 10 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
Lệnh rộng 16-bit, ñộ rộng bit dữ liệu: 8-bit Hỗ trợ các cấp ưu tiên ngắt Nhân bằng phần cứng ñơn chu kỳ 8 x 8
44 Tính năng ngoại vi:
Dòng phát/hút cao: 25 mA/25 mA 3 chân ngắt ngoài Timer0 module: 8-bit/16-bit timer/counter với 8-bit ñặt tỷ lệ lập trình ñược Timer1 module: 16-bit timer/counter Timer2 module: 8-bit timer/counter với thanh ghi 8-bit (thời gian cơ sở cho
PWM)
Timer3 module: 16-bit timer/counter Tùy chọn xung clock thứ 2 - Timer1/Timer3 Hai bộ Capture/Compare/PWM (CCP).
Chân CCP có thể ñược cấu hình thành:
o Capture input: capture is 16-bit, max. resolution 6.25 ns (TCY/16) o Compare is 16-bit, max. resolution 100 ns (TCY) o PWM output: PWM resolution is 1- to 10-bit, max. PWM freq. @: 8-bit
resolution = 156 kHz, 10-bit resolution = 39 kHz
Khối truyền thông nối tiếp ñồng bộ (Master Synchronous Serial Port - MSSP)
Hai chế ñộ hoạt ñộng:
o 3-dây SPI™ (Hỗ trợ cả 4 chế ñộ SPI) o I2C™ cả chế ñộ Master và Slave
Khối USART có thể ñịnh ñịa chỉ: o Hỗ trợ RS-485 và RS-232
Khối cổng song song (Parallel Slave Port - PSP)
Tính năng tương tự:
Khối chuyển ñổi tương tự sang số ñộ phân giải 10-bit:
o Chu kỳ lấy mẫu nhanh o Chuyển ñổi cả trong khi ngủ o Tuyến tính ≤ 1 LSB
Phát hiện ñiện áp thấp lập trình ñượ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
o Hỗ trợ ngắt khi phát hiện ñiện áp thấp Phát hiện reset do sụt nguồn lập trình ñược (BOR)
45
3.3.5.2. Sơ ñồ và ý nghĩa chân
Hình 23: Sơ ñồ chân PIC 18F452
Giải thích Tên chân Chân số Loại IO Loại Bộ ñệ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, 32 P Nguồn 5v cho PIC và logic 1 cho các IO
VSS 12, 31 P Mass cho PIC và các mức logic 0 cho IO
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à biểu thị tần số thực hiện lệnh
RAi/ANi Chân vào ra 2 chiều, cổng RA (i=0..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
RAi … TTL Vào ra số
46 ANi
Analog Vào tương tự (cho chuyển ñổi ADC)
VREF- 4 Analog Điện áp tham chiếu thấp cho ADC
VREF+ 5 Analog Điện áp tham chiếu cao cho ADC
SS 7 ST Đầu vào chọn Slave trong truyền thông SPI
LVDIN 7 Analog Đầu vào phát hiện ñiện áp thấp
RBi 33..40 IO TTL
Đầu vào/ra hai chiều, có thể lập trình tạo ñiện trở treo (yếu) nội(i=0..7)
INTi I ST Đầu vào ngắt ngoài (i=0..2)
CCPi IO
Capture input, Compare output, PWM output. (i=1..2)
PGM 38 IO ST Chân cho phép lập trình ICSP ñiện áp thấp
PGC 39 IO ST
Chân Clock khi lập trình ICSP và gỡ rối tại mạch (In-Circuit)
PGD 40 IO ST
Chân dữ liệu khi lập trình ICSP và gỡ rối tại mạch (In-Circuit)
RCi IO TTL Đầu vào ra hai chiều, cổng RC (i=0..7)
T1OSO 15 O Chân ra bộ dao ñộng timer1 -
T1CKI Dao ñộng từ ngoài vào Timer1/Timer3 15 I ST
T1OSI CMOS Đầu vào bộ dao ñộng Timer1 16 I
18 IO ST SCK Xung clock nối tiếp ñồng bộ vào/ra cho SPI
18 IO ST SCL Xung clock nối tiếp ñồng bộ vào/ra cho I2C
23 I ST SDI Chân dữ liệu vào trong SPI
23 IO ST SDA Chân dữ liệu vào/ra trong I2C
24 O ST SDO Chân dữ liệu ra trong SPI
25 O - TX Chân truyền dữ liệu không ñồng bộ USART
25 IO ST CK Chân xung nhịp truyền thông ñồng bộ USART
26 I ST RX
Chân nhận dữ liệu nối tiếp trong truyền thông không ñồng bộ USART
26 IO ST DT Chân dữ liệu truyền thông ñồng bộ USART
19..30 IO ST RDi Vào ra số cổng RD (i=0..7)
PSPi 19..30 IO TTL Dữ liệu cổng song song (Slave) (i=0..7)
REi 8..10 IO ST Vào ra số cổng RE (i=0..2)
RD 8 TTL Điều khiển ñọc cho cổng song song Slaver
WR 9 TTL Điều khiển ghi cho cổng song song Slaver
CS 10 TTL
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
Điều khiển chọn chip trong giao tiếp song song Slaver
47
ST = Schmitt Trigger ñầu vào với mức
P = Power
CMOS = CMOS compatible
Trong ñó: TTL = TTL tương thích với ñầu vào CMOS O = ra, I=vào OD = Open Drain (không có diode P nối tới vdd) 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:
Hình 24: 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
48
Hình 25: Sơ ñồ khối 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
49
3.3.5.4. Vào ra số
Hình 26: Sơ ñồ khối gắp nối 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:
• 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
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
• Có thể ñọc hoặc ghi
50
• 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:
Hình 27: Sơ ñồ khối timer0 chế ñộ 8bit
Hình 28: Sơ ñồ khối của timer0 ở chế ñộ 16bit
b) Timer1
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
Timer1 là bộ timer 16bit với các thanh ghi liên quan như sau:
51
Nguyên lý hoạt ñộng của khối Timer1:
Hình 29: Sơ ñồ khối timer1
c) Timer 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
Khối Timer 2 có các tính năng: • Timer 8bit (thanh ghi TMR2) • Có thể ñọc/ghi • Tần số vào có thể lập trình ñược với các tỉ lệ 1:1, 1:4, 1:16 • Tần số ra có thể lập trình ñược với các tỉ lệ 1:1 ñến 1:16 • Ngắt khi TMR2=PR2
52
Hình 30: Sơ ñồ khối Timer2 Khối Timer 2 có một thanh ghi ñịnh thời lượng 8-bit PR2. Khi có xung vào Timer2 tăng từ 00h ñến khi khớp với PR2 và tràn về 00h tại chu kỳ tăng tiếp theo. PR2 là thanh ghi có thể ñọc/ghi. Thanh ghi PR2 khi reset có giá trị là FFh Thanh ghi liên quan ñến Timer 2:
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
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
Các thanh ghi có liên quan:
53
Hình 31: Sơ ñồ khối timer3
3.3.5.6. Truyền thông nối tiếp USART
Bộ truyền thông ñồng bộ/không ñồng bộ có thể hoạt ñộng ở tất cả các chế ñộ
không ñồng bộ, ñồng bộ Master, ñồng bộ Slaver. (cid:2) Sơ ñồ ghép nối truyền thông chuẩn RS232
Do cổng nối tiếp của PIC lầm việc ở chuẩn TTL, vì thế khi cần giao tiếp với các
thiết bị có chuẩn RS232 cần có mạch phụ trợ, một sơ ñồ ñiển hình như hình sau:
Hình 32: Sơ ñồ giao tiếp chuẩn RS232
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
(cid:2) Nguyên tắc tạo tốc ñộ baud:
54
(cid:2) Tính sai số truyền thông: Ví dụ: cho Fosc=16MHz, Baud=9600bps
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 nối tiếp không đồng bộ USART
¤
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 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à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
Bộ truyền dữ liệu nối tiếp USART:
55 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
Hình 33: Sơ ñồ khối truyền dữ liệu UART
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
Truyền thông không ñồng bộ
Các thanh ghi liên quan ñến truyền dữ liệu:
Bộ nhận dữ liệu nối tiếp USART: Nhận dữ liệu nối tiếp từ chân RC7/RX/DT và ñiều khiển khối nhận dữ liệu. Bộ nhận dữ liệu thực chất là một bộ dịch tốc ñộ cao hoạt ñộng bằng 16 lần tốc ñộ baud. Trình tự thiết lập nhậ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: RCIE=1 Nếu cần truyền thông 9 bit: RX9=1 Cho phép truyền: CREN=1 Nếu thiết lập ngắt: RCIE=1, thì RCIF =1 khi nhận xong dự liệu. Đọc thanh ghi RCSTA ñể ñược bit thứ 9 (nếu ñược hoạt ñộng) và quyết
ñịnh xem có lỗi hay không.
Đọc 8 bit dữ liệu nhận ñược từ thanh ghi RCREG Nếu có lỗi xảy ra, xóa lỗi bằng cách xóa bit CREN Nếu dùng ngắt, chắc chắn rằng bit GIE=1 và PEIE=1 trong 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
INTCON (INTCON<7:6>)
57
Hình 34: Sơ ñồ khối và giản ñồ thời gian nhận dữ liệu
Các thanh ghi liên quan ñến nhận dữ liệu:
Khối chuyển đổi ADC – 10 bit
PIC18F4X2 có 8 kênh ñầu vào tương tự, dùng ñể chuyển ñổi ADC.
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
Khối ADC có 4 thanh ghi:
• A/D Result High Register (ADRESH): phần cao của kết quả • A/D Result Low Register (ADRESL): phần thấp của kết quả • A/D Control Register 0 (ADCON0): tần số chuyển ñổi, chọn kênh, trạng thái, on/off
• 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
59
Hình 35: Biểu ñồ khối chuyển ñổi ADC
Trình tự thiết lập chuyển ñổi ADC: 1) Cấu hình khối AD:
(cid:3) Cấu hình chân tương tự, ñiện áp tham chiếu và IO số (ADCON1) (cid:3) Chọn kênh ñầu vào (ADCON0) (cid:3) Chọn tần số chuyển ñổi (ADCON0) (cid:3) Cho phép chuyển ñổi (ADCON0)
2) Cấu hình ngắt AD (nếu ñược thiết kế)
(cid:3) ADIF=0 (cid:3) ADIE=1 (cid:3) GIE=1 (cid:3) PEIE=1
3) Chờ 1 khoảng thời gian yêu cầu 4) Bắt ñầu chuyển ñổi
(cid:3) GO/DONE=1 (ADCON0)
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
5) Chờ ñến khi AD chuyển ñổi xong, bằng cách:
(cid:3) Hỏi vòng, chờ ñến khi bit GO/DONE=0 (cid:3) Hoặc: ñợi ngắt AD
6) Đọc kết quả tại hai thanh ghi: ADRESH/ADRESL, xóa cờ ADIF nếu cần thiết 7) Để chuyển ñổi tiếp, chờ ít nhất một khoảng thời gian là 2*TAD (khoảng
30uS), về bước 1) hoặc 2)
Phân bố bit kết quả:
Cách ghép nối tín hiệu ñiện áp tham chiếu:
Tính năng đặc biệt của CPU: Bit cấu hình (configuration 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
¤
61
¤ Cấu hình xung nhịp dao động hệ thống
PIC18FXX2 có thể ñược hoạt ñộng trong tám phương thức khác nhau của Oscillator. Người dùng có thể lập trình 3 bit cấu hình (FOSC2, FOSC1, và FOSC0) ñể lựa chọn một trong tám chế ñộ:
STT Kí hiệu Diễn dải
Ý nghĩa
Tần số thạch anh
LP
Low Power Crystal
LP<200KHz
1
Dao ñộng thạch anh với ñiện áp thấp
XT
Crystal/Resonator
200KHz 2 Thạch anh tần số
thấp 4MHZ HS 3 Thạch anh, tần số
cao High Speed
Crystal/Resonator HSx4 HS+PLL High Speed 4 Thạch anh, tần số
cao, có nhân tần số Crystal/Resonator with PLL
enabled External Resistor/Capacitor Dao ñộng RC RC 5 RCIO 6 External Resistor/Capacitor
with I/O pin enabled Dao ñộng RC, cho
phép chân IO EC External Clock 7 Xung nhịp ñưa từ
ngoài vào ECIO 8 Xung nhịp ñưa từ
ngoài vào, cho phép
chân IO External Clock with I/O pin
enabled 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 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 63 3.4. Một số vi mạch thường dùng 3.4.1. Nhóm linh kiện số b. Nhóm IC logic 7400, 4011 – NAND ¤ 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 ¤ 64 7408 – AND ¤ 7432 – OR ¤ 74LS386 – XOR ¤ BUS, Chốt đệ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 ¤ 65 • 74HC273 – Vào song song ra song song, có chốt đệm sườn • 74HC573 – Vào song song ra song song, có chốt đệm mức • 74HC245 – BUS truyền thông, chọn 1 trong 2 hướng • 74HC595: Vào nối tiếp, ra song song 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 • Mở rộng cổng: CY8C9520A-24PVXI : 20, 40, and 60 Bit I/O Expander with EEPROM 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 Nhó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 ¤ 74HC193 – bộ đếm nhị phân 68 74HC4017 – bộ ñếm thập phân 74HC4518 – Bộ đếm BCD ¤ c. Nhóm mã hóa – giải mã 74LS138 – Giải mã 3 ra 8 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 ¤ 69 7447 – Giải mã LED 7 thanh, tích cực â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 ¤ 70 74LS148 – Mã hóa 8 về 3-bit ¤ 74C922 – Mã hóa 16 phím bấm có chống rung 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 Ghép nối ñọc 32 phím Sơ ñồ khối nguyên lý 3.4.2. Nhóm linh kiện tương tự a. Khuếch ñại LM324 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 741 ¤ ULN2803 ¤ b. Cảm biến Cảm biến 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 ¤ 73 Cảm biến ánh sáng ¤ Cảm biến hồng ngoại ¤ Cảm biến trọng lượng (Loadcell) 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 Cảm biến tiệm cận ¤ 3.4.4. Nhóm hiển thị 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 a. LED ñơn 75 b. LED 7 thanh c. LCD d. LED ma trận 3.4.4. Nhóm chuyển ñổi dữ liệu a. ADC AD0809: ADC0808/ADC0809 8-Bit µP Compatible A/D Converters with 8-Channel Multiplexer 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 MCP3204: 2.7V 4-Channel/8-Channel 12-Bit A/D Converters with SPI™ Serial Interface ¤ MCP3304: 13-Bit Differential Input, Low Power A/D Converter with SPI™ Serial Interface ¤ b. DAC DAC0808: DAC0808/DAC0807/DAC0806 8-Bit D/A Converters 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 MCP4922 ¤ Voltage-to-Frequency and Frequency-to-Voltage Converter: VFC320-BP ¤ 3.4.5. Nhóm IC chức năng a. IC thời gian thực (RTC) DS1307 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 DS12C887A ¤ b. IC ñiều khiển ñộng cơ MC33932: Dual 5.0 A Throttle Control H-Bridge ¤ 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 ¤ 79 ¤ c. IC truyền thông Chuẩn RS232: Max 232 ¤ Chuẩn RS485: Max485 ¤ Chuẩn CAN: MCP2551 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 Chuẩn Ethenet: ENC28J60: Stand-Alone Ethernet Controller with SPI™ Interface ¤ 3.4.6. Một số ví dụ ñiển hì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 a. Mạch cơ bản: nguồn, dao ñộng, reset 81 b. Sơ ñồ hienr thị LED ñơ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 c. Sơ ñồ mạch hiển thị LED 7 thanh 82 d. Sơ ñồ mạch truyền 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 e. Sơ ñồ mạch chuyển ñổi ADC, hiển thị LCD 83 f. Sơ ñồ mạch giao tiếp bàn phím PS2 U2 +10V 10
9
8 RE2/CS/AN7
RE1/WR/AN6
RE0/RD/AN5 U1 R3 R1 14 VREF+ 5.00k 5.00k R2 15 VREF- 1k DAC out 4 IOUT 40
39
38
37
36
35
34
33 RB7/PGD
RB6/PGC
RB5/PGM
RB4
RB3/CCP2B
RB2/INT2
RB1/INT1
RB0/INT0 5
6
7
8
9
10
11
12 16
3 30
29
28
27
22
21
20
19 RD7/PSP7
RD6/PSP6
RD5/PSP5
RD4/PSP4
RD3/PSP3
RD2/PSP2
RD1/PSP1
RD0/PSP0 A1
A2
A3
A4
A5
A6
A7
A8 COMP
VEE DAC0808 C1
0.1u 14
7
6
5
4
3
2 RA6/OSC2/CLKO
RA5/AN4/SS/LVDIN
RA4/T0CKI
RA3/AN3/VREF+
RA2/AN2/VREF-
RA1/AN1
RA0/AN0 1
13 26
25
24
23
18
17
16
15 RC7/RX/DT
RC6/TX/CK
RC5/SDO
RC4/SDI/SDA
RC3/SCK/SCL
RC2/CCP1
RC1/T1OSI/CCP2A
RC0/T1OSO/T1CKI MCLR/VPP
OSC1/CLKI -5V PIC18F452 Sơ ñồ mạch ñ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 g. Sơ ñồ mạch chuyển ñổi DAC 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 h. Sơ ñồ mạch thời gian thực 85 Sơ ñồ ño nhiệt ñộ i. Sơ ñồ mạch ño và hiển thị nhiệt ñộ 3.5. Công cụ thiết kế, mô phỏng và kiểm thử phần cứng 3.5.1. Công cụ thiết kế phần cứng Giới thiệu Mạch in ñiện tử (thường gọi tắt là mạch in) là một tấm nhựa tổng hợp chịu 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 mà trên ñó các linh kiện ñược hàn và kết nối với các ñường mạch ñiện. Với các mạch
ñiện ñơn giản, chẳng hạn chỉ bao gồm một hai tụ ñiện và ñiện trở, ta hoàn toàn có thể
tự xắp xếp linh kiện và vẽ ñường dây nối giữa chúng một cách dễ dàng. Tuy nhiên khi
mạch ñiện có vài chục linh kiện, số chân nối lên ñến hàng trăm thì việc vẽ bằng tay
không hề ñơn giản. Do ñó phần mềm thiết kế mạch in sinh ra ñể giúp ta hoàn thành
công việc này một cách nhanh chóng, chính xác và hiệu quả
Một vài loại phần mềm
Trên thực tế có rất nhiều phần mềm thiết kế mạch in khác nhau. Ở Việt Nam có một số
loại phổ biến như: OrCad, ProtelSE99, DXP2009, Altium Designer, PowerPCB,
Eagle. Trong ñó có hai dòng sản phẩm là OrCad và Protel (gồm ProtelSE99,
DXP2004, Altium Designer) ñược nhiều người biết nhất.
Các tính năng
Thông thường, một phần mềm ñồ sộ như OrCad hoặc Protel có hai phần thực hiện
nhiệm vụ riêng biệt là:
* Bộ phận vẽ mạch nguyên lý
* 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 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 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à 87
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. • 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ự 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: • 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 ñộng, biến dạng giao 3.5.2. Công cụ mô phỏng l. Proteus Proteus là một phần mềm mô phỏng và thiết kế mạch in. Phần mềm bao gồm 2 thành phần là ISIS và AREA. ISIS là phần mô phỏng mạch, nó có thể mô phỏng cả mạch số và mạch tương
tự, tuy nhiên, ñiểm mạnh nhất là nó tích hợp rất nhiều thư viện linh kiện số, ñặc biệt là
vi ñiều khiển. Trong quá trình thiết kế mạch số, cần mô phỏng phần mềm của vi ñiều
khiển như PIC, AVR, 8051,… thì ñây là phần mềm lý tưởng nhất. Bên cạnh ñó, nó còn
tích hợp mô phỏng mạch tương tự, mô phỏng ngôn ngữ mô tả phần cứng Verilog,… AREA là phần thiết kế mạch in, bản khá nhẹ, chạy dây khá thông minh, tuy 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 nhiên việc quản lý, sắp xếp vị trí khi có nhiều linh kiện chưa hiệu quả lắm. 88 Màn hình ISIS m. Multisim Màn hình làm việc của MultiSim 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 MultiSim là phần mềm mô phỏng rất hiệu quả, ñặc biệt là mô phỏng linh kiện ñiện tử
tương tự. Phần mềm hỗ trợ thư viện lớn, dễ sử dụng, thao tác nhanh và thông minh. 89 3.5.3. Công cụ kiểm thử n. Đồng hồ vạn năng o. Máy Oscilloscope U1 19 XTAL1 18 XTAL2 9 39
38
37
36
35
34
33
32 RST P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7 LED1 LED-YELLOW
LED-YELLOW
LED-YELLOW LED2 R3
4k7 R2
4k7 R1
4k7 29
30
31 PSEN
ALE
EA LED3 21
22
23
24
25
26
27
28 R4
270 P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15 NUTA NUTB NUTC 1
2
3
4
5
6
7
8 10
11
12
13
14
15
16
17 P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7 P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD AT89C51 Ghép nối phím bấm hiển thị LED ñơn LCD1
LM016L U1 13
14 OSC1/CLKIN
OSC2/CLKOUT X1 S
S
V D
D
V E
E
V S
R W
R E 0
D 1
D 2
D 3
D 4
D 5
D 6
D 7
D 1 2 3 4 5 6 7 8 9 0
1 1
1 2
1 3
1 4
1 12MHz 33
34
35
36
37
38
39
40 RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD 2
3
4
5
6
7 RA0/AN0
RA1/AN1
RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/T0CKI/C1OUT
RA5/AN4/SS/C2OUT RV1 C1
22p C2
22p %
9
2 8
9
10 RE0/AN5/RD
RE1/AN6/WR
RE2/AN7/CS 5k 1 MCLR/Vpp/THV 15
16
17
18
23
24
25
26 RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT R1 10k 19
20
21
22
27
28
29
30 RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7 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 3.5.4. Một số mạch ví dụ 90 Mạch hiển thị LCD 4-bit U1 30
29
28
27
22
21
20
19 RD7/PSP7
RD6/PSP6
RD5/PSP5
RD4/PSP4
RD3/PSP3
RD2/PSP2
RD1/PSP1
RD0/PSP0 1 MCLR/Vpp/THV 10
9
8 RE2/AN7/CS
RE1/AN6/WR
RE0/AN5/RD 26
25
24
23
18
17
16
15 RC7/RX/DT
RC6/TX/CK
RC5/SDO
RC4/SDI/SDA
RC3/SCK/SCL
RC2/CCP1
RC1/T1OSI/CCP2
RC0/T1OSO/T1CKI 7
6
5
4
3
2 RA5/AN4/SS/C2OUT
RA4/T0CKI/C1OUT
RA3/AN3/VREF+
RA2/AN2/VREF-/CVREF
RA1/AN1
RA0/AN0 14
13 40
39
38
37
36
35
34
33 OSC2/CLKOUT
OSC1/CLKIN RB7/PGD
RB6/PGC
RB5
RB4
RB3/PGM
RB2
RB1
RB0/INT PIC18F452 Ghép nối LED ma trận ñơn giản U3 13
14 OSC1/CLKIN
OSC2/CLKOUT 33
34
35
36
37
38
39
40 h1
h2
h3
h4
h5
h6
h7
h8 RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD 2
3
4
5
6
7 RA0/AN0
RA1/AN1
RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/T0CKI/C1OUT
RA5/AN4/SS/C2OUT 8
9
10 RE0/AN5/RD
RE1/AN6/WR
RE2/AN7/CS 1 MCLR/Vpp/THV 15
16
17
18
23
24
25
26 h1
h2
h3
h4
h5
h6
h7
h8 RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT clk
DS 19
20
21
22
27
28
29
30 RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7 PIC18F452 9 9 5
1 1 2 3 4 5 6 7 5
1 1 2 3 4 5 6 7 ' ' 0
Q 1
Q 2
Q 3
Q 4
Q 5
Q 6
Q 7
Q 0
Q 1
Q 2
Q 3
Q 4
Q 5
Q 6
Q 7
Q 7
Q 7
Q U1
74HC595 U2 74HC595 http://picat.dieukhien.net P
C
_
H
S S
D P
C
_
T
S R
M E
O P
C
_
H
S S
D P
C
_
T
S R
M E
O 0
1 3
1 0
1 3
1 1
1 4
1 2
1 1
1 4
1 2
1 clk
DS Ghép nối LED ma trận mở rộng cổng với 74HC595 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 C2 LCD1
LM020L 10p X1 C1 R5
10k 10p S
S
V D
D
V E
E
V S
R W
R E 0
D 1
D 2
D 3
D 4
D 5
D 6
D 7
D 1MHz 1 2 3 4 5 6 7 8 9 0
1 1
1 2
1 3
1 4
1 U1 13
14
1 OC1/CLKI
OSC2/CLKO/RA6
MCLR/Vpp 2
3
4
5
6
7 RA0/AN0
RA1/AN1
RA2/AN2/VREF-
RA3/AN3/VREF+
RA4/TOCKI
RA5/AN4/SS/LVDIN C3
1uF 19
20
21
22
27
28
29
30 RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7 33
34
35
36
37
38
39
40 RB0/INT0
RB1/INT1
RB2/INT2
RB3/CCP2
RB4
RB5
RB6
RB7 8
9
10 RE0/RD/AN5
RE1/WR/AN6
RE2/CS/AN7 D1 15
16
17
18
23
24
25
26 RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RXDT A D2 PIC18F452 B D3 C D4 D R1
10k R2
10k R3
10k R4
10k 1 2 3 4 Ghép nối bàn phím, hiển thị LCD Q7 R2
10k Q5 R1
10k TIP41 2N2905 Q2
TIP42 Q1
2N2222 D4 D3 U1 19 XTAL1 18 XTAL2 D2 D1 9 39
38
37
36
35
34
33
32 RST P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7 Q6 Q4
2N2222 29
30
31 PSEN
ALE
EA 21
22
23
24
25
26
27
28 TIP42 P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15 Q8 Q3
TIP41 R4
10k R3
10k 2N2905 1
2
3
4
5
6
7
8 10
11
12
13
14
15
16
17 P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7 P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD AT89C51
PROGRAM=Dong co.hex Mạch ñiều khiển ñộng cơ dạng mạch cầu H 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 Mạch ghép nối vi ñiều khiển với DAC0808 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 Trình bày cách thức lập trình trên CCS, một số kỹ thuật lập trình thường gặp. Mục tiêu của chương
Giúp sinh viên có các kiến thức cơ bản về cách thức và các kỹ thuật nâng cao
khi lập trình cho một hệ thống nhúng với ngôn ngữ bậc cao C. Biết ñược cách và công
cụ ñể mô phỏng kiểm thử hệ thống.
Tóm tắt
4.1. Đặc ñiểm phần mềm nhúng Nói một cách ñơn giản, phần mềm nhúng là phần mềm dành cho tất cả những
thiết bị không liên quan gì ñến máy tính, chẳng hạn như thiết bị ñiều khiển, ñịnh
hướng cho ô tô, ñiện thoại di ñộng, ví tiền ñiện tử, ñồ gia dụng (ti vi, tủ lạnh, máy giặt,
ñiều hòa…). Như ta ñã biết, số chip vi xử lý dùng trong các máy tính, mạng nội bộ và
Internet chỉ chiếm hơn 1% tổng số chip vi xử lý trên thế giới. Số còn lại thuộc về các
hệ thống nhúng. Theo số liệu của Business Communications Company, tổng thị trường phần
mềm nhúng thế giới năm 2004 ñạt khoảng 46 tỷ USD. Đến năm 2009, con số này là 88
tỷ USD. Nhật Bản hiện nay ñược ñánh giá là một trong những thị trường phần mềm
nhúng hàng ñầu thế giới. Theo thống kê của JISA (Hiệp hội Dịch vụ CNTT Nhật Bản),
phần mềm nhúng hiện nay chiếm tới 40% thị phần phần mềm Nhật Bản, với các sản
phẩm rất ña dạng: lò vi ba, máy photocopy, máy in laser, máy FAX, các bảng quảng
cáo sử dụng hệ thống ñèn LED, màn hình tinh thể lỏng… Năm 2004, thị trường phần
mềm nhúng của Nhật Bản ñạt khoảng 20 tỷ USD với 150.000 nhân viên. Đây ñược coi
là thị trường ñầy hứa hẹn với các ñối tác chuyên sản xuất phần mềm nhúng như Trung
Quốc, Indonesia, Nga, Ireland, Israel và cả Việt Nam.
(cid:2) Đặc ñiểm phần mềm nhúng: • Hướng chức năng hoá ñặc thù
• Hạn chế về tài nguyên bộ nhớ
• Yêu cầu thời gian thực 4.2. Lập trình nhúng với C
Ngôn ngữ C/C++ chúng ta ñã ñược tìm hiểu ở môn Ngôn ngữ lập trình bậc cao,
vì thế trong phạm vi bài giảng này chỉ tập trung giới thiệu cách sử dụng ngôn C trên
trên biên dịch CCS dành cho vi ñiều khiển họ PIC, các thức tạo lập chương trình, các
cú pháp và cấu trúc lệnh ñể truy xuất và khai thác các module chức năng trên PIC.
4.2.1. Giới thiệu về CCS 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 CCS là trình biên dịch lập trình ngôn ngữ C cho Vi ñiều khiển PIC của hãng
Microchip. Chương trình là sự tích hợp của 3 trình biên dịch riêng biết cho 3 dòng PIC
khác nhau ñó là: 94 - PCB cho dòng PIC 12-bit opcodes
- PCM cho dòng PIC 14-bit opcodes
- PCH cho dòng PIC 16 và 18-bit Tất cả 3 trình biên dịch này ñuợc tích hợp lại vào trong một chương trình bao
gồm cả trình soạn thảo và biên dịch là CCS. Giống như nhiều trình biên dịch C khác
cho PIC, CCS giúp cho người sử dụng nắm bắt nhanh ñược vi ñiều khiển PIC và sử
dụng PIC trong các dự án. Các chương trình diều khiển sẽ ñược thực hiện nhanh chóng
và ñạt hiệu quả cao thông qua việc sử dụng ngôn ngữ lập trình cấp cao – Ngôn ngữ C
4.2.2. Cấu trúc chương trình
Việc tạo một chương trình chúng ta có thể dùng tác vụ New\project wizard, tác
vụ này sẽ tạo ra một giao diện ñồ họa cho phép chúng ta lựa chọn loại chip, tần số
thạch anh, cấu hình làm việc các module chức năng,… một cách dễ dàng. Ở ñây bài
giảng ñưa ra cấu trúc một chương trình cơ bản không sử dụng Wizard. // Khai báo thư viện // các chỉ thị tiền sử lý khai báo và cấu hình các module chức năng // mã lệnh chương trình con phục vụ ngắt // mã lệnh chương trình con // mã lệnh chương trinh chính #include Ví dụ: một khung chương trình ñơn giản nhất
#include <18F452.h>
void main()
{
// mã nguồn chương trình chính
}
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 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 •
•
•
•
• char: ký tự 8 bit 95 • 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 3. #BIT , #BYTE , #LOCATE và # DEFINE 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 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
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ụ: - 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 (cid:3) 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 (cid:3) 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
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 : 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 - 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 97 - 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ị.
VD : delay_cycles ( 25 ) ; // với OSC = 20 Mhz , hàm này delay 5 µs
b) delay_us ( time ): Hàm cho phép delay khoảng thời gian theo ñơn vị µs Trong ñó: Nếu time là 1 biến thì gía trị của nó trong khoảng [0-255], nếu time là 1 hằng số thì giá trị trong khoảng [0 - 65535]. Hàm không trả về trị.
c) delay_ms (time ): Hàm cho phép delay khoảng thời gian theo ñơn vị ms Trong ñó: Nếu time là 1 biến thì gía trị của nó trong khoảng [0-255], nếu time là 1 hằng số thì giá trị trong khoảng [0 - 65535]. Hàm không trả về trị.
VD : Int a = 215;
Delay_us ( a ) ; // delay 215 µs
Delay_us ( 4356 ) ; // delay 4356 µs
Delay_ms ( 2500 ) ; // delay 2. 5 s 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.2.6. Hàm truy cập các kênh ADC
a) Cấu hình các kênh ADC
1) setup_ADC(mode); Hàm thiết lập chế ñộ làm việc cho các kênh ADC 98
Trong ñó mode là hằng số thiết lập giá trị cho thanh ghi ñiều khiển thiết lập chế
ñộ hoạt ñộng của ADC. Tùy thuộc vào thiết bị mà ta sử dụng thông qua khai báo
#inlude <*.h> mà mode ñược ñịnh nghĩa khác nhau. Để xem chi tiết ta có thể mở file
thiết bị *.h tương ứng trong thư mục DEVICE ñể xem các ñịnh nghĩa. Trong phạm vi
bài giảng này chỉ ñưa ra một số các hằng số mode ñịnh nghĩa sẵn cho dòng chip
18C452 như sau: • ADC_OFF: tắt hoạt ñộng ADC (tiết kiệm ñiện , dành chân cho hoạt ñộng khác)
• ADC_CLOCK_INTERNAL: mở ADC với thời gian lấy mẫu bằng xung clock IC (mất 2-6 µs), hằng số này thường là chung cho các chip . • ADC_CLOCK_DIV_2: mở ADC với thời gian lấy mẫu bằng xung clock / 2 (mất 0.4 us trên thạch anh 20MHz) • ADC_CLOCK_DIV_8: mở ADC với thời gian lấy mẫu bằng xung clock / 8 (1.6 us) • ADC_CLOCK_DIV_32: mở ADC với thời gian lấy mẫu bằng xung clock / 32 (6.4 us) 2) Setup_ADC_ports ( value ); // hàm cho phép các kênh làm việc ở chế ñộ ADC Trong ñó value là một hằng số, trong file thiết bị *.h luôn khai báo sẵn các hằng số cho giá trị value này, ở ñây bài giảng chỉ ñưa ra một số giá trị của value như sau: • ALL_ANALOGS : dùng tất cả chân sau làm analog (A0 A1 A2 A3 A5 E0 E1 E2 (Vref=Vdd) ) • NO_ANALOG : không dùng analog , các chân ñó sẽ là chân I /O .
• AN0_AN1_AN2_AN4_AN5_AN6_AN7_VSS_VREF : A0 A1 A2 A5 E0 E1 E2 VRefh=A3 • 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 Trong ñó channel có giá trị từ 0-7 tương ứng với 8 kênh ADC (với 18F452) như 3) Set_ADC_channel ( channel ); // chọn kênh trước khi ñọc giá trị AD
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 • 0-chân A0 • 4-chân A5 99 • 5-chân E0
• 6-chân E1
• 7-chân E2 • 1-chân A1
• 2-chân A2
• 3-chân A3 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 Chương 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 #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. 100
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 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 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 #include <18F452.h>
#use delay(clock=20000000)
void main(){
set_tris_A(255); // tat ca cac pin cua A deu la cong vao
while(1){ output_bit(pin_B0,input(pin_A0)); // B0=1}} 101 3) Input ( pin ); // hàm ñọc giá trị từ 1 pin của chip
VD: Như trong ví dụ của phần 2 ở trên có lệnh input(pin_A0);
4) Output_X ( value ); // gửi giá trị 1 byte ra công X
VD : Output_B ( 212 ) ; // xuất giá trị 11010100 ra port B
5) Input_X ( ); // ñọc giá trị từ 1 công X về
VD : m=input_E();
6) Set_tris_X ( value ); // cấu hình chế ñộ vào ra cho các pin ở công X Trong ñó X là 1 cổng (A, B,…), value là 1 giá trị 8 bít. Với mỗi bit thứ i trong value = 1 tương ứng với chân thứ i trong X là công vào, nếu bằng 0 là cổng ra.
VD: với lệnh set_tris_B(0xF0) thì các chân từ B0 ñến B3 là cổng ra, còn từ B4 ñến
B7 là cổng vào.
4.3. Một số kỹ thuật lập trình nhúng
4.3.1. Xử lý ngắt
a) Mức ưu tiên ngắt
Với các loại PIC 10, 12, 14 thì chỉ có ngắt 1 cấp, tức tất các các ngắt có mức ưu
tiên như nhau, nếu một ngắt ñang thực hiện thì sẽ không bị dừng nếu có ngắt khác xẩy
ra. Với PIC 18 có 2 cấp ưu tiên, các ngắt ở cấp ưu tiên 1 nếu ñang ñược phục vụ sẽ bị
dừng nếu có ngắt ở cấp 2 xẩy ra.
b) Cú pháp (cid:1) Cấu trúc 1 chương trình ngắt ñơn giản: ….
#int_loaingat
void chuongtrinhconngat(){
….
} (cid:1) Cấu trúc một chương trình ngắt có ñộ ưu tiên cấp 2 (với CCS chỉ có 1 ngắt ñược ở cấp 2) ...
#device high_ints=true
…
#int_loaingat FAST
void chuongtrinhconngat(){
…
} Tùy thuộc vào mỗi loại chip mà số ngắt ñược hỗ trợ là khác nhau, với PIC18 có c) Các loại ngắt
35 ngắt. Một số chỉ thị khai báo ngắt (loại ngắt) 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 - #INT_AD: chuyển ñổi A /D ñã hoàn tất , thường thì không nên dùng
- #INT_BUSCOL : xung ñột bus 102 - #INT_CCP1 : có Capture hay compare trên CCP1
- #INT_CCP2 : có Capture hay compare trên CCP2
- #INT_COMP : kiểm tra bằng nhau trên Comparator
- #INT_EXT : ngắt ngoài
- #INT_EXT1 : ngắt ngoài 1
- #INT_EXT2 : ngắt ngoài 2
- #INT_I2C : có hoạt ñộng I 2C
- #INT_LCD : có hoạt ñộng LCD
- #INT_LOWVOLT : phát hiện áp thấp
- #INT_PSP : có data vào cổng Parallel slave
- #INT_RB : bất kỳ thay ñổi nào trên chân B4 ñến B7
- #INT_RC : bất kỳ thay ñổi nào trên chân C4 ñến C7
- #INT_RDA : data nhận từ RS 232 sẵn sàng
- #INT_RTCC : tràn Timer 0
- #INT_SSP : có hoạt ñộng SPI hay I 2C
- #INT_TBE : bộ ñệm chuyển RS 232 trống
- #INT_TIMER0 : một tên khác của #INT_RTCC
- #INT_TIMER1 : tràn Timer 1
- #INT_TIMER2 : tràn Timer 2
- #INT_TIMER3 : tràn Timer 3
- #INT_TIMER5 : tràn Timer 5
- #INT_OSCF : lỗi OSC
- #INT_PWMTB : ngắt cuả PWM time base
- #INT_IC3DR : ngắt ñổi hướng ( direct ) của IC 3
- #INT_IC2QEI : ngắt của QEI
- #INT_IC1 : ngắt IC 1 d) Thiết lập cấu hình ngắt
1) enable_interrupts ( int_ ); // cho phép ngắt hoặt ñộng, trong ñó int_ là 1 trong các ngắt ở mục c ở trên VD: enable_interrupts (int_timer0);// cho phép ngắt timer 0 làm việc
enable_interrupts (int_timer1 ) ;// cho phép ngắt timer 1 làm việc
enable_interrupts ( global );// cho phép ngắt toàn cục 2) disable_interrupts (int_); // cấm ngắt, tham số int_ tương tự phần 1
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 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) clear_interupt (int_); // xóa cờ ngắt
VD: 103 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
Void RB_LED ( ) // chuong trinh con phuc vu ngat
{ output_D(input_B()); // doc cong B dua ra cong D 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 }
void main ( )
{ // cau hinh cac cong vao ra va ngat
set_tris_b ( 0xF0 ) ; // portB = 11110000 , B4-B7 vao , B0-B3 ra set_tris_d ( 0x00 ) ; // portD = 00000000 , D0-D7 ra
enable_interrupts ( INT_RB ) ; // cho phep ngat cong B
enable_interrupts ( GLOBAL ) ; // cho phep ngat toan cuc
// chuong trinh chinh khong lam gi
while( true ); Bộ ñịnh thời cũng giống như hàm DELAY, ñể tạo ra một khoảng thời gian trễ
chính xác nào ñấy, tuy nhiên khác với hàm DELAY ở chỗ, hàm DELAY trễ là do CPU
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: 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 1) setup_timer_0 (mode); // hàm cấu hình cho timer0 105 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 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 #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
// This interrupt is used to output the waveforms. The interrupt
// is automatically called ever 200us.
#INT_TIMER1
void wave_timer() {
int i;
set_timer1(0xFC4F); // sets timer to interrupt in 200us
//… cong viec muon thuc hien sau moi 200us
}
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ì
} Để cấu hình chế ñộ làm việc cho công RS232 trên PIC tối thiêu ta phải sử dụng hai hàm sau: • #use delay (clock = xxxx ) // giá trị OSC hệ thống, tham số này cần chính xác ñể hệt thống tính toán ñúng tốc ñộ truyền thông • #use rs232 (option); // các tùy chọn cấu hình cho giao thức truyền thông, option có thể là các giá trị sau (một số hằng số thông dụng): string là 1 chuỗi hằng hay 1 mảng ký tự ( kết thúc bởi ký tự null ) . o BAUD=x: tốc ñộ truyền thông
o XMIT=pin: chân truyền
o RCV=pin: chân nhận
o PARITY=X: với x = N, E, hoăc O.
o STOP=X: X là số bit STOP
b) Một số hàm truyền thông thông dụng
1) printf ( string ) hoặc Printf ( cstring , values . . . ); //truyền một xâu ra cổng
RS232
Trong ñó:
-
- value là danh sách các biến , cách nhau bởi dấu phẩy . f : số thực Giống như hàm xuất ra màn hình trong ngôn ngữ C, ta phải cấu hình cho dữ
liệu ñược gửi ra công RS232 như gửi ra màn hình. Cú pháp ñịnh dạng cho value theo
kiểu %wt. Trong ñó w có thể có hoặc không, chỉ số vị trí chứa giá trị. Còn t là kiểu giá
trị hiển thị. t có thể là :
- C : 1 ký tự
- S : chuỗi hoặc ký tự
- U : số 8 bit không dấu
- x : số 8 bit kiểu hex ( ký tự viết thường ,VD : 1ef )
- X : số 8 bit kiểu hex ( ký tự viết hoa ,VD : 1EF )
- D : số 8 bit có dấu
- e : số thực có luỹ thừa VD : e12
-
- Lx : số hex 16 /32 bit ( ký tự viết thường )
- LX : hex 16 /32 bit ( ký tự viết hoa )
- Lu : số thập phân không dấu
- Ld : số thập phân có dấ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 VD:
Int k =6 ;
Printf ( " hello " );
Printf ( " %u " , k ); Chương trình trên PIC truyền #include <18F452.h >
#use delay(clock=40000000)
#use rs232(baud=9600 , parity=n , xmit=pin_C6 , rcv=pin_C7 )
unsigned int8 data;
void main ( )
{
set_tris_B(0xFF);
set_tris_D(0x00);
while(1){
data=input_B();
putc(data);
output_D(data);
}
} Chương trình trên PIC nhậ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 #include <18F452.h >
#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);
}
} 108 Sơ ñồ mạch mô phỏng trên Proteus 4.4. Hệ ñiều hành nhúng
4.4.1. Khái niệm và yêu cầu chung 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 Nguồn gốc ra ñời của hệ ñiều hành là ñể ñảm nhiệm vai trò trung gian ñể tương
tác trực tiếp với phần cứng của máy tính, phục vụ cho nhiều ứng dụng ña dạng. Các hệ
ñiều hành cung cấp một tập các chức năng cần thiết ñể cho phép các gói phần mềm
ñiều khiển phần cứng máy tính mà không cần phải can thiệp trực tiếp sâu. Hệ ñiều
hành của máy tính có thể thấy nó bao gồm các drivers cho các ngoại vi tích hợp với
máy tính như card màn hình, card âm thanh... Các công cụ ñể quản lý tài nguyên như
bộ nhớ và các thiết bị ngoại vi nói chung. Điều này tạo ra một giao diện rất thuận lợi
cho các ứng dụng và người sử dụng phát triển phần mềm trên các nền phần cứng ñã
có. Đồng thời tránh ñược yêu cầu và hiểu biết sâu sắc về phần cứng và có thể phát
triển dựa trên các ngôn ngữ bậc cao. Hệ thống ñiều hành bản chất cũng là một loại
phần mềm nhưng nó khác với các loại phần mềm thông thường. Sự khác biệt ñiển hình
là hệ thống ñiều hành ñược nạp và thực thi ñầu tiên khi hệ thống bắt ñầu khởi ñộng và
ñược thực hiện trực tiếp bởi bộ xử lý của hệ thống. Hệ thống ñiều hành ñược viết ñể
phục vụ ñiều khiển bộ xử lý cũng như các tài nguyên khác trong hệ thống bởi vì nó sẽ 109
ñảm nhiệm chức năng quản lý và lập lịch các quá trình sử dụng CPU và cùng chia sẻ
tài nguyên. Tóm lại, hệ ñiều hành thực chất chính là một giao diện quan trọng, giao tiếp
trực tiếp với tầng phần cứng cấp thấp phục vụ cho cả người sử dụng cũng như các
chương trình ứng dụng thực thi trên nền phần cứng hệ thống. Hơn nữa hệ ñiều hành
còn có vai trò quan trọng trong việc ñảm nhiệm 3 tác vụ nguyên lý chính: (1) Quản lý
quá trình, (2) Quản lý tài nguyên, (3) Bảo vệ tài nguyên khỏi sự xâm phạm của các quá
trình thực thi sai.
(cid:2) Yêu cầu chung với một HĐH 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à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 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. 110 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
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. 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 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. 111 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. 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 Trong môi trường phát triển hệ nhúng ñiển hình, nền phần cứng ñích cần phát
triển ñược kết nối với trạm chủ (host) thông qua một giao diện truyền thông. Một môi
trường phát triển bao gồm một chương trình gỡ rối (debugger) ví dụ như Code 112
Composer Studio của Texas Instrument, ñể cho phép người phát triển chương trình
nạp và thực hiện thử nghiệm các chương trình trên phần cứng ñích. Một số các công
cụ hỗ trợ ví dụ như ñể thiết lập các ñiểm dừng (breakpoint)…và các nhiệm vụ phụ trợ
khác ñể bám sát trạng thái quá trình thực thi thời gian thực của chương trình thử
nghiệm. Điều này rất có ý nghĩa và tạo nên một sự dễ dàng hơn trong quá trình phát
triển và gỡ rối một chương trình ứng dụng mới cho nền phần cứng ñích. Thông thường các ứng dụng ñược phát triển trong môi trường ngôn ngữ C thì
chương trình ứng dụng chính ñược thực thi và nằm trong phạm vi hàm main() phần
khởi tạo chương trình và nạp tiền thực hiện chương trình chính thường không tường
minh hoặc bị ẩn ñi. Thực chất ñiều này chỉ ñúng ñối với những người phát triển mã
chương trình ứng dụng chính bằng ngôn ngữ bậc cao (ñặc biệt cho các ứng dụng
không phải cho hệ nhúng) mà không cần phải quan tâm nhiều ñến các tác vụ cơ sở
ñảm nhiệm việc khởi tạo các thanh ghi hệ thống, ngăn xếp và dữ liệu…Điều này cũng
rất có ý nghĩa ñể tạo ra một cảm giác và môi trường phát triển thân thiện cho người
phát triển chương trình và chỉ cần tập trung phần thực hiện chức năng chính của hệ
thống. Tuy nhiên trong môi trường phát triển hệ thống nhúng việc thực thi chương
trình thường bắt ñầu tại ñịa chỉ chương trình nơi bắt ñầu tác vụ khởi tạo hệ thống trước
khi nhảy tới thực hiện chương trình chính main(). Quá trình này ñược bắt ñầu thực
chất là thực thi một tác vụ ngắt kích hoạt bởi sự kiện reset. 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 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ự. 113 4.4.3. Hệ ñiều hành thời gian thực QNX là một ví dụ ñiển hình về hệ thống thời gian thực RTOS ñược thiết kế ñể
ñáp ứng các yêu cầu về lập lịch rất khắt khe. QNX cũng chưa thực sự phù hợp ñể có
thể ñược thực thi cho các hệ thống nhúng bởi vì nó ñòi hỏi dung lượng bộ nhớ không
nhỏ và thường phù hợp cho các ứng dụng ñòi hỏi về ñộ an toàn và ñộ tin cậy lớn. 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. Hệ thống ñiều hành với phần lõi là hạt nhân phải ñảm nhiệm các tác vụ chính như sau:
Xử lý ngắt • Lưu trữ ngữ cảnh chương trình tại thời ñiểm xuất hiện ngắt
• Nhận dạng và lựa chọn ñúng bộ xử lý và phục vụ dịch vụ ngắt Điều khiển quá trình • Tạo và kết thúc quá trình/tác vụ
• Lập lịch và ñiều phối hoạt ñộng hệ thống
• Định thời Điều khiển ngoại vi 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 • Xử lý ngắt 114 • Khởi tạo giao tiếp vào ra Tùy theo cơ chế thực hiện và xây dựng hoạt ñộng của hạt nhân người ta phân loại một số loại hình:
(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ệ 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 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 115
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. • 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 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 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. 116 Hạt nhân sẽ phải ñảm nhiệm chức năng lập lịch cho các quá trình theo ñúng mô hình trạng thái. • RUN: quá trình ñược thực hiện
• WAIT: các quá trình chờ một sự kiện hoặc tín hiệu vào ra kích hoạt quá trình
• READY: các quá trình sẵn sàng ñược thực hiện
Các phần tử thuộc tính của một quá trình: Các phần tử này cần thiết ñể phục vụ cho
việc lập lịch. Ví dụ ñối với cơ chế lập lịch theo mức ñộ ưu tiên sẽ yêu cầu thông tin
sau với mỗi quá 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 • Tên (ñịa chỉ bộ nhớ của phần tử quá trình)
• Trạng thái: RUN, WAIT, READY
• Mức ñộ ưu tiên
• Ngữ cảnh (dùng con trỏ ñể quản lý lưu cất thông tin trong ngăn xếp)Xung nhịp dao động của PIC, được chia cho 4 trước khi đưa vào hệ thống.
86
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
k. OrCAD
7
8
9
4
5
6
1
2
3
0
=
++
Chương IV: PHẦN MỀM NHÚNG
96
#define a 12345 // khai báo nhãn a thay cho 12345
4. # DEVICE
104
}
4.3.2. Xử lý TIMER
Trong tất cả các loại PIC ñều tích hợp các bộ timer, về bản chất timer là bộ ñếm
(counter), tuy nhiên nguồn xung ñếm có thể là nguồn ngoại vi hoặc từ bộ dao ñộng của
hệ thống. Chính vì thế về mặt chức năng ta có thể hiểu chúng có 2 chức năng, một là
bộ ñếm và hai là bộ ñịnh thời.
Hình 36: Sơ ñồ khối timer
106
4.3.3. Truyền thông chuẩn RS232
a) Cấu hình cổng RS232
107
2) KBHIT ( ); // hàm trả về 1 sẽ báo quá trình nhận 1 ký tự thành công và sẵn sàng
cho việc ñọc, bằng 0 nếu quá trình nhận chưa hoàn tất. Hàm này có thể dùng ñể hỏi
vòng xác ñịnh thời ñiểm nhận thành công 1 ký tự trên ñường truyền.
3) value=getch(); // hàm ñọc 1 ký tự từ bộ ñệm nhận, giá trị trả về là 1 byte
4) putc(data), getch(); hàm truyền và nhận một ký tự trên ñường truyền
Ví dụ: Ví dụ lập trình cho PIC truyền liên tục ñọc cổng B gửi ra công D và truyền qua
ñường RS232 chp PIC nhân, PIC nhận liên tục ñọc từ ñương truyền RS232 và gửi ra
cổng D
Hình 37: Kiến trúc một HĐH
Hình 38: Nguyễn lý thực hiện của boot - loader
Hình 39: Cấu trúc của một boot - loader
Hình 40: So sánh kiến trúc RTOS và OS chuẩn
Hình 41: Cấu trúc một RTOS
Hình 42: Mô hình trạng thái của quá trình

