Câu trả lời: điện thoại thông mình là một hệ thống nhúng lai với máy tính đa chức năng, nếu như bạn chấp nhận cách hiểu 2 và 3 còn nếu chấp nhận cách hiểu 1 thì ta phải xem xét là nó có
Trang 1Báo cáo đề tài nhập môn công nghệ phần mềm
Trang 2II/ Các đặc điểm của hệ thống nhúng:
III/ Những điểm khác biệt giữa hệ thống nhúng và PC: IV/Hệ thống nhúng lai
II/ Xây dựng hệ thống nhúng có hệ điều hành.
III/ Xây dựng hệ thống nhúng không hệ điều hành.
IV/ Mô hình lập trình hệ thống nhúng.
Phần IV: Phương pháp học tập hệ thống nhúng. 37
I/ Kiến thức cần có.
II/Phương pháp:
III/ Gioi thiệu Arduino.
Trang 3Mở đầ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.Bài báo giới thiệu việc ứng dụng hệ thống nhúng trong sự phát triển của lĩnh vực công nghệ cao”3C” Bài viết phỏng theo bài phát biểu của PGS.TSKH Phạm Thượng Cát- Viện Công nghệ Thông tin
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ínhlớ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àmnê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
Phát triển các hệ nhúng và phần mềm nhúng (hệ điều hành nhúng, phần mềm ứng dụng nhúng) là quốc sách của nhiều quốc gia trên thế giới, nhất là giai đoạn hậu PC hiện nay Ở nước ta đáng tiếc lĩnh vực này lâu nay đã bị lãng quên, do vậy cần có những điều chỉnh phù hợp trong chiến lược phát triển để
có thể theo kịp, rút ngắn khoảng cách tụt hậu đối với các nước trong khu vực
và trên thế giới trong quá trình hội nhập nền kinh tế toàn cầu không thể tránh khỏi hiện nay
Trang 4Một chiếc xe hơi cũng là một hệ thống với các phần tử: bánh xe, khung xe, động cơ,… chúng được tổ chức lại với nhau để thực hiện một mục đích là tạo ra một cái máy có thể
dy chuyển và vận chuyển
2 Nhúng là gì?
Nhúng là một từ dùng để chỉ việc đưa một thứ, một phần nhỏ vào một thứ, một phần lớn hơn một cách dễ dàng và thuận tiện nhất, và giúp cho phần lớn hơn có thêm giá trị hay hoàn thiện hơn
Ví dụ: chúng ta nhúng một lát bánh mì nhỏ vào trong một ly sữa , thì chúng ta sẽ có một món ăn ngon
3.Hệ thống nhúng là gì?
Hệ thống nhúng (Embedded system) là một thuật ngữ để chỉ một hệ thống xử lý thông tin, hệ tính toán có khả năng hoạt động độc lập được nhúng vào trong một môi trường hay một hệ thống lớn hơn, 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 đó
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ể trong nhiều lĩnh vực công nghiệp, tự động hoá điều khiển, quan trắc và truyền tin Đặc điểm của các hệ thống nhúng là hoạt động ổn định và có tính năng tự động hoá cao
Chúng ta có thể hiểu một hệ thống nhúng là một máy tính có chức năng xác định hay ít chức năng được nhúng vào một hệ thống hay thiết bị khác Ở cách hiểu này vấn đề
“được nhúng vào” và “chức năng xác định hay ít chức năng” là những đặc điểm hàng
đầu, và cách hiểu này là bám sát nhất với khái niệm trên (1)
Chúng ta cũng có thể hiểu một hệ thống nhúng là một hệ thống mà bên trong nó có một
hệ thống tính toán (một máy tính) thực hiện chức năng riêng biệt của hệ thống đó mà các
hệ thống khác không có Ở cách hiểu này, hệ thống nhúng dường như là tất cả những thiết bị, hệ thống có một thành phần cấu tạo mà thành phần đó có khả năng xử lý và tính toán, hay nói cách khác nó có câu tạo bao gồm một máy tính và những những thứ khác
nữa Như vậy, ở khía cạnh này, vấn đề có “một máy tính bên trong” là đặc điểm hàng đầu (2)
Còn có thể hiểu hệ thống nhúng là hệ thống/thiết bị tính toán chuyên biệt theo tính năng
được xây dựng thành một hệ thống/thiết bị lớn (3)
(2) và (3) khá gần với nhau và là cách hiểu được nhiều người chấp nhận và khá phù hợp
cho thế giới thiết bị ngày nay Theo (2) và (3) thì có thể nói rằng hệ thống nhúng là tất cả
những thiết bị có khả năng tính toán được thiết kế khác với máy tính đa chức năng PC
Trang 5Trong tài liệu này, tôi sẽ thiên hơn về cách hiểu (2) và (3) nhưng cách hiểu (1) vẫn rất
quan trọng
Để có thể dễ hình dung theo cách hiểu (1), ta xem ví dụ sau đây: một chiếc xe hơi trung
bình có khoảng 70-80 chip vi xử lý (micro controller unit), mỗi bộ vi xử lý đảm nhiệm một nhiệm vụ, chẳng hạn như đóng mở cửa, điều khiển đèn tín hiệu, đo nhiệt độ
trong/ngoài xe, hiển thị giao diện người dùng (dashboard), điều khiển thắng (nếu dùng hệthống thắng điện)…
Mỗi ô tô trung bình có khoảng 70-80 chíp nhúng
Mỗi bộ phận như thế là một hệ thống nhúng, tất cả được thiết kế tích hợp vào một hệ thống chung lớn hơn, chính là chiếc xe hơi
Một ví dụ khác gần gũi hơn với cuộc sống hằng ngày, đó là những chiếc điện thoại di động Các chức năng như điều khiển màn hình hiển thị, máy nghe nhạc và radio, bộ cảm ứng chụp hình, kết nối với máy tính và thiết bị ngoại vi, hoặc cao cấp hơn là kết nối với
hệ thống định vị toàn cầu (GPS), tất cả đều là những hệ thống nhúng được tích hợp chungvào chiếc điện thoại Và mỗi hệ thống đó thường chỉ thực hiện chuyên biệt chức năng củachúng, không thể thực hiện các chức khác nữa
Như giải thích ở trên thì điện thoại di động là một hệ thống hoàn chỉnh được tạo ra bởi nhiều hệ thống nhúng thành phần, như vậy điện thoại di đông khi nhìn tổng thể không kể cấu tạo thì nó không là hệ thống nhúng nhưng nếu xét trong hệ thống thông tin liên lạc GSM thì nó lại là một hệ thống nhúng mang chức năng chuyên biệt, một hệ thống giúp nguoi sử dụng gửi/nhận thông tin
Hiểu theo cách (1) hệ thống nhúng khá là hạn chế khi ta không thể biết được cái hệ thống
lớn hơn mà nó được nhúng vào Nếu không biết hệ thống lớn mà nó được nhúng vào thì
dù nó có chức năng chuyên biệt thì vẫn không là hệ thống nhúng
Hiểu theo cách (2) và (3) thì chiếc điện thoại đi đông hiển nhiên là một hệ thống nhúng vì
nó có một máy tính ở bên trong và nó không có thiết kế như một cái máy tính đa chức năng (giống PC) Với cách này hệ thống nhúng lại vô cùng đa dạng như TV, máy ảnh KTS, máy giặt, máy chơi game,.v.v.v
Vậy, điện thoại thông mình thì sao? Câu trả lời: điện thoại thông mình là một hệ thống
nhúng lai với máy tính đa chức năng, nếu như bạn chấp nhận cách hiểu (2) và (3) còn nếu chấp nhận cách hiểu (1) thì ta phải xem xét là nó có được nhúng vào hệ thống lớn hơn
nào không để quyết định, nếu không tìm được hệ thống lớn mà nó được nhúng vào thì với việc có chức năng phong phú như vậy điện thoại thông minh là một máy tính đa chứcnăng Vấn đề này tôi sẽ phân tích rõ hơn ở phần sau
Còn bây giờ, chúng ta sẽ chấp nhận điện thoại thông mình là một “hệ thống nhúng lai” vì
như đã nói lúc đầu tôi thiên về cách hiểu (2) và (3) hơn.
Trang 6Sở dĩ có quá nhiều cách hiểu như vậy bởi vì hiện nay có quá nhiều thiết bị có khả năng tính toán, mà những thiết bị đó lại thường có chức năng khá phong phú Theo ý kiến chủ quan của tôi thì khái niệm hệ thống nhúng được xây dựng ra để phân biệt với hệ thống máy tính đa chức năng (hay còn gọi là hệ thống máy tính mục đích chung) PC Tôi nghĩ trong tương lai thì khi máy tính mục đích chung mà điển hình là PC dần mất vị thế trung tâm của mình trong việc tính toán thông tin hiện nay thì khái niệm hệ thống nhúng (theo
cách hiểu (2) và (3) ) sẽ được thay thế bằng sự phân biệt vật/thiết bị thông mình (có khả
năng tính toán, xử lý thông tin , kết nối) và những vật/thiết bị không thông mình (không
có khả năng tính toán, xử lý thông tin, kết nối) Còn nếu hiểu theo cách (1) thì rõ ràng là
luôn luôn tồn tại hệ thống nhúng
Cách hiểu (2) và (3) thiên về đặc điểm, chức năng của thiết bị (nhìn ở mức thiết bị), tính
cụ thể và mô tả Nghĩa là tất cả thiết bị có chức năng như thế thì gọi là hệ thống nhúng
Cách hiểu (1) thiên về cơ cấu, phân lớp hệ thống (nhìn ở mức hệ thống), tính tổng thể
Nghĩa là hệ thống có cấu tạo nhiều thành phần và các thành phần hoàn chỉnh nhỏ hơn thì
là thành phần nhúng, khi phân tích một hệ thống (thiết bị) ta luôn chú ý cấu tạo và vị trí của nó trong hệ thống tổng thể
Một lần nữa, trong tài liệu này, tôi thiên về cách hiểu (2) và (3)
Hình ảnh của các hệ thống nhúng thông thường:
Do tính chất chuyên biệt của hệ thống nhúng và chúng thường được sản xuất với số lượng lớn nên các nhà sản xuất thường yêu cầu phải tối ưu hóa chúng nhằm giảm thiểu kích thước và chi phí sản xuất
Trang 74 Hệ thống nhúng 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 là 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 phải 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 xác 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
Các hệ thống này không chỉ phải trả về một kết quả đúng mà còn phải nhanh nhất đáp ứng được yêu cầu về tốc độ của hệ thống Trong các hệ thống thời gian thực, tốc độ cũng quan trọng không kém gì độ chính xác của nó
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 độngcủ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ệ thống 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
Trang 8II/ Đặc điểm của hệ thống nhúng:
Các hệ thống nhúng thường có phần lớn các đặc điểm sau đây:
• Một hệ thống nhúng bao giờ cũng bao gồm một hệ thống phần cứng chuyên biệt
và một hệ thống phần mềm điều khiển chuyên biệt cho phần cứng đó (tính đóng gói cao) Mức hòa hợp giữa phần cứng và phần mềm của hệ thống nhúng rất cao
để thực hiện một cách tốt nhất chức năng riêng biệt của nó.Do đó, đây cũng là sự khác biệt giữa một hệ thống nhúng và một máy tính đa chức năng
• Một hệ thống được gọi là hệ thống nhúng khi nó thực hiện một chức năng riêng
biệt và thường là phải được nhúng vào một hệ thống lớn hơn (cách hiểu (1) ), hay được xây dựng thành một hệ thống,thiết bị lớn hơn (cách hiểu (2) và (3) )
• Một hệ thống nhúng luôn thưc hiện một chức năng được định trước, và chức năng này trong quá trình sử dụng người dùng không thể hay khó thay đổi được
• Các hệ thống nhúng được nối với môi trường vật lý qua các cảm biến để thu thập thông tin từ môi trường đó và qua các bộ điều khiển/tác động để điều khiển môi trường,hay trả lại một kết quả tính toán cho người dùng
• Các hệ thống nhúng phải tin cậy được “Tin cậy được” bao gồm độ tin cậy, tính
bảo trì, tính khả dụng, an toàn và bảo mật
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ể 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 phát triển và kiểm 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ẽ bị khởi động lại
Một số vấn đề cụ thể về độ tin cậy như:
• Hệ thống không thể ngừng để sửa chữa một cách an toàn, ví dụ như ở 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
• Hệ thống phải được chạy liên tục vì tính an toàn, ví dụ như 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,… Giải pháp đưa ra là lựa chọn backup hệ thống
• Nếu hệ thống ngừng hoạt động sẽ gây tổn thất rất nhiều tiền của ví dụ như các dịch vụ buôn bán tự động, hệ thống chuyển tiền, hệ thống kiểm soát trong các nhà máy …
• Các hệ thống nhúng phải có hiệu quả cao: Hiệu quả của các hệ thống nhúng được
đánh giá theo các độ đo sau:
Năng lượng: Nhiều hệ thống nhúng là các hệ thống di động dùng năng
lượng pin Công nghệ pin tiến bộ với tốc độ rất chậm Nhưng các yêu cầu tính toán lại tăng với tốc độ cao, đặc biệt đối với các ứng dụng multimedia, và khách
Trang 9hàng muốn có pin chạy lâu hết Do đó, năng lượng điện phải được sử dụng một cách có hiệu quả
Kích thước mã: Toàn bộ mã chương trình chạy trong một hệ nhúng phải
được lưu trong hệ thống Thông thường, không có đĩa cứng để lưu chương trình Việc bổ sung mã vẫn còn là ngoại lệ và chỉ giới hạn trong những trường hợp như điện thoại Java, điện thoại thông minh, và set-top box (thiết bị giải mã tín hiệu truyền hình) Do tất cả các hạn chế khác, điều đó có nghĩa kích thước mã nên càngnhỏ càng tốt Điều này đặc biệt đúng cho systems on a chip - các hệ thống mà tất
cả các mạch xử lý thông tin đều chứa trong một con chip Nếu bộ nhớ lệnh cần được tích hợp vào con chip này, nó nên được dùng một cách rất hiệu quả
Hiệu quả khi chạy: Chỉ nên dùng lượng tài nguyên tối thiểu để thực hiện
chức năng được yêu cầu Ta cần thỏa mãn ràng buộc về thời gian với lượng tối thiểu tài nguyên phần cứng và năng lượng Để giảm mức tiêu thụ năng lượng, tần
số đồng hồ và hiệu điện thế nên nhỏ hết mức có thể Ngoài ra, hệ thống chỉ nên có những thành phần phần cứng thiết yếu Có thể bỏ các thành phần không cải thiện thời gian chạy trong trường hợp xấu nhất (chẳng hạn nhiều cache hay đơn vị quản
lý bộ nhớ)
Trọng lượng: Tất cả các hệ thống xách tay đều phải có trọng lượng thấp
Nhẹ cân thường là một điều quan trọng khi cân nhắc mua một hệ thống nào đó
Giá: Đối với các hệ thống nhúng thông dụng, đặc biệt là đồ điện gia dụng,
sức cạnh tranh trên thị trường là một vấn đề cực kì quan trọng, do đó cần sử dụng hiệu quả các thành phần phần cứng cũng như chi phí phát triển phần mềm
• Chức năng chuyên biệt 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ụ, các bộ vi xử lý chạy phần mềm điều khiển ô tô hoặc tầu hỏa sẽ luôn chạy phần mềm đó, và sẽ không ai định chạy một trò chơi điện tử hay chương trình bảng tính trên bộ vi xử lý đó Có hai lý do chính:
1 Chạy thêm các chương trình khác sẽ làm giảm độ tin cậy của các hệ thống đó
2 Việc chạy thêm các chương trình khác chỉ khả thi khi các tài nguyên như bộ nhớ đang rỗi Ở một hệ thống hiệu quả, không có tài nguyên nào ở trạng thái không được sử dụng
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ì Đặc điểm này là một đặc điểm quan trọng của hệ thống nhúng
• Hầu hết các hệ thống nhúng không dùng bàn phím, chuột hay màn mình để giao tiếp với người dùng Thay vào đó, chúng có các giao tiếp dành riêng cho người dùng như các nút nhấn, bàn đạp,…
• 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
Trang 10• Nhiều hệ thống nhúng là những hệ thống hỗn hợp (hybrid systems) theo nghĩa gồm cả hai phần analog và số.
• Các hệ thống nhúng là những hệ thống có phản ứng lại (reactive systems)
Chúng có thể được định nghĩa như sau: hệ thống có phản ứng lại là hệ thống mà
có tương tác liên tục với môi trường của nó và thực thi với tốc độ được xác định bởi môi trường đó [Bergé et al., 1995]
III/ Những điểm khác biệt giữa hệ thống nhúng và máy tính đa chức năng (PC):
• Một hệ thống máy tính đa chức năng là hệ thống có chức năng đa dạng và có thể
dễ dàng thay đổi dựa trên ứng dụng đang chạy trên nó, chức năng của PC không được định trước Trong khí chức năng của hệ thống nhúng là không đổi và luôn được định trước
• Khi phát triển hệ thống nhúng nhà phát triển thường biết rõ chức năng của nó còn khi phát triển PC nhà phát triển không biết rõ
• Phần lớn các hệ thống nhúng là hệ thống thời gian thực, còn PC thì không phải là
hệ thống thời gian thực
• Hệ thống nhúng được thiết kế và phát triển để thực hiện tối ưu một hay một vài chức năng chuyên biệt,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
• PC là máy tính đa chức năng, chức năng của PC vào từng thời điểm là tùy vào phần mềm ứng dụng chạy trên nó
• Hệ thống nhúng sử dụng và được phát triển trên nhiều loại kiến trúc vi xử lý khác nhau như :ARM, AVR, PIC, x86,MIPS, PowerPC… trong khi PC chỉ sử dụng và được phát triển trên một vài kiến trúc vi xử lý và phổ biến nhất hiện nay là kiến trúc x86
• Các vi xử lý thiết kế cho hệ thống nhúng có chức năng chuyên biệt cho từng loại
hệ thống cụ thể Vi dụ: vi xử lý dùng trong máy ảnh kỹ thuật số được chuyên biệt cho việc nhận và xử lý ảnh từ cảm biến của nó,…
• Kiến trúc và cấu trúc của một PC là ít thay đổi theo thời gian và ít đa dạng, còn kiến trúc và cấu trúc của các hệ thống nhúng là rất đa dạng và thay đổi tùy thuộc vào từng loại hệ thống cụ thể
• Hệ thống nhúng thường yêu cầu, vận hành trên một số lượng rất giới hạn các tài nguyên về RAM, ROM hay các thiết bị IO, chúng yêu cầu đủ để thực hiện chức năng của mình không giống như PC thường có yêu cầu gần như không giới hạn vềcác tài nguyên này
Trang 11• Hệ thống nhúng thường tiêu thụ một lượng điện năng thấp hơn PC và một bộ quản
lý điện năng tiêu thụ là luôn cần thiết đối với một hệ thống nhúng để chúng có thể hoạt đông hiệu quả và lâu dài Vi dụ: điện thoại đi đông luôn cần có một bộ quản
lý diện năng để quản lý lượng pin trong máy giúp máy hoạt động, khi gần hết pin
bộ quản lý điện năng có nhiệm vụ thông báo để nguoi dùng sạc lại, giúp duy trì việc hoạt động của hệ thống
• Các công cụ phát triển và gỡ rối của hệ thống nhúng thường rất khác so với PC, nếu như trên PC công cụ phát triển và gỡ rối chủ yếu là các công cụ phần mềm, thìkhi làm việc với hệ thống nhúng bạn sẽ làm quen với những mạch gỡ rối (phần cứng)dành riêng cho từng loại vi xử lý, hệ thống nhúng
• Hệ thống nhúng thường được xây dựng với mức hòa hợp giữa phần cứng và phần mềm của hệ thống rất cao để thuc hiện một cách tốt nhất chức năng riêng biệt của nó.Vidu: máy mp3 sẽ có một chip chuyên xử lý âm thanh, và một phần mềm chuyên để phuc vụ cho việc nghe nhạc và tương tác nguoi dùng.Trong khi PC được thiết kế cho đa mục đích sử dụng, cũng với chức năng nghe MP3, nó có thể không có một chip giải mã nhạc MP3 mà thay vào đó là dùng các bộ giải mã mềm phù hợp và bộ giải mã này được chạy trên vi xử lý của PC
Hình ảnh về một số mạch gỡ rối cho hệ thống nhúng:
Mạch gỡ rối cho vi xử lý ARM
Mạch nạp và gỡ rối cho vi điều khiển dòng MSP430 của TI
Trang 12Để cho dễ hiểu chúng ta có thể định nghĩa một hệ thống nhúng một cách mở như sau: các
hệ thống thông tin thỏa mãn hầu hết các đặc điểm của hệ thống nhúng như đã được đề
cập ở trên được gọi là hệ thống nhúng.
2.Phân tích trường hợp của điện thoại thông mình:
Điện thoại thông mình là một trường hợp điển hình của các hệ thống nhúng lai
Một hệ thống được gọi là hệ thống nhúng khi nó mang trong mình hầu hết những đặc điểm của hệ thống nhúng như đã nêu trên
Trong trường hợp này, điện thoại thông mình có các đặc điểm như sau:
Điện thoại thông mình luôn được đóng gói với một nền tảng phần cứng chuyên biệt và một nền tảng phần mềm (hệ điều hành, driver,…) chuyên biệt để khai thác sức mạnh của phần cứng
Mức độ hòa hợp giữa phần cứng và phần mềm của điện thoại thông mình là rất cao, Vidu: chúng ta không thể đem cài một hệ điều hành của một máy chạy
Android lên một máy chạy Windowns Phone hay iOS và ngược lại Hơn nữa trongtừng dòng máy cùng sài hệ điều hành Android nhưng khác model, hãng sản xuất chúng ta cũng thể làm được chuyện đó
Điện thoại thông mình cũng có các cảm biến để thu thập dữ liệu về môi trường xung quang
Điện thoại thông mình luôn có một giới hạn nhất định về các tài nguyên như ROM, RAM, và các loại tài nguyên này một khi đã được đóng gói và thiết kế cho từng model thì chúng ta khó, thường là không thể nâng cấp hay can thiệp được nữa, khác với máy tính đa năng điển hình là PC, chúng ta có thể dễ dàng nâng cấp được tài nguyên của máy
Điện thoại thông mình vì là điện thoại nên sẽ được tối ưu hóa cho việc nghe gọi (về kiểu dáng và các hệ thống truyền nhận sóng GSM)
Về tính hiệu quả: điện thoại thông minh cũng thỏa các tiêu chí về năng lượng, trọng lượng, kích thước, kích thước hệ điều hành, ứng dụng,…
Hơn nữa khi phát triển Hệ điều hành và ứng dụng cho điện thoại thông mình, người lập trình phải luôn tính toán tối ứu ứng dụng của mình cho phù hợp với lượng tài nguyên hạn hẹp của từng model cụ thể, đây là một đặc điểm quan trọng nhất của các phần mềm dành cho hệ thống nhúng
Vậy điện thoại thông mình là một hệ thống nhúng
Nhưng điện thoại thông mình có thể thực hiện được nhiều chức năng tương tự như các máy tính đa chức năng (PC) như: nghe nhạc, xem phim, bảng tính, soạn thảo văn bản, duyệt web, thậm chí cả chạy một số trình biên dịch C (C4Droid),… và chức năng của nó không còn được định sẵn khi mới xuất xưởng nữa (đa phần các hệ thống nhúng có chức năng định sẵn khi xuất xưởng và sau đó thì không thể thay đổi được) mà tùy thuộc vào từng ứng dụng chạy trên nó Vậy điện thoại thông mình là một máy tính đa chức năng
Trang 13Từ những phân tích trên chúng ta thấy rằng điện thoại thông mình mang trong mình cả những đặc điểm của hệ thống nhúng và cả những đặc điểm của một máy tính đa chức năng.
Đó là về mặt sử dụng và đặc điểm Ở khía cạnh nhà phát triển chúng ta có thể thấy rõ hơnnữa về tính “lai” của điện thoại thông mình
Khi phát triển một điện thoại thông mình, dưới gốc độ của nhà sản xuất phần cứng, họ phải tính toán, tích hợp, điều chỉnh và thiết lập thông số cho sản phẩm của mình sao cho
nó có thể đáp ứng được những yêu cầu về mặt chức năng của một chiếc điện thoại như: thiết lập thông số băng tầng GSM, gắn các cảm biến phù hợp, tính toán lượng RAM và ROM phù hợp cho từng loại và phiên bản hệ điều hành,…Họ phải lập trình tích hợp thêmrất nhiều driver về các thiết bị sử dụng trong sản phẩm vào hệ điều hành mà họ sẽ sử dụng như các driver về USB, WIFI, Camera,… các driver này là đặc trưng và chuyện biệtcho từng model cụ thể
Dưới gốc độ của một người lập trình ứng dụng, khi xây dựng một ứng dụng di động, họ luôn phải tính toán để tối ưu về mặt tài nguyên cho ứng dụng của mình sao cho phù hợp nhất với từng thiết bị cụ thế
Nhưng việc lập trình cho ứng dụng di đông thì thường rất giống với việc lập trình phần mềm cho máy tính đa chức năng PC Lúc này người lập trình sẽ sử dụng những API có sẵn đi kèm với từng loại hệ điều hành cụ thể và làm việc với những API đó một cách độc lập với những hiểu biết về giao tiếp phần cứng, hay nói cách khác bằng việc sử dụng thư viện API, việc giao tiếp và sử dụng các thành phần thiết bị ngoại vi của điện thoại thông mình là gần như trong suốt với người lập trình, việc giao tiếp cấp thấp đã có hệ điều hành
và hệ thống middleware đảm nhiệm Điều này là khác hoàn toàn với việc lập trình nhúng truyền thống
Như vậy ở khía cạnh phát triển chúng ta cũng có thể thấy điện thoại thông mình là một hệthống nhúng lai thật sự
Tóm lại, tùy thuộc vào hướng nhìn nhận và tiếp cận cụ thể của từng người ở các gốc độ
khác nhau mà điện thoại thông mình có thể là một máy tính đa chức năng “tối giản”, hay một hệ thống nhúng phức tạp, cao cấp
Và cũng tùy vào hướng nhìn nhận, chúng ta có thể nói rằng điện thoại thông mình là một cái điện thoại được nhúng vào trong nó một hệ thống máy tính đa chức năng, hay điện thoại thông mình là một máy đa chức năng có tính năng gọi điện và được thiết kế phù hợp cho chức năng đó
3.Một số hướng nhìn khác:
Như định nghĩa mở rộng đã nếu: các hệ thống thông tin thỏa mãn hầu hết các đặc điểm
của hệ thống nhúng như đã được đề cập ở trên được gọi là hệ thống nhúng
Chúng ta hoàn toàn có thể sử dụng một máy tính đa chức năng (PC) để thực hiện một hệ thống nhúng hoàn chỉnh, nếu như như hệ thống đó đáp ứng được phần lớn các nhu cầu của hệ thống nhúng
Vidu: chúng ta có thể dùng một PC để làm thiết bị thu thập dữ liệu thời tiết, bằng cách cho nó chạy duy nhất những ứng dụng chuyên dụng cho việc thu thập dữ liệu, và kết nối
nó với những thiết bị cảm biến môi trường khác Điều này đã thật sự tạo nên một hệ thống nhúng hoàn chỉnh với một chức năng chuyên biệt là làm thiết bị thu thập dữ liệu dựbáo thời tiết Và cái thiết bị này là một phần của hệ thống lớn hơn đó là trạm dự báo thời tiết
Trang 14Cũng với ý trên nếu chúng ta chỉ xem điện thoại thông mình là một máy tính đa chức năng có chức năng gọi thì với việc cho nó chạy một ứng dụng duy nhất chuyên biệt về công việc chuyên biệt mà hệ thống của ta yêu cầu, và nhúng nó vào một hệ thống lớn hơn Lúc này, điện thoại thông mình với ứng dụng đó trở thành một hệ thống nhúng thật sự.
Những khía cạnh nêu trên là hoàn toàn phù hợp với định nghĩa: “Một hệ thống nhúng là
hệ thống tính toán được nhúng vào một hệ thống lơn hơn và thực hiện một phần chức năng của hệ thống lớn đó” (hiểu theo cách hiểu (1))
Hình ảnh minh họa về việc dùng điện thoại làm hệ thống nhúng hoàn chỉnh cho một
hệ thống lớn hơn.
Vidu: Robot cho iOS Romo dùng điện thoại thông mình iPhone để làm hệ thống điều khiển phần thân của robot và xử lý các thuật toán về AI,…
Trang 15Phần II: HỆ ĐIỀU HÀNH LINUX NHÚNG
I/ Hệ điều hành:
Vì sao chúng ta cần một hệ điều hành cho các hệ thống nhúng?
Để phát triển một hệ thống nhúng chúng ta cần phải hiểu rất rõ về phần cứng của từng loại hệ thống mà chúng ta đang phát triển, cụ thể là cần phải nắm: kiến trúc và tập lệnh của vi xử lý đang sử dụng, phương phức giao tiếp với các loại thiết bị ngoại vi như: sensor, thẻ nhớ, chip nhớ, giao tiếp USB,… như vậy để hệ thống nhúng hoạt động được người ta phải lập trình tất cả những thứ trên rồi biên dịch ra file hex và nạp xuống hệ thống Việc làm này sẽ làm gây hao phí rất nhiều chi phí và công sức của anh em lập trình viên Hơn nữa, các hệ thống nhúng ngày càng đa dạng và thông minh hơn, chúng không còn đơn thuần là chạy một tiến trình trong quá trình hoạt động của mình để có thể
xử lý một cách chính xác và nhanh nhất công việc được giao nữa, mà chúng sẽ có nhiều tiến trình cùng chạy trong quá trình xử lý Mỗi một tiến trình thường yêu cầu một lượng tài nguyên hệ thống nhất định để có thể chạy được, và trong một số trường hợp các tài nguyên này không thể dùng chung vì như thế có thể gây ra lỗi nghiêm trọng với hệ thống,như vậy chúng ta cần phải điều phối và đồng bộ các tiến trình này một cách phù hợp để chúng không gây tổn hại với nhau và chạy được một cách trơn tru nhất
Với hai yêu cầu trên đòi hỏi chúng ta cần phải có một phần mềm chuyên giao tiếp với phần cứng và chứa trong nó một sớ lượng vừa đủ các chương trình viết sẵn để điều khiển các thiết bị ngoại vi trong hệ thống, để giúp cho lập trình viên có thể dễ dàng phát triển các ứng dụng và bớt lệ thuộc vào phần cứng, và đồng thời phần mềm này phải có sẵn chức năng quản lý, điều phối và đồng bộ các tiến trình trong hệ thống giúp hệ thống chạy
an toàn và chính xác Phần mềm kể trên được gọi là hệ điều hành
Hệ điều hành là một loại phần mềm các loại phần mềm thông thường Sự khác biệt điển hình là hệ đ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ệ đ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ẽ đảm nhiệm
vụ 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
Trang 16dụ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
Khái niệm hệ điều hành nhúng:
• Mang đặc trưng cơ bản của hệ điều hành
+ Quản lý tài nguyên phần cứng và phần mềm của hệ thống
+ Trung gian giữa phần cứng và phần mềm, giúp phần cứng làm việc trong suốt với phần mềm ứng dụng
+ Cung cấp giao diện hàm chuẩn cho phần mềm ứng dụng
• Đặc trưng riêng của hệ điều hành nhúng
+ Tăng tính tin cậy
+ Khả năng tương thích mềm: dễ dàng nâng cấp hay thu gọn để tương thích với nền tảng hệ thống
+ Đòi hỏi ít bộ nhớ hơn
+ Cung cấp các cơ chế lập lịch hỗ trợ hệ điều hành thời gian thực
(Realtime OS – RTOS)
+ Hỗ trợ các hệ thống không có ổ cứng thông qua cơ chế khởi động và thực thi
từ ROM và RAM
+ Tăng tính khả chuyển (portability)
+ Tính chuyên biệt hóa cáo cho từng loại hệ thống nhúng và từng dòng thiết bị trong loại đó
Các hệ điều hành nhúng thông dụng hiện nay: Embedded Linux, Windown CE,
Android, iOS, Window Phone, VxWork, LynxOS,…
Nhưng chiếm tỷ trọng cao nhất và phổ biến nhất là Embedded Linux, trong đề tài này chúng ta sẽ đi tìm hiểu kỹ về Embedded Linux
Embedded Linux được sử dụng nhiều và phổ biến vì:
• Chi phí: bản thân Linux là mã nguồn mở, nên ta không cần phải trả tiền để có thể
sử dụng và phát triển nhân của nó.Yếu tố này đặc biệt quan trong đối với các nhà sản xuất và phát triển các sản phẩm điện tử tiêu dùng vì nó sẽ làm giảm giá thành
và nâng cao tính cạnh tranh cho các sản phẩm
• Tính tương thích cao với nhiều loại vi xử lý khác nhau, cả 32bit và 64 bit, nó hỗ trợ cả các kiến trúc có và không có khối quản lý bộ nhớ (MMU)
• Tính mềm dẻo và linh hoạt: bản chất của Linux là module Linux, do đó dễ dàng làm nhỏ lại cho vừa môi trường hoạt động bằng cách bớt các chương trình tiện ích,công cụ, và hệ thống dịch vụ không cần thiết được nhúng vào trong một môi trường hoạt động Một trong những lợi thế lớn của Linux đó là nó là một hệ điều hành đầy đủ các chức năng, với hỗ trợ cho các mạng đang trở thành một yêu cầu rất quan trọng trong bất kì hệ thống nhúng nào Do có thể thêm hoặc bớt từ các môđun nhân tại chế độ runtime, nên điều này làm cho Linux rất linh hoạt
Trang 17II/ Hệ điều hành Linux nhúng:
1.Giới thiệu:
1.1 Lịch sử phát triển:
Linux là một nhân hệ điều hành được phát triển bởi Linus Torvalds vào năm 1991trên cơ sở cải tiến phiên bản UNIX có tên Minix do giáo sư Andrew S.Tanenbaumxây dựng và phổ biến Sau đó Linus Torvalds đã công bố mã nguồn của mình chomọi người và mong muốn mọi người có thể đóng góp ý kiến , phát hiện lỗi và pháttriển nó ngày càng tốt hơn Và cũng từ thời điểm đó , theo tư tưởng GNU rất nhiềuchuyên gia trên toàn thế giới đã tham gia vào quá trình phát triển Linux và vì vậyLinux ngày càng phát triển , mạnh mẽ , ổn định , có độ tin cậy cao và đáp ứng đượcnhu cầu của người dùng
Một số mốc lịch sử quan trọng trong quá trình phát triển nhân hệ điều hành Linux :
Sau ba năm nhân Linux ra đời , đến ngày 14-3-1994, hệ điều hành Linux phiên bản1.0 được phổ biến Thành công lớn nhất của Linux 1.0 là nó đã hỗ trợ giao thức mạngTCP/IP chuẩn UNIX , sánh với giao thức socket BSD- tương thích cho lập trình mạng Trình điều khiển thiết bị đã được bổ sung để chạy IP trên một mạng Ethernet hoặctrên tuyến đơn hoặc qua modem Hệ thống file trong Linux 1.0 đã vượt xa hệ thốngfile của Minix thông thường , ngoài ra đã hỗ trợ điều khiển SCSI truy nhập đĩa tốc độcao Điều khiển bộ nhớ ảo đã được mở rộng để hỗ trợ điều khiển trang cho các fileswap và ánh xạ bộ nhớ của file đặc quyền
Vào tháng 3-1995 , nhân 1.2 được phổ biến Điều đáng kể của Linux 1.2 so với Linux1.0 ở chỗ nó hỗ trợ một phạm vi rộng và phong phú phần cứng , bao gồm cả kiến trúctuyến phần cứng PCI mới Nhân Linux 1.2 là nhân kết thúc dòng nhân Linux chỉ hỗtrợ PC
Cách đánh chỉ số các dòng nhân (hệ điều hành) Linux : Hệ thống chỉ số được chiathành một số mức, chẳng hạn hai mức như 2.4 hoặc ba mức như 2.2.5 Trong cáchđánh chỉ số như vậy , quy ước rằng với các chỉ số từ mức thứ hai trở đi , nếu là sốchẵn thì dòng nhân đó đã khá ổn định và tương đối hoàn thiện , còn nếu là số lẻ thìdòng nhân đó vẫn đang được phát triển tiếp
Tháng 6-1996 , nhân Linux 2.0 được phổ biến Có hai đặc trưng nổi bật của Linux2.0 là hỗ trợ kiến trúc phức hợp , bao gồm cả cổng Alpha 64-bit đầy đủ , và hỗ trợkiến trúc đa bộ xử lý Phân phối nhân Linux 2.0 cũng thi hành được trên bộ xử lýMotorola 68000 và kiến trúc SPARC của SUN
Tới năm 2000 , nhân Linux 2.4 được phổ biến Một trong đặc điểm được quan tâmcủa nhân này là nó hỗ trợ mã ký tự Unicode 32 bít , rất thuận lợi cho việc xây dựng
Trang 18các giải pháp toàn diện và triệt để đối với vấn đề ngôn ngữ tự nhiên trên phạm vi toànthế giới
Nhân Linux là phần mềm tự do được phân phối theo Giấy phép sở hữu công cộngphần mềm GNU GPL ( General Public License )
Vật lấy phước của nhân Linux là chú chim cánh cụt - Tux
Hình 1: Linus Torvalds và vật lấy phước chú chim cánh cụt
1.2 Các thành phần của hệ điều hành linux nhúng:
1.2.1 Kiến trúc nhân hệ điều hành Linux:
Nhân được ví như trái tim của hệ điều hành Về bản chất nhân cũng là một chương trình phần mềm máy tính nhưng ở cấp độ hệ thống có vai trò điều khiển các thành phần của hệ thống máy tính , quản lý tài nguyên của hệ thống , cung cấp một số dịch
vụ và phần mềm cơ bản cho máy tính , cung cấp môi trường thực thi có các ứng dụngkhác nhau chạy trên hệ thống Nhân chính là cầu nối giữa phần cứng vật lý của máy tính với và chương trình ứng dụng
Các dịch vụ của nhân được chạy trong chế độ đặc quyền của bộ xử lý Trái lại , các chương trình ứng dụng được chạy trong chế độ người dùng hoàn toàn cách ly với hệ
Trang 19điều hành Khi ứng dụng chạy trong chế độ người dùng gọi tới một dịch vụ hệ thống thông qua một giao diện , bộ xử lý chặn lại lời gọi và thi hành dịch vụ mức nhân hệ điều hành Thông thường việc thực thi ở mức nhân đơn giản và nhanh hơn bởi vì nó không bị chuyển giữa chế độ đặc quyền và không đặc quyền
Nhân của Linux gồm năm tiểu hệ thống :
- Bộ phân thời gian cho tiến trình ( Process Schedule – SCHED ) :
Hoạt động của máy tính , tại một thời điểm chỉ có một lệnh được thực thi Tuy nhiên các hệ điều hành đa nhiệm như Windows, Linux … đều cho phép nhiều chương trìnhchạy cùng một lúc Các hệ điều hành đa nhiệm có thể làm được như vậy bằng cách chuyển quyền thực thi qua lại giữa các chương trình thật nhanh làm cho người dùng
có cảm giác các chương trình chạy cùng lúc với nhau Vi dụ người dùng có thể vừa soạn thảo văn bản vừa có thể nghe Trong hệ điều hành đa nhiệm thì bộ phân thời gian tiến trình đảm nhiệm nhiệm vụ này
SCHED được chia thành bốn khối :
Khối luật định thời (scheduling policy): chịu trách nhiệm phân bố xem tiến trình ( process ) nào được quyền truy xuất CPU Hệ thống hoạt động có thông suốt hay không nhờ vào bộ luật này, tránh trường hợp một tiến trình lợi dụng sơ hở của điều luật mà chiếm thời gian hệ thống quá nhiều làm các tiến trình khác bị đóng băng (freeze)
Khối phụ thuộc kiến trúc ( architeture-specific ): khối này gồm các mã assembly phụ thuộc vào mỗi loại CPU dùng để tạm ngưng hoạt động của tiến trình
Khối độc lập kiến trúc (architeture-independent): Khối gọi các hàm từ khối phụ thuộc kiến trúc và khối luật để chuyển giửa các tiến trình đồng thời nó còn gọi các hàm ở MM để thiết lập bộ nhớ ảo cho các tiến trình được hồi phục lại Khối phụ thuộc kiến trúc sẽ khác nhau ở mỗi loại CPU (ỉ386, apha, v.v) nhưng khối độc lập kiến trúc thì không đổi
Khối hàm gọi hệ thống ( system call ) Gồm các hàm mà người dùng có thểdùng để tương tác với SCHED Khi lập trình Linux và Unix sẽ quen với các hàm gọi
hệ thống này
- Bộ quản lý bộ nhớ ( Memory Manager - MM) :
Bộ nhớ qui ước của các máy tính chỉ có 640KB Do BIOS chỉ quản lý được tới FFFF , vùng nhớ cao từ A0000 trở lên dùng để ánh xạ BIOS , video card memory và các thiết bị ngoại vi khác , vùng nhớ còn lại tử 9FFFF trở xuống tương đương với 640KB Trong chế độ bảo vệ ( protect mode ) của CPU 32 bit đưa ra khái niệm bộ nhở ảo ( Virtual Memory ) Lúc này mỗi tiến trình được cấp tới 4GB bộ nhớ ảo Nhưng nhân hệ điều hành sẽ tạo ra một bảng mô tả từng trang của bộ nhớ ảo với bộ
Trang 20nhớ vật lý Bộ nhớ vật lý bây giờ bao gồm cả bộ nhớ RAM và vùng nhớ hoán vị trên đĩa cứng
- Hệ thống file ảo :
Hệ thống này không chỉ cung cấp truy suất đến hệ thống file trên đĩa cứng mà còn tất
cả các ngoại vi Trong Linux tất cả các tập tin , thư mục và các thiết bị đều được coi như là file Ví dụ như máy in , cổng nối tiếp , các ổ đĩa … đều được truy cập như là file Linux cũng cung cấp các thuộc tính truy cập cho file và thư mục , các thuộc tính
có thể được thiết lập như cho phép đọc , cho phép ghi , cho phép thực thi Linux thiết lập chế độ bảo vệ đối với các file hệ thống và hạn chế quyền truy cập đối với các thiết
bị
- Giao diện mạng ( Network Interface - NET) :
Trong nhân Linux dựng sẵn giao thức TCP/UDP , IP và Ethernet
- Bộ truyền thong nội bộ (Inter-process communication IPC) :
Một tiến trình trong Linux giao tiếp với các tiến trình khác và với nhân hệ điều hành thông qua một cơ chế được gọi là bộ truyền thông nội bộ - IPC Nó cho phép các tiến trình gửi hoặc nhận các thông điệp từ một tiến trình khác , sử dụng chung vùng nhớ chia sẻ và đồng bộ với các tiến trình khác
1.2.2 Bootloader:
Trong một hệ thống nhúng, không tồn tại firmware giống như CMOS của PC Vì vậy
để khởi động một hệ thống nhúng, chúng ta phải xây dựng bootloader Bootloader làmột phần rất quan trọng trong hệ thống nhúng Chức năng của bootloader như sau:
• Sao chép kernel từ flash memory đến RAM và thực thi kernel
• Khởi tạo phần cứng
• Bootloader cũng bao gồm chức năng ghi dữ liệu đến flash memory (tải
• kernel hoặc RAM disk image xuống flash memory bằng cổng giao tiếp tuần
tự hoặc các thiết bị nối mạng)
• Cung cấp giao tiếp để gửi lệnh đến hoặc nhận về các trạng thái của bo mạch cầnchạy
1.2.3 Device driver:
Device driver là phần mềm giao tiếp giữa phần cứng và kernel của Embedded Linux Linux device driver có thể được tích hợp vào trong kernel theo 2 phương pháp: biên dịch trực tiếp vào kernel hoặc biên dịch thành một định dạng đối tượng (object format
có tập tin là device_driver.o) để kernel có thể tải lên khi có nhu cầu (sử dụng lệnh install module “insmod device_driver.o”)
Trang 21Để biên dịch các tập tin của device driver cần phải xây dựng một Makefile Kết quả thu được sẽ là tập tin có phần mở rộng *.o.
Thư mục /dev : Thư mục này chứa các file thiết bị
Thư mục /etc : Thư mục này chứa các file cấu hình toàn cục của hệ thống
Thư mục /home : Thư mục này chứa các thư mục con đại diện cho mỗi người dùng
khi đăng nhập Đây là nơi làm việc thường xuyên của người dùng Khi người quản trị tạo tài khoản cho một người dùng thì sẽ cấp cho người dùng một thư mục cùng tên
với tài khoản người dùng nằm trong thư mục /home Người dùng cho mọi quyền thao
tác trên thư mục của mình và không ảnh hưởng đến người dùng khác
Thư mục /lib : Thư mục này chứa các file thư viện so hoặc a Các thư viện C và
lien kết động cần cho chương trình chạy và cho toàn hệ thống
Thư mục /lost+found : Khi chạy chương trình fsck , nếu tìm thấy một chuỗi dữ liệu
nào thất lạc trên đĩa cứng và không lien quan đến các tập tin , Linux sẽ gom chúng lại
và đặt trong thư mục này để nếu cần người dùng có thể đọc và giữ lại dữ liệu bị mất
Thư mục /mnt : Thư mục này chứa các kết gán ( mount ) tạm thời đến các ổ đĩa hoặc
thiết bị khác
Thư mục /sbin : Thư mục này chứa các file thực thi của hệ thống dành cho người
quản trị hệ thống
Thư mục /tmp : thư mục này dùng để chứa các file tạm mà chương trình tạo ra lúc
chạy Các file này sẽ được hệ thống dọn dẹp khi các chương trình kết thúc
Thư mục /usr : Thư mục này chứa nhiều thư mục con như /usr/bin , /usr/local … và
đây cũng là một trong những thư mục con quan trọng của hệ thống , bên trong thư mục con này (/usr/local) cũng chứa đầy đủ các thư mục con tương tự ngoài thư mục gốc như sbin, lib, bin… Nếu nâng cấp hệ thống thì các chương trình người dùng cài đặt trong thư mục /usr/local vần giữ nguyên và không sợ các chương trình bị mất mát
Thư mục /var : Thư mục này chứa các file biến thiên bất thường như các file dữ liệu
đột nhiên tăng kích thước trong một thời gian ngắn sau đó lại giảm kích thước xuốngcòn rất nhỏ Điển hình là các file dùng làm hàng đợi chứa dữ liệu cần đưa ra máy inhoặc các hàng đợi chứa thư điện tử
Trang 222.Một số hệ điều hành Linux nhúng phổ biến:
2.1 Hệ điều hành nhúng uClinux:
Hệ điều hành uClinux là một phiên bản hệ điều hành sử dụng nhân Linux được thiết
kế cho các hệ thống nhúng sử dụng bộ vi điều khiển không có đơn vị quản lý bộ nhớ
Là một phiên bản hệ điều hành sử dụng nhân Linux nên uClinux có kiến trúc , cách thức hoạt động giống như hệ điều hành Linux chạy trên các PC , phương pháp phát triển ứng dụng cũng giống như phát triển trên môi trường hệ điều hành Linux Do là một hệ điều hành mã nguồn mở nên các nhà phát triển có thể cấu hình hệ điều hành theo ý mình để tạo ra một hệ điều hành phù hợp với hệ thống cần phát triển
2.1.1 Lịch sử phát triển:
Dự án hệ điều hành uClinux được bắt đầu phát triển từ năm 1997 , mục đích tạo ra hệ điều hành này là phát triển một phiên bản nhân hệ điều hành Linux 2.0 để nhúng vào các vi điều khiển Nó được Jeff Dionne , Kenneth Albanowski và nhóm các nhà phát triển khác đặt vấn đề là khả năng nhúng Linux vào mạng vi điều khiển không có đơn
vị quản lý bộ nhớ , khả năng truyền thông giữa mạng đó với các hệ thống truyền thông Phiên bản phát hành đầu tiên của hệ điều hành này được phát hành cùng với vi
xử lý Motorola 68000 , vi xử lý này dựa trên trên vi xử lý MC68328 DragonBall Intergrated Microprocessor nó được triển khai trong bộ điều khiển SCADA năm 1997/98 Phiên bản này đã được cộng đồng nguồn mở phát triển và một phiên bản khác đã được sử dụng cho Palm Pilot vào tháng 2 năm 1998
Trong hệ điều hành uClinux có một số thay đổi so với hệ điều hành Linux , thư viện uC-libc được thiết kế để thay cho thư viện libc và glibc trong hệ điều hành Linux Một cải tiến khác đã được thực hiện bởi SnapGear là thêm một định dạng mới Binary Flat – bFLT
Hệ điều hành uClinux là một hệ điều hành đa nhiệm , các chương trình có thể chạy ở nhiều mức khác nhau của hệ thống Hệ điều hành cho phép chạy nhiều chương trình cùng một lúc , cho phép chạy các ứng dụng đa luồng Với việc nhúng hệ điều hành uClinux vào các vi điều khiển đã giúp cho các nhà phát triển tạo ra các ứng dụng dễ dàng vì phương pháp lập trình giống như trên môi trường hệ điều hành Linux Hệ điều hành uClinux là một hệ điều hành thời gian thực , nhà phát triển có thể chạy các ứng dụng đa luồng trên môi trường hệ điều hành Điều này là rất khó khi phát triển một ứng dụng đa luồng chạy trực tiếp trên vi điều khiển không có hệ điều hành Nhiệm vụ chính khi phát triển hệ điều hành uClinux là cấu hình nhân hệ điều hành cho phù hợp với hệ thống cần phát triển , biên dịch nhân , phát triển các driver cho các ngoại vi và sau đó phát triển các ứng dụng cho hệ thống nhúng chạy trên môi trường hệ điều hành