PSOSystem của TriMedia

Một phần của tài liệu xây dựng engine giải mã video h.264 trên hệ thống nhúng (Trang 36 - 101)

2.6.2.1 Giới thiệu pSOSystem

pSOSystem là một hệ điều hành thời gian thực được thiết kế riêng cho các bộ vi xử lý hệ thống nhúng. Nó cung cấp một môi trường đa tác vụ dựa trên các chuẩn hệ thống mở.

pSOSystem được thiết kế để đáp ứng 3 mục tiêu:

 Khả năng thi hành tốt

 Độ tin cậy cao

 Dễ sử dụng

Kết quả đạt được là một giải pháp nhanh, đáng tin cậy và dễ tiếp cận cho các hệ thống phần mềm. pSOSystem được thiết kế tối ưu cho cả phần cứng thương mại và phần cứng chuyên dụng.

Phần mềm pSOSystem được hỗ trợ bởi một tập các công cụ phát triển tích hợp cho đa môi trường, các công cụ này có thể chạy được trên máy tính nền Windows hay UNIX. Đồng thời chúng có thể giao tiếp với thiết bị mục tiêu thông qua kết nối mạng serial hay TCP/IP.

2.6.2.2 Kiến trúc hệ thống

Phần mềm pSOSytem có kiến trúc theo mô-đun. Nó được xây dựng xung quanh một lõi xử lý đa tác vụ theo thời gian thực pSOS+ và một tập các thành phần phần mềm hỗ trợ khác. Các thành phần phần mềm là những khối được xây dựng theo chuẩn, đây là những vị trí độc lập tuyệt đối với các mô-đun mã nguồn. Chúng là những thành phần chuẩn theo nghĩa chúng cố định khi được chuyển tiếp từ ứng dụng này sang ứng dụng khác. Kỹ thuật hộp đen này giúp ích rất nhiều cho lập trình viên trong việc bảo trì mã nguồn đồng thời bảo đảm được độ tin cậy, vì trong thực tế có hàng trăm ứng dụng cần thực thi cùng một mã nguồn.

Không giống với hầu hết các phần mềm hệ thống, một thành phần phần mềm không được “gắn chặt” vào phần cứng. Nó cũng không có liên hệ gì tới việc thực thi và môi trường của thiết bị mục tiêu. Mỗi thành phần phần mềm cho phép người dùng

37 cung cấp một bảng cấu hình hệ thống chứa các tham số liên quan đến ứng dụng và phần cứng để nó tự cấu hình cho mình khi khởi động.

Mỗi thành phần cài đặt một tập các lời gọi đến hệ thống (system call). Với các nhà phát triển ứng dụng, các lệnh hệ thống này được gọi bằng các hàm viết bằng ngôn ngữ C truy xuất được trong ứng dụng. Người dùng có thể tự tổ hợp một số thành phần cần thiết khi thiết kế hệ thống xử lý thời gian thực, tùy theo nhu cầu của mình.

Các thành phần chính của pSOSystem được liệt kê sau đây:

Lõi xử lý đa tác vụ theo thời gian thực pSOS+: một lõi đa tác vụ cung cấp

cơ chế xử lý hiệu quả cho các hoạt động trong hệ thống thời gian thực của người dùng.

Lõi đa xử lý đa tác vụ pSOS+m: mở rộng các tính năng của pSOS+ để thực

thi hiệu quả trên đa bộ xử lý hay các bộ xử lý phân tán.

Bộ phận quản lý mạng TCP/IP pNA+: một bản cài đặt TCP/IP hoàn chỉnh

bao gồm thao tác định tuyến gateway, UDP, ARP, và các giao thức ICMP; sử dụng interface socket chuẩn gồm socket luồng, socket datagram, và socket thô.

Thƣ viện các hàm gọi từ xa pRPC+: cung cấp các RPC (Remote Procedure

Call) tương thích SUN và các dịch vụ XDR; cho phép xây dựng các ứng dụng phân tán sử dụng cấu trúc hàm giống với các hàm của ngôn ngữ C.

Bộ phận quản lý hệ thống tập tin pHILE+: cho phép giao tiếp hiệu quả với

các thiết bị lưu trữ cục bộ hay qua mạng. Bao gồm việc hỗ trợ cho các thiết bị CD-ROM, đĩa lưu trữ dạng MS-DOS, và một hệ thống tập tin tương thích tốc độ cao. Khi được dùng chung với các thành phần con pRPC+ và pNA+ hoặc OpEN và pSKT+, nó có thể cung cấp các dịch vụ NFS ở phía client.

Thƣ viện chuẩn ANSI C pREPC+: cung cấp các hàm thực thi tương tự

38

Hình 2-8: Môi trƣờng pSOSystem

