Hệ thống nhúng – thiết bị nhúng

Hệthống nhúng là một hệthống máy tính được thiết kế để thực hiện một chức năng chuyên biệt nào đó. Khác với các máy tính đa chức năng; chẳng hạn, máy tính cá nhân, một hệ thống nhúng chỉ thực hiện một hoặc một vài chức năng nhất định, thường đi kèm với những yêu cầu cụ thể và bao gồm một số thiết bị máy móc và phần cứng chuyên dụng mà ta không tìm thấy trong một máy tính đa năng nói chung. Vì hệ thống chỉ được xây dựng cho một số nhiệm vụ nhất định nên các nhà thiết kế có thể tối ưu hóa nó nhằm giảm thiểu kích thước và chi phí sản xuất.

pdf15 trang | Chia sẻ: vietpd | Lượt xem: 2616 | Lượt tải: 2download
Bạn đang xem nội dung tài liệu Hệ thống nhúng – thiết bị nhúng, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Trang 64 Chương 4 Hệ thống nhúng – thiết bị nhúng " Nội dung của chương này sẽ giới thiệu tổng quan về hệ thống nhúng, và các thiết bị nhúng liên quan được dùng cho việc xây dựng và chạy thử nghiệm thư viện nhận dạng vân tay ở trong luận văn này; cụ thể là giới thiệu về họ vi xử lý ARM9 và bo mạch NK9315 được dùng để chạy thử nghiệm thư viện nhận dạng vân tay. 4.1 Hệ thống nhúng 4.1.1 Định nghĩa Hệ thống nhúng là một hệ thống máy tính được thiết kế để thực hiện một chức năng chuyên biệt nào đó. Khác với các máy tính đa chức năng; chẳng hạn, máy tính cá nhân, một hệ thống nhúng chỉ thực hiện một hoặc một vài chức năng nhất định, thường đi kèm với những yêu cầu cụ thể và bao gồm một số thiết bị máy móc và phần cứng chuyên dụng mà ta không tìm thấy trong một máy tính đa năng nói chung. Vì hệ thống chỉ được xây dựng cho một số nhiệm vụ nhất định nên các nhà thiết kế có thể tối ưu hóa nó nhằm giảm thiểu kích thước và chi phí sản xuất. Các hệ thống nhúng thường được sản xuất hàng loạt với số lượng lớn [33]. Hệ thống nhúng rất đa dạng, phong phú về chủng loại; đó có thể là những thiết bị cầm tay nhỏ gọn như đồng hồ kĩ thuật số, máy chơi nhạc MP3, hay những sản phẩm lớn như đèn giao thông, các bộ kiểm soát trong nhà máy hay hệ thống kiểm soát các máy năng lượng hạt nhân, … Xét về độ phức tạp, hệ thống nhúng có thể rất đơn giản với một vi điều khiển hoặc rất phức tạp với nhiều thành phần, các thiết bị ngoại vi và mạng lưới được nằm gọn trong một lớp vỏ máy lớn. Các ví dụ về hệ thống nhúng: • Các máy trả lời tự động. Trang 65 • Máy in. • Disk drives. • Điện thoại tế bào. • Hệ chuyển mạch. • Hệ thống dẫn đường trong không lưu. • Các thiết bị y tế. • Video game consoles. • Máy móc công nghiệp sử dụng các bộ điều khiển lôgic có thể lập trình được (PLC) để điều khiển và giám sát các hoạt động của dây chuyền hệ thống. • Các thiết bị gia dụng như: máy giặt, lò vi sóng, các sản phẩm tự động hóa, các hệ thống an toàn và bảo mật. • Các thiết bị mạng: router, firewall, … 4.1.2 Lịch sử phát triển Hệ thống nhúng đầu tiên là Apollo Guidance Computer (máy tính dẫn đường Apollo) được phát triển bởi Charles Stark Draper tại phòng thí nghiệm của trường đại học MIT. Hệ thống nhúng được sản xuất hàng loạt, đầu tiên là máy hướng dẫn cho tên lửa quân sự vào năm 1961 có tên gọi là Autonetics D-17, được xây dựng từ những bóng bán dẫn và một đĩa cứng để duy trì bộ nhớ. Khi Minuteman II được đưa vào sản xuất năm 1996, D-17 đã được thay thế với một máy tính mới sử dụng mạch tích hợp. Tính năng thiết kế chủ yếu của máy tính Minuteman là nó đưa ra thuật toán có thể lập trình lại; sau đó, để làm cho tên lửa chính xác hơn, và máy tính có thể kiểm tra tên lửa, giảm trọng lượng của cáp điện và đầu nối điện. Từ những ứng dụng đầu tiên vào những năm 1960, các hệ thống nhúng đã giảm giá và phát triển mạnh mẽ về khả năng xử lý. Bộ vi xử lý đầu tiên hướng đến người tiêu dùng là Intel 4004, được phát minh phục vụ máy tính điện tử và những hệ thống nhỏ Trang 66 khác; tuy nhiên, nó vẫn cần các chip nhớ ngoài và những hỗ trợ khác. Vào những năm cuối 1970, những bộ xử lý 8 bit đã được sản xuất, nhưng nhìn chung chúng vẫn cần đến những chip nhớ bên ngoài. Vào giữa thập niên 80, kỹ thuật mạch tích hợp đã đạt trình độ cao dẫn đến nhiều thành phần có thể đưa vào một vi xử lý. Các bộ vi xử lý được gọi là các vi điều khiển và được chấp nhận rộng rãi. Với giá cả thấp, các vi điều khiển đã trở nên rất hấp dẫn để xây dựng các hệ thống chuyên dụng. Đã có một sự bùng nổ về số lượng các hệ thống nhúng trong tất cả các lĩnh vực thị trường và số các nhà đầu tư sản xuất theo hướng này. Ví dụ, rất nhiều vi xử lý đặc biệt xuất hiện với nhiều giao diện lập trình hơn là kiểu song song truyền thống để kết nối các vi xử lý. Vào cuối những năm 80, các hệ thống nhúng đã trở nên phổ biến trong hầu hết các thiết bị điện tử và khuynh hướng này vẫn còn tiếp tục cho đến nay. Hiện nay có khá nhiều kiến trúc vi xử lý khác nhau sử dụng để xây dựng hệ thống nhúng như: ARM, MIPS, Coldfire/68k, PowerPC, x86, PIC, 8051, Atmel AVR, Renesas H8, SH, V850, FR-V, M32R, Z80, Z8, … 4.1.3 Các đặc điểm của hệ thống nhúng Hệ thống nhúng thường có một số đặc điểm chung như sau: • Các hệ thống nhúng được thiết kế để thực hiện một số nhiệm vụ chuyên dụng chứ không phải đóng vai trò là các hệ thống máy tính đa chức năng. • Một hệ thống nhúng thường không phải là một khối riêng biệt mà là một hệ thống phức tạp nằm trong thiết bị mà nó điều khiển. Các thành phần như: vi xử lý hay bộ nhớ có nhiều kiểu kiến trúc khác nhau. • Việc sản xuất hệ thống nhúng chịu sự ràng buộc lớn về chi phí và năng lượng. • Hệ thống nhúng thường có những yêu cầu về xử lý theo thời gian thực. Trang 67 • Việc xây dựng phần mềm trên hệ thống nhúng gặp phải những khó khăn về công cụ lập trình và debug. • Phần mềm được viết cho các hệ thống nhúng được gọi là firmware và được lưu trữ trong các vi xử lý bộ nhớ chỉ đọc (read-only memory) hoặc bộ nhớ flash chứ không phải là trong một ổ đĩa. Phần mềm thường chạy với số tài nguyên phần cứng hạn chế: không có bàn phím, màn hình hoặc có nhưng với kích thước nhỏ, bộ nhớ hạn chế. Xét riêng về mặt giao diện: • Các hệ thống nhúng có thể không có giao diện (đối với những hệ thống đơn nhiệm) hoặc có đầy đủ giao diện giao tiếp với người dùng tương tự như các hệ điều hành trong các thiết bị để bàn. Các hệ thống đơn giản sử dụng nút bấm, đèn LED và hiển thị chữ cỡ nhỏ hoặc chỉ hiển thị số. • Trong một hệ thống phức tạp hơn, một màn hình đồ họa, cảm ứng hoặc có các nút bấm ở lề màn hình cho phép thực hiện các thao tác phức tạp. Các hệ thống nhúng thường có một màn hình với một nút bấm dạng cần điểu khiển (joystick button). • Sự phát triển mạnh mẽ của mạng toàn cầu đã mang đến cho những nhà thiết kế hệ nhúng một lựa chọn mới là sử dụng một giao diện web thông qua kết nối mạng. Điều này có thể giúp tránh được chi phí cho những màn hình phức tạp nhưng đồng thời vẫn cung cấp khả năng hiển thị và nhập liệu phức tạp khi cần đến, thông qua một máy tính khác. Điều này là hết sức hữu dụng đối với các thiết bị điều khiển từ xa, hoặc các thiết bị cài đặt vĩnh viễn từ khi xuất xưởng. Độ tin cậy của hệ thống nhúng: • Các hệ thống nhúng thường nằm trong các cỗ máy được kỳ vọng là sẽ chạy hàng năm trời liên tục mà không bị lỗi hoặc có thể tự động khôi phục hệ thống khi gặp lỗi. Vì thế, các phần mềm hệ thống nhúng cần phải được kiểm Trang 68 thử một cách cẩn thận hơn là phần mềm cho máy tính cá nhân. Ngoài ra, các thiết bị rời không đáng tin cậy như ổ đĩa, công tắc hoặc nút bấm thường bị hạn chế sử dụng. Việc khôi phục hệ thống khi gặp lỗi có thể được thực hiện bằng cách sử dụng các kỹ thuật như watchdog timer – nếu phần mềm không đều đặn nhận được các tín hiệu watchdog định kì thì hệ thống sẽ tự khởi động lại. • Trường hợp hệ thống không thể ngừng để sửa chữa một cách an toàn; ví dụ, ở các hệ thống không gian, hệ thống dây cáp dưới đáy biển, các đèn hiệu dẫn đường, … Giải pháp đưa ra là chuyển sang sử dụng các hệ thống con dự trữ hoặc các phần mềm cung cấp một phần chức năng. • Đối với hệ thống phải được chạy liên tục vì tính an toàn; ví dụ, các thiết bị dẫn đường máy bay, thiết bị kiểm soát độ an toàn trong các nhà máy hóa chất… thì cần phải chuẩn bị sẵn sàng hệ thống khác tương tự để thay thế ngay khi cần thiết. 4.1.4 Kiến trúc của hệ thống nhúng Kiến trúc của hệ thống nhúng là khái niệm trừu tượng của thiết bị nhúng; nghĩa là, nó là tổng quát hóa của một hệ thống chứ không phải là thông tin thực hiện chi tiết. Ở mức kiến trúc, các thành phần của phần cứng và phần mềm trong hệ thống nhúng được coi như là các phần tử kết hợp tác động qua nhau (composition of interacting elements). Thông tin ở mức kiến trúc được thể hiện ở dạng các cấu trúc (structrures). Một cấu trúc có thể là một đại diện của kiến trúc, nó chứa các phần tử (elements), thuộc tính (properties), và thông tin mối liên hệ các phần tử bên trong kiến trúc, xem các cấu trúc chi tiết ở [33]. Trang 69 Hình 4.1 Mô hình tiêu biểu của hệ thống nhúng. 4.1.5 Các ứng dụng hệ thống nhúng Hiện nay, có rất nhiều các ứng dụng của hệ thống nhúng đang được sử dụng và xu thế sẽ còn tiếp tục tăng nhanh [45]. Một số các lĩnh vực và sản phẩm thị trường rộng lớn của các hệ nhúng có thể được nhóm lại như sau: • Các thiết bị điều khiển. • Máy bay, ôtô, tàu lửa tốc độ cao. • Hệ thống điều khiển tàu trụ. • Truyền thông. • Thiết bị y tế. • Hệ thống đo lường thẩm định. • Tòa nhà thông minh. • Thiết trong các dây chuyền sản xuất. • Rôbốt. • Các thiết bị quân sự (hệ thống tên lửa , máy bay chiến đấu, tàu chiến, ...). Trang 70 4.2 Bo mạch NK9315 4.2.1 Giới thiệu Bo mạch NK9315 sử dụng vi xử lý thuộc dòng vi xử lý ARM9 có tên là EP9315-CB. Về mặt kiến trúc, bo mạch được thiết kế tương tự như bo mạch NK9312 nhưng sử dụng bộ vi xử lý EP9315-CB thay cho bộ EP9312. Bo mạch có thể chạy được các hệ điều hành như Windows CE hay Embedded Linux. Hình 4.2 Kiến trúc bo mạch NK9315. Các thành phần chính của bo mạch NK9312/9315: • 16KB 64-way set-association instruction, tốc độ bộ vi xử lí là 200MHz. • Khởi động (Boot up): o Khởi động Internal boot thông qua ROM. o Khởi động External boot thông qua Bộ nhớ Flash không đồng bộ – Asynchronous Flash. • SDRAM Samsung. Trang 71 • 1 SRAM bus interface: dùng để kết nối đến thiết bị SDRAM dữ liệu ngoài 16-bit. • NK9312/9315 hỗ trợ bộ nhớ flash loại NAND hay NOR kích thước 32 MB được chia thành 2 thiết bị nhớ là Intel E28F128J3A Strata FLASH. • Các thiết bị ngoại vi o A/DC. o Cổng giao tiếp mạng PCMCIA – 1 PCMCIA interface. o 3 cổng USB 2.0. o 3 cổng UART – 2 RS-232 và 1 RS-485. o Video interface – Raster/LCD (Touch screen interface). o I2S Audio. o IDE – IDE storage device. 4.2.2 Các đặc tính của bo mạch NK9315 Bảng 4.1 Các tính năng hỗ trợ của bo mạch NK9315. Bo mạch NK9315 Tốc độ CPU 200 MHz RAM 64 MB Math Engine 9 Ehternet MAC 9 PCMCIA 9 IDE 2ch USB Hosts 3 Trang 72 Display 9 Graphics Accel 9 Touch ADC 9 Keypad 9 UARTS 3 4.3 Vi xử lý họ ARM9 4.3.1 Lịch sử phát triển họ vi xử lý ARM Trong thời kỳ đầu của điện toán, con người đã sử dụng các linh kiện điện tử bằng silicon để tạo ra vi xử lý để xử lý và thực hiện lệnh. Theo thời gian, khi nhu cầu về số lượng các lệnh ngày càng tăng thì càng nhiều yêu cầu lệnh được thêm vào. Đặc biệt, với những lệnh phức tạp thì việc thêm chúng vào các linh kiện điện tử silicon trở thành một công việc vô cùng khó khăn. Chính vì thế, những nhà thiết kế vi xử lý giải quyết bằng cách dùng microcode9, mà minh chứng cụ thể chính là vi xử lý theo kiểu CISC (Complex Instruction Set Computer). Vi xử lý CISC có tầng cơ bản nhất (còn được xem là phần nhân, phần cốt lõi) dựa trên vi xử lý RISC (Reduced Instruction Set Computer) có tốc độ xử lý nhanh. Tầng cao nhất trong CISC là bộ thông dịch đảm nhận nhiệm vụ rã các lệnh phức tạp của CISC thành các lệnh RISC đơn giản hơn để xử lý. ARM được xem là bộ vi xử lý RISC có hiệu quả cao, chi phí thấp và tiết kiệm năng lượng. Ban đầu, nó được thiết kế cho máy tính để bàn Archimedes nhưng vì trong bản thiết kế có nhiều điểm làm cho ARM không phù hợp với máy tính để bàn và có nhiều điểm làm cho ARM phù hợp với thiết bị nhúng, nên ARM ngẫu nhiên trở thành sự lựa chọn cho các ứng dụng nhúng. 9 Microcode là kỹ thuật để phát triển tập lệnh trong bộ xử lý Trang 73 Hiện nay, trên thị trường có rất nhiều sản phẩm nhúng sử dụng vi xử lý ARM. Điện thoại di động là một trong những sản phẩm tiêu biểu đã sử dụng hệ thống vi xử lý ARM của hãng thiết kế bộ xử lý cho điện thoại di động Arm (Mỹ). Theo dòng vi xử lý Arm7 đang thống lĩnh thị trường trên các loại điện thoại chỉ hỗ trợ hội thoại. Điện thoại sử dụng mẫu vi xử lý Arm9 thì chiếm số đông trong thị trường sản phẩm tầm trung (các loại điện thoại có thêm chức năng chuyên biệt), còn mẫu vi xử lý Arm11 thì được ứng dụng cho hầu hết điện thoại thông minh cao cấp. Các phiên bản họ vi xử lý ARM: Bảng 4.2 Các phiên bản thuộc họ vi xử lý ARM. Core Arch Implementation Feature ARM1 ARMv1 ARM1 ARM2 ARMv2 ARM2 Architecture 2 added the MUL (multiply) instruction ARMv2a ARM250 Integrated MEMC (MMU), Graphics and IO processor. Architecture 2a added the SWP and SWPB (swap) instructions. ARM3 ARMv2a ARM2a First use of a processor cache on the ARM. ARM6 ARMv3 ARM60 v3 architecture first to support addressing 32bits of memory (as opposed to 26bits) ARM600 Cache and coprocessor bus (for FPA10 floating-point unit). Trang 74 ARM610 Cache, no coprocessor bus. ARM7 ARMv3 ARM700 ARM7100 Integrated SoC. ARM7500(FE) Integrated SoC. "FE" Added FPA and EDO memory controller. ARM7TDM I ARMv4T ARM7TDMI(-S) 3-stage pipeline ARM710T ARM720T ARM740T ARMv5TE J ARM7EJ-S Jazelle DBX StrongARM ARMv4 SA-110 ARM9TDM I ARMv4T ARM9TDMI 5-stage pipeline ARM920T ARM922T ARM940T ARM9E ARMv5TE ARM946E-S ARMv5TE J ARM926EJ-S Jazelle DBX Trang 75 ARMv5TE ARM996HS Clockless processor ARM10E ARMv5TE ARM1020E (VFP), 6-stage pipeline ARM1022E (VFP) ARMv5TE J ARM1026EJ-S Jazelle DBX XScale ARMv5TE 80200/IOP310/IOP 315 I/O Processor IOP34x 1-2 core, RAID Acceleration PXA210/PXA250 Applications processor, 7-stage pipeline IXC1100 Control Plane Processor ARM11 ARMv6 ARM1136J(F)-S SIMD, Jazelle DBX, (VFP), 8- stage pipeline ARMv6T2 ARM1156T2(F)-S SIMD, Thumb-2, (VFP), 9-stage pipeline ARMv6KZ ARM1176JZ(F)-S SIMD, Jazelle DBX, (VFP) ARMv6K ARM11 MPCore 1-4 core SMP, SIMD, Jazelle DBX, (VFP) Cortex ARMv7-A Cortex-A8 Application profile, VFP, NEON, Jazelle RCT, Thumb-2, 13-stage pipeline ARMv7-R Cortex-R4(F) Embedded profile, (FPU) Trang 76 ARMv7-M Cortex-M3 Microcontroller profile, Thumb-2 only. ARMv6-M Cortex-M1 FPGA targeted, Microcontroller profile, Thumb-2 (BL, MRS, MSR, ISB, DSB, and DMB). 4.3.2 Vi xử lý EP9315-CB Hình 4.3 Vi xử lý EP9315-CB. EP9315-CB được dùng làm vi xử lý trong bo mạch NK9315. Đây là vi xử lý phát triển thêm các tính năng từ ARM920T, là thành viên trong họ ARM9TDMI sử dụng cho các vi xử lý đa dụng. ARM9TDMI bao gồm: • ARM9TDMI (phần nhân). • ARM940T (gồm phần nhân, bộ nhớ dữ liệu cache và protection unit). • ARM920T (gồm phần nhân, bộ nhớ dữ liệu cache và MMU10). Nhân bộ vi xử lý ARM9TDMI được thực thi qua 5 giai đoạn: Fetch, Decode, Execute, Memory và Write. Đó là nhân độc lập có thể nhúng vào nhiều thiết bị phức 10 Memory Management Unit Trang 77 tạp. Nhân độc lập này có giao diện đơn giản cho đường truyền dữ liệu – bus cho phép bạn thiết kế hệ thống bộ nhớ và bộ nhớ dữ liệu cache cho chính mình. Họ vi xử lý ARM9TDMI hỗ trợ cho cả ARM 32-bit và 16-bit (các tập lệnh Thumb) giúp cân bằng giữa hiệu suất và mật độ mã. EP9315-CB là vi xử lý có cấu trúc dữ liệu cache của Havard. Mục tiêu của EP9315- CB là các ứng dụng được kiểm soát toàn bộ bộ nhớ, hiệu suất cao và tiết kiệm năng lượng lên hàng đầu. Trong thiết kế này thì phần lệnh và dữ liệu được tách độc lập và mỗi phần có kích thước 16KB. Ngoài ra, EP9315-CB sử dụng ARM architecture v4 MMU còn cung cấp sự biên dịch và kiểm tra quyền truy cập đối với lệnh và dữ liệu. EP9315-CB còn hỗ trợ ETM (Embedded Trace Macrocell) để theo dõi thời gian thực cho phần lệnh và phần dữ liệu. 4.3.3 Các đặc tính của EP9315-CB • Cấu trúc ARM bao gồm các đặc tính của RISC như sau: o Cấu trúc nạp/lưu trữ. o Tập lệnh trực giao. o File thanh ghi lớn gồm 16×32 bit. o 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. o 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 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: o 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. o 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. Trang 78 o 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ỉ. o Có các kiểu định địa chỉ theo chỉ số rất mạnh. o 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.
Tài liệu liên quan