MỞ ĐẦU Hệ thống nhúng là hệ thống máy tính cùng phần mềm đƣợc gắn theo một hệ thống khác để điều khiển hoạt động và xử lý thông tin của hệ thống đó. Nói theo chuẩn IEEE nhƣ trong [1] thì: hệ thống nhúng là một hệ tính toán nằm trong sản phẩm, tạo thành một phần của hệ thống lớn hơn và thực hiện một số chức năng của hệ thống. Khi hệ tính toán (có thể là máy tính cá nhân, vi xử lý, vi hệ thống,…) đƣợc nhúng vào trong một sản phẩm hay một hệ thống một cách hữu cơ và thực hiện một số chức năng cụ thể của hệ thống thì ta gọi đó là một hệ thống nhúng. Hệ thống nhúng thƣờng đƣợ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 nhƣ 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. Trong một số trƣờng hợp, hệ nhúng cũng có thể hoạt động nhƣ một hệ thống tồn tại độc lập. Phần mềm nhúng là phần mềm tích hợp trong các hệ thống nhúng. Mục đích của phần mềm nhúng nhằm điều khiển phần cứng, cho phép đáp ứng tƣơng tác ngƣời dùng hoặc cung cấp môi trƣờng để phát triển các phần mềm nhúng tích hợp khác.
Phần mềm nhúng tạo nê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ệ giá trị cao trong giá trị của các sản phẩm nhúng. Chúng ta có thể nhìn thấy các sản phẩm của hệ thống nhúng trong cuộc sống hàng ngày nhƣ ô tô, điện thoại di động, ti vi, tủ lạnh, thẻ tín dụng, phƣơng tiện vận chuyển … hay trong những hệ thống lớn nhƣ máy móc thiết bị ở bệnh viện, công nghệ viễn thông, tự động hóa, 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. Việc thiết kế và chế tạo các hệ thống nhúng đƣợc các nƣớc phát triển quan tâm và giải quyết từ lâu, nhƣng bắt đầu phát triển với tốc độ nhanh từ giữa những năm 1970 khi xuất hiện các bộ vi xử lý và vi điều khiển, đáp ứng nhu cầu phát triển các hệ thống điện tử, dân dụng, an ninh quốc phòng, trò chơi, công nghiệp hóa, tự động điều khiển của nhiều quốc gia và thế giới.
Tuy nhiên, việc phát triển các hệ thống nhúng lâu nay chủ yếu phụ thuộc vào ngƣời thiết kế, nhất là kinh nghiệm phát triển hệ thống và trình độ công nghệ của ngƣời kiến trúc sƣ. Điều đó LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 9 chƣa có gì đảm bảo bản thiết kế (về phần cứng và/hoặc phần mềm) là tối ƣu hay tốt nhất trong những điều kiện đặt ra khi thiết kế và phát triển hệ thống nhúng. Với sự phát triển nhanh chóng của công nghệ, nhất là công nghệ vi điện tử, hệ thống trên một chip thì việc thiết kế và phát triển hệ thống nhúng không thể làm bằng tay và chỉ theo kinh nghiệm của ngƣời thiết kế nữa, mà cần đƣợc làm tự động và/hoặc có sự hỗ trợ của các công cụ thiết kế. Vì thế, tự động hóa thiết kế điện tử (EDA) đã thành chủ đề thời sự và luôn nóng bỏng, có sức hấp dẫn và cạnh tranh cao giữa các nƣớc, giữa các tập đoàn xuyên quốc gia, giữa các trung tâm nghiên cứu và giữa các trƣờng đại học trong suốt hơn 40 năm qua và ngày càng có tính cạnh tranh cao, thuộc về công nghệ lõi của công nghệ thông tin – truyền thông.
Hội nghị hàng đầu thế giới hàng năm về tự động hóa thiết kế là Design Automation Conference (DAC, www.com) tại Hoa Kỳ đƣợc bắt đầu từ năm 1973 và tại khu vực Châu Á Thái Bình Dƣơng (ASP-DAC, http://www.com/aspdac/bylaws) từ năm 1995 luôn có sức hấp dẫn cao với cả giới hàn lâm và giới doanh nghiệp. Các nghiên cứu và hội nghị quốc tế về hệ thống nhúng ngày càng tăng, nhu cầu đào tạo và phát triển hệ thống nhúng là cấp bách ở Việt Nam, nơi các nhà công nghiệp nƣớc ngoài muốn hợp tác với các doanh nghiệp, viện nghiên cứu và đại học của Việt Nam để triển khai các dự án liên quan đến phát triển hệ thống nhúng, trong đó có lập trình nhúng và xây dựng hệ thống gồm cả phần cứng lẫn phần mềm kèm theo [2]. Công nghệ phần mềm đặc biệt là phần mềm nhúng ngày càng phát triển mạnh mẽ. Môi trƣờng phát triển phần mềm nhúng bị giới hạn về: khả năng xử lý của CPU, kích thƣớc bộ nhớ, thời gian sống của pin, vấn đề tiêu thụ năng lƣợng, vấn đề thời gian thực.
thiết kế phần cứng – phần mềm – codesign hardware-s Asse. nhƣ: không thể đánh giá chính xác hiệu năng, mức tiêu thụ điện năng, dung lƣợng bộ nhớ chiếm dụng … và các độ đo phần mềm trong giai đoạn thiết kế chủ yếu tập trung vào các độ đo chất lƣợng (khả năng tái sử dụng, tính dễ báo trì …) mà chƣa tập trung vào các độ đo mức thực thi (thời gian thực thi, bộ nhớ sử dụng …), nhƣng tối ƣu giai đoạn thiết kế mang. Luận văn tập trung nghiên cứu và tìm hiểu một phƣơng pháp tối ƣu trong phát triển phần mềm nhúng giai đoạn thiết kế. Đó là để LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 10 đặc tả, mô hình, tự động sinh mã tối ƣu, độc lập nền tảng cho các phần mềm nhúng.
Cụ thể là phƣơng pháp tối ƣu cấu trúc dữ liệu dựa vào chuyển đổi mô hình 4. Cấu trúc của luận văn có 4 chƣơng gồm chƣơng 1 nói về ngôn ngữ miền chuyên dụng DSL và công nghệ sinh mã T4, nội dung tập trung nghiên cứu ngôn ngữ DSL có tích hợp công nghệ sinh mã T4 nhằm xây dựng một framework hỗ trợ thiết kế mô hình cấu trúc dữ liệu của phần mềm nhúng. Chƣơng 2 tập trung tìm hiểu các phƣơng pháp tối ƣu phần mềm nhúng trong giai đoạn thiết kế để từ đó lựa chọn một phƣơng pháp tối ƣu mà luận văn tập trung nghiên cứu và phát triển thực nghiệm cho các nội dung chƣơng sau. Tiếp đến chƣơng 3 với trọng tâm nghiên cứu là tối ƣu phần mềm nhúng trong giai đoạn thiết kế dựa trên chuyển đổi mô hình, chúng tôi tập trung tìm hiểu các kỹ thuật chuyển đổi mô hình áp dụng trong giai đoạn thiết kế phần mềm nhúng để thực hiện tối ƣu hiệu năng hay bộ nhớ chiếm dụng.
Chƣơng 4 đã xây dựng hệ thống thử nghiệm, cài đặt một số phép biến đổi với một số ứng dụng. Cuối cùng chính là phần kết luận và các hƣớng nghiên cứu có thể phát triển tiếp của luận văn. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 11 CHƢƠNG 1 NGÔN NGỮ MIỀN CHUYÊN DỤNG VÀ CÔNG NGHỆ SINH MÃ T4 1.1 Giới thiệu Ngày nay với sự phát triển mạnh mẽ của công nghệ phần mềm, UML đƣợc sử dụng phổ biến trong thiết kế phần mềm. Tuy nhiên, UML có một số hạn chế nhƣ không đặc tả chi tiết phần mềm trong các lĩnh vực cụ thể; không chuẩn hóa về định dạng lƣu trữ - các công cụ hỗ trợ UML thƣờng không thống nhất về định dạng lƣu trữ nên không khả chuyển; khả năng tái sử dụng và khả năng sinh mã không mạnh.
Để khắc phục các hạn chế này, một xu hƣớng triển vọng hiện nay là sử dụng ngôn ngữ miền chuyên dụng (DSL), DSL là ngôn ngữ chỉ sử dụng trong các lĩnh vực cụ thể nhƣ SQL, html,. DSL cho phép lƣu trữ các mô hình theo XML là chuẩn công nghệ độc lập ngôn ngữ và nền tảng nên tính khả chuyển cao và khả năng sinh mã từ XML mạnh mẽ. Trong thiết kế phần mềm hƣớng đối tƣợng, biểu đồ lớp đƣợc sử dụng phổ biến nhất, nên chƣơng này sẽ tìm hiểu và nghiên cứu phát triển một ngôn ngữ DSL để mô hình hóa phần mềm nhúng và phát triển framework dùng để thiết kế mô hình cấu trúc dữ liệu của phần mềm nhúng, chính là thiết kế các biểu đồ lớp để từ đó chúng ta sẽ triển khai các nghiên cứu tiếp theo về tối ƣu phần mềm nhúng trong giai đoạn thiết kế ở các chƣơng sau.2 Ngôn ngữ miền chuyên dụng 1.1 Khái niệm Một ngôn ngữ miền chuyên dụng là ngôn ngữ thiết kế để cung cấp ký hiệu phù hợp cho một miền ứng dụng và chỉ dựa vào các khái niệm liên quan và các tính năng của miền đó; hoặc là ngôn ngữ lập trình hoặc ngôn ngữ đặc tả thực thi, thông qua các ký hiệu và các trừu tƣợng hóa thích hợp, tính năng diễn tả, thƣờng bị hạn chế bởi một miền vấn đề cụ thể. Ngôn ngữ miền chuyên dụng là ngôn ngữ nhỏ, thƣờng là khai báo, ngôn ngữ diễn tả toàn bộ các đặc điểm phân biệt của các chƣơng trình trong một miền vấn đề cụ thể; mô tả miền cụ thể LUAN VAN CHAT LUONG download : add luanvanchat@agmail.
DSL đặc tả hệ thống, phần cứng, phần mềm trong một phạm vi ứng dụng cụ thể nhƣ SQL, html, VSDL. Mỗi DSL áp dụng trong một miền ứng dụng cụ thể và có ý nghĩa, dễ sử dụng. Ngoài ra DSL có ít hệ thống ký hiệu, ít bảo trì và tăng hiệu suất. Nó cũng có thể kết nối tới các miền chuyên gia.
So với UML thì DSL còn có một ƣu điểm nổi bật là cho phép lƣu trữ các mô hình theo XML là chuẩn công nghệ độc lập ngôn ngữ và nền tảng nên tính khả chuyển cao và khả năng sinh mã từ XML mạnh mẽ. Bên cạnh các ƣu điểm trên thì DSL còn một vài hạn chế. DSL là một ngôn ngữ kỹ thuật và ngôn ngữ học mới nên chúng ta cần phải đầu tƣ thêm thời gian nghiên cứu khi tiếp cận. DSL hỗ trợ IDE yếu nhƣ trình soạn thảo, chƣơng trình tìm và khắc phục lỗi, tái cấu trúc,…Sự di trú khó và khó khăn khi phát triển thành tổng quát.2 Phạm vi ứng dụng của DSL DSL đƣợc ứng dụng trong rất nhiều lĩnh vực, một phần nhỏ DSL đƣợc ứng dụng trong công nghệ phần mềm.
Nổi tiếng nhất là PIC, SCATTER, CHEM, LEX, YACC, và Make [10], hoặc một vài ví dụ khác nhƣ SQL, BNF, và HTML, chúng ta chia thành các lĩnh vực nhƣ Công nghệ phần mềm là các sản phẩm tài chính kiểm soát hành vi và phối hợp, kiến trúc phần mềm, và cơ sở dữ liệu. Hệ thống phần mềm gồm mô tả và phân tích các cây cú pháp trừu tƣợng, video bộ điều khiển chi tiết kỹ thuật, bộ nhớ cache gắn kết các giao thức, cấu trúc dữ liệu trong C, và hệ điều hành chuyên dụng. Multi-Media chính là Web máy tính, thao tác hình ảnh, hoạt hình 3D, và bản vẽ.