Ngoài các thành phần lõi, pSOSystem còn bao gồm các thành phần sau:

 Các giao thức mạng như: SNMP, FTP, Telnet, TFTP, NFS và STREAMS

 Loader theo thời gian thực

 Shell cho ứng dụng của người dùng

 Hỗ trợ các ứng dụng phát triển bằng C++

 Boot ROM

 Các phiên bản pSOSystem đã được cấu hình sẵn cho các phần cứng thương mại phổ biến.

 Các biểu mẫu cho việc cấu hình pSOSystem

39

 Các ứng dụng minh họa việc sử dụng pSOSystem.

2.6.3 Môi trƣờng phát triển tích hợp

Môi trường phát triển tích hợp của pSOSystem có thể hoạt động trên máy tính nền Windows hay UNIX. Nó bao gồm các trình biên dịch tối ưu cho C và C++, một bộ giả lập hệ điều hành pSOS+, và một giải pháp gỡ rối (debug) ở mức mã nguồn và mức hệ thống.

Trung tâm môi trường gỡ rối của pSOSystem là bộ gỡ rối ở mức hệ thống

pROBE+ và một bộ gỡ rối cấp cao. Bộ gỡ rối cấp cao thực thi trên máy chủ và hoạt

động chung với bộ gỡ rối ở mức hệ thống pROBE+ chạy trên hệ thống mục tiêu. Sự kết hợp của bộ gỡ rối pROBE+ và bộ gỡ rối trên máy chủ cung cấp một giải pháp gỡ rối đa tác vụ có các chức năng:

 Giao diện người dùng công phu với con trỏ chuột và cửa sổ

 Tự động truy vết việc thực thi chương trình thông qua các tập tin mã nguồn

 Truy vết và ngừng thực thi (break) trên các dòng lệnh lập trình bằng ngôn ngữ cấp cao

 Cho phép ngừng thực thi khi trạng thái của các tác vụ thay đổi và có lệnh gọi đến hệ thống

 Xem thông tin của các biến ngôn ngữ và các đối tượng ở mức hệ thống như tác vụ (task), hàng đợi (queue) và semaphore.

 Ghi nhận mô tả của quá trình thực thi để người dùng có thể điều chỉnh và phân tích

 Các mode gỡ rối hệ thống và tác vụ

 Khả năng gỡ rối các mã nguồn đã được tối ưu

Bộ gỡ rối pROBE+, không chỉ đóng vai trò back-end cho một bộ gỡ rối mức cao tại máy chủ, mà còn có thể hoạt động độc lập như một bộ gỡ rối trên hệ thống mục tiêu. Điều này làm tăng khả năng bảo trì mã nguồn cho sản phẩm cuối cùng.

40

2.7.1 Lõi xử lý thời gian thực pSOS+

2.7.1.1 Tổng quan

Lõi pSOS+ là một lõi hệ điều hành đa tác vụ theo thời gian thực. Vì vậy, nó đóng vai trò là trung tâm của phần mềm giám sát các chức năng:

 Thực thi các dịch vụ theo yêu cầu

 Lập lịch, quản lý, và cung cấp tài nguyên

 Sắp xếp và đồng bộ hóa các hoạt động

Lõi pSOS+ cung cấp một khung nhìn đơn giản cho phần mềm ứng dụng, bất chấp độ phức tạp bên trong của ứng dụng. Trong lõi pSOS+, các ứng dụng bao gồm 3 lớp:

 Các tác vụ (tasks)

 Driver cho các thiết bị nhập xuất

 Các thủ tục xử lý dịch vụ ngắt (Interrupt Service Routines - ISRs)

2.7.1.2 Cài đặt đa tác vụ

Hệ thống đa tác vụ là một hệ thống động vì việc chuyển đổi giữa các tác vụ được điều khiển bởi các sự kiện phát sinh theo thời gian. Trong một hệ thống đa tác vụ (Hình 2-9), một số tác vụ được đồng bộ hóa bên trong, còn các tác vụ khác được thực thi bất đồng bộ.

Một tác vụ có thể dừng việc thực thi của nó bất kỳ lúc nào để chuyển quyền thực thi cho một tác vụ khác. Hình sau đây mô tả cách các ngắt được sử dụng để kích hoạt các tác vụ.

41

Hình 2-9: Mô hình xử lý đa tác vụ

Do đó, cách cài đặt đa tác vụ rất giống với mô hình xử lý song song trong thế giới thực. Phần mềm ứng dụng cho các hệ thống đa tác vụ có cấu trúc, khả năng bảo trì và tái sử dụng tốt hơn phần mềm cho các hệ thống khác.

2.7.1.3 Các thao tác hệ thống

Các dịch vụ của lõi pSOS+ có thể được phân thành các loại như sau:

 Quản lý tác vụ

 Cấp bộ nhớ lưu trữ

 Các dịch vụ hàng đợi thông điệp

 Các dịch vụ xử lý sự kiện và tín hiệu bất đồng bộ

 Các dịch vụ semaphore

 Các dịch vụ thẻ độc quyền

 Các dịch vụ quản lý dữ liệu cho tác vụ

