Nghiên cứu, thiết kế, tích hợp và phát triển phần cứng, phần mềm cho hệ nhúng

Lời nói đầu Sự bùng nổ về hệ nhúng (Embedded System) trong thời gian gần đây mở ra một cơ hội to lớn cho nhiều ngành công nghiệp: thông tin, điều khiển tự động, cơ điện tử . Những tiến bộ về phần cứng và phần mềm cho phép chúng ta ứng dụng các hệ nhúng nhỏ gọn, rẻ tiền vào rất nhiều lĩnh vực, cung cấp phương tiện thông tin mọi nơi, mọi lúc. Kết nối mạng không dây đang ngày càng trở nên phổ biến và dễ dàng giúp cho việc truyền thông nhanh chóng và thuận tiện. Mạng Ad-hoc là một mạng wireless sử dụng các giao tiếp không dây phân tán giữa nhiều điểm truy cập khác nhau mà không cần tới bất cứ một cơ sở hạ tầng cố định nào. Kết nối mạng không dây và đặc biệt là mạng Ad-hoc cho phép truyền và xử lý tín hiệu multimedia vào các ứng dụng phi truyền thống, không còn phải gắn với PC nối mạng Internet. Bất cứ thiết bị cầm tay và cố định nào như điện thoại di động, PDAs, laptop, máy nhắn tin, các trạm vô tuyến cơ sở . đều có thể là một kênh thông tin trong mạng Ad-hoc tạo thành mạng toàn cầu, khắp mọi nơi. Các hệ nhúng này có thể mang trên người (wearable computer), các đối tượng di chuyển (xe cộ, tàu thuyền, ) hoặc đặt cố định ở hiện trường giúp cho việc truyền video có tương tác hoặc giám sát thời gian thực. Dựa vào những ưu điểm của hệ nhúng và mạng không dây, em đã nghiên cứu, thiết kế, tích hợp và phát triển phần cứng, phần mềm cho hệ nhúng với kiến trúc phần cứng vi xử lý Arm9 cho phép truyền video trên mạng WLAN cũng như Ad-hoc Em xin chân thành cảm ơn thầy Phạm Văn Tiến, các thầy cô, cùng các bạn đã giúp đỡ em để hoàn thành đồ án này Tóm tắt công trình Sự phát triển kỹ thuậtluận văn - báo cáo - tiểu luận - tài liệu chuyên ngành Kỹ thuật phần cứng và phần mềm cho phép sử dụng các hệ nhúng nhỏ gọn, rẻ tiền vào rất nhiều lĩnh vực, cung cấp phương tiện thông tin mọi nơi, mọi lúc. Kết nối mạng không dây cho phép chúng truyền và xử lý tín hiệu multimedia vào các ứng dụng phi truyền thống, không gắn với máy tính PC nối mạng Internet. Các hệ nhúng này có thể mang trên người, các đối tượng di chuyển (xe cộ, tàu thuyền) hoặc đặt cố định ở hiện trường (địa điểm công cộng) giúp truyền video có tương tác hoặc giám sát thời gian thực. Nhóm nghiên cứu đã thiết kế, tích hợp và phát triển phần cứng, phần mềm cho hệ nhúng (Armadillo-300) cho phép truyền video trên mạng WLAN cũng như mạng di động không có cơ sở hạ tầng thiết lập trước (ad-hoc network). Hệ thống cho phép người dùng thay đổi tham số video một cách dễ dàng cũng như tự thích ứng với điều kiện đường truyền. Ngoài ra, video được nhúng vào giao diện web tiếng Việt rất thân thiện với người dùng Việt NamThư Viện Điện Tử Trực Tuyến Việt Nam . Hệ thống có thể được đem ứng dụng vào giám sát bằng video thời gian thực ở các địa điểm công cộng đông người, tòa nhà cao tầng, nhà riêng Mốt truyền ad hoc có thể hỗ trợ tốt các tình huống khẩn cấp không có cơ sở hạ tầng thông tin tiền định. Hệ nhúng kích thước nhỏ, tiêu hao ít năng lượng rất thích hợp cho các ứng dụng di động. Sản phẩm cũng hỗ trợ tốt việc nghiên cứu truyền video trên mạng không dây phi truyền thống.Trích từ: http://.com . Mục lục Lời nói đầu. 1 Tóm tắt công trình. 2 Abstract3 Mục lục. 4 Danh mục hình vẽ. 7 1.Đặt vấn đề. 9 1.1Giới thiệu về mạng Ad-hoc. 9 1.2Giới thiệu về hệ nhúng. 11 1.2.1Định nghĩa hệ nhúng (Embedded System)11 1.2.2Lịch sử. 12 1.2.3Đặc điểm13 1.2.4Giao diện. 14 1.2.5Kiến trúc CPU14 1.2.6Thiết bị ngoại vi15 1.2.7Công cụ phát triển. 15 1.2.8Độ tin cậy. 16 1.2.9Xu hướng phát triển của hệ nhúng. 17 1.2.8 Thách thức và các vấn đề tồn tại của hệ nhúng. 17 1.2.9 Hệ nhúng có hệ điều hành. 18 1.3Nhu cầu thực tiễn. 21 1.4Mục tiêu đề tài21 2.Thiết kế hệ thống. 22 2.1Mô hình và cấu trúc. 22 2.2Board nhúng sử dụng. 25 2.2.1Giới thiệu Armadillo-300. 25 a.Chíp vi xử lý. 26 b.IEEE802.11a/b/g WLAN and Ethernet26 c.Hệ điều hành. 26 d.Bảo mật và IPv6. 26 e.Giao tiếp USB, CompactFlash và LCD26 2.2.2Cách boot board mạch. 28 2.2.3Cách nạp file image vào board mạch. 30 3.Môi trường phát triển ứng dụng cho bo nhúng (ATDE)31 3.1Giới thiệu về ATDE31 3.2Biên dịch file image cho board nhúng trên ATDE32 3.3Cross-compile trên ATDE33 3.3.1Giới thiệu Cross-compile trên Linux. 33 3.3.2Biên dịch chương trình “Hello world”. 34 3.3.3Nạp các ứng dụng xuống Armadillo-300. 35 3.4Kiến trúc chức năng hệ thống. 36 3.5Mô tả chức năng và hoạt động. 36 4.Triển khai thực hiện.37 4.1Tiến trình nghiên cứu triển khai37 4.2Cấu hình mạng Ad-hoc cho hệ nhúng. 39 4.3Triển khai phần mềm định tuyến trên hệ nhúng. 39 4.3.1Giới thiệu về OLSRD39 4.3.2 Triển khai OLSRD trên hệ nhúng. 40 4.4Triển khai driver cho webcam trên hệ nhúng. 42 4.4.1Tiến trình thực hiện. 42 4.4.2Giới thiệu gói phần mềm GSPCA42 4.4.3Triển khai GSPCA42 4.5Triển khai phần mềm truyền video. 45 4.5.1Giới thiệu về các phần mềm truyền video. 45 4.5.2Triển khai mjpeg-streamer trên hệ nhúng. 45 4.6Phát triển giao tiếp cổng COM cho hệ nhúng. 46 4.6.1Cổng COM trên bo nhúng Armadillo-300. 46 4.6.2Lập trình nối tiếp trên Linux. 48 a.Cơ sở giao tiếp nối tiếp. 48 b.RS 232. 48 c.Định nghĩa mức tín hiệu. 48 d.Lập trình với cổng nối tiếp. 49 e.Cấu hình cho cổng COM52 4.6.3Phát triển chương trình điều khiển độ phần giải video qua cổng COM . 55 4.7Các module chính. 57 4.7.1Module Nghiên cứu về hệ nhúng và xây dựng mạng ad-hoc trên hệ nhúng.57 4.7.2Module triển khai video streaming trên server.57 4.7.3Triển khai kết nối mạng.57 4.8Giao diện người - máy. 57 4.9Tích hợp hệ thống. 58 5.Kết quả đạt được. 59 5.1Phần cứng. 59 5.2Phần mềm61 6.Kết luận. 64 Tài liệu tham khảo. 65 Tóm tắt công trình Sự phát triển kỹ thuật phần cứng và phần mềm cho phép sử dụng các hệ nhúng nhỏ gọn, rẻ tiền vào rất nhiều lĩnh vực, cung cấp phương tiện thông tin mọi nơi, mọi lúc. Kết nối mạng không dây cho phép chúng truyền và xử lý tín hiệu multimedia vào các ứng dụng phi truyền thống, không gắn với máy tính PC nối mạng Internet. Các hệ nhúng này có thể mang trên người, các đối tượng di chuyển (xe cộ, tàu thuyền) hoặc đặt cố định ở hiện trường (địa điểm công cộng) giúp truyền video có tương tác hoặc giám sát thời gian thực. Nhóm nghiên cứu đã thiết kế, tích hợp và phát triển phần cứng, phần mềm cho hệ nhúng (Armadillo-300) cho phép truyền video trên mạng WLAN cũng như mạng di động không có cơ sở hạ tầng thiết lập trước (ad-hoc network). Hệ thống cho phép người dùng thay đổi tham số video một cách dễ dàng cũng như tự thích ứng với điều kiện đường truyền. Ngoài ra, video được nhúng vào giao diện web tiếng Việt rất thân thiện với người dùng Việt Nam . Hệ thống có thể được đem ứng dụng vào giám sát bằng video thời gian thực ở các địa điểm công cộng đông người, tòa nhà cao tầng, nhà riêng Mốt truyền ad hoc có thể hỗ trợ tốt các tình huống khẩn cấp không có cơ sở hạ tầng thông tin tiền định. Hệ nhúng kích thước nhỏ, tiêu hao ít năng lượng rất thích hợp cho các ứng dụng di động. Sản phẩm cũng hỗ trợ tốt việc nghiên cứu truyền video trên mạng không dây phi truyền thống.

