Đồng thời trình bày các vấn đề chính yếu để người đọc có thể tiếp cận hệ thống nhúng T-Engine một cách nhanh nhất, hiểu được cấu trúc phần cứng, kiến trúc phần mềm và có thể phát triển ứ
Trang 1LỜI CẢM ƠN
Em xin trân trọng gửi lời cám ơn chân thành và tốt đẹp nhất đến:
Thầy Phạm Tường Hải, người đã tận tâm, nhiệt tình hướng dẫn và cung cấp các tài liệu cần thiết cho em trong suốt thời gian làm luận văn
Các Thầy trong khoa Công nghệ thông tin, đặc biệt là Thầy Dương Tuấn Anh, Thầy Lê Ngọc Minh đã chỉ bảo phương hướng cho em trong lúc tìm nhận luận văn và đã giúp đỡ rất tận tình để em được thực hiện luận văn này
Và tôi xin cảm ơn các bạn sinh viên khoa Công nghệ thông tin trong nhóm thí nghiệm “Hệ thống nhúng T-Engine”, bạn Nguyễn Hoàng Anh, Nguyễn Phạm Anh Khoa và bạn Vũ Tuấn Thanh đã cùng tôi tìm hiểu các phần mềm ứng dụng trên T-Engine và góp ý về chương trình ứng dụng Calculator
Cuối cùng, tôi rất biết ơn bố mẹ và chị đã chăm lo, cám ơn đồng nghiệp, bạn
bè đã ủng hộ tôi hoàn thành luận văn này
Trang 2TÓM TẮT
Luận văn này giới thiệu về hệ thống nhúng T-Engine, một hệ thống nhúng có tính
mở, được chuẩn hóa và hiện nay là nền tảng tốt nhất để phát triển các hệ thống
nhúng thời gian thực (Real-time Embedded Systems) T-Engine bao gồm phần cứng được chuẩn hóa (bo mạch T-Engine) và hệ điều hành thời gian thực (T-Kernel) Dự
án T-Engine được đưa ra bởi giáo sư Ken Sakamura, đại học Tokyo, với mục đích
là tiêu chuẩn hóa nền tảng phát triển cho hệ thống nhúng Nó bao gồm việc hoàn chỉnh cấu hình phần cứng và môi trường phát triển, bao gồm cả phân phối và cung cấp khả năng chuyển đổi các thành phần phần mềm Luận văn sẽ trình bày về lịch
sử, nguồn gốc phát triển và các thành tựu đạt được của T-Engine Đồng thời trình bày các vấn đề chính yếu để người đọc có thể tiếp cận hệ thống nhúng T-Engine một cách nhanh nhất, hiểu được cấu trúc phần cứng, kiến trúc phần mềm và có thể phát triển ứng dụng nhúng đơn giản Cụ thể sẽ trình bày về quy trình phát triển một ứng dụng nhúng đơn giản là máy tính tay trên hệ thống nhúng T-Engine/SH7760 của hãng Personal Media Corporation
Trang 3ABSTRACT
My final thesis presents T-Engine, open standardized development platform for real-time embedded systems It is composed of standardized hardware (T-Engine platform) and standard real-time kernel (T-Kernel) The T-Engine project was proposed by Professor Ken Sakamura (http://tron.um.u-tokyo.ac.jp/) from The University of Tokyo It was launched with the aim of standardizing the development platform of embedded systems This includes improvements to the hardware configuration and the development environment, plus distribution and portability of software components The thesis would elaborate the history of T-Engine, the generations of its development and its achievements It also gives some most important parts of software, hardware architecture and software development procedures And more specifically, a simple application development procedure will
be shown, a Calculator, developed on T-Engine/SH7760 development kit of Personal Media Corporation (http://www.personal-media.co.jp/welcome-e.html)
Trang 4Mục lục
LỜI CẢM ƠN i
TÓM TẮT ii
ABSTRACT iii
Chương 1: Giới thiệu 1
Chương 2: Các công trình liên quan 3
Chương 3: Các lý thuyết cơ bản 6
3.1 Các vấn đề về hệ thống nhúng 6
3.1.1 Phần cứng 6
3.1.2 Phần mềm (ứng dụng nhúng) 8
3.1.3 Tổng thể 9
3.2 Hệ điều hành thời gian thực 10
Chương 4: Giới thiệu T-Engine 14
4.1 T-Engine là gì? 14
4.2 Kiến trúc T-Engine 15
4.2.1 Phần cứng T-Engine: 16
4.2.2 Kiến trúc phần mềm T-Engine: 16
4.2.3 Phần mềm ứng dụng trên T-Engine: 18
4.3 T-Kernel 19
4.3.1 Các đặc tính của T-Kernel 19
4.3.2 Quản lý động các nguồn lực 19
4.3.3 Quản lý bộ nhớ của T-Kernel 20
4.3.4 Các mức độ bảo vệ bộ nhớ 21
4.3.5 Quản lý bộ nhớ ảo 22
4.3.6 Tiến trình phát triển một ứng dụng 22
Chương 5: T-ENGINE/SH7760 23
5.1 Giới thiệu: 23
5 2 Cấu hình hệ thống 24
5.2.1 Hình dạng 24
5.2.2 Kết nối hệ thống 27
Chương 6: Các đặc tả của T-Engine/SH7760 31
6.1 Đặc tả T-Monitor 31
6.1.1 Các hàm hệ thống 31
6.1.2 Các hàm debugging 32
6.1.3 Các chi tiết về khởi động hệ thống 35
6.2 Đặc tả T-Kernel 36
6.2.1 Một số thuật ngữ cơ bản 37
6.2.2 Trạng thái của task và các qui luật về định thời 38
6.2.3 Các trạng thái của hệ thống 44
6.2.4 Đối tượng 48
6.2.5 Bộ nhớ 48
6.3 Đặc tả giao tiếp trình điều khiển thiết bị 51
6.3.1 Những khái niệm cơ bản 51
Trang 56.3.2 Giao tiếp ứng dụng 54
6.4 Thiết bị hiển thị 59
6.5 Thiết bị nhập liệu 64
Chương 7: Những hàm cơ bản cung cấp bởi T-Kernel 70
7.1 Những đặc tả chung của T-Kernel 70
7.1.1 Kiểu dữ liệu 70
7.1.2 Các hàm system call 72
7.2 Các hàm chức năng T-Kernel/OS 77
7.2.1 Quản lý Task 77
7.2.2 Đồng bộ Task-Dependent 77
7.2.3 Xử lý các ngoại lệ của Task 78
7.2.4 Đồng bộ và giao tiếp 79
7.2.5 Đồng bộ và giao tiếp mở rộng 80
7.2.6 Quản lý Memory Pool 86
7.2.7 Quản lý thời gian 87
7.2.8 Quản lý ngắt 88
7.2.9 Quản lý hệ thống 88
7.2.10 Hệ thống con 88
7.3 Các hàm chức năng T-Kernel/SM 89
7.3.1 Quản lý bộ nhớ hệ thống 89
7.3.2 Quản lý không gian địa chỉ 91
Chương 8: Phát triển ứng dụng nhúng trên 95
T-Engine/SH7760 95
8.1 Tổng quan về ứng dụng trên T-Engine/SH7760 95
8.2 Các loại phần mềm được phát triển [6] 97
8.3 Các thủ tục phát triển phần mềm 98
8.3.1 Cài đặt môi trường phát triển GNU cho T-Engine 98
8.3.2 Khởi động T-Engine 100
8.3.3 Tạo đĩa làm việc 100
8.3.4 Tạo đĩa khởi động 102
8.3.5 Cập nhật đĩa ROM 102
8.3.6 Viết chương trình ứng dụng 103
8.4 Chi tiết về khởi động hệ thống 103
8.4.1 Các tập tin hệ thống: 103
8.4.2 Qui trình khởi động hệ thống 104
Chương 9: Phát triển ứng dụng nhúng Calculator 106
9.1 Mục đích, yêu cầu 106
9.2 Mô hình đề nghị 106
9.3 Giải pháp thực hiện 107
9.3.1 Phân tích bài toán 107
9.3.2 Hiện thực hàm main 107
9.3.3 Hiện thực việc hiển thị kết quả 108
9.3.4 Hiện thực việc nhập liệu 110
Trang 69.3.4 Hiện thực chương trình chính 111
9.3.5 Biên dịch và chạy thử chương trình 112
Kết luận 115
Tài liệu tham khảo 116
Phụ lục A: Môi trường phát triển GNU 117
A.1 Tổng quan 117
A.2 Cài đặt môi trường phát triển GNU cho T-Engine 117
A.2.1 Cài đặt: 117
A.2.2 Cập nhật lại các biến môi trường: 118
A.3 Rebuilding môi trường phát triển GNU 119
A.3.1 Rebuilding binutils 119
A.3.2 Rebuiding gcc 120
A.3.3 Rebuilding gdb 120
A.4 Cài đặt môi trường phát triển (Cygwin) 121
A.4.1 TERA_TERM 121
A.4.2 Cygwin 122
A.5 Makefile 129
Phụ lục B: Debug một chương trình bằng GDB 131
B.1 Giới thiệu: 131
B.2 Sử dụng GDB 132
B.2.1 Chuẩn bị 132
B.2.2 Chuẩn bị thiết bị phần cứng và máy chủ host 132
B.2.3 Chuẩn bị cho chương trình của mỗi định dạng 133
B.2.4 Debug bằng GDB 136
B.3 Lưu ý trong khi debug bằng GDB 139
Trang 7Danh mục các hình vẽ
Hình 3.1: Sơ đồ khối một hệ thống nhúng tổng quát 6
Hình 3.2: Khối cơ bản của một hệ thống nhúng .7
Hình 3.3: Sơ đồ khối của một bộ xử lý trung tâm 7
Hình 3.4: Quá trình xây dựng ứng dụng nhúng .8
Hình 3.5: Kiến trúc cơ bản hệ thống nhúng thời gian thực 11
Hình 3.6: Năm nhóm dịch vụ cơ bản mà nhân hệ điều hành thời gian thực cung cấp 12
Hình 4.1: Kích thước các T-Engine 15
Hình 4.2: Kiến trúc phần mềm T-Engine 17
Hình 4.3: Các kiểu phần mềm ứng dụng trên T-Engine [6] .18
Hình 4.4: Không gian bộ nhớ task và không gian bộ nhớ chia sẻ .21
Hình 4.5: Tiến trình phát triển một ứng dụng nhúng .22
Hình 5.1: Hình dạng T-Engine/SH7760 .24
Hình 5.2: Mặt trước bo mạch LCD 25
Hình 5.3: Mặt sau bo mạch LCD .25
Hình 5.4: Mặt trước bo mạch CPU .26
Hình 5.5: Mặt sau bo mạch CPU .26
Hình 5.6: Bo mạch debug 27
Hình 5.7: Bo mạch giao tiếp I/O .27
Hình 5.8: Kết nối hệ thống 28
Hình 5.9: Chân connector nối tiếp CN1 28
Hình 5.10: Kết nối nguồn điện 29
Hình 5.11: Kết nối bo mạch debug .30
Hình 5.12: Kết nối EPROM 30
Hình 6.1: Vị trí của T-Kernel 36
Hình 6.2: Sơ đồ chuyển trạng thái các task 41
Hình 6.3: Thứ tự thực thi ở trạng thái khởi tạo 42
Hình 6.4: Thứ tự thực thi sau khi task B chuyển sang trạng thái RUN 43
Hình 6.5: Thứ tự thực thi sau khi task B chuyển sang trạng thái WAIT .43
Hình 6.6: Thứ tự thực thi khi task B được giải phóng khỏi trạng thái WAIT 44
Hình 6.7: Phân loại các trạng thái của hệ thống 45
Hình 6.8: Interrupt lồng nhau và trì hoãn quá trình dispatching 47
Hình 6.9: Không gian địa chỉ 49
Hình 6.11: Các giao tiếp trình điều khiển thiết bị từ đặc tả của T-Kernel 51
Hình 6.12: Khối thiết bị LCD [11] .60
Hình 6.13: Cấu trúc của trình điều khiển KBPD [11] 65
Hình 6.14: Cơ chế chuyển đổi keycode khi có nhiều bàn phím [11] .65
Hình 7.1: Cách thức hoạt động của thường trình hỗ trợ ngôn ngữ cấp cao 77
Hình 7.2: Định dạng của một thông điệp trong mailbox 80
Hình 7.3: Đồng bộ việc giao tiếp bằng cách sử dụng Message buffer 83
Hình 7.4: Hoạt động của rendezvous port 86
Hình 7.5: Hệ thống con T-Kernel .89
Trang 8Hình 8.1: Cấu trúc phần mềm của T-Engine/SH7760 kit [6] 95
Hình 8.2: Sự chuyển đổi giữa IMS, CLI, T-Monitor và shutdown mode [11] .97
Hình 8.3: Thiết lập 8 bit DIP switch 100
Hình 9.1: Ứng dụng Calculator trong Microsoft Windows .106
Hình 9.2: Quá trình gọi các hàm của T-Kernel 108
Hình 9.3: Quy trình sử dụng thiết bị SCREEN 109
Hình 9.4: Quy trình sử dụng thiết bị kbdp .110
Hình 9.5: Sơ đồ hoạt động chương trình Calculator .112
Trang 9Danh mục các bảng
Bảng 1.1: Các sản phẩm có tích hợp hệ thống nhúng 1
Bảng 4.1: Đặc tả cấu hình phần cứng của T-Engine và µT-Engine [1] .16
Bảng 4.2: Các hàm chức năng của từng thành phần trong T-Kernel 19
Bảng 4.3: Cách sử dụng các mức độ bảo vệ, mức độ thực thi 21
Bảng 5.1: Các bộ kit phát triển T-Engine của PMC [7] .23
Bảng 5.2: Các tín hiệu của các chân connector CN1 .29
Bảng 6.1: Phân biệt sự chuyển trạng thái giữa “invoking task” và các task khác 41
Bảng 6.2: Các mức độ bảo vệ bộ nhớ .50
Bảng 6.3: Các chế độ mở đồng thời cho phép .55
Bảng 6.3: Các kiểu mask của từng loại sự kiện .68
Bảng 8.1: Các chế độ qui định thứ tự khởi động của hệ thống 102
Trang 10Chương 1: Giới thiệu
“Hệ thống nhúng” (Embedded System) là một thuật ngữ mới gần đây hay được
sử dụng trong các tài liệu kỹ thuật Tuy vậy, hệ thống nhúng không phải là một kỹ thuật mới, nó được hình thành từ sự hội tụ của nhiều ứng dụng kỹ thuật khác nhau như điện tử dân dụng, viễn thông, điều khiển tự động… và trong đó sử dụng khả năng tính toán của các bộ vi xử lý
Một cách đơn giản, bất kỳ một thiết bị nào sử dụng một bộ vi xử lý và có thể hoạt động tự động là một hệ thống nhúng Hệ thống nhúng được xây dựng trước hết
để thực hiện một chức năng riêng biệt, thực hiện một số điều khiển nhất định trong một công việc, lãnh vực nào đó thay thế cho một máy vi tính Ngoài ra, một hệ thống nhúng còn có khả năng hoạt động tự động, hoặc thực hiện các công việc (đã được lập trình sẵn) tùy theo tác động của môi trường bên ngoài Con người không cần phải trực tiếp điều khiển hoạt động của toàn hệ thống Và ngày nay, do sự phát triển mạnh của kỹ thuật vi điện tử, mạch tích hợp, các hệ thống nhúng ngày càng được sử dụng nhiều hơn vì giá thành rẻ, kích thước nhỏ (nhỏ hơn nhiều lần so với một máy tính cá nhân), hoạt động hiệu quả, chính xác, có độ bền cao
Ta có thể xem bảng sau để có thể thấy các sản phẩm có hệ thống nhúng tích hợp trong đó:
Đồng hồ báo thức Máy in Máy điện thoại Radio kỹ thuật số Máy trả lời tự động Máy nghe nhạc Máy trò chơi Lò vi sóng Thẻ thông minh Máy quay phim Modem Máy chụp hình
Bảng 1.1: Các sản phẩm có tích hợp hệ thống nhúng
Người sử dụng ít khi biết rằng trong các sản phẩm đó có ít nhất một bộ vi xử
lý, một số các linh kiện điện tử khác kèm theo và một phần mềm điều khiển hoạt động các thiết bị hình thành nên công dụng của sản phẩm Cũng giống như một máy
vi tính cá nhân, hệ thống nhúng sẽ không thể hoạt động nếu như thiếu phần mềm
điều khiển, phần mềm này còn gọi là phần mềm nhúng (embedded software) Cũng
như phần cứng của hệ thống nhúng, phần mềm nhúng thường được thiết kế riêng cho một hệ thống nhúng và kết hợp hoạt động chặt chẽ với nhau Thông thường để xây dựng một hệ thống nhúng, phải bắt đầu từ xây dựng nền tảng phần cứng trước (theo một yêu cầu cụ thể, cho mỗi công việc khác nhau cần các phần cứng khác nhau), sau đó là xây dựng phần mềm điều khiển phù hợp với phần cứng đó Quá trình này đòi hỏi mất nhiều thời gian, việc lập trình phần mềm phụ thuộc nhiều vào phần cứng và ngôn ngữ lập trình mà phần cứng hỗ trợ Tuy vậy, điều này không làm giảm đi sự phát triển mạnh mẽ của các hệ thống nhúng Bởi vì, hiện nay có rất nhiều nhà sản xuất cung cấp các bộ vi xử lý đa năng, thông dụng, mạnh, rẻ tiền; cung cấp các công cụ hỗ trợ cho việc lập trình, làm giảm đáng kể thời gian viết mã chương
Trang 11trình Ngoài ra, họ còn cung cấp các bộ vi mạch đa năng, các bộ vi mạch điện tử thử nghiệm (gọi là các kit vi xử lý) kèm theo phần mềm hỗ trợ lập trình tạo điều kiện thuận lợi cho việc thiết kế phần cứng, kiểm thử chương trình Hoặc có thể sử dụng ngay các bộ vi mạch đa năng (có thể dùng thực hiện một số công việc cơ bản, đa số các hệ thống cần có ngõ xuất/nhập, giao tiếp mạng, bộ hiển thị LED, LCD…) và xây dựng thêm một số chức năng cần thiết nữa là đã hình thành nên một hệ thống nhúng hoàn chỉnh (và không phải thiết kế phần cứng từ đầu)
Hệ thống nhúng T-Engine là một hệ thống nhúng được xây dựng theo tiêu
chuẩn cụ thể, sử dụng phần cứng được chuẩn hóa (bo mạch T-Engine), hệ điều hành thời gian thực (T-Kernel) T-Engine là kiến trúc tốt nhất để phát triển hệ thống
nhúng, giảm thời gian phát triển hệ thống và giảm được giá thành Hãng Personal Media Corporation đã đưa ra thương mại hóa các kit phục vụ cho việc phát triển hệ thống nhúng T-Engine, được diễn đàn T-Engine giới thiệu là sản phẩm chính trên trang web của mình [1]
Mục đích của luận văn này là khảo sát hệ thống nhúng T-Engine cụ thể, được xây dựng trên nền tảng bộ xử lý SH7760 SuperH RISC của hãng Renesas, tìm hiểu
về kiến trúc phần cứng, quy trình phát triển ứng dụng nhúng và phát triển một ứng dụng nhúng đơn giản là một máy tính cầm tay trên bộ kit phát triển hệ thống nhúng của hãng Personal Media Corporation
Trang 12Chương 2: Các công trình liên quan
Như đã đề cập ở phần trên, hệ thống nhúng đã xuất hiện nhiều trong các sản phẩm dân dụng (đồng hồ báo thức, máy giặt…) đến các sản phẩm, thiết bị hiện đại dùng trong quân sự, kỹ thuật (thiết bị dẫn đường cho tên lửa, vệ tinh thông tin liên lạc…) Thông dụng và giá thành rẻ là những yêu cầu quan trọng của một hệ thống nhúng, vì thế thông thường trước kia hệ thống nhúng dùng các vi xử lý tốc độ thấp
để giàm giá thành Nhưng ngày nay, hệ thống nhúng được yêu cầu khả năng xử lý cao, đáp ứng nhanh (đáp ứng thời gian thực) và vừa có giá thành hợp lý, khả năng tích hợp phần cứng và đa dụng đòi hỏi cần phải có một hệ thống nhúng được chuẩn hóa Điều này sẽ đem lại nhiều lợi ích như giảm thời gian thiết kế phần cứng, sử dụng lại mã nguồn, tăng cao khả năng xử lý, tính toán, dẫn đến giảm giá thành phát triển một sản phẩm Và vì vậy, mới gần đây người ta đã xây dựng một kiến trúc hệ thống tiêu chuẩn cho các hệ thống nhúng thời gian thực, gọi là T-Engine
T-Engine được xuất phát từ dự án TRON (The Real-time Operating system
Nucleus project – dự án Nhân hệ điều hành thời gian thực) TRON được bắt đầu
năm 1984 bởi giáo sư Ken Sakamura, đại học Tokyo, và được sự hợp tác của các công ty lớn của Nhật Bản TRON được thiết kế để tạo ra một kiến trúc mở và thống nhất cho môi trường họat động của các máy tính cá nhân và thay thế cho hệ thống máy tính cá nhân rời rạc vào thời điểm đó Nói một cách chính xác, mục tiêu cuối cùng của TRON là để tạo ra một “hệ thống phân tán theo chức năng ở mức độ cao”
(highly functionally distributed system - HFDS), cho phép mọi thiết bị đều có thể kết nối thành một mạng thời gian thực (real-time network) Hiện nay dự án TRON
vẫn đang được tiến hành với sáu dự án con khác và rất nhiều dự án ứng dụng Mỗi một dự án này là một thành phần để tạo nên HFDS Chúng bao gồm dự án đặc tả kiến trúc vi xử lý TRON, dự án đặc tả hệ điều hành thời gian thực cho các hệ thống
nhúng ITRON (Industrial TRON), dự án đặc tả kiến trúc hệ điều hành cho các máy tính cá nhân và máy tính trạm BTRON (Business TRON), dự án đặc tả giao tiếp hệ điều hành cho xử lý thông tin và giao tiếp CTRON (Communication and Central
TRON), dự án đặc tả kiến trúc giao tiếp bên trong giữa các hệ điều hành MTRON
(Macro TRON), và dự án hướng dẫn tiêu chuẩn cho các giao tiếp người-máy trong
nhiều loại thiết bị điện tử khác nhau [2]
Một số điểm chính của TRON:
- Kiến trúc mở: là chiến lược chính của dự án TRON là kết quả của dự án, dưới dạng các đặc tả được đưa ra, sẽ được công bố công khai Bất kỳ ai trên thế giới đều có thể tự do phát triển và thương mại hóa sản phẩm hình thành
dựa trên các đặc tả này Hiệp hội TRON (TRON Association) đã được thành
lập, là một tổ chức chính để phát hành các tài liệu đặc tả này và quản lý thử nghiệm Hiệp hội TRON mở rộng cho tất cả các đối tượng có cùng quan điểm và cam kết tuân theo điều lệ của hội
Trang 13- Sự tiêu chuẩn hóa mềm dẻo: các đặc tả của TRON bắt buộc phải tuân theo về các giao tiếp máy tính nhưng không áp đặt chi tiết về phần cứng hay phần mềm Mục đích là để đạt dược sự tương thích chương trình và dữ liệu, giảm chi phí phát triển, và chi phí đào tạo người sử dụng Các giao tiếp được định nghĩa một cách phân cấp, gồm tập lệnh vi xử lý, hạt nhân hệ điều hành, phần bên ngoài nhân hệ điều hành và chương trình ứng dụng Cách phân cấp này tạo thuận lợi cho các công ty khác nhau hiện thực các lớp của mình riêng biệt, cho dù lớp phía dưới hoàn toàn khác nhưng các lớp trên vẫn sử dụng lại được
- Tương thích với tương lai: dự án TRON đưa ra thiết kế với mục đích phát triển mở rộng, tương thích với hệ thống máy tính tương lai Xây dựng kiến trúc hoàn toàn mới, kiến trúc vi xử lý TRON hỗ trợ độ rộng bus 32 bit, và tương lai là 64 bit TRON còn đưa ra định dạng dữ liệu tiêu chuẩn, gọi là
TAD (TRON Application Databus), đảm bảo việc trao đổi dữ liệu giữa các
ứng dụng Đồng thời TAD cũng cung cấp cách thức giao tiếp, cùng tồn tại với các hệ điều hành đang được sử dụng hiện nay
Hiện nay, diễn đàn T-Engine [3] (T-Engine forum) một thành phần của dự án phát triển TRON với hơn 460 thành viên, đã và đang tiến hành xây dựng một môi trường phát triển được chuẩn hóa cho các ứng dụng nhúng có dựa trên nền tảng ITRON
ITRON là sản phẩm đầu tiên trong một loạt các tính năng kỹ thuật mã nguồn
mở cho kiến trúc TRON Sự ra đời của ITRON đã đáp ứng được yêu cầu cấp bách đối vơi các ứng dụng nhúng của các công ty điện tử Nhật Bản Bởi vì trước khi ITRON ra đời, các công ty này vẫn phải tự xây dựng nên các phần mềm cho riêng mình, một công việc khó khăn, mất thời gian và tiền bạc Hơn thế nữa điều này dẫn đến sự tồn tại của quá nhiều các hệ thống khác biệt và không tương thích
ITRON là một kiến trúc hệ điều hành thời gian thực cho các hệ thống nhúng
và được dùng như hệ điều hành đa nhiệm thời gian thực trong các sản phẩm thông minh Đặc tả đầu tiên về nhân ITRON là ITRON1, xuất hiện năm 1987 Sau đó, năm 1989, là uITRON (micro-TRON phiên bản thứ 2) cho các vi điều khiển 8 bit và đặc tả ITRON2 cho các vi xử lý 32 bit Một số lượng rất lớn các nhân hệ điều hành TRON đã được hiện thực và sử dụng rất rộng rãi trong các hệ thống Và gần nay, năm 1993, uITRON3.0 (micro TRON phiên bản thứ 3) đang được hiện thực rộng rãi trong nhiều loại vi xử lý, cung cấp các chức năng kết nối, sử dụng trong nối kết các hệ thống phân tán và cung cấp chức năng quản lý tập tin
Hiện nay, các chuyên gia vẫn xem ITRON là hệ điều hành số một cho các vi
Trang 14Thiết bị thông tin liên lạc:
- Điện thoại đa chức năng
- Hệ thống liên lạc không dây
vậy đang đưa chúng ta dần đến kỷ nguyên của “ubiquitous computing”, các đối
tượng của các sản phẩm đều được nhúng vi xử lý và được kết nối thành mạng Khi
đó sẽ dẫn đến hai yêu cầu bức thiết là yêu cầu bảo mật và yêu cầu cho phép phát triển sản phẩm một cách hiệu quả trong thời gian ngắn nhất Nói chung, các hệ thống nhúng thường sử dụng nhiều chủng loại, kiến trúc CPU và phần cứng khác nhau Vì vậy, một hệ điều hành thời gian thực và các phần mềm trung gian cần phải được xây dựng một cách riêng biệt cho từng nền tảng phần cứng khác nhau, đòi hỏi tốn nhiều thời gian, công sức và tiền bạc Dự án T-Engine đã được hình thành để xây dựng một nền tảng phát triển chung, giải quyết vấn đề nêu trên Vấn đề bảo mật nêu ra được giải quyết bằng kiến trúc bảo mật eTRON (một dự án mới trong dự án TRON nhằm thiết lập một nền tảng bảo mật cho môi trường mạng), và hỗ trợ cho việc bảo mật trong phần cứng và phần mềm trung gian của T-Engine
Để tăng hiệu quả cho việc phát triển ứng dụng nhúng, T-Engine đã được chuẩn hóa về phần cứng lẫn phần mềm Các đặc tả được đưa ra cho phần cứng như kích thước bo mạch, vị trí các đầu nối, kiểu giao tiếp và có hai nền tảng phát triển tiêu chuẩn đã được đưa ra (standard T-Engine and µT-Engine) Phần mềm cũng được chuẩn hóa chính là T-Kernel, hệ điều hành thời gian thực dựa trên ITRON
Trang 15Chương 3: Các lý thuyết cơ bản
ELECTROMECHANICAL BACKUP & SAFETY
EXTERNAL ENVIRONMENT
3
Công việc đầu tiên
cứng sẽ dùng trong hệ thống, nền tảng phần cứng (target platform) Và việc
thiết kế này cần thoả mãn cho hai câu hỏi:
- Mục tiêu chính của phần cứng nà
- Dòng lưu chuyển dữ liệu ra sao?
ường đi của dữ liệu trong hệ thống thì khó nhận thấy hơn Đôi lúc phải cần có
sơ đồ khối, sơ đồ thiết kế phần cứng theo từng khối chức năng riêng, thì dòng dữ liệu sẽ dễ dàng hình dung hơn Vì vậy, nếu là một phần cứng ta tự thiết kế, xây dựng thì nên cần có sơ đồ khối, nguyên lý hoạt động, hướng dẫn lập trình kèm theo, tạo thuận lợi cho người lập trình, công việc lập trình phần mềm điều khiển sau này Còn đối với các phần cứng do các nhà sản xuất cung cấp thì cần phải có đầy đủ các tài liệu trên và đặc biệt là kèm theo các công cụ hỗ trợ phát triển ứng dụng Công việc làm quen với hoạt động của hệ thống, hiểu biết về nền tảng phần cứng là cần thiết và người phát triển ứng dụng sẽ tốn thời gian để tìm hiểu, đòi hỏi phải có hiểu
Trang 16biết cơ bản về điện tử cũng như lãnh vực mà hệ thống nhúng sẽ được áp dụng Sau đây ta sẽ xem xét các thành phần thông thường cần có trong một hệ thống nhúng:
Hình 3.2: Khối cơ bản của một hệ thống nhúng
Một hệ thống nhúng có nhiều kiểu các ngõ vào và ngõ ra Ví dụ: trong một lò
vi só
Hình 3.3: Sơ đồ khối của một bộ xử lý trung tâm
M t bộ xử lý trung tâm có 3 bus để giao tiếp giữa các khối bên trong với nhau (bus
ng, các ngõ vào gồm các nút nhấn trên bảng điều khiển, nhiệt độ đo được trong lò; các ngõ ra gồm bảng đèn hiển thị cho người sử dụng và bức xạ vi sóng Trong hầu hết các trường hợp, các ngõ ra của một hệ thống nhúng là một hàm của các ngõ vào và vài yếu tố khác (khoảng thời gian định thời, nhiệt độ hiện thời trong lò…) Các ngõ vào thông thường ở các dạng như cảm biến, cảm ứng, tín hiệu liên lạc hoặc nút, khoá điều khiển Các ngõ ra ở dưới dạng đèn hiển thị, tín hiệu liên lạc hoặc thay làm đổi các thông số vật lý
Giao tiếp interface)
vào/ra (I/O
Thiết bị nhập Thiết bị xuất
ộ
dữ liệu, bus điều khiển, bus địa chỉ) và cũng có 3 bus để giao tiếp với bên ngoài Các bus không nhất thiết phải có độ rộng giống nhau Thường độ rộng các bus là 8bit, 16bit, 32bit… Ngoài ra, ở mỗi khối còn có các thanh ghi riêng của khối
Vi xử lý/vi điểu khiển gồm bộ số học và logic, bộ giải mã lệnh, bộ tuần tự điều khiển
Trang 173.1.2 Phần mềm (ứng dụng nhúng)
Khảo sát phần cứng hệ thống nhúng Viết chương trình phần mềm nhúng Kết hợp phần cứng và phần mềm Chạy thử và kiểm tra, sửa lỗi
Hệ thống nhúng hoàn chỉnh Hình 3.4: Quá trình xây dựng ứng dụng nhúng
Khảo sát phần cứng hệ thống nhúng: tìm hiểu về cấu trúc nền tảng của hệ thống, môi trường phát triển phần mềm, xây dựng lưu đồ hoạt động của toàn bộ hệ thống Phần cứng của hệ thống nhúng có thể được thiết kế xây dựng từ đầu hoặc cải tiến từ các hệ thống đã có Bộ phận thiết kế phần cứng phải có tài liệu, các đặc tả về phần cứng để cho các lập trình viên căn cứ theo yêu cầu, theo các lưu đồ mà lập trình cho
lý Tuy nhiên trong trường hợp dùng cùng một loại vi xử lý và các cấu hình phần cứng tương tự nhau thì tốt nhất là dùng một trình biên dịch C và sử dụng ngôn ngữ
C, mục đích là giảm thời gian viết mã chương trình cho các dự án sau này Ngoài ra
có thể dùng vi xử lý chuyên biệt cho một trình biên dịch C bất kỳ nào đó có sẵn thay vì chúng ta tự viết ra Ngôn ngữ Assembly vần đang được nhiều người sử dụng hơn so với C bởi vì tốc độ xử lý nhanh của nó
Kết hợp phần cứng và phần mềm: quá trình viết mã chương trình cho một hệ thống nhúng có thể được thực hiện bởi bất kỳ ai có khả năng lập trình thông thường Tuy nhiên, việc kết nối phần cứng đòi hỏi khả năng hiểu biết về điện tử và chế tạo bản mạch điện tử Đây cũng là phần chính trong công việc tạo nên hệ thống nhúng Người thiết kế hệ thống phải có hiểu biết về vi xử lý/vi điều khiển như sơ đồ đấu nối chân linh kiện, điện áp hoạt động, khả năng tải dòng vào/ra, nhiệt độ hệ thống…
Trang 18để kết nối chúng vào hệ thống và điều khiển Ví dụ một hệ thống điều khiển đèn giao thông có thể kết nối với một số thiết bị ngoại vi (như bàn phím, bàn điều khiển, màn hình hiển thị) cho phép con người tương tác với hệ thống nhúng
Chạy thử và kiểm tra, sửa lỗi: đây là quá trình quan trọng và tốn thời gian nhất trong quá trình xây dựng một hệ thống nhúng Nó làm cho hệ thống nhúng có khả năng chịu đựng lỗi (về cả phần mềm lẫn phần cứng) Phần mềm cũng như phần cứng phải được kiểm tra bằng cách cho hệ thống hoạt động và thực hiện mô phỏng tất cả các khả năng có thể xảy ra cho hệ thống Quá trình kiểm lỗi cũng bao gồm tất
cả những tác động có thể xảy ra cho hệ thống (như nhiệt độ, độ ẩm môi trường, sự
va chạm…)
3.1.3 Tổng thể
Đến lúc này chúng ta có thể nghĩ rằng việc xây dựng một hệ thống nhúng là rất khó khăn, đặc biệt là công việc liên quan đến phần cứng Hoặc là điều gì sẽ xảy
ra nếu lỗi được phát hiện sau khi đã kết hợp phần cứng và phần mềm với nhau Vấn
đề này được giải quyết rất tốt bằng các phần mềm mô phỏng và bộ mô phỏng
Phần mềm mô phỏng là chương trình dùng để mô phỏng sự hoạt động của mã chương trình của hệ thống nhúng trước khi được nạp vào bộ nhớ ROM của hệ thống nhúng
Bộ mô phỏng là một bản mạch đa năng dành cho vi xử lý/vi điều khiển và các thiết bị khác kết nối tạm lại với nhau thành hệ thống nhúng Khi hệ thống đã kiểm tra là hoạt động tốt thì mới sản xuất bản mạch điện tử thích hợp và xây dựng nên hệ thống nhúng hoàn chỉnh Các bộ mô phỏng này do chính các nhà sản xuất vi xử lý/vi điều khiển sản xuất ra hoặc chúng ta cũng có thể tự tạo nên
Nếu phần mềm mô phỏng không tương thích với ngôn ngữ Assembly thì chúng ta có thể dùng trình biên dịch C trên nền vi xử lý/vi điều khiển, để có thể chuyển mã chương trình từ C sang Assembly Nếu cần những chức năng phức tạp (ví dụ trong điện thoại di động, kính viễn vọng thì có thể dùng các hệ thống thời gian thực) Một vài hệ điều hành thời gian thực thông dụng là RT Linux, VxWorks…Các hệ thống này đã được tích hợp sẵn các chức năng đặc biệt bên trong phần cứng mà không cần đến các phần mềm nhúng
Để phát triển một hệ thống nhúng hoàn chỉnh trước kia mất nhiều thời gian và công sức, thiết kế phần cứng xong thì mới bắt đầu viết phần mềm Ngày nay, ta có thể tiến hành song song hai công việc trên nhờ vào các kit phát triển hệ thống nhúng
đa năng Chúng gồm các thành phần mạch điện tử kèm bộ vi xử lý, các thiết bị lưu trữ, các thiết bị giao tiếp vào/ra cơ bản, các cổng mở rộng,…Các kit này rất thuận tiện, có thể xây dựng thành các hệ thống nhúng cơ bản, đơn giản một cách nhanh
chóng, dùng cho nhiều mục đích khác nhau (multi-purpose kit) Người sử dụng chỉ
cần viết mã chương trình, tải vào kit và sử dụng, hoặc có thể kết nối thêm các thiết
bị ngoại vi để sử dụng, giảm đáng kể thời gian thiết kế phần cứng
Trang 19Trong việc thiết kế một hệ thống nhúng, ngoài việc xem xét giá thành, độ tin cậy, thời gian sử dụng của sản phẩm còn phải xem xét đến các yếu tố sau [4]:
a Năng lực xử lý (processing power): cách thức chung hay dùng để so sánh là
MIPS (số triệu câu lệnh thực hiện được trong 1 giây) Nếu vi xử lý có MIPS càng lớn thì càng tốt, thực hiện cùng công việc nhanh hơn các vi xử lý có MIPS nhỏ hơn Ngoài ra, còn nhiều yếu tố quan trong khác khi so sánh năng lực xử lý Có thể kể đến là độ rộng thanh ghi Trong vi xử lý, có rất nhiều thanh ghi, có độ rộng từ 8 đến
64 bit Ngày nay, trong những máy vi tính, các vi xử lý có độ rộng thanh ghi là 32 bit và 64 bit Trong khi đó, một hệ thống nhúng được thiết kế với các vi xử lý đời cũ
và rẻ tiền thì thanh ghi chỉ có độ rộng 8 bit hay 16 bit
b Bộ nhớ (memory): dung lương bộ nhớ (RAM hay ROM) cần dùng để lưu trữ
mã thực thi chương trình và dữ liệu tính toán Nhà thiết kế phần cứng thường phải tính toán lựa chọn dung lượng bộ nhớ một cách tối ưu Và dung lượng bộ nhớ cần
sử dụng cũng cho biết loại vi xử lý cần dùng Thực tế, độ rộng thanh ghi của vi xử
lý cho biết dung lượng bộ nhớ tối đa có thể truy cập được (Một thanh ghi địa chỉ có
độ rộng 8 bit chỉ có thể định vị được 256 ô nhớ)
c Thời gian thực (Real-time): tất cả các hệ thống đều phải có đáp ứng cho tác
động của người sử dụng hay tác động từ môi trường bên ngoài trong một khoảng thời gian xác định Thông thường hệ thống sẽ có một khoảng thời gian trễ để có kết quả thực hiện sau các tác động Nếu hệ thống cần có thời gian trễ ngắn và bắt buộc phải có đáp ứng trả về trong khoảng thời gian giới hạn thì được gọi là hệ thống thời gian thực Hệ thống thời gian thực có thể chia làm hai loại là “soft real-time” và
“hard real-time” Hệ thống “hard real-time” nếu không thực hiện kịp, đáp ứng kịp lại các tác động sẽ gây ra các hậu quả lớn, có thể làm sụp đổ toàn hệ thống, gây nguy hiểm tính mạng con người (hệ thống điều khiển máy bay, điều khiển lò phản ứng ) Hệ thống “soft real-time” nếu đáp ứng chậm trễ so với thời gian tới hạn thì không gây hậu quả nghiêm trọng
d Sự giao tiếp (Communication): thông thường một hệ thống không hoạt động
độc lập, chúng cần có sự liên kết với nhau hay ít nhất cần có sự giao tiếp với các thiết bị khác để hoạt động Các giao tiếp này có thể được thực hiện thông qua các cổng, các ngõ kết xuất tín hiệu, như giao tiếp mạng LAN, giao tiếp hồng ngoại, giao
tiếp không dây (wireless)
3.2 Hệ điều hành thời gian thực
Hệ điều hành và hệ thống nhúng cùng phối hợp hoạt động trong một môi trường ràng buộc lẫn nhau mà bộ nhớ và năng lực xử lý của vi xử lý bị giới hạn Và chúng phải cung cấp các dịch vụ cho các ứng dụng, cho người sử dụng trong một thời hạn được đặt ra (deadline) Vì vậy, trong hệ thống nhúng, hệ điều hành bắt buộc phải sử dụng hệ điều hành thời gian thực (RTOS - Real-Time Operating System) Hệ điều hành thời gian thực cũng có chức năng và nhiệm vụ như các hệ
Trang 20điều hành thông thường nhưng phải thỏa mãn thêm các tiêu chí khác cho hệ thống nhúng thời gian thực Có thể kể ra một số tiêu chí sau:
- Phải được thiết kế theo hướng đa nhiệm (multitasking) để tận dụng hết hiệu năng của vi xử lý Để thực hiện điều này, kernel phải cung cấp, hỗ trợ đầy đủ tính năng của vi xử lý và tích hợp hoàn toàn trên phần cứng sẽ dùng (hardware target) Ngoài ra còn phải hỗ trợ được nhiều loại vi xử lý khác nhau
- Chế độ đa nhiệm của kernel phải được điều khiển hoạt động để đáp ứng lại các tác động theo sự kiện hệ thống bên ngoài và bên trong
- Kernel phải hỗ trợ cho nhiều task có thể hoạt động độc lập hay có tương tác với nhau, mỗi task có độ ưu tiên riêng của chúng trong khi được thực hiện theo cơ chế lập lịch
- Kernel có thể bị ngắt quãng (interruptible), hoạt động hiệu quả với bộ nhớ sử dụng càng ít càng tốt và cơ chế hoạt động là tiên đoán được (predictable)
Các dịch vụ cơ bản của nhân hệ điều hành:
Nhân – kernel là thành phần chính yếu của một hệ điều hành, cung cấp hầu
hết các chức năng cơ bản cho các ứng dụng để hoạt động trên bộ vi xử lý Nhân của
một RTOS cung cấp một “lớp rút gọn” (abstraction layer), để các phần mềm ứng
dụng bên trên không cần biết đến chi tiết phần cứng của vi xử lý bên dưới
Phần mềm ứng dụng (Application software)
Hệ điều hành thời gian thực (Real-time Operating System)
Phần cứng (Hardware) Hình 3.5: Kiến trúc cơ bản hệ thống nhúng thời gian thực
RTOS cung cấp 5 nhóm dịch vụ cơ bản cho các phần mềm ứng dụng hoạt động Có thể mô tả như sau [5]:
1 Quản lý tác vụ (Task Management)
2 Đồng bộ và giao tiếp giữa các tác vụ với nhau (Intertask communication and
synchronization)
3 Định thời gian (Timers)
Trang 214 Cấp phát bộ nhớ động (Dynamic Memory Allocation)
5 Quản lý các thiết bị xuất/nhập (Device I/O Supervisor)
Hình 3.6: Năm nhóm dịch vụ cơ bản mà nhân hệ điều hành thời gian thực cung cấp
Nhóm dịch vụ cơ bản nhất của kernel là quản lý task Các dịch vụ này cho phép các nhà phát triển phần mềm thiết kế chương trình thành các thành phần nhỏ, mỗi thành phần này thực hiện một chức năng nào đó trong một thời gian tới hạn deadline của mình Mỗi thành phần này gọi là một tác vụ – task Quản lý task cho phép tạo ra task, và gán các dộ ưu tiên cho mỗi tak Ngoài ra còn thực hiện điều hành, lập lịch
và thực thi các task của phần mềm ứng dụng
Nhóm dịch vụ thứ hai là đồng bộ và giao tiếp các task Chúng cho phép trao đổi thông tin giữa các task với nhau, tiến hành đồng bộ hoạt động các task
Nhóm dịch vụ định thời cung cấp bộ đếm thời gian, trì hoãn task, hoặc time-out
Hầu hết các RTOS kernel cung cấp dịch vụ cấp phát bộ nhớ động Chúng cho phép task tạm sử dụng một phần bộ nhớ trong một khoảng thời gian nào đó Hoặc phần
bộ nhớ này có thể được chuyển từ task này qua task khác, mục đích để trao đổi một khối lượng lớn dữ liệu giữa các task
Một số RTOS kernel cũng cung cấp dịch vụ quản lý thiết bị xuất nhập Chúng cung cấp một framework để tổ chức và truy cập các trình điều khiển thiết bị phần cứng
(hardware device driver), rất cần thiết trong các hệ thống nhúng
Trang 22Ngoài các dịch vụ ở cấp kernel, nhiều RTOS còn cung cấp thêm các thành phần hệ điều hànḥ tùy chọn khác như dịch vụ cấp cao (quản lý tập tin, giao tiếp mạng, quản
lý cơ sở dữ liệu, giao tiếp đồ họa Các dịch vụ này có dung lượng lớn và phức tạp hơn các dịch vụ cơ bản của kernel Vì vậy, chỉ khi có yêu cầu cần thiết phải có các dịch vụ cấp cao thì chúng mới được tích hợp vào trong kernel Mục đích để giảm mức sử dụng bộ nhớ của hệ thống nhúng
Trang 23Chương 4: Giới thiệu T-Engine
4.1 T-Engine là gì?
Ngày nay, công nghệ đã được dùng để xây dựng các thiết bị điện tử tiên tiến
và các hệ thống nhúng tạo nên một nền tảng kỹ thuật cho môi trường máy tính
nhúng Những môi trường như thế gọi là môi trường "ubiquitous computing", môi
trường mà các thiết bị đều được tích hợp máy vi tính và chúng liên kết với nhau thành mạng Để tiến đến kỷ nguyên "ubiquitous computing", các nhà công nghệ cao
và các chuyên gia phải kết hợp lại để cùng xây dựng nên các thiết bị điện tử công nghệ cao (như điện thoại di động và các thiết bị nghe nhìn) Tuy nhiên, việc phát triển các phần mềm điều khiển cho các thiết bị này hoặc các hệ thống nhúng lại cực
kỳ phức tạp do phải đòi hỏi thiết bị hoạt động hiệu quả trong môi trường bị giới hạn
về tài nguyên phần cứng Đồng thời, các khó khăn trong phát triển sản phẩm còn do yêu cầu bức thiết của khách hàng, đòi hỏi có sản phẩm tính năng cao, giá thành hạ trong thời gian sớm nhất Và cho đến gần đây, người ta vẫn còn gặp khó khăn do môi trường phát triển phần mềm hệ thống nhúng chưa chuẩn hóa, khó khăn khi phân phối các phần mềm trung gian, trình điều khiển thiết bị và những thành phần phần mềm khác Phải chú ý rằng, tiến trình phát triển phần mềm một cách hiệu quả
là bước quan trọng trong việc thiết lập nên môi trường "ubiquitous computing"
Một trong các giải pháp để giải quyết vấn đề trên là dự án T-Engine, được hình thành nhằm mục đích chuẩn hóa nền tảng phát triển các hệ thống nhúng Nó bao gồm việc hoàn chỉnh cấu hình phần cứng và môi trường phát triển, bao gồm cả phân phối và cung cấp khả năng chuyển đổi các thành phần phần mềm Dự án này, cùng với phần lớn các công ty sản xuất linh kiện điện tử lớn của Nhật Bản, các nhà sản xuất phần mềm, các hãng sản xuất hệ thống nhúng, các công ty sản xuất thiết bị
đồ dùng gia đình đã thành lập diễn đàn T-Engine Diễn đàn hoạt động như nhà tài trợ chính cho dự án, tiến hành nghiên cứu và phát triển, đồng thời thực hiện chuẩn hóa cho kiến trúc T-Engine [1]
Dựa vào những thành quả của dự án TRON, với kết quả là hệ điều hành ITRON, khắc phục những điểm yếu của ITRON, dự án T-Engine đã cung cấp thêm
các đặc tả gọi hàm hệ thống (system call) của hệ điều hành, cung cấp nhiều giao tiếp
phần cứng và phần mềm và đặc tả định dạng cho các đối tượng Hệ điều hành thời gian thực tiêu chuẩn chạy trên T-Engine gọi là T-Kernel T-Kernel hoạt động như một nền tảng để hoạt động cho nhiều phần mềm trung gian và ứng dụng trên T-
Engine, và là nhân chung (common kernel) cho môi trường "ubiquitous computing"
Môi trường phát triển cho T-Engine là mở Môi trường phát triển GNU chạy trên máy tính sử dụng Linux, phần mềm T-Monitor sẽ chuyển các chương trình đối tượng vào T-Engine và tất cả các tính năng được cung cấp kèm theo trong bộ kit
phát triển T-Engine (T-Engine development kit) Các hàm quản lý tập tin sẽ quản lý
các chương trình đối tượng trên bộ nhớ ngoài (card ATA) Bộ diễn dịch dòng lệnh
Trang 24(CLI-Command Line Interpreter) sẽ thực hiện các lệnh qua giao tiếp với người sử dụng, thuận tiện phát triển ứng dụng
Dự án T-Engine không chi định kiểu CPU phải được dùng, do đó có thể dùng nhiều loại CPU khác nhau trong môi trường phát triển Các chương trình ứng dụng, phần mềm trung gian và chương trình điều khiển thiết bị có thể hoạt động trên nhiều loại CPU khác nhau và chỉ cần biên dịch lại
4.2 Kiến trúc T-Engine
Kiến trúc T-Engine: các thiết bị phần cứng T-Engine được phân loại thành 4 nhóm theo ứng dụng và kích thước của chúng
Hình 4.1: Kích thước các T-Engine
1 T-Engine tiêu chuẩn (Standard T-Engine): nền tảng để phát triển cho các thiết bị
đòi hỏi yêu cầu ở mức cao sự giao tiếp với người sử dụng, như thiết bị thông tin
di dộng với tính năng màn hình tinh thể lỏng và diều khiển bằng cảm ứng Kèm theo là các tính năng giao tiếp cao cấp như cổng giao tiếp USB hay giao tiếp serial
2 µT-Engine (microT-Engine): nền tảng để phát triển đặc biệt chuyên dụng cho
điều khiển thiết bị, yêu cầu giao tiếp người sử dụng ở mức đơn giản, không có màn hình tinh thể lỏng, không có màn hình cảm ứng
3 nT-Engine (nano T-Engine): là một nút mạng, chủ yếu sử dụng nguồn cung cấp
bên ngoài và kết nối có dây dẫn thành mạng thời gian thực Để phát triển các sản phẩm điện gia dụng kích thước nhỏ
Trang 254 pT-Engine (pico T-Engine): là nút mạng cực nhỏ, tiêu thụ nguồn thấp, là các
thành phần nhỏ nhất trong môi trường “ubiquitous computing” như các công tắc, thiết bị chiếu sáng, thiết bị cảm ứng, khóa, van…
4.2.1 Phần cứng T-Engine:
Phần cứng T-Engine tiêu chuẩn là một bo mạch CPU kích thước 75x120mm, một bo mạch LCD, bo mạch nguồn cung cấp, bo mạch mở rộng Bo mạch CPU của µT-Engine thì nhỏ hơn 60x85mm Các đặc tả tiêu chuẩn được cung cấp đầy đủ, phần cứng thì không bị giới hạn bởi kiến trúc CPU và có kích thước nhỏ gọn thuận lợi về thiết kế phần cứng hệ thống nhúng
Bảng 4.1: Đặc tả cấu hình phần cứng của T-Engine và µT-Engine [1]
Các đặc tả phần cứng T-Engine
Standard T-Engine µT-Engine
Real-time clock Có đồng hồ thời gian thực và lịch, có pin dự phòng
Bus mở rộng Có bus mở rộng, đầu nối tiêu chuẩn 140 chân
SH7760 của hãng Renesas là một microcomputer trang bị kèm theo bộ điều khiển màn hình tinh thể lỏng, điều khiển giao tiếp USB, và các thiết bị ngoại vi khác SH7760 thuộc dòng CPU SH4, dòng CPU SuperH RISC 32bit, có bộ đệm lệnh kích thước 16Kbytes và bộ đệm toán hạng 32Kbytes, chế độ của bộ đệm có thể
là copy-back hoặc write-through Ngoài ra còn kèm theo đơn vị quản lý bộ nhớ MMU, bộ điều khiển trạng thái bus cho phép kết nối với bộ nhớ SDRAM Vì vậy SH7760 thuận tiện cho phát triển các sản phẩm giá thành thấp, tốc độ xử lý cao, tiêu thụ điện năng thấp, thích hợp trong các hệ thống nhúng Sản phẩm chính được dùng trong điều khiển tự động, hệ thống bán hàng tự động, các thiết bị cầm tay, các ứng dụng định vị GPS, các ứng dụng trong công nghiệp…
4.2.2 Kiến trúc phần mềm T-Engine:
Trang 26T-Kernel mở rộng
Các T-Kernel mở rộng khác (T-Linux, T-Java…)
T-Monitor: T-Monitor gồm các thành phần để thiết lập trạng thái phần cứng lúc
ban đầu và khởi động hệ thống, kèm theo chức năng dò tìm lỗi cơ bản Khi bật nguồn cho T-Engine, thành phần đầu tiên được khởi động là T-Monitor, tiếp theo T-Monitor khởi tạo trạng thái phần cứng ban đầu và khởi động T-Kernel
T-Kernel: T-Kernel là một hệ điều hành thời gian thực, được kế thừa các thành tựu
và kỹ thuật của ITRON
Devices Drivers: Các trình điều khiển thiết bị thực hiện việc điều khiển hoạt động
các thiết bị phần cứng Trên T-Engine các thiết bị cơ bản đều đã có các trình điều khiển T-Kernel quản lý các trình điều khiển này và các ứng dụng có thể sử dụng các trình điều khiển thiết bị thông qua việc gọi các hàm hệ thống T-Kernel Mã nguồn của các trình điều khiển thiết bị thông dụng được phổ biến rộng rã trợ cho việc phát triển các trình điều khiển thiết bị cho các ứng dụng và phần cứng chuyên biệt khác Các nhà cung cấp hệ thống có thể tham khảo mã nguồn và viết các trình diều khiển thiết bị riêng cho mình
Kernel Extensions: “Kernel mở rộng” mở rộng thêm các chức năng của
T-Kernel, và hiện thực các chức năng của hệ thống ở mức độ cao Ví dụ: T-Kernel không cung cấp các hàm xử lý tập tin nhưng T-Kernel mở rộng thì có Trong T-Kernel mở rộng tiêu chuẩn gồm quản lý bộ nhớ ảo và giao tiếp người dùng bằng đồ họa (GUI) Ngoài ra, còn có T-Kernel mở rộng Tiny, cung cấp môi trường gần giống ITRON, và T-Linux, T-Java… cũng đang được phát triển
Middleware: Rất nhiều các phần mềm trung gian hoạt động trên T-Engine đã được
viết ra theo nhu cầu chung, cung cấp các chức năng như network protocol stack, hệ thống tập tin, xử lý ngôn ngữ, phần mềm bảo mật liên quan đến eTRON, giao tiếp
đồ họa với người sử dụng, xử lý âm thanh và Java Sự xuất hiện của nhiều phần
Trang 27mềm trung gian tạo thuận lợi cho phát triển sản phẩm ứng dụng trong một thời gian ngắn Để khuyến khích việc phân phối các sản phẩm này, thông tin về việc sử dụng sản phẩm và các khả năng phối hợp các sử dụng được quản lý trong cơ sở dữ liệu bởi dự án T-Engine
Chương trình chạy trên T-Monitor
Hình 4.3: Các kiểu phần mềm ứng dụng trên T-Engine [6]
Chương trình chạy trên T-Monitor: chương trình chạy trên T-Monitor sẽ thực thi, thao tác trực tiếp trên phần cứng và không sử dụng các hàm hệ thống T-Kernel Được viết ra chủ yếu để kiểm tra, thử nghiệm hoạt động của phần cứng Chương trình được nạp vào không gian bộ nhớ vật lý và được thực thi bởi T-Monitor
Chương trình chạy trên T-Kernel: đây là dạng chương trình cơ bản và thông thường nhất được viết chạy trên T-Engine, gần giống với các ứng dụng nhúng cơn bản sử dụng ITRON Các ứng dụng người dùng này gồm một hoặc nhiều tác vụ (gọi là các
task), vài task này sẽ có sử dụng các hàm hệ thống T-Kernel Chương trình được
thực thi thường trú trong bộ nhớ và có thể được nạp vào không gian bộ nhớ ảo Chương trình chạy trên T-Kernel mở rộng: chương trình chạy trên T-Kernel mở rộng khác khá nhiều so với chương trình chạy trên T-Kernel Chương trình trên T-
Kernel mở rộng hoạt động theo các đơn vị gọi là tiến trình (process), các process
này có thể sử dụng được các hàm mở rộng (do T-Kernel mở rộng cung cấp) hơn là dùng các hàm hệ thống T-Kernel Những hàm mở rộng này bao gồm các hàm hệ thống mở rộng như điều khiển tiến trình, điều khiển tập tin và giao tiếp giữa các tiến trình Chương trình được thực thi trên bộ nhớ ảo của T-Kernel mở rộng
Sử dụng các hàm T-Kernel mở rộng
Sử dụng các hàm T-Kernel
Sử dụng các hàm T-Monitor
T-Kernel mở rộng
T-Kernel
T-Monitor
Trang 284.3 T-Kernel
4.3.1 Các đặc tính của T-Kernel
T-Kernel được chia làm 3 phần: hệ điều hành T-Kernel/OS (Operating System), quản lý hệ thống T-Kernel/SM (System Manager) và hỗ trợ dò tìm lỗi T-Kernel/DS (Debugger Support) Các hàm chức năng của từng phần được liệt kê trong bảng sau:
Bảng 4.2: Các hàm chức năng của từng thành phần trong T-Kernel
Các hàm quản lý task Các hàm giao tiếp và đồng bộ task Các hàm quản lý bộ nhớ
Các hàm điều khiển ngắt/xử lý ngoại lệ Các hàm thời gian
T-để phát triển các ứng dụng chạy trên T-Kernel, người lập trình nhất thiết phải hiểu
rõ về T-Kernel/OS Các chức năng mà T-Kernel/SM cung cấp là sự mở rộng hàm chức năng của T-Kernel và không có trong ITRON T-Kernel/DS cung cấp các hàm chức năng cho các công cụ phát triển ứng dụng, như dò tìm lỗi
4.3.2 Quản lý động các nguồn lực
Trong T-Kernel và ITRON, chúng ta gọi các nguồn lực (resource), các thành phần hoạt động trong kernel, là các đối tượng kernel (kernel object) Task, semaphore, mailbox… được gọi là các đối tượng kernel Khi chúng ta viết chương trình chạy trên T-Kernel thì cũng đồng thời tạo ra đối tượng kernel
Kernel thực hiện quản lý động các nguồn lực, điều này rất quan trọng để Engine có thể cung cấp chức năng như là một nền tảng phân phối cho mền mềm
Trang 29T-trung gian, và rất khác biệt so với ITRON T-Kernel tự động gán mã số nhận dạng
(ID) cho các đối tượng kernel Ở cả T-Kernel và ITRON, các đối tượng kernel được
phân biệt với nhau bằng mã số nhận dạng Ví dụ, các task được phân biệt bằng task
ID, và các semaphore được phân biệt bằng semaphore ID
Quản lý bộ nhớ cũng được thực hiện dựa trên việc cấp phát động bởi Kernel Trong ITRON, khi người dùng quyết định cấp phát bộ nhớ, nó sẽ được xác định một cách cố định ngay lúc chương trình được khởi tạo, còn gọi là tạo bản đồ
T-bộ nhớ Người dùng phải tự định vị, xác định vùng nhớ cần dùng cho chương trình
và chuyển nó tới ITRON Còn trong T-Kernel người dùng chỉ việc xác định kích thườc vùng nhớ cần dùng, sau đó khi chương trình được thực thi, T-Kernel sẽ tự động cấp phát vùng nhớ theo yêu cầu
4.3.3 Quản lý bộ nhớ của T-Kernel
Tính năng nổi bật nhất của T-Kernel là có các hàm chức năng quản lý bộ nhớ
hỗ trợ đơn vị quản lý bộ nhớ “Memory Management Unit” (MMU) Đơn vị quản lý
bộ nhớ là phần cứng hiện thực việc bảo vệ bộ nhớ và bộ nhớ ảo, và đã được thiết kế
là chức năng cơ bản vốn có trong CPU của T-Engine tiêu chuẩn Trong trường hợp không cần dùng đến MMU, chương trình trên T-Engine sẽ được thực thi trên không gian địa chỉ vật lý trong bộ nhớ thực hiện có trên phần cứng T-Engine Còn chương trình trên ITRON sẽ thực thi trên không gian địa chỉ vật lý và nếu cần sử dụng MMU, chương trình sẽ được thực thi trong không gian địa chỉ luận lý, nằm trên đầu
bộ nhớ ảo
Không gian địa chỉ luận lý của T-Kernel
Trong T-Kernel, không gian địa chỉ luận lý (logical address space) được chia thành không gian địa chỉ task (task space) và không gian địa chỉ chia sẻ (shared
space) Không gian địa chỉ task là không gian bộ nhớ mà chỉ có task sở hữu nó mới
có quyền truy cập Thông thường, một task sẽ sở hữu một không gian bộ nhớ task riêng của nó Nhiều task cũng có thể sở hữu đồng thời một không gian bộ nhớ Nhưng ngược lại thì không
Không gian địa chỉ chia sẻ là không gian bộ nhớ có thể được truy cập bởi tất
cả các task Không gian bộ nhớ chia sẻ cả miền bộ nhớ mà hệ thống sử dụng và miền mà các task dùng chung
Task A chỉ có thể được truy cập Task Space #1 và shared space Task B và Task C chỉ có thể được truy cập Task Space #2 và shared space
Trang 30Hình 4.4: Không gian bộ nhớ task và không gian bộ nhớ chia sẻ
Bằng cách thiết lập không gian địa chỉ task cho mỗi task, sẽ ngăn ngừa việc task này có thể làm hư hỏng vùng nhớ của task kia Nhưng đồng thời cũng có thể cho phép các task chia sẻ thông tin dùng chung qua không gian bộ nhớ chia sẻ
4.3.4 Các mức độ bảo vệ bộ nhớ
Trong T-Kernel, có các mức độ bảo vệ được thiết lập cho các vùng nhớ Có 4 cấp độ bảo vệ từ level 0 đến level 3, level 0 là mức cao nhất Tương ứng, có các mức độ thực thi của task tương đương với mức độ bảo vệ được thiết lập trong task Task với mức dộ thực thi level N có thể truy cập vùng nhớ trong mức bảo vệ level
CPU hỗ trợ hai chế độ: chế độ ưu tiên (privileged mode) và chế độ người dùng (user
mode), mức độ 0, 1 và 2 sẽ được gán cho privileged mode, và mức độ 3 cho user
mode
Trang 314.3.5 Quản lý bộ nhớ ảo
Khi sử dụng bộ nhớ ảo, ta có thể sử dụng một dung lượng bộ nhớ vượt quá dung lượng bộ nhớ vật lý có trên thiết bị, bằng cách hoán đổi vùng nhớ với các vùng nhớ mở rộng khác, trên đĩa cứng, thẻ nhớ… Việc hoán đổi này sẽ làm giảm hiệu năng hoạt động của thiết bị, có thể là mất đi tính thời gian thực của hệ thống
Trong T-Kernel, ta có thể ấn định cho một vùng là thường trú (resident) hay không thường trú (non-resident) Vùng nhớ là resident sẽ luôn luôn hiện hữu trong bộ nhớ
thực và không bao giờ bị hoán đổi ra bộ nhớ tạm bên ngoài
4.3.6 Tiến trình phát triển một ứng dụng
Chương trình nguồn
(mã nguồn main.c)
Các file tiêu đề (header.c) Trình biên dịch C (C compiler)
Hình 4.5: Tiến trình phát triển một ứng dụng nhúng
File đối tượng (main.o) Các thư viện ngôn ngữ C, các thư viện khác
Chương trình liên kết (đối tượng+thư viện)
Chương trình thực thi
Trang 32Chương 5: T-ENGINE/SH7760
5.1 Giới thiệu:
Personal Media Corporation (PMC) là hãng Nhật Bản đầu tiên tiến hành thương mại hóa các kit phát triển T-Engine (T-Engine development kit, gọi tắt là T-Engine kit) theo các đặc tả của T-Engine Kit này bao gồm bo mạch CPU, hệ điều hành thời gian thực T-Kernel, các đặc tả và các tài liệu khác trên CD-ROM và môi trường phát triển trên nền tảng Linux Kit này rất thuận tiện cho các công việc liên quan đến T-Engine, nghiên cứu và phát triển các phần mềm hệ thống nhúng, hoặc nhằm mục đích huấn luyện, đào tạo PMC đã đưa ra rất nhiều kit với các dòng CPU khác nhau, có thể thấy ở bảng sau:
T-Engine/SH7760 T-Engine/7751R T-Engine/SH7727 T-Engine/VR5500 T-Engine/TX4956 T-Engine/ARM926-MB8 T-Engine/ARM922-LH7 T-Engine/ARM920-MX1 T-Engine/ARM720-LH7
µT-Engine/M32104 µT-Engine/VR4131 µT-Engine/AMR7-LH79532
MA3
µT-Engine/V850E-Bảng 5.1: Các bộ kit phát triển T-Engine của PMC [7]
Trong đó kit T-Engine/SH7760 là có cấu hình mạnh, được trang bị CPU đời mới nhất của hãng Renesas, dòng SH4, và kèm theo đầy đủ các tính năng cần thiết tối thiểu của một hệ thống nhúng
Một bộ T-Engine/SH7760 kit bao gồm:
- Hướng dẫn môi trường phát triển GNU (dạng PDF): giải thích cách cài đặt
và sử dụng công cụ phát triển GNU trên Linux
Trang 33• Các đặc tả:
- Đặc tả về T-Monitor (dạng PDF): đặc tả chính thức của T-Monitor
- Đặc tả T-Kernel (dạng PDF): đặc tả chính thức của T-Kernel
- Đặc tả về sự thực hiện (dạng PDF): chi tiết của đặc tả các thành phần của Monitor/T-Kernel tùy thuộc vào sự hiện thực T-Engine/SH7760
Trang 34Hình 5.2: Mặt trước bo mạch LCD
Hình 5.3: Mặt sau bo mạch LCD
Trang 35Hình 5.4: Mặt trước bo mạch CPU
Hình 5.5: Mặt sau bo mạch CPU
Trang 37Hình 5.8: Kết nối hệ thống
Hình 5.9: Chân connector nối tiếp CN1
Stt Chân Tên tín hiệu Ra/Vào Ghi chú
Trang 3813 Dành riêng x ISP TDI
Bảng 5.2: Các tín hiệu của các chân connector CN1
Kết nối nguồn điện:
Hình 5.10: Kết nối nguồn điện
Mở, tắt T-Engine: Để mở hay tắt T-Engine nhấn công tắc SW1 trên bo mạch CPU
Để mở T-Engine nhấn và giữ công tắc trong 0.5 giây hay hơn Để tắt ta phải nhấn
và giữ công tắc ít nhất 2 giây
Kết nối bo mạch debug:
Kết nối bo mạch debug ở khe mở rộng CN2 trên T-Engine
Trang 39Hình 5.11: Kết nối bo mạch debug
Lưu ý: Tắt nguồn T-Engine trước khi nối debug board hay tháo EPROM Khi gắn
lại EPROM kiểm tra chiều kết nối như hình sau
Hình 5.12: Kết nối EPROM
Chi tiết hơn về các đặc điểm kỹ thuật của T-Engine SH7760 có thể tham khảo
tài liệu: SH7760 T-Engine Development Kit – User’s Manual có trên đĩa CDROM kèm theo kit
Phần tiếp theo chúng ta sẽ xem xét những điểm chính của các đặc tả T-Engine mà SH7760 kit đã thực hiện
Trang 40Chương 6: Các đặc tả của T-Engine/SH7760