42

 Các dịch vụ quản lý thời gian

 Các dịch vụ xử lý ngắt

 Dịch vụ xử lý lỗi

 Dịch vụ hỗ trợ đa xử lý

2.7.1.4 Quản lý tác vụ

2.7.2 Lời gọi hệ thống

Một cách tổng quát, các tác vụ có thể được tạo hoặc hủy động, và được điều khiển thông qua các thuộc tính của tác vụ.

Các lời gọi hệ thống dành cho việc xử lý tác vụ:

Tên hàm Chức năng

t_create Tạo tác vụ mới t_ident Lấy mã ID của tác vụ t_start Khởi động tác vụ mới t_restart Tái khởi động một tác vụ t_delete Xóa một tác vụ

t_suspend Hoãn việc thực thi một tác vụ t_resume Tiếp tục việc thực thi một tác vụ t_setpri Thay đổi độ ưu tiên của một tác vụ

t_info Truy vấn thông tin của một đối tượng tác vụ

Bảng 2-1 - Bảng các lời gọi hệ thống cho việc quản lý tác vụ

2.7.3 Độ ƣu tiên của tác vụ

Độ ưu tiên của một tác vụ phải được gán cho nó ngay từ lúc tác vụ được tạo ra. Có tổng cộng 256 mức độ ưu tiên - mức cao nhất là 255 và thấp nhất là 0.

Một số mức độ ưu tiên được dành riêng cho các tác vụ đặc biệt của pSOSystem. Mức 0 được dùng cho tác vụ IDLE daemon, tác vụ được cung cấp bởi lõi pSOS+. Các mức từ 230 - 255 được dành riêng cho nhiều loại tác vụ có độ ưu tiên cao, bao gồm pSOS+ ROOT.

43 Độ ưu tiên của một tác vụ, bao gồm các tác vụ hệ thống, có thể được thay đổi trong lúc thực thi bằng cách dùng lời gọi hệ thống t_setpri.

2.7.4 Các ngăn xếp dành cho tác vụ

Mỗi tác vụ đều có một hoặc nhiều ngăn xếp riêng. Người dùng sẽ khai báo kích thước của ngăn xếp khi tạo tác vụ bằng hàm t_create().

2.7.5 Giao tiếp, đồng bộ hóa, thẻ độc quyền (mutex)

Một ứng dụng xây dựng dựa trên pSOS+ nói chung có thể được chia thành một tập các tác vụ và thủ tục xử lý ngắt (ISR). Một cách trừu tượng, mỗi tác vụ là một tiểu trình (thread) của các hành động độc lập nhau được thực thi cùng lúc với các tác vụ khác. Tuy nhiên, có nhiều tác vụ cần trao đổi dữ liệu, đồng bộ hóa hành động, hoặc cùng chia sẻ tài nguyên. Để phục vụ việc giao tiếp giữa tác vụ với tác vụ cũng như giữa ISR với tác vụ, việc đồng bộ hóa và quản lý các thẻ độc quyền (mutex), lõi pSOS+ cung cấp các tính năng như: hàng đợi thông điệp, sự kiện, semaphore, thẻ độc quyền và các biến điều kiện.

2.7.6 Hàng đợi thông điệp

Các hàng đợi thông điệp cung cấp một cơ chế có tính linh hoạt cao dành cho các mục đích thông thường dùng để triển khai việc giao tiếp và đồng bộ hóa.

Các lời gọi hệ thống dành cho hàng đợi thông điệp:

Tên hàm Chức năng

q_create Tạo một hàng đợi thông điệp

q_ident Lấy mã ID của một hàng đợi thông điệp q_delete Xóa một hàng đợi thông điệp

q_receive Nhận / đợi một thông điệp từ một hàng đợi q_send Gửi một thông điệp đến cuối hàng đợi q_urgent Chèn một thông điệp vào đầu hàng đợi

q_notify Đăng ký một tác vụ thông báo sự kiện một thông điệp vừa được gửi đến hàng đợi

44

Bảng 2-2 - Bảng các lời gọi xử lý hàng đợi thông điệp

Giống như tác vụ, hàng đợi thông điệp là một đối tượng tổng quát được tạo hoặc hủy động. Thứ tự xử lý các thông điệp có thể là first-in-first-out hay theo mức độ ưu tiên của tác vụ.

2.7.7 Sự kiện

Lõi pSOS+ cung cấp một tập các tính năng đồng bộ hóa bằng sự kiện. Mỗi tác vụ có 32 cờ sự kiện, được mã hóa nhị phân trong một word độ dài 32-bit. Mỗi bit trong 32 bit này được dùng cho một cờ sự kiện.

