Lời cảm ơn
Trước khi được bắt đầu đề tài của mình xin cho em được bày tỏ lòng cảm ơn tới các thầy , đã hết lòng, hết sức giảng dạy cho sinh viên trường đại học kinh tế quốc dân chúng em trong suốt thời gian qua và đặc biệt qua đây xin cho em được bày tỏ lòng cảm ơn chân thành đến Thầy Lương Mạnh Bá là người đã trực tiếp giảng dậy và hướng dẫn chúng em thực hiện đề tài này, thầy đã đem hết những kiến thức quý báu của mình để truy
23 trang |
Chia sẻ: huyen82 | Lượt xem: 1717 | Lượt tải: 0
Tóm tắt tài liệu Công nghệ phần mềm, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ền đạt cho chúng em trong suốt thời gian cô lên lớp, mỗi giờ lên lớp của thầy đã đem lại chúng em những buổi học quý báu không thể quên cho mỗi sinh viên chúng em. Cuối cùng em xin được chân thành cảm ơn thầy một lần nữa.
PHẦN MỀM NHÚNG
**~§¤§~**
Hiện nay phần mềm nhúng đối với thị trường Việt Nam la một khái niêm vẫn còn mới mẻ, sau đây là một số khái niệm về sản phẩm này
I .Định nghĩa
1 .Lịch sử
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. Nó là máy hướng dẫn Autonetics D-17, được xây dựng sử dụng 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ỏ 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 chip 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 chip 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.
2. Phần mềm nhúng là gì?
Phần mềm nhúng là một chương trình được viết, biên dịch trên máy tính và nạp vào một hệ thống khác (gọi tắt là KIT) bao gồm một hoặc nhiều bộ vi xử lý đã được cài sẵn một hệ điều hành, bộ nhớ ghi chép được, các cổng giao tiếp với các phần cứng khác…
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.
Trong thế giới thực của chúng ta bất kỳ một thiết bị hay hệ thống điện/điện tử có khả năng xử lý thông tin và điều khiển đều có thể tiềm ẩn trong đó một thiết bị hay hệ nhúng, ví dụ như các thiết bị truyền thông, thiết bị đo lường điều khiển, các thiết bị phục vụ sinh hoạt hàng ngày như lò vi sóng, máy giặt, camera…Rất dễ dàng để có thể kể ra hàng loạt các thiết bị hay hệ thống như vậy đang tồn tại quanh ta, chúng là hệ nhúng. Vậy hệ nhúng thực chất là gì và nên hiểu thế nào về hệ nhúng? Hiện nay cũng chưa có một định nghĩa nào thực sự thoả đáng để được chuẩn hoá và thừa nhận rộng rãi cho hệ nhúng mà vẫn chỉ là những khái niệm diễn tả về chúng thông qua những đặc thù chung. Tuy nhiên ở đây chúng ta có thể hiểu hệ nhúng là một phần hệ thống xử lý thông tin nhúng trong các hệ thống lớn, phức hợp và độc lập ví dụ như trong ôtô, các thiết bị đo lường, điều khiển, truyền thông và thiết bị thông minh nói chung. Chúng là những tổ hợp của phần cứng và phần mềm để thực hiện một hoặc một nhóm chức năng chuyên biệt, cụ thể (Trái ngược với máy tính PC mà chúng ta thường thấy được sử dụng không phải cho một chức năng mà là rất nhiều chức năng hay phục vụ chung cho nhiều mục đích). PC thực chất lại là một hệ thống lớn, tổ hợp của nhiều hệ thống nhúng ví dụ như card màn hình, âm thanh, modem, ổ cứng, bàn phím…Chính điều này làm chúng ta dễ lúng túng nếu được hỏi nên hiểu thế nào về PC, có phải là hệ nhúng hay khô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 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. 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ố và máy chơi nhạc MP3, hoặc những sản phẩm lớn như đèn giao thông, bộ kiểm soát trong nhà máy hoặc 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 đơn vị, 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 thiết bị PDA hoặc máy tính cầm tay cũng có một số đặc điểm tương tự với hệ thống nhúng như các hệ điều hành hoặc vi xử lý điều khiển chúng nhưng các thiết bị này không phải là hệ thống nhúng thật sự bởi chúng là các thiết bị đa năng, cho phép sử dụng nhiều ứng dụng và kết nối đến nhiều thiết bị ngoại vi.
II. Mục đích của phần mềm nhúng
Đặc điểm
Các hệ thống như vậy đều có chung một số đặc điểm như yêu cầu về khả năng thời gian thực, độ tin cậy, tính độc lập và hiệu quả. Một câu hỏi đặt ra là tại sao hệ thống nhúng lại phát triển và được phổ cập một cách nhanh chóng như hiện nay. Câu trả lời thực ra nằm ở các yêu cầu tăng lên không ngừng trong các ứng dụng công nghệ hiện nay. Một trong những yêu cầu cơ bản đó là:
Khả năng độc lập và thông minh hoá: Điều này được chỉ rõ hơn thông qua một số các thuộc tính yêu cầu, cụ thể như:
Độ tin cậy
Khả năng bảo trì và nâng cấp
Sự phổ cập và tiện sử dụng
Độ an toàn
Tính bảo mật
Hiệu quả: Yêu cầu này được thể hiện thông qua một số các đặc điểm của hệ thống như sau:
Năng lượng tiêu thụ
Kích thước về phần cứng và phần mềm
Hiệu quả về thời gian thực hiện
Kích thước và khối lượng
Giá thành
Phân hoạch tác vụ và chức năng hoá: Các bộ vi xử lý trong các hệ nhúng thường được sử dụng để đảm nhiệm và thực hiện một hoặc một nhóm chức năng rất độc lập và cũng đặc thù cho từng phần chức năng của hệ thống lớn mà nó được nhúng vào. Ví dụ như một vi xử lý thực hiện một phần điều khiển cho một chức năng thu thập, xử lý và hiển thị của ôtô hay hệ thống điều khiển quá trính. Khả năng này làm tăng thêm sự chuyên biệt hoá về chức năng của một hệ thống lớn và dễ dàng hơn cho quá trính xây dựng,
vận hành và bảo trì. Khả năng thời gian thực: Các hệ thống đều gắn liền với việc đảm nhiệm một chức năng chính và phải được thực hiện đúng theo một khung thời gian qui định. Thông thường một chức năng của hệ thống phải được thực hiện và hoàn thành theo một yêu cầu thời gian định trước để đảm bảo thông tin cập nhật kịp thời cho phần xử lý của các chức năng khác và có thể ảnh hưởng trực tiếp tới sự hoạt động đúng và chính xác của toàn hệ thống. Tuỳ thuộc vào từng bài toán và yêu cầu của hệ thống mà yêu cầu về khả năng thời gian thực cũng rất khác nhau. Tuy nhiên, trong thực tế không phải hệ nhúng nào cũng đều có thể thoả mãn tất cả những yêu cầu nêu trên, vì chúng là kết quả của sự thoả hiệp của nhiều yêu cầu và điều kiện nhằm ưu tiên cho chức năng cụ thể mà chúng được thiết kế. Chính điều này lại
2.Ứng dụng phần mềm nhúng
Chúng ta có thể kể ra được rất nhiều các ứng dụng của phần mềm nhúng đang được sử dụng hiện nay, và xu thể sẽ còn tiếp tục tăng nhanh. 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 như sau:
• Các thiết bị điều khiển
• Ôtô, tàu điện
• Truyền thông
• Thiết bị y tế
• Hệ thống đo lường thẩm định
• Toà nhà thông minh
• Thiết bị trong các dây truyền sản xuất
• Rôbốt
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í.
Trước khi đầu đo gồm phần tử biến đổi từ tham số đo sang tín hiệu điện, mạch khuyếch đại, mạch lọc và mạch biến đổi sang chuẩn 4-20mA để truyền tín hiệu đo về trung tâm xử lý. Hiện nay đầu đo đã tích hợp cả chip vi xử lý, biến đổi ADC, bộ truyền dữ liệu số với phần mềm đo đạc, lọc số, tính toán và truyền kết quả trên mạng số về thẳng máy tính trung tâm. Như vậy đầu đo đã được số hóa và ngày càng thông minh do các chức năng xử lý từ máy tính trung tâm trước kia nay đã được chuyển xuống xử lý tại chỗ bằng chương trình nhúng trong đầu đo.
Tương tự như vậy cơ cấu chấp hành như môtơ đã được chế tạo gắn kết hữu cơ với cả bộ servo với các thuật toán điều chỉnh PID tại chỗ và khả năng nối mạng số tới máy tính chủ.
Các tủ rơle điều khiển chiếm diện tích lớn trong các phòng điều khiển nay được co gọn trong các PLC(programble Logic Controller).
Các bàn điều khiển với hàng loạt các đồng hồ chỉ báo, các phím, núm điều khiển, các bộ tự ghi trên giấy cồng kềnh nay được thay thế bằng một vài PC.Hệ thống cáp truyền tín hiệu analog 4-20mA, ± 10V từ các đầu đo, cơ cấu chấp hành về trung tâm điều khiển nhằng nhịt trước đây đã được thay thế bằng vài cáp đồng trục hoặc cáp quang truyền dữ liệu số.
Ta có thể nói các hệ nhúng đã “thay thế và chiếm phần ngày càng nhiều” trong các phần tử, hệ thống thuộc lĩnh vực công nghệ cao .
Nếu xét riêng trong lĩnh vực tự động, Hình 1 cho ta thấy chức năng xử lý ở các hệ thống tự động trong 70 năm qua phát triển như thế nào. 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.
Trong điều khiển quá trình công nghệ, việc áp dụng các hệ nhúng đã tạo ra khả năng tự động hóa toàn bộ dây chuyền sản xuất. Kiến trúc hệ thống điều khiển trước kia tập trung về xử lý tại một máy tính thì nay các đầu đo, cơ cấu chấp hành, giao diện với người vận hành đều được thông minh hóa có nhiều chức năng xử lý tại chỗ và khả năng nối mạng nhanh tạo thành hệ thống mạng máy điều khiển hoạt động theo chế độ thời gian thực. Ngoài các chức năng điều khiển và giám sát dây chuyền sản xuất hệ thống còn có nhiều cơ sở dữ liệu, khả năng tự xác định và khắc phục hỏng hóc, khả năng thống kê, báo cáo và kết hợp hệ thống mạng máy tính quản lý, lập kế hoạch, thiết kế và kinh doanh tạo thành hệ thống tự động hóa sản xuất toàn cục.Trong lĩnh vực rôbôt, với sự áp dụng các thành tựu của các hệ nhúng, rôbôt đã có thị giác và xúc giác. Việc áp dụng trí khôn nhân tạo vào rôbôt đã đưa rôbôt từ ứng dụng chủ yếu trong công nghiệp sang các lĩnh vực dịch vụ và y tế. Kết hợp với các thành tựu của cơ điện tử, rôbôt ngày càng uyển chuyển và thông minh hơn. Trong tương lai rôbôt không chỉ thay thế hoạt động cơ bắp của con người mà còn có thể thay thể các công việc đòi hỏi họat động trí não của con người. Lúc này hệ thống điều khiển của rôbôt không chỉ là các vi xử lý mạnh mà còn có sự hỗ trợ của các máy tính mạng nơron nhân tạo, xử lý song song nhúng trong rôbôt. Các nghiên cứu phát triển này hiện nay còn ở giai đoạn ban đầu.
III.Tính chất phần mềm nhúng
* Phụ thuộc vào hệ điều hành cài sẵn trên KIT
* Phụ thuộc vào các tính năng đặt trưng của từng sản phẩm phần cứng có trong KIT
* Phụ thuộc vào đặt tính của hệ thống
1. Ngôn ngữ phát triển
Một trong những ngôn ngữ lập trình có lẽ phổ cập rộng rãi nhất hiện nay là ngôn ngữ C. So với bất kỳ ngôn ngữ lập trình nào khác đang tồn tại C thực sự phù hợp và trở thành một ngôn ngữ phát triển của hệ nhúng. Điều này không phải là cố hữu và sẽ tồn tại mãi, nhưng tại thời điểm này thì C có lẽ là một ngôn ngữ gần gũi nhất để trở thành một chuẩn ngôn ngữ trong thế giới hệ nhúng. Trong phần này chúng ta sẽ cùng tìm hiểu tại sao C lại trở thành một ngôn ngữ phổ biến đến vậy và tại sao chúng ta lựa chọn nó như một ngôn ngữ minh họa cho việc lập trình hệ nhúng.
Sự thành công về phát triển phần mềm thường là nhờ vào sự lựa chọn ngôn ngữ phù hợp nhất cho một dự án đặt ra. Cần phải tìm một ngôn ngữ để có thể đáp ứng được yêu cầu lập trình cho các bộ xử lý từ 8‐bit đến 64‐bit, trong các hệ thống chỉ có hữu hạn về 64 bộ nhớ vài Kbyte hoặc Mbyte. Cho tới nay, điều này chỉ có C là thực sự có thể thỏa mãn và phù hợp nhất.
Rõ ràng C có một số ưu điểm nổi bật tiêu biểu như khá nhỏ và dễ dàng cho việc học, các chương trình biên dịch thường khá sẵn cho hầu hết các bộ xử lý đang sử dụng hiện nay, và có rất nhiều người đã biết và làm chủ được ngôn ngữ này rồi, hay nói cách khác cũng đã được phổ cập từ lâu. Hơn nữa C có lợi thế là không phụ thuộc vào bộ xử lý thực thi mã nguồn. Người lập trình chỉ phải tập trung chủ yếu vào việc xây dựng thuật toán,
ứng dụng và thể hiện bằng ngôn ngữ thân thiện thay vì phải tìm hiểu sâu về kiến thức phần cứng, cũng như rất nhiều các ưu điểm nổi bật khác của ngôn ngữ bậc cao nói chung.
Có lẽ một thế mạnh lớn nhất của C là một ngôn ngữ bậc cao mức thấp nhất. Tức là với ngôn ngữ C chúng ta vẫn có thể điều khiển và truy nhập trực tiếp phần cứng khá thuận tiện mà không hề phải hy sinh hay đánh đổi bất kỳ một thế mạnh nào của ngôn ngữ bậc
cao. Thực chất đây cũng là một trong những tiêu chí xây dựng của những người sang lập ra ngôn ngữ C muốn hướng tới. Thực tế điều này đã được đề cập đến khi hai nhà sáng lập ra ngôn ngữ C, Kernighan và Ritchie đã đưa vào trong phần giới thiệu của cuốn sách của họ “The C Programming Language” như sau:
“C is a relatively “low level” language. This characterization is not pejorative; it simply means
that C deals with the same sort of objects that most computers do. These may be combined and
moved about with the arithmetic and logical operators implemented by real machines…”
Tất nhiên là C không phải là ngôn ngữ duy nhất cho các nhà lập trình nhúng. Ít nhất hiện nay người ta cũng có thể biết tới ngoài ngôn ngữ C là Assembly, C++, và Ada. Trong những buổi đầu phát triển hệ nhúng thì ngôn ngữ Assembly chủ yếu được sử dụng cho các vi xử lý đích. Với ngôn ngữ này cho phép người lập trình điều khiển và kiểm soát hoàn toàn vi xử lý cũng như phần cứng hệ thống trong việc thực thi chương
trình. Tuy nhiên ngôn ngữ Assembly có nhiều nhược điểm mà cũng chính là lý do tại sao hiện nay nó ít được phổ cập và sử dụng. Đó là, việc học và sử dụng ngôn ngữ Assembly rất khó khăn và đặc biệt khó khăn trong việc phát triển các chương trình ứng dụng lớn phức tạp. Hiên nay nó chỉ được sử dụng chủ yếu như điểm nối giữa ngôn ngữ bậc cao và bậc thấp và được sử dụng khi có yêu cầu đặc biệt về hiệu suất thực hiện và tối ưu về tốc độ mà không thể đạt được bằng ngôn ngữ khác. Ngôn ngữ Assembly chỉ thực sự phù hợp cho những người có kinh nghiệm và hiểu biết tốt về cấu trúc phần cứng đích cũng như nguyên lý thực hiện của bộ lệnh và chíp xử lý.
C++ là một ngôn ngữ kế thừa từ C để nhằm vào các lớp ứng dụng và tư duy lập trình hướng đối tượng và cũng bắt đầu chiếm được số lượng lớn quan tâm trong việc ứng dụng cho phát triển hệ nhúng. Tất cả các đặc điểm cốt lõi của C vẫn được kế thừa hoàn toàn trong ngôn ngữ C++ và ngoài ra còn hỗ trợ khả năng mới về trừu tượng hóa dữ liệu và phù hợp với tư duy lập trình hiện đại; hướng đối tượng. Tuy nhiên điều này bị đánh đổi bởi hiệu suất và thời gian thực thi do đó chỉ phù hợp với các dự án phát triển
chương trình lớn và không chịu sức ép lớn về thời gian thực thi. Ada cũng là một ngôn ngữ hướng đối tượng mặc dù nó không được phổ cập rộng rãi
như C++. Ada được xây dựng bởi cơ quan quốc phòng Mỹ để phục vụ phát triển cácphần mềm quân sự chuyên dụng đặc biệt. Mặc dù cũng đã được chuẩn hóa quốc tế (Ada83 và Ada95) nhưng nó vẫn không được phổ cập rộng rãi ngoài việc ứng dụng chủ yếu trong các lĩnh vực quân sự và hàng không vũ trụ. Và nó cũng dần dần bị mất ưu thế và sự phổ cập trong thời gian gần đây, đây cũng là một điều đáng tiếc vì bản thân Ada cũng là một ngôn ngữ có nhiều đặc điểm phù hợp cho việc phát triển phần mềm
hệ nhúng thay vì phải sử dụng C++.
2. Hệ thời gian thực ?
Trong các bài toán điều khiển và ứng dụng chúng ta rất hay gặp thuật ngữ “thời gian thực”. Thời gian thực có phải là thời gian phản ánh về độ trung thực của thời gian hay không? Thời gian thực có phải là hiển thị chính xác và đồng bộ theo đúng như nhịp đồng hồ đếm thời gian hay không? Không phải hoàn toàn như vậy! Thực chất, theo cách hiểu nếu nói trong các hệ thống kỹ thuật đặc biệt các hệ thống yêu cầu khắt khe về sự ràng buộc thời gian, thời gian thực được hiểu là yêu cầu của hệ thống phải đảm bảo thoả mãn về tính tiền định trong hoạt động của hệ thống. Tính tiền định nói lên hành vi của hệ thống thực hiện đúng trong một khung thời gian cho trước hoàn toàn xác định. Khung thời gian này được quyết định bởi đặc điểm hoặc yêu cầu của hệ thống, có thể là vài giây và cũng có thể là vài nano giây hoặc nhỏ hơn nữa. Ở đây chúng ta phân biệt yếu tố thời gian gắn liền với khái niệm về thời gian thực. Không phải hệ thống thực hiện rất nhanh là sẽ đảm bảo được tính thời gian thực vì nhanh hay chậm hoàn toàn là phép so sánh có tính tương đối vì mili giây có thể là nhanh với hệ thống điều khiển
nhiệt nhưng lại là chậm đối với các đối tượng điều khiển điện như dòng, áp…. Hơn thế nữa nếu chỉ nhanh không thì chưa đủ mà phải đảm bảo duy trì ổn định bằng một cơ chế hoạt động tin cậy. Chính vì vậy hệ thống không kiểm soát được hoạt động của nó (bất định) thì không thể là một hệ thống đảm bảo tính thời gian thực mặc dù hệ thống đó có thể cho đáp ứng rất nhanh, thậm chí nhanh hơn rất nhiều so với yêu cầu đặt ra.
Một ví dụ minh hoạ tiêu biểu đó là cơ chế truyền thông dữ liệu qua đường truyền chuẩn Ethernet truyền thống, mặc dù ai cũng biết tốc độ truyền là rất nhanh nhưng vẫn không phải hệ hoạt động thời gian thực vì không thoả mãn tính tiền định trong cơ chế truyền dữ liệu (có thể là rất nhanh và cũng có thể là rất chậm nếu có sự canh trạnh và giao thông đường truyền bị nghẽn).
Người ta phân ra làm hai loại đối với khái niệm thời gian thực là cứng (hard real‐time) và mềm (soft real‐time). Thời gian thực cứng là khi hệ thống hoạt động với yêu cầu thoả mãn sự ràng buộc trong khung thời gian cứng tức là nếu vi phạm thì sẽ dẫn đến hoạt động của toàn hệ thống bị sai hoặc bị phá huỷ. Ví dụ về hoạt động điều khiển cho một lò phản ứng hạt nhân, nếu chậm ra quyết định có thể dẫn đến thảm hoạ gây ra do phản ứng phân hạch và dẫn đến bùng nổ cả hệ thống. Thời gian thực mềm là khi hệ thống
hoạt động với yêu cầu thoả mãn ràng buộc trong khung thời gian mềm, nếu vi phạm và sai lệch nằm trong khoảng cho phép thì hệ thống vẫn có thể hoạt động được và chấp nhận được. Ví dụ như hệ thống phát thanh truyền hình, nếu thông tin truyền đi từ trạm phát tới người nghe/nhìn chậm một vài giây thì cũng không ảnh hưởng đáng kể đến tính thời sự của tin được truyền đi và hoàn toàn được chấp nhận bởi người theo dõi. Thực tế thấy rằng hầu hết hệ nhúng là các hệ thời gian thực và hầu hết các hệ thời gian thực là hệ nhúng. Điều này phản ánh mối quan hệ mật thiết giữa hệ nhúng và thời gian thực và tính thời gian thực đã trở thành như một thuộc tính tiêu biểu của hệ nhúng. Vì vậy hiện nay khi đề cập tới các hệ nhúng người ta đều nói tới đặc tính cơ bản của nó là tính thời gian thực.
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, Win CE, Lynyos, BSD, Green Hills, QNX và DOS.
Embedded Linux hiện đang phát triển mạnh 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 nhu VxWorks, Win CE. 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 không đòi hỏi thời gian thực như set-top, các hệ server nhúng, 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.
Bên cạnh các ưu điểm trên thì Embedded Linux cũng có các nhược điểm sau:
- Embedded Linux không phải là hệ điều hành thời gian thực nên có thể không phù hợp với một số ứng dụng như điều khiển quá trình, các ứng dụng có các yêu cầu xử lý khẩn cấp.
- Embedded Linux thiếu một chuẩn thống nhất và không phải là sản phẩm của một nhà cung cấp duy nhất nên khả năng hỗ trợ kỹ thuật ít.
Do thị trường của các sản phẩm nhúng tăng mạnh nên các nhà sản xuất ngày càng sử dụng các hệ điều hành nhúng để bảo đảm 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. Phần mềm nhúng (Embedded Software): 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ệ giá trị 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ử tiêu 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..vv. 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. Thuỵ Đ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.
IV. Phần mềm nhúng đem lại giá trị gì cho các DN:
Phần mềm nhúng là sự tích hợp của ngành tin học (phần mềm) với ngành điện tử (phần cứng). Với các các thiết bị điện tử, phần mềm nhúng mang lại nhiều sự hữu ích cần thiết cho người sử dụng và đồng thời giảm chi phí giá thành về phần cứng cho thiết bị.
Phần mềm không dành cho máy tính Nói một cách nôm na, 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…). Trên thực tế, số con chíp 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ố chíp vi xử lý trên thế giới. Số còn lại thuộc về các hệ thống nhúng.
Thị trường phần mềm nhúng thế giới hiện nay đang có tốc độ tăng trưởng nhanh chóng do nhu cầu mở rộng, thay đổi và nâng cấp liên tục của các mặt hàng có sử dụng hệ thống nhúng.
Dự báo thị trường cho Hệ thống nhúng (từ 2003-2009) của BCC.(Cột màu đỏ là các chip vi xử lý dùng trong hệ thống nhúng).
Theo số liệu của BCC (Business Communications Company - Công ty chuyên nghiên cứu thị trường của Mỹ, có trụ sở đặt tại Washington), tổng thị trường phần mềm nhúng thế giới năm 2004 đạt khoảng 46 tỷ USD. Dự kiến đến năm 2009, con số này sẽ lên tới 88 tỷ USD.
Tại hội thảo này, ông Yoshiaki Tanaka, Giám đốc phát triển cộng đồng của công ty Unisys (công ty phát triển phần mềm và dịch vụ hàng đầu của Nhật) cho biết, ngành phần mềm nhúng của Nhật đang tăng trưởng rất nhanh. Tổng giá trị của thị trường đã tăng từ 25 tỷ USD vào năm 2005 lên hơn 33 tỷ USD sang năm 2007.
Trong khi đó, tốc độ phát triển nhân lực về phần mềm nhúng của Nhật lại không theo kịp sự phát triển của thị trường. “Nhật đang thiếu trầm trọng nhân lực trong mảng phần mềm nhúng, ở tất cả các trình độ, nhưng thiếu nhiều nhất là nhân lực có trình độ kỹ năng cao”, ông Yoshiaki Tanaka nói.
Theo khảo sát của Bộ Kinh tế, Thương mại và Công nghiệp Nhật Bản, có tới 8 kỹ năng trong số 10 kỹ năng trong lĩnh vực phần mềm nhúng Nhật thiếu trên 40% nhân lực so với nhu cầu của thị trường. Những kỹ năng đang rất thiếu là chuyên gia QA, quản trị sản phẩm, quản trị dự án, chuyên gia lĩnh vực, chuyên gia thiết kế hệ thống, chuyên gia môi trường phát triển, chuyên gia cải tiến quy trình phát triển, chuyên gia cầu nối (SE). Bên cạnh đó, Nhật cũng thiếu khoảng 26% nhân lực có trình độ cơ bản trong thị trường phần mềm nhúng.
Ông Yoshiaki Tanaka cho biết, chính phủ Nhật đã tăng hơn 20% ngân sách đào tạo nhân lực CNTT, song theo đại diện của Unisys thì điều này chỉ đáp ứng phần nào. Các doanh nghiệp Nhật sẽ tiếp tục tăng cường gia công sang các nước để bù đắp thiếu hụt nhân lực.
Theo thống kê của Câu lạc bộ doanh nghiệp phần mềm Việt Nam - Nhật Bản (VJC), hiện có hơn 20 công ty Nhật đặt cơ sở gia công tại Việt Nam.
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.
V. Vì sao nên đào tạo về phần mềm nhúng?
Thế giới ngày này nhắm tới sự tích hợp của ngành tin học với các ngành ứng d._.
Các file đính kèm theo tài liệu này:
- 32585.doc