doc67 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2528 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Nghiên cứu, thiết kế, tích hợp và phát triển phần cứng, phần mềm cho hệ nhúng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
trên mạng không dây phi truyền thống. Abstract The development of hardware and software enables to apply small, cheap embedded systems to various fields, supply anytime, anywhere connectivity. The wireless network enables them to transmit and process multimedia information in an unconventional manner without PC connected to Internet. These embedded systems can be wearable, implemented in moving objects (vehicles, ships...etc) or set up in public positions for interactive video transmission and real time monitoring. This thesis aims to design, integrate and develop hardware, software for an embedded system (Armadillo-300) in order to transmit video over WLAN and Ad-hoc network as well. The system enables users to adjust video parameters easily and the video embedded to webpage that very friendly with Vietnamese. This system can be applied for real time monitoring at public positions, high-rise buildings, houses...etc. Ad-hoc mode supports well state of emergency without information infrastructure. The embedded system with small size, low power consumption is especially suitable for mobile applications and helpful for doing research in video transmission over Ad-hoc network. Mục lục Danh mục hình vẽ Hình 1 Mạng Ad-hoc 9 Hình 2 Board nhúng 19 Hình 3 Mô hình hệ thống 22 Hình 4 Sơ đồ kết nối Video Streaming 23 Hình 5 Board nhúng Armadillo 300 25 Hình 6 Sơ đồ khối của Armadillo-300 27 Hình 7 Thiết lập jump để boot 28 Hình 8 Sơ đồ cáp nối 29 Hình 9 Hermit-at-WIN32 trên Window 30 Hình 10 ATDE 31 Hình 11 Kiến trúc chức năng của hệ thống 36 Hình 12 Tiến trình xây dựng video streaming trên hệ nhúng 38 Hình 13 OLSRD chạy trên bo nhúng 41 Hình 14 Tiến trình triển khai Webcam driver 42 Hình 15 Thư mục /dev trên bo nhúng 44 Hình 16 Driver nhận ra webcam khi cắm vào bo nhúng 45 Hình 17 Sơ đồ chân cổng COM1 trên bo nhúng 46 Hình 18 Sơ đồ chân cổng COM2 trên bo nhúng 47 Hình 19 Sơ đồ nối chân cổng COM 47 Hình 20 Bảng các cờ điều khiển cổng COM 52 Hình 21 Bảng các tùy chọn cho cờ c_cflag 54 Hình 22 Lưu đồ thuật toán thay đổi độ phân giải 56 Hình 23 Giao diện người máy web browser 57 Hình 24 Giao diện người máy thay đổi độ phân giải 58 Hình 25 Webcam Lab Tech 59 Hình 26 Giao tiếp RS232 giữa máy tính với bo nhúng 60 Hình 27 Giao diện web giới thiệu 61 Hình 28 Giao diện web quan sát hiện trường 62 Hình 29 Giao diện chương trình Resolution Changing (start) 63 Hình 30 Giao diện chương trình Resolution Changing (configure) 63 Danh sách các từ viết tắt Thuật ngữ Viết tắt Ghi chú OLSRD Optimized Link State Routing Daemon Định tuyến trong mạng Ad-hoc GUI Graphical User Interface Giao diện người dùng WLAN Wireless Local Area Network ATDE Atmark Techno Development Environment Môi trường phát triển cho bo nhúng Armadillo-300 1.Đặt vấn đề Giới thiệu về mạng Ad-hoc Hình 1 Mạng Ad-hoc Ad hoc networks là điểm biên cuối cùng của thông tin không dây (thông tin vô tuyến). Công nghệ này cho phép các nodes (điểm nối) mạng truyền trực tiếp với nhau sử dụng bộ thu phát không dây (wireless transceiver) mà không cần bất cứ một cơ sở hạ tầng cố định nào. Đây là một đặc tính riêng biệt của ad hoc network so với các mạng không dây truyền thống như các mạng chia ô (cellular networks) và mạng WLAN, trong đó các nodes (ví dụ như các thuê bao điện thoại di động) giao tiếp với nhau thông qua các trạm vô tuyến cơ sở (wired radio antennae). Ad hoc networks được mong đợi sẽ làm cách mạng hóa thông tin không dây trong một vài năm tới bằng việc bổ sung thêm vào các mô hình mạng truyền thống (như Internet, cellular networks, truyền thông vệ tinh – satellite communication). Mạng Ad hoc cũng có thể được xem như những bản sao công nghệ của những khái niệm máy tính thường gặp. Bằng việc khám phá công nghệ mạng không dây Ad hoc, những thiết bị cầm tay đủ chủng loại (như điện thoại di động, PDAs, máy tính xách tay, máy nhắn tin “pager”…..) và các thiết bị cố định (như các trạm vô tuyến cơ sỡ, các điểm truy cập Internet không dây, … ) có thể được kết nối với nhau, tạo thành mạng toàn cầu, khắp mọi nơi. Trong tương lai, công nghệ mạng Ad hoc có thể sẽ là lựa chọn rất hữu ích. Ví dụ, hãy xem tình huống sau. Một cơn động đất khủng khiếp đã tàn phá thành phố của chúng ta, trong đó có hầu hết các cơ sở hạ tầng viễn thông (như các đường điện thoại, trạm vô tuyến cơ sở …). Nhiều đội cứu hộ ( như lính cứu hỏa, cảnh sát, bác sĩ, các tình nguyện viên …) đang nỗ lực để cứu mọi người khỏi cơn động đất và chữa trị cho những người bị thương. Để hỗ trợ tốt hơn cho đội cứu hộ, các hoạt động cứu hộ của họ phải được hợp tác với nhau. Rõ ràng là 1 hoạt động hợp tác như thế chỉ đạt được thành quả khi đội cứu hộ có thể giao tiếp, thông tin với nhau, cả với đồng nghiệp của mình ( ví dụ 1 cảnh sát với 1 cảnh sát khác) và cả với thành viên của đội cứu hộ khác (ví dụ 1 lính cứu hỏa yêu cầu sự trợ giúp từ 1 bác sĩ).   Với những công nghệ hiện có, những nỗ lực của đội cứu hộ sẽ rất khó thành công khi những cơ sở hạ tầng viễn thông cố định bị tàn phá nặng nề. Thậm chí những thành viên của đội cứu hộ này được trang bị máy vô tuyến cầm tay (walkie-talkie) hay các thiết bị tương tự khác trong trường hợp không thể truy cập được với các điểm cố định, chỉ những kết nối giữa những thành viên của đội cứu hộ đứng gần nhau mới thực hiện được. Vì vậy, một trong những ưu tiên trong việc quản lý và không chế thảm họa ngày nay là cài đặt lại các cơ sở hạ tầng viễn thông nhanh nhất có thể, bằng cách sửa chữa các thiết bị, kết cấu hư hỏng hay triển khai các thiết bị viễn thông tạm thời (ví dụ như được trang bị angten radio). Khó khăn này có thể được giải quyết đáng kể nếu chúng ta áp dụng những công nghệ dựa vào mạng Ad hoc : bằng cách sử dụng các giao tiếp không dây phân tán giữa nhiều điểm truy cập khác nhau, thậm chí các đội cứu hộ ở cách xa nhau cũng có thể liên lạc với nhau hay liên lạc với các thành viên đội cứu hộ khác ở khoảng giữa như hoạt động của một trạm chuyển tiếp. Vì khu vực xảy ra thảm họa sẽ tập trung nhiều đội cứu hộ, nên các liên lạc trong phạm vi thành phố (hay thậm chí là phạm vi cả nước) có thể thực hiện được, cho phép các nỗ lực cứu hộ được hợp tác thành công mà không cần thiết lập lại các cơ sở viễn thông cố định. Giới thiệu về hệ nhúng Định nghĩa hệ nhúng (Embedded System) Hệ thống nhúng (Embedded system) là một thuật ngữ để chỉ một hệ thống có khả năng tự trị được nhúng vào trong một môi trường hay một hệ thống mẹ. Đó là các hệ thống tích hợp cả phần cứng và phần phềm phục vụ các bài toán chuyên dụng 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. 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. 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. Cho đến nay, khái niệm hệ thống nhúng được nhiều người chấp nhận nhất là: hệ thống thực hiện một số chức năng đặc biệt có sử dụng vi xử lý. Không có hệ thống nhúng nào chỉ có phần mềm. Đặc điểm 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 số hệ thống đòi hỏi ràng buộc về tính hoạt động thời gian thực để đảm bảo độ an toàn và tính ứng dụng; một số hệ thống không đòi hỏi hoặc ràng buộc chặt chẽ, cho phép đơn giản hóa hệ thống phần cứng để giảm thiểu chi phí sản xuất. 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. 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 chip 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ế Sau đây, ta sẽ đi sâu, xem xét cụ thể đặc điểm của các thành phần của hệ thống nhúng 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. Đối với các hệ thống đơn giản, thiết bị nhúng sử dụng nút bấm, đèn LED và hiển thị chữ cỡ nhỏ hoặc chỉ hiển thị số, thường đi kèm với một hệ thống menu đơn giản. Còn 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 mà tối thiểu hóa được khoảng không gian cần sử dụng; ý nghĩa của các nút bấm có thể thay đổi theo màn hình và các lựa chọn. 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 việc 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, cài đặt vĩnh viễn. Ví dụ, các router là các thiết bị đã ứng dụng tiện ích này Kiến trúc CPU Các bộ xử lý trong hệ thống nhúng có thể được chia thành hai loại: vi xử lý và vi điều khiển. Các vi điều khiển thường có các thiết bị ngoại vi được tích hợp trên chip nhằm giảm kích thước của hệ thống. Có rất nhiều loại kiến trúc CPU được sử dụng trong thiết kế hệ nhúng như ARM, MIPS, Coldfire/68k, PowerPC, x86, PIC, 8051, Atmel AVR, Renesas H8, SH, V850, FR-V, M32R, Z80, Z8 … Điều này trái ngược với các loại máy tính để bàn, thường bị hạn chế với một vài kiến trúc máy tính nhất định. Các hệ thống nhúng có kích thước nhỏ và được thiết kế để hoạt động trong môi trường công nghiệp thường lựa chọn PC/104 và PC/104++ làm nền tảng. Những hệ thống này thường sử dụng DOS, Linux, NetBSD hoặc các hệ điều hành nhúng thời gian thực như QNX hay VxWorks. Còn các hệ thống nhúng có kích thước rất lớn thường sử dụng một cấu hình thông dụng là hệ thống on chip (System on a chip – SoC), một bảng mạch tích hợp cho một ứng dụng cụ thể (an application-specific integrated circuit – ASIC). Sau đó nhân CPU được mua và thêm vào như một phần của thiết kế chip. Một chiến lược tương tự là sử dụng FPGA (field-programmable gate array) và lập trình cho nó với những thành phần nguyên lý thiết kế bao gồm cả CPU. Thiết bị ngoại vi Hệ thống nhúng giao tiếp với bên ngoài thông qua các thiết bị ngoại vi, ví dụ như: Serial Communication Interfaces (SCI): RS-232, RS-422, RS-485... Synchronous Serial Communication Interface: I2C, JTAG, SPI, SSC và ESSI Universal Serial Bus (USB) Networks: Controller Area Network, LonWorks... Bộ định thời: PLL(s), Capture/Compare và Time Processing Units Discrete IO: General Purpose Input/Output (GPIO) Công cụ phát triển Tương tự như các sản phẩm phần mềm khác, phần mềm hệ thống nhúng cũng được phát triển nhờ việc sử dụng các trình biên dịch (compilers), chương trình dịch hợp ngữ (assembler) hoặc các công cụ gỡ rối (debuggers). Tuy nhiên, các nhà thiết kế hệ thống nhúng có thể sử dụng một số công cụ chuyên dụng như: Bộ gỡ rối mạch hoặc các chương trình mô phỏng (emulator) Tiện ích để thêm các giá trị checksum hoặc CRC vào chương trình, giúp hệ thống nhúng có thể kiểm tra tính hợp lệ của chương trình đó. Đối với các hệ thống xử lý tín hiệu số, người phát triển hệ thống có thể sử dụng phần mềm workbench như MathCad hoặc Mathematica để mô phỏng các phép toán. Các trình biên dịch và trình liên kết (linker) chuyên dụng được sử dụng để tối ưu hóa một thiết bị phần cứng. Một hệ thống nhúng có thể có ngôn ngữ lập trình và công cụ thiết kế riêng của nó hoặc sử dụng và cải tiến từ một ngôn ngữ đã có sẵn. Các công cụ phần mềm có thể được tạo ra bởi các công ty phần mềm chuyên dụng về hệ thống nhúng hoặc chuyển đổi từ các công cụ phát triển phần mềm GNU. Đôi khi, các công cụ phát triển dành cho máy tính cá nhân cũng được sử dụng nếu bộ xử lý của hệ thống nhúng đó gần giống với bộ xử lý của một máy PC thông dụng. Độ tin cậy 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 … Xu hướng phát triển của hệ nhúng Sau máy tính lớn (mainframe), PC và Internet thì hệ thống nhúng đang là làn sóng đổi mới thứ 3 trong công nghệ thông tin và truyền thông. Xu hướng phát triển của các hệ thống nhúng hiện nay là: - Phần mềm ngày càng chiếm tỷ trọng cao và đã trở thành một thành phần cấu tạo nên thiết bị bình đẳng như các phần cơ khí, linh kiện điện tử, linh kiện quang học…. - Các hệ nhúng ngày càng phức tạp hơn đáp ứng các yêu cầu khắt khe về thời gian thực, tiêu ít năng lượng và hoạt động tin cậy ổn định hơn. - Các hệ nhúng ngày càng có độ mềm dẻo cao đáp ứng các yêu cầu nhanh chóng đưa sản phẩm ra thương trường, có khả năng bảo trì từ xa, có tính cá nhân cao. - Các hệ nhúng ngày càng có khả năng hội thoại cao, có khả năng kết nối mạng và hội thoại được với các đầu đo cơ cấu chấp hành và với người sử dụng,. - Các hệ nhúng ngày càng có tính thích nghi, tự tổ chức cao có khả năng tái cấu hình như một thực thể, một tác nhân. - Các hệ nhúng ngày càng có khả năng tiếp nhận năng lượng từ nhiều nguồn khác nhau (ánh sáng, rung động, điện từ trường, sinh học….) để tạo nên các hệ thống tự tiếp nhận năng lượng trong quá trình hoạt động. 1.2.8 Thách thức và các vấn đề tồn tại của hệ nhúng Hệ thống nhúng hiện nay còn phải đối mặt với các vấn đề sau: Độ phức tạp của sự liên kết đa ngành phối hợp cứng - mềm. Độ phức tạp của hệ thống tăng cao do nó kết hợp nhiều lĩnh vực đa ngành, kết hợp phần cứng - mềm, trong khi các phương pháp thiết kế và kiểm tra chưa chín muồi. Khoảng cách giữa lý thuyết và thực hành lớn và còn thiếu các phương pháp và lý thuyết hoàn chỉnh cho khảo sát phân tích toàn cục các hệ nhúng. Thiếu phương pháp tích hợp tối ưu giữa các thành phần tạo nên hệ nhúng bao gồm lý thuyết điều khiển tự động, thiết kế máy, công nghệ phần mềm, điện tử, vi xử lý, các công nghệ hỗ trợ khác. Thách thức đối với độ tin cậy và tính mở của hệ thống: Do hệ thống nhúng thường phải hội thoại với môi trường xung quanh nên nhiều khi gặp những tình huống không được thiết kế trước dễ dẫn đến hệ thống bị loạn. Trong quá trình hoạt động một số phần mềm thường phải chỉnh lại và thay đổi nên hệ thống phần mềm có thể không kiểm soát được. Đối với hệ thống mở, các hãng thứ 3 đưa các module mới, thành phần mới vào cũng có thể gây nên sự hoạt động thiếu tin cậy 1.2.9 Hệ nhúng có hệ điều hành 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. Hình 2 Board nhúng 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. Nhu cầu thực tiễn Ngày nay, việc nắm bắt thông tin tức thời, chính xác đang ngày càng đóng vai trò quan trọng. Trong nhiều lĩnh vực nó còn là nhân tố quyết định thành công. Do vậy, những thiết bị nhỏ gọn sử dụng mạng không dây cho phép truyền tải video hiện trường sẽ đem lại lợi ích to lớn. Với sự phát triển không ngừng của mạng không dây, việc truyền tải video sẽ trở nên linh hoạt và các thiết bị nhỏ gọn sẽ chiếm ưu thế khi phải thao tác ở những địa hình phức tạp. Hiện nay trên thế giới những ứng dụng sử dụng truyền video ngày càng phát triển, được ứng dụng những công nghệ mới và đã đạt được rất nhiều bước tiến quan trọng. Nhưng đề tài truyền video hiện trường trên mạng không dây tích hợp trên bo nhúng vẫn còn là một lĩnh vực khá mới mẻ và tiềm năng. Một số các sản phẩm cho phép ghi lại video hiện trường như một chiếc camera cầm tay nhưng lại không cho phép truyền đi trên mạng wireless. Một số sản phẩm khác cho phép truyền video trực tuyến nhưng thiết bị quá cồng kềnh và không thích hợp khi phải di chuyển: công nghệ Voice over IP ứng dụng trên máy tính, truyền hình trực tiếp,… Ở Việt Nam, hệ nhúng mới được phát triển vài năm trở lại đây, những thành tựu đạt được chỉ mới mang tính chất kế thừa, học hỏi và chuyển giao công nghệ. Hiện nay, sản phẩm camera mạng đầu tiên tại Việt Nam đã được công ty AMECO hợp tác với TAC sử dụng công nghệ video giám sát IP hứa hẹn một thị trường tiềm năng cho những sản phẩm tương tự. Mục tiêu đề tài Mục tiêu nghiên cứu của đề tài là truyền video từ bo nhúng tới các thiết bị trong mạng WLAN, Ad-hoc. Thiết kế hệ thống Mô hình và cấu trúc - Hệ thống gồm nhiều nút mạng khác nhau trong đó mỗi nút mạng ứng một thiết bị nhúng đặt tại hiện trường. Hình 3 Mô hình hệ thống Hình 4 Sơ đồ kết nối Video Streaming Hệ điều hành nhúng (embedded OS) được chọn là Linux. Điểu này cho phép người thiết kế có thể tối ưu hệ điều hành, triển khai driver cho các thiết bị ngoại vi tự thiết kế, dễ dàng kế thừa và phát triển các phần mềm sẵn có. Các thiết bị ngoại vi cho hệ thống bao gồm wifi card, camera, webcam... cho phép thiết bị nhúng có thể đóng vai trò server để truyền video. Người dùng do đó có thể dễ dàng thao tác, sử dụng thiết bị. Gói phần mềm truyền video cho phép người dùng thay đổi tham số video một cách dễ dàng. Ngoài ra, video được nhúng vào giao diện web tiếng Việt rất thân thiện với người dùng Việt Nam Board nhúng sử dụng Từ việc thiết kế như trên, bo nhúng được dùng cho hệ thống được chọn là Armadillo 300 với vi xử lý kiến trúc Arm bởi có nhiều các tính năng kỹ thuật phù hợp Giới thiệu Armadillo-300 Hình 5 Board nhúng Armadillo 300 Chíp vi xử lý Armadillo-300 là một sản phẩm của Atmark-Tecno với chíp vi xử lý NS9750, 200MHz clock, 8kB/4kB cache, hỗ trợ MMU cùng với PCI, Ethernet, USB, LCD và các giao tiếp nối tiếp trên cùng một chip, tỏa nhiệt rất ít và không cần quạt làm mát. IEEE802.11a/b/g WLAN and Ethernet Hỗ trợ module WLAN theo chuẩn IEEE802.11/a/b/g cũng như giao tiếp Ethernet 10BASE-T/100BASE-TX Hệ điều hành Hệ điều hành dùng cho board mạch là Linux (kernel 2.6), cho phép triển khai các ứng dụng mã nguồn mở một cách phong phú. Bảo mật và IPv6 Chíp vi xử lý ARM9 hỗ trợ chuẩn SSL và mã hóa IPsec đồng thời cũng hỗ trợ IPv6 Giao tiếp USB, CompactFlash và LCD Chuẩn USB 2.0 (full speed) và còn có khe cắm CompactFlash hỗ trợ các ứng dụng người dùng mà chiếm nhiều tài nguyên vùng nhớ, ngoài ra giao tiếp LCD (VGA) cho phép dùng làm thiết bị đầu cuối media hay phát triển giao diện cho ứng dụng. Hình 6 Sơ đồ khối của Armadillo-300 Cách boot board mạch Trước hết phải thiết lập jump trên board mạch như hình vẽ, JP1 và JP2 đều về vị trí 1 Hình 7 Thiết lập jump để boot Kết nối board mạch với máy tính thông qua cổng COM1 Hình 8 Sơ đồ cáp nối Phần mềm sử dụng để boot board mạch: hyper terminal; Tera Term Pro (Window PC), hay minicom (Linux). Thiết lập các thông số khi boot: Transfer rate: 115,2kbps Data length: 8bit Parity: none Stop: 1bit Flow control: none Tài khoản đăng nhập: root Pass: root Cách nạp file image vào board mạch Thiết lập jump trên board: JP1 và JP2 đều cùng vị trí 2 Phần mềm dùng để nạp: Hermit-at-win32 (Window), hay hermit (Linux) Hình 9 Hermit-at-WIN32 trên Window Lựa chọn vùng nạp file ảnh: Image Linux.bin.gz Romfs.bin.gz Region Kernel userland Đối với hệ điều hành Linux ta sử dụng lệnh sau [PC ~]$ hermit download -i linux.bin.gz -r kernel [PC ~]$ hermit download -i romfs.bin.gz -r userland Kiến trúc chức năng hệ thống Hình 11 Kiến trúc chức năng của hệ thống Hệ thống cho phép truyền video từ các thiết bị nhúng đặt tại hiện trường trên mạng Ad-hoc. Người dùng có thể tương tác với các thiết bị thông qua bàn phím, cổng COM được gắn trực tiếp hoặc laptop thông qua mạng Ad-hoc, WLAN. Mô tả chức năng và hoạt động Thiết bị nhúng đóng vai trò server sẽ truyền video và các client có thể hiển thị video thông qua web browser như Firefox, IE... Người dùng có thể điều chỉnh tham số truyền video thông qua dòng lệnh (bàn phím) hoặc cổng COM 3. Môi trường phát triển ứng dụng cho bo nhúng (ATDE) Giới thiệu về ATDE Hình 10 ATDE Atmark Techno Development Environment (ATDE) là một máy ảo Linux cung cấp môi trường phát triển cho các board mạch dòng Armadillo. ATDE bao gồm các công cụ biên dịch chéo (cross-compile) và rất nhiều các gói công cụ phát triển cần thiết khác. Dùng ATDE ta không phải tự cài đặt môi trường phát triển trên PC. Biên dịch file image cho board nhúng trên ATDE Các gói phần mềm cần thiết download: -Atmark-dist-20081018.tar.gz, Linux-2.6.12.5-at5.tar.gz Ta tiến hành các bước như sau trên ATDE: [PC ~]$ ls Linux-2.6.12.5-at5.tar.gz Atmark-dist-20081018.tar.gz [PC ~]$ tar xvzf Atmark-dist-20081018.tar.gz [PC ~]$ tar xvzf Linux-2.6.12.5-at5.tar.gz [PC ~]$ cd Atmark-dist-20081018 [PC ~/ Atmark-dist-20081018]$ ln -s ../ Linux-2.6.12.5-at5./linux-2.6.x [PC ~/ Atmark-dist-20081018]$ make config Vendor AtmarkTechno AtmarkTechno Products Armadillo-300 Libc Version None Default all settings y Customize Kernel Settings n Customize Vendor/User Settings n Update Default Vendor Settings n [PC ~/ Atmark-dist-20081018]$ make dep all [PC ~/ Atmark-dist-20081018]$ ls image/ linux.bin linux.bin.gz romfs.bin romfs.bin.gz Sau khi tạo ra các file images ta có thể tiến hành nạp xuống board mạch. Cross-compile trên ATDE Giới thiệu Cross-compile trên Linux Cross Compile là một cách thực hiện việc viết code, và compile chương trình trên máy tính chạy trên những kiến trúc khác nhau và những hệ điều hành khác nhau. Chẳng hạn ta có thể lập trình và compile chương trình trên Linux x86, để chạy được trên Solaris Ultra Sparc. Trên Linux các công cụ hỗ trợ cho việc cross-compile là miễn phí và dễ dàng tìm kiếm. Để phân biệt với các trình dịch sẵn có trên máy, các trình biên dịch chéo thường có tiền tố là tên của kiến trúc hệ thông đích, đôi khi còn có cả tên của thư viện. Ví dụ có các trình biên dịch chéo như sau: Mips-linux-gcc , M86k-linux-uclibc-gcc, Arm-linux-gnueabi-gcc… Để có thể cross-compile thì ta phải chỉ rõ trình biên dịch chéo để hệ điều hành có thể gọi đến trong quá trình biên dịch. Ta có 3 cách để chỉ ra trình biên dịch chéo như sau: Chỉnh sửa Makefile Kiến trúc CPU và trình biên dịch chéo được định nghĩa thông qua các biến ARCH và CROSS_COMPILE trong Makefile chính của các gói phần mềm. Makefile định nghĩa trình dịch như sau: CC = $(CROSS_COMPILE)gcc Cách dễ nhất để chỉ định trình biên dịch chéo là chỉnh sửa Makefile. Ví dụ với kiến trúc ARM và trình biên dịch chéo arm-linux-gcc ta sửa Makefile như sau: ARCH ?= arm CROSS_COMPILE ?= arm-linux Sử dụng lệnh make Cách thứ hai để thiết lập giá trị cho các biến ARCH và CROSS_COMPILE là thông qua lệnh make. Các giá trị của 2 biến này được gán thông qua lệnh make sẽ ghi đè lên các giá trị đã được thiết lập trước trong Makefile. Ví dụ Make ARCH=sh CROSS_COMPILE=sh-linux- xconfig Make ARCH=sh CROSS_COMPILE=sh-linux Make ARCH=sh CROSS_COMPILE=sh-linux modules_install Điều chú ý khi dùng cách này là ta luôn phải nhớ thiết lập giá trị cho các biến ARCH và CROSS_COMPILE mỗi khi đánh lệnh make. Thiết lập biến môi trường Cách thứ 3 để chỉ ra trình biên dịch chéo là thiết lập ARCH và CROSS_COMPILE như là biến môi trường trên terminal: export ARCH=arm export CROSS_COMPILE=arm-linux Với cách này ta không phải can thiệp vào Makefile cũng như không phải nhớ thiết lập giá trị khi dùng lệnh make. Biên dịch chương trình “Hello world” Dưới đây là cách biên dịch chéo (cross-compile) một chương trình đơn giản helloworld.c trên ATDE. Ta soạn thảo mã nguồn của helloworld.c như sau: #include int main(void) { printf ("Hello World! \n"); return 0;} Bình thường khi ta biên dịch để chương trình có thể chạy trên PC ta làm như sau: $ gcc hello.c –o hello Muốn biên dịch chéo để có thể tạo ra file để chạy được trên Armadillo-300 thì trên ATDE ta làm như sau: $ arm-linux-gcc –I/usr/arm-linux/include –L /usr/arm-linux/lib helloworld.c –o helloworld Nạp các ứng dụng xuống Armadillo-300 Như đã thực hiện ở trên, sau khi cross-compile ta thu được file chạy helloworld có thể chạy được trên board Armadillo-300 và cách đưa các ứng dụng này xuống board như sau: Ta copy các file chạy này vào thư mục Atmark-dist-20081018/romfs/bin/ Cấu trúc thư mục romfs là ánh xạ tương ứng với cấu trúc thư mục của Armadillo-300 do đó sau khi copy xong ta chỉ việc dùng lệnh (make image) để tạo lại các file image mới có chứa các ứng dụng mới nạp vào. Các file image này sau đó được nạp xuống board và các ứng dụng mới đã sẵn sàng hoạt động. Một điều đáng chú ý là đối với các dự án phần mềm, muốn chạy được nó còn đòi hỏi các thư viện và các file cấu hình thì mới có thể chạy thành công. Do đó ta còn cũng phải đưa các thư viện và các file cấu hình cần thiết nạp xuống bo nhúng. Triển khai thực hiện. Tiến trình nghiên cứu triển khai Quá trình nghiên cứu và triển khai hệ thống được thực hiện qua các bước cơ bản sau: Nghiên cứu về hệ nhúng, mạng Ad-hoc. Nghiên cứu triển khai ứng dụng và driver trên hệ nhúng ( webcam, wifi, chương trình video streaming, phần mềm định tuyến) Triển khai hệ thống trên mạng Ad-hoc (multi hop) với các nút mạng cơ bản là các hệ nhúng. Dưới đây là sơ đồ quá trình nghiên cứu và triển khai hệ thống: Hình 12 Tiến trình xây dựng video streaming trên hệ nhúng Cấu hình mạng Ad-hoc cho hệ nhúng Để có thể triển khai các ứng dụng trên mạng Ad-hoc thì trước hết ta phải thiết lập cấu hình mạng như sau wlanconfig ath0 destroy wlanconfig ath0 create wlandev wifi0 wlanmode adhoc iwconfig ath0 essid iwconfig ath0 enc ifconfig ath0 x.x.x.x Triển khai phần mềm định tuyến trên hệ nhúng Giới thiệu về OLSRD Optimized Link State Routing Protocol (OLSR) là giao thức định tuyến được phát triển cho mạng Mobile Adhoc Network (MANET). OLSR hoạt động như một bảng ghi,...chuyển đổi thông tin topo mạng với các node khác một cách đều đặn. Mỗi node lựa chọn trong số những node hàng xóm của nó một node làm “multipoint relay” (MPR). Trong OLSR, chỉ những node được lựa chọn làm MPR mới đáp ứng cho việc điều khiển forwarding lưu lượng, dành riêng cho việc truyền tin vào trong toàn bộ mạng. MPRs cung cấp cơ chế hiệu quả cho điều khiển flooding lưu lượng bằng cách giảm số lượng yêu cầu truyền. Những node được lựa chọn làm MPR cũng có đáp ứng đặc biệt khi quảng bá thông tin trạng thái link trong mạng. Thật vậy, chỉ những yêu cầu cho OLSR để cung cấp thông tin trạng thái link tuyến ngắn nhất được MPRs quảng bá cho những node lựa chọn MPR của chúng (MPR selector) OLSR phù hợp rất tốt cho những mạng lớn và mật độ dày đặc các node mạng bởi khả năng sử dụng MPR của mình. Giao thức này không yêu cầu cơ chế truyền lại tin cậy của bản tin điều khiển : mỗi node gửi bản tin điều khiển một cách tuần tự , và có thể chấp nhận lý do mất gói của một số bản tin. Nó sử dụng phương thức định tuyến hop-by-hop ( mỗi node sử dụng thông tin nội bộ của mình để định tuyến cho gói tin ). OLSR được phát triển để hoạt động độc lập từ các giao thức khác. OLSR không hề đưa ra một giả định nào về lớp dưới link-layer. Giao thức định tuyến này thừa kế sự ổn định của thuật toán link-state và có thuận lợi khi luôn có tuyến sẵn có khi cần. 4.3.2 Triển khai OLSRD trên hệ nhúng Sử dụng giao thức định tuyến giúp cho board nhúng có thể truyền video tới các nút mạng khác thông qua các nút trung gian trên mạng Ad-hoc Cross-compile OLSRD Download gói phần mềm olsrd-0.5.6-r2.tar.bz2 Giải nén bằng lệnh: $ tar xvjf olsrd-0.5.6-r2.tar.bz2 $ cd olsrd-0.5.6-r2 Cách cross-compile như sau: Chỉnh sửa file Makefile.in, thêm vào các dòng sau để xác định hệ điều hành # OS detection -OS = $(shell sh $(TOPDIR)/make/guess_os.sh) +OS = linux $ make CC=arm-linux-gcc LD=arm-linux-ld Sau khi make thành công ta sẽ có file olsrd là file chạy được trên Armadillo-300. Nạp olsrd xuống board nhúng Đối với gói OLSRD ta phải bổ xung các thư viện hỗ trợ lập trình tuyến và file cấu hình trước khi tạo lại file image (make image) như sau: cp / usr/arm-linux/lib/libpthread-0.10.so Atmark-dist-20081018/romfs/lib ln-s ./libpthread0.10.so ./libpthread.so.0 Copy olsrd.conf vào Atmark-dist-20081018/romfs/etc/ (file cấu hình cho gói phần mềm OLSRD) OLSRD chạy trên hệ nhúng Hình 13 OLSRD chạy trên bo nhúng Triển khai driver cho webcam trên hệ nhúng Tiến trình thực hiện Hình 14 Tiến trình triển khai Webcam driver Giới thiệu gói phần mềm GSPCA GSPCA là gói phần mềm chạy trên nền Linux cho phép triển khai driver cho một số lượng lớn webcam. Ngoài ra tùy từng loại webcam sẽ có driver riêng tương ứng. Do đó việc triển khai GSPCA sẽ giúp bo nhúng có thể chạy tốt các ứng dụng video với nhiều loại webcam khác nhau Triển khai GSPCA Trước hết tải gói phần mềm về từ internet Giải nén gói phần mềm tar zxvf gspcav1-20071220.tar.gz Chỉnh sửa Makefile trong gói phần mềm Sửa tham số KERNEL_VERSION thành 2.6.12.5-at5. Đây là phiên bản nhân Linux tương ứng với bo nhúng. Thực hiện biên dịch chéo (cross-compile) # make CC=arm-linux-gcc LD=arm-linux-ld Sau khi biên dịch chéo thành công ta có kết quả là kernel module gspcav.ko. Đây là driver cho webcam trên bo nhúng. Tiếp sau đó ta thực hiện các lệnh sau để chuẩn bị cho việc tạo ra file ảnh (image) cho bo nhúng make install /sbin/depmod –ae  cd /lib/modules tar czvf 2.6.12.5-at5.tar.gz 2.6.12.5-at5 cp 2.6.12.5-at5.tar.gz /atmark-dist-xxx/romfs/bin/lib/modules/ Sau khi nạp thành công xuống bo nhúng ta thực hiện nạp module này vào cho nhân của thiết bị nhúng từ dòng lệnh insmod /lib/modules/2.6.12.5-at5/kernel/drivers/usb/media/gspca.ko Để kiểm tra xem việc module driver cho webcam có hoạt động hay không ta cắm webcam vào và xem trong thư mục dev. Thư mục hiện lên các file video, video0 chứng tỏ driver đã hoạt động và nhận ra webcam. Đồng thời bo nhúng cũng hiện thị lên thông báo cho thấy đã nhận được webcam. Hình 15 Thư mục /dev trên bo nhúng Hình 16 Driver nhận ra webcam khi cắm vào bo nhúng Triển khai phần mềm truyền video Giới thiệu về các phần mềm truyền video Hiện tại có rất nhiều các phần mềm mã nguồn mở chạy trên Linux cho phép truyền video (streaming video) tuy nhiên với tài nguyên hạn hẹp của hệ nhúng thì việc lựa chọn phần mềm vừa phù hợp với nhu cầu vừa đảm bảo có thể chạy thành công cũng là một thử thách. Qua quá trình tìm hiểu, mjpeg-streamer là một phần mềm nhỏ gọn có thể truyền video vừa tương thích với driver webcam gspca lại vừa có thể phát triển cho phù hợp với nhu cầu sử dụng Triển khai mjpeg-streamer trên hệ nhúng Tải mã nguồn của chương trình mjpeg-streamer từ internet Thực hiện biên dịch chéo (cross-compile) như sau Make CC=arm-linux-gcc LD=arm-linux-ld Sau khi biên dịch thành công ta thu kết quả như sau Các thư viện động: input_gspcav1.so input_testpicture.so input_uvc.so output_autofocus.so output_file.so output_http.so File thực thi mjpg_streamer Sau đó ta copy các thư viện động vào thư mục romfs/lib; file thực thi và thư mục romfs/bin Biên dịch lại file ảnh (image) để nạp xuống bo nhúng Phát triển giao tiếp cổng COM cho hệ nhúng Cổng COM trên bo nhúng Armadillo-300 Board nhúng có 2 cổng nối tiếp là COM1, COM2 tương ứng với các kết nối CON7, CON6 trên sơ đồ khối của bo nhúng. Cổng COM1 được dùng cố định để boot và nạp chương trình cho bo nhúng do đó để phát triển giao tiếp với bên ngoài ta dùng cổng COM2 Cách hàn dây cáp cổng COM cho bo nhúng được mô tả như trong hình vẽ Hình 17 Sơ đồ chân cổng COM1 trên bo nhúng Hình 18 Sơ đồ chân cổng COM2 trên bo nhúng Hình 19 Sơ đồ nối chân cổng COM Lập trình nối tiếp trên Linux Cơ sở giao tiếp nối tiếp Máy tính truyền dữ liệu một hay nhiều bit cùng một lúc và giao tiếp nối tiếp ám chỉ tới việc truyền dữ liệu một bit. Các giao tiếp nối tiếp bao gồm các thiết bị mạng, bàn phím, chuột, MODEM, … Tốc độ của dữ liệu nối tiếp thường được thể hiện thông qua bit trên giây (“bps”) hay còn gọi là baudot rate (“baud”). Tham số này thể hiện số lượng số 0 và 1 có thể được gửi đi trong một giây. Vào thời kỳ đầu của kỷ nguyên máy tính, baud rate 300 được coi là nhanh nhưng máy tình ngày nay có thể có tốc độ baud rate lên tới 430,800. Khi baud rate vượt quá 1000 người ta dùng đơn vị kilo baud, với baud rate vượt quá 1000,000 thì có đơn vị là mega baud. RS 232 RS-232 là giao diện chuẩn cho các giao tiếp nối tiếp được định nghĩa bởi EIA (Electronic Industries Association). RS-232 có 3 chuẩn khác nhau là A, B và C và mỗi chuẩn định nghĩa một mức điện áp cho sự bật (on), tắt (off) khác nhau. Chuẩn được sử dụng rộng rãi nhất là RS-232C trong đó định nghĩa bit 1 (on) ứng với khoảng điện áp từ +3V đến +12V; và bit 0 (off) ứng với khoảng điện áp từ -3V đến -12V. Chuẩn này cũng cho biết rằng tín hiệu có thể truyền đi ổn định trong vòng 8m. Hai chuẩn giao tiếp nối tiếp khác mà ta cũng bắt gặp là RS-422 và RS-574. RS-422 sử dụng mức điện áp thấp hơn và các mức tín hiệu khác nhau do đó nó cho phép dây cáp có thể dài tới 300m. Định nghĩa mức tín hiệu Chuẩn RS-232 định nghĩa 18 mức tín hiệu khác nhau cho giao tiếp nối tiếp. Trong số này chỉ có 6 mức có thể sử dụng trong môi trường UNIX. GND Về mặt kỹ thuật, chân đất không phải là một tín hiệu nhưng nếu thiếu nó thì các mức tín hiệu khác sẽ không hoạt động. Về cơ bản, chân đất đóng vai trò là một mức điện áp tham chiếu mà qua đó các thành phần điện tử biết đâu là mức điện áp dương đâu là mức điện áp âm. TXD Dữ liệu truyền Chân này dung để truyền dữ liệu TXD Dữ liệu nhận Chân này dùng để nhận dữ liệu DCD - Data Carrier Detect Tín hiệu DCD dùng để xác định xem liệu có thiết bị nối vào máy tính qua cổng nối tiếp hay không DTR - Data Terminal Ready Tín hiệu DTR cho phép thong báo vơi các thiết bị khác là máy tính đã sẵn sàng hay không. Tín hiệu này thường được mở một cách tự động bất cứ khi nào bạn bật giao tiếp nối tiếp. CTS - Clear To Send Tín hiệu CTS cho biết máy tính sẵn sàng cho việc gửi tiếp các dữ liệu nối tiếp RTS - Request To Send Tín hiệu RTS cho biết các dữ liệu đã sẵn sàng để truyền. Lập trình với cổng nối tiếp Truy nhập các cổng nối tiếp Giống như các thiết bị các, UNIX cho phép truy nhập các cổng nối tiếp thông qua các file thiết bị. Để truy nhập các cổng nối tiếp, bạn chỉ đơn giản mở các file thiết bị tương ứng. Các file cổng nối tiếp Mỗi cổng nối tiếp trong hệ điều hành UNIX, hay Linux có một hay nhiều các file tương ứng với chúng Ví dụ: cổng COM1 là /dev/ttyS0 cổng COM2 là /dev/ttyS1 Truy nhập cổng COM Cổng COM được gắn kết với file, hàm open() được dùng để truy nhập nó. Giả thiết tất cả người dùng đều có quyền truy nhập vào file thiết bị thì lập trình để truy nhập cổng COM1 trên UNIX, Linux như sau; #include #include #include #include #include #include /* * 'open_port()' – truy nhập cổng COM 1. * * Trả về số mô tả file nếu thành công và trả về -1 nếu có lỗi */ int open_port(void) { int fd; /* số mô tả file cho công COM*/ fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY); if (fd == -1) { /* * không thể truy nhập cổng COM */ perror("open_port: Unable to open /dev/ttyS0 - "); } else fcntl(fd, F_SETFL, 0); return (fd); } Ghi dữ liệu qua cổng COM Ghi dữ liệu qua cổng COM bằng cách sư dụng hàm hệ thống write() để ghi n = write(fd, "ATZ\r", 4); if (n < 0) fputs("ghi 4 bytes lỗi !\n", stderr); Hàm write() trả về số byte ghi thành công và trả về -1 nếu có lỗi xảy ra. Đọc dữ liệu từ cổng COM Đọc dữ liệu qua cổng COM phức tạp hơn so với việc ghi dữ liệu. Khi mở cổng COM ở chế độ dữ liệu thô, thì hàm hệ thống read() sẽ trả về số ký tự sẵn sàng để đọc có trong bộ đệm đầu vào nối tiếp. Nếu không có ký tự nào để đọc, hàm đọc dữ liệu sẽ bị khóa cho đến khi có ký tự được gửi vào bộ đệm hay có lỗi xảy ra. Để tránh hàm read() bị khóa (block) ta có thể thực hiện như sau: fcntl(fd, F_SETFL, FNDELAY); Tham số FNDELAY cho phép hàm read() trả về 0 nếu không có ký tự nào sẵn sàng ở bộ đệm. Để trở về trạng thái cho phép khóa hàm read() như ban đầu, ta gọi hàm fcntl() mà không có tham số FNDELAY fcntl(fd, F_SETFL, 0); Ta cũng thực hiện điều này sau khi mở cổng COM với tham số O_NDELAY. Đóng cổng COM Để đóng cổng COM ta dùng hàm close(fd); Đóng cổng COM cũng đồng thời thiết lập tín hiệu DTR về 0 Cấu hình cho cổng COM Giao diện nối tiếp Hầu hết các hệ thống đều hỗ trợ giao diện nối tiếp để thay đổi các tham số như tốc độ (baud rate), kích thước ký tự (tính theo bit),…Điều đầu tiên ta phải thêm file header ; điều này cho phép điều khiển các cấu trúc điều khiển nối tiếp cũng như các hàm điều khiển khác Hai hàm điều chỉnh quan trọng nhất là tcgetattr() và tcsetattr(). Các hàm này sẽ lấy và thiết lập các thuộc tính tương ứng Thiết lập cờ Ghi chú c_cflag Cờ điều khiển c_lflag Cờ điều khiển dòng c_iflag Cờ điều khiền đầu vào c_oflag Cờ điều khiền đầu ra c_cc Cờ điều khiển kí tự c_ispeed Tốc độ baud đọc c_ospeed Tốc độ baud ghi Hình 20 Bảng các cờ điều khiển cổng COM Tùy chọn điều khiển Cờ c_cflag có thể điều khiển tốc độ bit, số bit dữ liệu, bit dừng…Dưới đây là bảng các tham số cấu hình cho cờ c_cflag Tham số Ghi chú B0 0 baud B50 50 baud B75 75 baud B110 110 baud B134 134 baud B150 150 baud B200 200 baud B300 300 baud B600 600 baud B1200 1200 baud B1800 1800 baud B2400 2400 baud B4800 4800 baud B9600 9600 baud B19200 19200 baud B38400 38400 baud B57600 57600 baud B76800 76800 baud B115200 115200 baud CSIZE Mặt nạ cho các bit dữ liệu CS5 5 bit dữ liệu CS6 6 bit dữ liệu CS7 7 bit dữ liệu CS8 8 bit dữ liệu CSTOPB 2 bit dừng CREAD Cho phép đọc PARENB Dùng bit kiểm tra PARODD Dùng bit kiểm tra lẻ thay vì chẵn CLOCAL Không thay đổi quyền sử dụng của cổng Hình 21 Bảng các tùy chọn cho cờ c_cflag Cờ c_cflag chứa 2 tham số mà luôn được bật là CLOCAL và CREAD. Điều này đảm bảo chương trình sẽ không chiếm quyền sử dụng cổng nối tiếp và driver cho cổng nối tiếp có thể đọc được dữ liệu đầu vào. Các tùy chọn B9600, B115200, …được dùng cho các phiên bản cũ khi thiếu các tham số tùy chọn c_ispeed và c_ospeed để thiết lập tốc độ bit. Thiết lập kích thước kí tự Không giống như tốc độ bit, không có hàm trưc tiếp thiết lập kích thước kí tự mà thay vào đó ta phải thực hiện như sau: options.c_cflag &= ~CSIZE; /* tắt các bit kích thước kí tự */ options.c_cflag |= CS8; /* chọn 8 bit dữ liệu */ Thiết lập chế độ đọc truyền thống Chế độ đọc truyền thống là chế độ hướng dòng. Các kí tự vào được đặt trong bộ đệm cho đến khi nhận được kí tự xuống dòng hay lùi về đầu dòng nó mới được đọc ra. Khi chọn chế độ này người ta cũng thường lựa chọn các tham số cho cờ c_lflag như sau options.c_lflag |= (ICANON | ECHO | ECHOE); Thiết lập chế độ đọc tức thời Ngược lại với chế độ truyền thống, kí tự có thể đọc ngay tức thời mà không phải thông qua bộ đệm options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); Phát triển chương trình điều khiển độ phần giải video qua cổng COM Chương trình truyền video trên bo nhúng phải chạy từ dòng lệnh do đó bất tiện trong việc sử dụng. Việc phát triển một tiện ích qua cổng COM sẽ giúp người dùng có thể dễ dàng thao tác với giao diện thân thiện để điều chỉnh một số tham số đầu vào chẳng hạn như độ phân giải (resolution),...Điều này có thể thực hiện dễ dàng bằng kỹ thuật lập trình với cổng nối tiếp trên Linux theo lưu đồ thuật toán (Hình 20) Trên máy tính, hoặc laptop ta có thể tạo một chương trình gửi các tham số độ phân giải qua cổng COM để tương tác với bo nhúng Hình 22 Lưu đồ thuật toán thay đổi độ phân giải Các module chính Module Nghiên cứu về hệ nhúng và xây dựng mạng ad-hoc trên hệ nhúng. Tìm hiều về hệ nhúng, các board , các kiến trúc. Việc xây dựng mạng ad-hoc dựa trên hệ nhúng. Việc triển khai là rất khả thi vì hệ nhúng tiết kiệm năng lượng. Phù hợp với việc xây dựng mạng ở những khu vực địa hình hiểm trở. Đặc biệt mạng Ad-hoc không cần cơ sở hạ tầng. Module triển khai video streaming trên server. Hệ thống mạng Ad-hoc phù hợp để truyền video thời gian thực. Ứng dụng hệ thống vào việc quan sát hiện trường. Video từ hiện trường được đưa lên server. Module kết nối mạng Triển khai kết nối mạng. Thực hiện việc kết nối hệ nhúng thành mạng Ad-hoc. Mạng được định tuyến bằng OLRD. Nguồn bắt Video chính là Armadillo. Luồng video nhận về được hiển thị trên web Browser. Giao diện người - máy Xây dựng web Browser cho phép người dùng có thể theo dõi video từ hiện trường. Hình 23 Giao diện người máy web browser Xây dựng chương trình thay đổi độ phân giải “Resolution changing” cho phép người ở hiện trường có thể thay đổi độ phân giải (resolution) của video qua giao thức truyền thông RS232. Hình 24 Giao diện người máy thay đổi độ phân giải Tích hợp hệ thống Kết nối webcam vào Armadillo 300 đã cài driver hỗ trợ. Triển khai chương trình video streaming. Triển khai webserver trên Armadillo 300, Triển khai Webpage. Thiết lập mạng Ad-hoc với các nút mạng là hệ nhúng ( Armadillo-300). Thiết lập giao thức định tuyến OLSRD cho mạng Ad-hoc. Tiến hành cấu hình và chạy video streaming trên mạng Ad-hoc. Kết quả đạt được Các máy client trên mạng Ad-hoc đã theo dõi được hiện trường qua trang web được truy cập vào địa chỉ của server. Tín hiệu thu được tương đối rõ nét. Khi khoảng cách quá xa hoặc chất lượng đường truyền thấp ta có thể thay đổi resolution của video để giảm kích thước các gói tin được truyền trên mạng Ad-hoc. Phần cứng Hình 25 Webcam Lab Tech Hình 26 Giao tiếp RS232 giữa máy tính với bo nhúng Phần mềm - Giao diện web quan sát hiện trường: Hình 27 Giao diện web giới thiệu Hình 28 Giao diện web quan sát hiện trường - Giao diện chương trình thay đổi độ phân giải “Resolution changing” Hình 29 Giao diện chương trình Resolution Changing (start) Hình 30 Giao diện chương trình Resolution Changing (configure) Kết luận - Sản phẩm có ý nghĩa rất lớn trong đời sống thực tiễn. Hệ thống được triển khai không cần cơ sở hạ tầng mạng. Có thể triển khai ở những khu vực dân cư đông đúc, những khu đô thị, chung cư và đặc biệt là có thể triển khai ở những khu vực có địa hình hiểm trở. Cho phép con người có thể theo dõi hiện trường và có thể điều chỉnh chất lượng hình ảnh nếu chất lượng kênh truyền không đảm bảo. - Tiếp tục phát triển hệ thống cho phép truyền video với độ nén tốt mà vẫn đảm bảo hình ảnh được khôi phục gần với ảnh gốc nhất. Phát triển giao diện người và máy có nhiều chức năng cho phép người dùng tùy biến việc truyền video. Tài liệu tham khảo [1] Thuyết minh đề tài KHCN trọng điểm cấp nhà nước KC.01.10/06-10. [2] Symbian developer library, section “Application development tutorial”, . [3] Embedded Linux: BlueCat Linux, . [4] Microsoft Windows Mobile, Windows Mobile Developer Center, [5] Hiroaki Takada, Ken Sakamura, "μITRON for Small-Scale Embedded Systems," IEEE Micro, vol. 15, no. 6, pp. 46-54, Dec. 1995.

Các file đính kèm theo tài liệu này:

  • docdo_an_Nguyen_Thanh_Nam.doc