5 lời gọi hệ thống cung cấp khả năng đồng bộ hóa bằng sự kiện giữa các tác vụ với tác vụ, hay tác vụ với ISR:

Tên hàm Chức năng

ev_receive Nhận hoặc đợi các sự kiện ev_send Gửi các sự kiện cho một tác vụ

q_notify Đăng ký một tác vụ thông báo sự kiện một thông điệp vừa được gửi đến hàng đợi

q_vnotify Đăng ký một tác vụ thông báo sự kiện một thông điệp vừa được gửi đến một hàng đợi có độ dài tùy biến

sm_notify Đăng ký một tác vụ nhận thông báo sự có mặt của semaphore

Bảng 2-3 - Bảng các lời gọi hệ thống dành cho sự kiện

2.7.8 Semaphore

Lõi pSOS+ cung cấp các thao tác quen thuộc cho semaphore. Một cách tổng quát, chúng đóng vai trò là các thẻ tài nguyên (resource token) khi cài đặt thẻ độc quyền (mutex).

Các lời gọi hệ thống có liên quan đến semaphore là:

Tên hàm Chức năng

45 sm_ident Lấy mã ID của một semaphore

sm_delete Xóa một semaphore

sm_p Nhận / đợi một thẻ semaphore sm_v Trả về một thẻ semaphore

sm_notify Đăng ký một tác vụ thông báo sự có mặt có semaphore sm_info Truy vấn thông tin của một semaphore

Bảng 2-4 - Bảng các lời gọi hệ thống liên quan đến Semaphore

2.7.9 Các thẻ độc quyền

Lõi pSOS+ cung cấp một tập các thao tác với thẻ độc quyền (mutex). Thẻ độc quyền khá giống với semaphore. Tuy nhiên, chúng cung cấp thêm một số tính năng đặc biệc, như khả năng loại bỏ đảo ngược độ ưu tiên không giới hạn và loại bỏ khóa chết (deadlock).

Các lời gọi hệ thống liên quan đến thẻ độc quyền

Tên hàm Chức năng

mu_create Tạo một thẻ độc quyền

mu_ident Lấy mã ID của một thẻ độc quyền mu_delete Xóa một thẻ độc quyền

mu_lock Khóa một thẻ độc quyền mu_unlock Mở khóa một thẻ độc quyền

mu_setceil Lấy độ ưu tiên của một thẻ độc quyền mu_info Truy vấn thông tin của một thẻ độc quyền

Bảng 2-5 - Bảng các lời gọi hệ thống liên quan đến thẻ độc quyền

2.7.10 Quản lý thời gian

pSOS+ cung cấp các hàm sau đây:

 Xác định lịch thời gian và ngày tháng

 Thời gian không hoạt động (không nhất thiết phải có) của một tác vụ đang chờ thông điệp, semaphores, hay sự kiện.

46

 Đánh thức hoặc gửi tín hiệu báo thức đến một tác vụ sau một khoảng thời gian hay tại một thời điểm được định sẵn

 Truy vết thời gian một tác vụ đang chạy, và lập lịch round-robin.

Những hàm này phụ thuộc vào các ngắt thời gian theo chu kỳ (timer interrupt), và sẽ không hoạt động nếu không có đồng hồ thời gian thực hay timer của phần cứng.

Việc quản lý thời gian tường minh sẽ được thực hiện thông qua các lời gọi hệ thống sau:

Tên hàm Chức năng

tm_tick Thông tin về khoảng tick đồng hồ của lõi pSOS+ tm_set Thiết lập thời gian và ngày tháng

tm_get Lấy thông tin thời gian và ngày tháng tm_wkafter Đánh thức tác vụ sau một khoảng thời gian tm_wkwhen Đánh thức tác vụ tại một thời điểm đã định sẵn tm_evafter Gửi sự kiện đến tác vụ sau một khoảng thời gian tm_evevery Gửi sự kiện đến tác vụ theo chu kỳ thời gian tm_evwhen Gửi sự kiện đến tác vụ tại một thời điểm định sẵn tm_cancel Hủy một timer báo thức

tm_getticks Lấy tổng số tick đã trôi qua kể từ lúc hệ thống pSOS+ được khởi động

47

CHƢƠNG 3 : HỆ THỐNG ARM VỚI NỀN TẢNG EMBEDDED

LINUX

Giới thiệu về kiến trúc xử lý, nguyên lý biên dịch chương trình trên chip thuộc dòng ARM - kiến trúc hệ thống trên hệ điều hành Embedded Linux

3.1 Dòng ARM

3.1.1 Sơ lƣợc về tên gọi: 2

ARM lúc đầu được đặt tên theo công ty Acorn. ARM=Acorn RISC Machine

Một phần của tài liệu xây dựng engine giải mã video h.264 trên hệ thống nhúng (Trang 36 - 101)