Tải bản đầy đủ (.pdf) (135 trang)

Nghiên cứu thiết kế và hiện thực software modem cho thiết bị PDA trên nền hệ thống nhúng UCDIMM MC68 VZ238 dưới hệ điều hành UCLINUX

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (859.08 KB, 135 trang )

Đại Học Quốc Gia Tp. Hồ Chí Minh
TRƯỜNG ĐẠI HỌC BÁCH KHOA
-------------------

NGUYỄN TRÍ NĂNG

NGHIÊN CỨU, THIẾT KẾ VÀ HIỆN THỰC
SOFTWARE-MODEM CHO THIẾT BỊ PDA TRÊN
NỀN HỆ THỐNG NHÚNG uCdimm MC68VZ328
DƯỚI HỆ ĐIỀU HÀNH uCLinux

LUẬN VĂN THẠC SĨ
Chuyên Ngành Công Nghệ Thông Tin

TP. HỒ CHÍ MINH, THÁNG 04 NĂM 2005


Đại học Quốc Gia Tp. Hồ Chí Minh

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc
---------

TRƯỜNG ĐẠI HỌC BÁCH KHOA
---------

Tp.HCM, ngày 17 tháng 5 năm 2005

NHIỆM VỤ LUẬN VĂN THẠC SĨ
Họ và tên học viên: NGUYỄN TRÍ NĂNG


Phái: Nam

Ngày tháng năm sinh: 05 - 02 - 1975

Nơi sinh: Lâm Đồng

Chuyên ngành: Công Nghệ Thông Tin

MSHV: CNTT13.012

I. TÊN ĐỀ TÀI:
Nghiên cứu, thiết kế và hiện thực software-modem cho thiết bị PDA trên nền hệ
thống nhúng uCdimm MC68VZ328 dưới hệ điều hành uClinux.
II. NHIỆM VỤ VÀ NỘI DUNG:
Nhiệm vụ của đề tài là nghiên cứu hệ thống nhúng và hệ điều hành cho hệ thống
nhúng, nghiên cứu software-modem, hiện thực thiết bị PDA sử dụng hệ thống nhúng
và hệ điều hành nhúng. PDA bao gồm màn hình LCD, touch-screen và softwaremodem.
III. NGÀY GIAO NHIỆM VỤ: Bảo vệ đề cương ngày 01-07-2004.
IV. NGÀY HOÀN THÀNH NHIỆM VỤ: Bảo vệ luận án tốt nghiệp ngày 11-05-2005.
V. CÁN BỘ HƯỚNG DẪN: Tiến só Lê Ngọc Minh.
Cán bộ hướng dẫn

CN bộ môn QL chuyên ngành

TS. Lê Ngọc Minh
Nội dung và đề cương luận văn thạc só đã được Hội đồng chuyên ngành thông qua.
Ngày
Trưởng phòng đào tạo sau đại học

tháng


năm

Trưởng khoa quản lý ngành


TÓM TẮT

Luận án này có nhiệm vụ nghiên cứu thực hiện software-modem cho hệ thống nhúng
chạy trên hệ điều hành mã nguồn mở uClinux xuất phát từ nhu cầu các hệ thống nhúng
ngày nay được sử dụng rộng rãi trong nhiều lónh vực và chúng rất cần trao đổi dữ liệu
với các hệ thống khác.
Software-modem thích hợp được sử dụng trong các hệ thống nhúng để trao đổi dữ liệu
vì nó có kích thước nhỏ gọn, dễ nâng cấp, ít tiêu hao năng lượng và giá thành thấp. Tốc
độ truyền dữ liệu của software-modem có thể không cao vì việc xử lý tín hiệu thu phát
được thực hiện bởi một gói phần mềm chạy trên CPU của hệ thống, tuy nhiên việc trao
đổi dữ liệu của các hệ thống nhúng thường không cần tốc độ cao lắm.
Hệ điều hành uClinux được sử dụng có phiên bản 2.4.x và hệ thống nhúng được sử
dụng là uCdimmVZ của ArcturusNetworks. Software-modem được xây dựng dạng một
module device-driver của kernel hệ điều hành, nó tương tác với hệ điều hành dựa trên
các cơ chế và tiện ích hệ thống. Phần cứng cần phải có thêm của hệ thống là một chip
codec chuyển đổi A/D-D/A lấy mẫu tín hiệu để xử lý.
Hiện thực luận văn thiết kế một PDA sử dụng hệ thống nhúng bao gồm các chức năng
hiển thị LCD, điều khiển bằng touch-screen và có thể trao đổi dữ liệu thông qua
software-modem. Kết quả thực hiện đề tài có thể xem như một ví dụ cho những ai quan
tâm đến việc sử dụng hệ thống nhúng và hệ điều hành uClinux.

Trang i



ABSTRACT
Based on the broadly used demand of the embedded systems and their requirement of
exchange information with other systems, this thesis deals with and implements a
software-modem for the embedded systems which use the open source code operation
system uClinux.
Software-modem is appropriate for used in the embedded systems to exchange the
information because it offers the small hardware space, easy upgradation, energy saving
and low cost. The data transmision speed of the software-modem may be not as fast as
the normal modem, due to it consumes the system’s CPU processing time. Actually,
software-modem is a software packet is used to process the transmission signal replaced the DSP chip of the normal modem. The software packet is executed by the
system’s CPU itself. However, in the embedded systems, the exchange information
normmally does not require too fast and the data rate of the software-modem is
acceptable.
In this thesis, the operation system uClinux kernel version 2.4.x. and the embedded
system uCdimmVZ of the ArcturusNetworks Corp. is chosen to use. The softwaremodem is designed in a form of a device-driver module of the operation system’s
kernel. It interacts with the operation system based on the system utilities. The
additional hardware required for the system is a codec A/D-D/A converter - signal
sampling chip.
The thesis designs and implements a PDA which uses the above embedded system and
operation system. The PDA has a LCD, a touch-screen control and a software-modem. It
can exchange data with other systems via the software-modem. This experimental result
can be treated as an example for whom are interested in using embedded systems and
uClinux operation system.

Trang ii


LỜI CẢM ƠN

Trước tiên tôi xin gửi lời cảm ơn chân thành đến Thầy TS. Lê Ngọc Minh, người đã tận

tình giúp đỡ và giảng dạy tôi trong suốt thời gian học tập cũng như trong thời gian làm
luận án thạc só. Luận án được hoàn thành chính là nhờ công lao to lớn của Thầy.
Tôi cũng xin gởi lời cảm ơn đến các Thầy Cô trong khoa Công Nghệ Thông Tin trường
Đại Học Bách Khoa TP. Hồ Chí Minh và nhiều Thầy Cô khác đã giảng dạy, hướng dẫn
tôi học tập đến ngày hôm nay.
Xin cảm ơn sự giúp đỡ và tạo điều kiện của công ty AKIRA để tôi có thời gian thực hiện
luận văn này. Xin cám ơn sự hợp tác của nhân viên các công ty Motorola,
ArcturusNetwork,… đã cung cấp mã nguồn hệ điều hành nhúng uClinux và nhiều tài liệu
khác cho tôi nghiên cứu về hệ thống nhúng và hệ điều hành uClinux version 2.4.x.
Sau cùng tôi rất biết ơn sự động viên, giúp đỡ của gia đình và bạn bè đã cho tôi một
động lực mạnh mẽ để có thể nghiên cứu thực hiện luận văn này.
Đề tài không thể thiếu những sai sót, rất mong nhận được sự đóng góp của mọi người để
đề tài hoàn thiện hơn.

Trang iii


MỤC LỤC
Tóm tắt ........................................................................................................................... i
Abstract .......................................................................................................................... ii
Lời cảm ơn ..................................................................................................................... iii
Mục lục .......................................................................................................................... iv
Danh mục các hình ........................................................................................................ vii
Danh mục các bảng ....................................................................................................... viii
Thuật ngữ và ký hiệu dùng trong đề tài .................................................................. ix
CHƯƠNG 1: GIỚI THIỆU ...................................................................................1
1.1. ĐẶT VẤN ĐỀ ................................................................................................... 1
1.2. BÀI TOÁN HỆ ĐIỀU HÀNH VÀ SOFTWARE-MODEM CHO HỆ
THỐNG NHÚNG
2

1.2.1. Mục tiêu của đề tài ........................................................................................ 2
1.2.2. Phương hướng giải quyết bài toán ................................................................. 2
1.2.3. Các yêu cầu đặt ra.......................................................................................... 4
1.3. CẤU TRÚC LUẬN VĂN ................................................................................ 5
CHƯƠNG 2. CÁC CÔNG TRÌNH LIÊN QUAN ...............................................7
2.1. HỆ ĐIỀU HÀNH CHO CÁC HỆ THỐNG NHÚNG....................................... 7
2.2. SOFTWARE-DEVICE VÀ SOFTWARE-MODEM........................................ 7
2.3. SỬ DỤNG HỆ THỐNG NHÚNG ĐỂ LÀM HARDWARE-DEVICE............ 9
CHƯƠNG 3. CƠ SỞ LÝ THUYẾT ......................................................................10
3.1. HỆ ĐIỀU HÀNH UCLINUX............................................................................ 10
3.1.1. Xây dựng và thực thi module......................................................................... 11
3.1.2. Thời gian trong hệ điều hành......................................................................... 12
3.1.3. Wait queues .................................................................................................... 13
3.1.4. Asynchronous notification.............................................................................. 14
3.1.5. Task queue vaø tasklet..................................................................................... 16
3.1.6. Device driver module..................................................................................... 19
3.1.7. Xử lý interrupt ............................................................................................... 25
3.2. TRUYỀN DỮ LIỆU BẰNG MODEM QUA MẠNG ĐIỆN THOẠI .............. 28
3.2.1. Mã hóa biến đổi A/D-D/A ............................................................................. 28
3.2.2. Điều chế và giải điều chế.............................................................................. 30
3.2.3. Bộ lọc số ......................................................................................................... 35
Trang iv


CHƯƠNG 4. THIẾT KẾ VÀ HIỆN THỰC ĐỀ TÀI .........................................39
4.1. MODULE SOFTWARE-MODEM ................................................................... 39
4.1.1. Giao tiếp với ứng dụng................................................................................... 40
4.1.1.1. Method open ...............................................................................................40
4.1.1.2. Method release ...........................................................................................41
4.1.1.3. Method read................................................................................................42

4.1.1.4. Method write...............................................................................................42
4.1.1.5. Method poll.................................................................................................43
4.1.2. Tương tác với OS kernel ................................................................................ 44
4.1.2.1. Interrupt handler ........................................................................................44
4.1.2.2. Task-queue/bottom-half ..............................................................................45
4.1.2.3. Wait-queues và asynchronous-notification ................................................45
4.1.3. Xử lý dữ liệu ................................................................................................... 46
4.1.3.1. Tần số lấy mẫu ..........................................................................................47
4.1.3.2. Xử lý số floating-point ...............................................................................47
4.1.3.3. Các cấu trúc dữ liệu điều khiển thu và phát .............................................48
4.1.3.4. Circular buffer............................................................................................51
4.1.3.5. Data pump ..................................................................................................53
4.1.3.5.1. Thiết lập kết nối ................................................................................................. 53
4.1.3.5.2. Điều chế và giải điều chế................................................................................... 54
4.1.3.5.3. Hiện thực data-pump.......................................................................................... 70

4.1.3.6. Data handler...............................................................................................75
4.1.3.7. AT command parser vaø command handler .................................................80
4.1.3.8. State machime.............................................................................................81
4.2. MODULE TOUCH-SCREEN VAØ LCD ........................................................... 82
4.2.1. Module touch-screen ...................................................................................... 82
4.2.2. Module LCD ................................................................................................... 83
4.3. THIẾT KẾ PHẦN CỨNG ................................................................................. 83
4.4. KẾT QUẢ THỰC HIỆN ĐỀ TÀI ..................................................................... 85
4.4.1. Hệ điều hành cho hệ thống nhúng................................................................. 85
4.4.2. Software-modem ............................................................................................ 85
4.4.3. Hiện thực PDA................................................................................................ 86
CHƯƠNG 5. KẾT LUẬN .....................................................................................87
5.1. HẠN CHẾ CỦA LUẬN VĂN .......................................................................... 87
5.2. ĐÓNG GÓP CỦA LUẬN VĂN ....................................................................... 88

5.3. PHÁT TRIỂN VÀ ỨNG DỤNG KẾT QUẢ LUẬN VĂN .............................. 88
THƯ MỤC THAM KHẢO ...................................................................................90

Trang v


PHỤ LỤC A. CÀI ĐẶT MÔI TRƯỜNG PHÁT TRIỂN HỆ ĐIỀU HÀNH
uClinux, XÂY DỰNG MODULE VÀ ỨNG DỤNG NHÚNG ....A-1
A.1. CÀI ĐẶT MÔI TRƯỜNG LÀM VIỆC ........................................................... A1
A.2. XÂY DỰNG MODULE VÀ ỨNG DỤNG...................................................... A1
A.2.1. Xây dựng module cho hệ điều hành............................................................. A1
A.2.1.1. Khai báo module để biên dịch ................................................................... A1
A.2.1.2. Cài đặt module vào kernel......................................................................... A3
A.2.2. Xây dựng ứng dụng nhúng ............................................................................ A4
A.3. BIÊN DỊCH, DEBUG HỆ ĐIỀU HÀNH VÀ ỨNG DỤNG ........................... A5
A.3.1. Biên dịch hệ điều hành và module ............................................................... A5
A.3.2. Debug ứng dụng nhúng ................................................................................. A5
A.3.3. Debug module của hệ điều hành .................................................................. A6
PHỤ LỤC B. MÃ NGUỒN HIỆN THỰC MỘT SỐ GIẢI THUẬT XỬ LÝ
TÍN HIỆU .......................................................................................B-1
PHỤ LỤC C. THỜI GIAN ĐÁP ỨNG INTERRUPT VÀ TỐC ĐỘ XỬ LÝ ...C-1
PHỤ LỤC D. THIẾT KẾ BỘ LỌC SỐ BẰNG PHẦN MỀM MATLAB ........D-1
D.1. CÀI ĐẶT MATLAB VÀ THƯ VIỆN THIẾT KẾ BỘ LỌC SỐ .................... D-1
D.1.1. Hàm thiết kế bộ lọc FIR................................................................................ D-1
D.1.2. Hàm thiết kế bộ lọc IIR................................................................................. D-3
D.2. THIẾT KẾ BỘ LỌC SỐ CHO ĐỀ TÀI ........................................................... D-3
PHỤ LỤC E. SƠ ĐỒ MẠCH ĐIỆN THIẾT KẾ PHẦN CỨNG PDA .............E-1
PHỤ LỤC F. CHƯƠNG TRÌNH ỨNG DỤNG MẪU TRÊN PDA ...................F-1
PHỤ LỤC G. BẢNG THUẬT NGỮ VIỆT-ANH ĐỐI CHIẾU ........................G-1


Trang vi


DANH MỤC CÁC HÌNH
Hình 1. Mô hình module software-modem của hệ điều hành........................................3
Hình 2. Cấu tạo của hardware-modem .........................................................................8
Hình 3. Cấu tạo của software-modem...........................................................................8
Hình 4. Hệ thống nhúng M5407C3 chuyên trách làm software-device .......................9
Hình 5. Tiến trình thời gian khi sử dụng task queue .....................................................18
Hình 6. Các tham số của method read ..........................................................................23
Hình 7. Mạng điện thoại và kết nối giữa các user/modem ...........................................28
Hình 8. Sơ đồ khối biến đổi Sigma-delta A/D ...............................................................29
Hình 9. Sơ đồ khối giải điều chế FSK non-coherent.....................................................30
Hình 10. Điều chế 16_QAM ..........................................................................................31
Hình 11. Phân bố tín hiệu 16_QAM..............................................................................32
Hình 12. Giải điều chế tín hiệu 16_QAM .....................................................................32
Hình 13. Scramble và descramble.................................................................................34
Hình 14. Mức năng lượng của các mẫu dữ liệu của một baud .....................................34
Hình 15. Sơ đồ khối cách phục hồi sóng mang .............................................................35
Hình 16. Bộ lọc số tổng quát 4-cấp-tới và 3-cấp-lui....................................................36
Hình 17. Bộ lọc FIR N-cấp ...........................................................................................37
Hình 18. Bộ lọc FIR-Vi phân ........................................................................................37
Hình 19. Bộ lọc IIR 1-cấp tác dụng như bộ tích phân ..................................................38
Hình 20. Sơ đồ khối thiết kế software-modem .............................................................39
Hình 21. Sơ đồ khối xử lý dữ liệu software-modem .....................................................46
Hình 22. Lược đồ thời gian thiết lập kết nối V.21 ........................................................53
Hình 23. FSK Tx data pump ..........................................................................................54
Hình 24. Cấu trúc FSK Tx data pump...........................................................................55
Hình 25. FSK Rx data pump..........................................................................................55
Hình 26. Cấu trúc FSK Rx data pump...........................................................................56

Hình 27. Phổ tần giải điều chế binary FSK..................................................................56
Hình 28. Sơ đồ khối phát DPSK....................................................................................59
Hình 29. Sơ đồ khối thu DPSK ......................................................................................60
Hình 30. Sơ đồ khối clock-recovery DPSK ...................................................................61
Hình 31. Các điểm dùng làm decision thu DPSK .........................................................61
Hình 32. Phân bố tín hiệu 16_ QAM.............................................................................64
Hình 33. Sơ đồ khối phát QAM .....................................................................................64
Hình 34. Sơ đồ khối thu QAM .......................................................................................65
Hình 35. Sơ đồ khối clock-recovery QAM.....................................................................67
Hình 36. Liên hệ giữa V.42 và các phần khác ..............................................................75
Hình 37. Sơ đồ khối xử lý dữ liệu V.42 .........................................................................76
Hình 38. Kết nối V.42bis ...............................................................................................77
Hình 39. Rừng các cây đại diện cho từ điển .................................................................78
Hình 40. Xử lý phát dữ liệu V.14...................................................................................79
Hình 41. Xử lý thu dữ liệu V.14.....................................................................................79
Trang vii


Hình 42. Hoạt động của command handler ..................................................................81
Hình 43. Hoạt động của state machine .........................................................................81
Hình 44. Sơ đồ thiết kế các module phần cứng PDA ....................................................84

DANH MỤC CÁC BẢNG
Bảng 1. Tiêu chuẩn modem của ITU-T .........................................................................4
Bảng 2. Tần số sóng mang của một số chuẩn modem của ITU ....................................29
Bảng 3. Mã hóa DPSK của V.22...................................................................................59
Bảng 4. Kết quả software-modem .................................................................................85

Trang viii



THUẬT NGỮ VÀ KÝ HIỆU DÙNG TRONG ĐỀ TÀI
A/D-D/A
AFE
AGC
API
BPF
CODEC
COFF
CPU
CRC
DAA
DCE
DMA
DPCM
DPSK
DSP
ELF
FCS
FSK
FIR
FIFO
IIR
IP
IRQ
ISR
LCD
LPF
MODEM
OS

PCM
PDA
PSK
QAM
RAM
ROM
SPI
µC
µP
FPU

Analog/Digital-Digital/Analog
Analog Front End
Auto Gain Control
APplication Interface
Band Pass Filter
COde and DECode
Common Object File Format
Central Processing Unit
Cyclic Redundancy Check
Data Access Arrangement
Data Communication Equiment
Direct Memory Access
Differential Pulse Code Modulation
Differential Phase Shift Keying
Digital Signal Processing
Executable and Linking Format
Frame Check Sequence
Frequency Shift Keying
Finite Impulse Response

First In First Out
Infinite Impulse Response
Internet Protocol
Interrupt ReQuest
Interrupt Service Routine
Liquid Crystal Display
Low Pass Filter
MOdulation and DEModulation
Operation System
Pulse Code Modulation
Personal Digital Assistant
Phase Shift Keying
Quadrature Amplitude Modulation
Random-Access Memory
Read-Only Memory
Serial Peripheral Interface
Micro-Controller
Micro-Processor
Floating Point Unit
Trang ix


Giới thiệu

CHƯƠNG 1. GIỚI THIỆU
1.1. ĐẶT VẤN ĐỀ
Ngày nay việc ứng dụng công nghệ thông tin để phát triển kinh tế, xã hội đã trở
thành một mục tiêu không thể thiếu ở những quốc gia phát triển cũng như đang
phát triển. Rất nhiều các lónh vực trong cuộc sống đang được tin học tự động hóa
bằng những hệ thống xử lý và điều khiển bằng các hệ thống nhúng. Việc trao đổi

thông tin giữa các hệ thống này giữ vai trò rất quan trọng trong việc vận hành và
phát triển ứng dụng hệ thống nhúng.
Các hệ thống nhúng có nhiều ưu điểm như cho phép người sử dụng phát triển sản
phẩm một cách nhanh chóng, giá thành sản phẩm rẻ nhờ sản xuất số lượng
nhiều, độ tin cậy cao,… Vì vậy hệ thống nhúng ngày càng phát triển mạnh và
thay thế các hệ thống khác. Trong hệ thống nhúng, nhiều tính năng được nhúng
sẵn để đa năng hóa ứng dụng nên việc đưa hệ điều hành nhúng vào hệ thống để
nó quản lý phần cứng, phân chia tài nguyên sẽ mang lại rất nhiều lợi ích như
phát triển hệ thống nhanh hơn, độ tin cậy cao hơn. Việc sử dụng hệ điều hành
còn cho phép phát triển phần mềm ứng dụng nhanh hơn, độ tin cậy cao hơn.
Tốc độ xử lý của các bộ vi xử lý tăng rất nhanh ở những năm gần đây, trong các
hệ thống thường CPU còn dư rất nhiều thời gian. Mặt khác, các hệ thống lại rất
cần thu nhỏ diện tích, giảm giá thành, và nâng cấp thường xuyên về phần cứng.
Vì vậy có thể tận dụng thời gian dư thừa của CPU để thực thi một module phần
mềm software-device được xây dựng xử lý thay thế một thiết bị phần cứng
hardware-device của hệ thống.
Dù không có tốc độ cao, nhưng rất phổ biến và dễ triển khai ở nhiều nơi khác
nhau nên trao đổi dữ liệu qua mạng điện thoại bằng thiết bị modem chiếm phần
rất lớn trong trao đổi dữ liệu nói chung. Software-modem được nghiên cứu và
phát triển bằng cách dùng một module phần mềm xử lý thay thế các modem
phần cứng thông thường. Software-modem có ưu điểm giảm được rất nhiều phần
cứng, dễ dàng nâng cấp phần mềm, công suất tiêu thụ điện ít, giá thành rẻ. Vì
vậy, việc sử dụng nó trong các hệ thống nhúng là rất thích hợp.

Trang 1


Giới thiệu

Mục đích của đề tài là nghiên cứu hệ điều hành uClinux cho hệ thống nhúng,

nghiên cứu software-modem cho hệ thống nhúng và hệ điều hành nhúng
uClinux. Ngoài ra, đề tài còn thiết kế một ứng dụng, sử dụng hệ thống nhúng để
hiện thực một PDA. Việc thiết kế và thực hiện không làm mất tính tổng quát về
việc ứng dụng hệ thống nhúng và hệ điều hành uClinux trong thiết kế các sản
phẩm công nghệ cao. Thực hiện đề tài cũng mong muốn góp phần nào nghiên
cứu, như một ví dụ, cho các nhà thiết kế và sản xuất trong nước có thể nhanh
chóng nắm bắt, ứng dụng vào thực tế việc sử dụng hệ thống nhúng và hệ điều
hành uClinux cho các sản phẩm công nghệ cao.
1.2. BÀI TOÁN HỆ ĐIỀU HÀNH VÀ SOFTWARE-MODEM CHO HỆ
THỐNG NHÚNG
1.2.1. Mục tiêu của đề tài
Thực hiện đề tài nhắm tới các mục tiêu:
• Nghiên cứu hệ thống nhúng và hệ điều hành cho hệ thống nhúng.
• Nghiên cứu thực hiện software-device thay cho hardware-device. Đề tài
thực hiện một software-modem, nhưng từ đó có thể rút ra một số kinh
nghiệm về thực hiện các software-device thay thế hardware-device khác.
• Ứng dụng hệ thống nhúng để đưa ra sản phẩm nhanh chóng và hiệu quả.
Đề tài thực hiện thiết kế một PDA gồm có màn hình LCD, touch-screen
và software-modem.
1.2.2. Phương hướng giải quyết bài toán
• Đề tài chọn một hệ thống nhúng đa năng và một hệ điều hành nhỏ gọn
mã nguồn mở Linux để xây dựng. Hệ thống nhúng được sử dụng là
uCdimm DragonBallVZ của Arcturus-Networks, sử dụng processor
Motorola MC68VZ328, tần số clock 33MHz, 2MB ROM và 8MB RAM.
Hệ điều hành được sử dụng là uClinux.
• Việc nghiên cứu xây dựng software-modem theo phương hướng tìm hiểu
hoạt động chung nhất của các hardware thông thường, mà ở đây là
hardware-modem, rồi từ đó tìm cách giải quyết nó bằng một module phần

Trang 2



Giới thiệu

mềm với sự hỗ trợ của các tiện ích của hệ điều hành. Vấn đề về xử lý thời
gian thực, tốc độ xử lý không đồng bộ được giải quyết bằng các interrupt
trong hệ điều hành và bộ đệm circular-buffer có kích thước hợp lý. Số dấu
chấm động được chuyển sang dạng nguyên-phân Q14 hay Q15 để xử lý.
Lọc nhiễu, AGC, scramble,… được nghiên cứu và xử lý dựa theo lý
thuyết xử lý tín hiệu số, hiện thực bằng phần mềm. Software-modem sẽ
được nghiên cứu xây dựng dạng một module-driver của hệ điều hành để
ứng dụng truy xuất dễ dàng như một hardware-modem.
Software-modem được nghiên cứu xây dựng dưới dạng một module của
hệ điều hành theo mô hình sau:

OS Kernel

Phone line

Software-modem module
CODEC

Data
pump

Circular
buffer

Chú thích:
Controlling


Hardware

API

Application

Circular
buffer

Circular buffer
Aplication interface
Kernel utility
Data processing
Data flow

Handling
interrupts

bottom-half
process

Wait queues
Task queues
Asynchronousnotification

Control direction

Hình 1. Mô hình module software-modem của hệ điều hành
Để giải quyết việc phải đáp ứng thời gian thực rất ngắn của chu kỳ lấy

mẫu biến đổi A/D-D/A (CODEC) của modem, và việc yêu cầu cần phải
có thời gian dài để tính toán xử lý dữ liệu được lấy mẫu, hướng giải quyết
sử dụng cơ chế interrupt-bottom-half. Ngoài ra để giao tiếp bất đồng bộ
giữa software-modem với applications một cách trong suốt, hướng giải
quyết sử dụng các cơ chế wait/task-queues, asynchronous-notification và
nhiều cơ chế khác nữa.

Trang 3


Giới thiệu

1.2.3. Các yêu cầu đặt ra
Hệ điều hành
Kể từ kernel version-2.0 hệ điều hành Linux bắt đầu được phát triển cho hệ
thống nhúng sử dụng hệ thống file COFF. Yêu cầu về hệ điều hành sử dụng
trong đề tài:
• Kernel version-2.4
• Hệ thống file ELF
• Có các cơ chế xử lý như interrupt, wait-queue, task-queue, asynchronousnotification,…
Software-modem
Các yêu cầu xây dựng modem của đề tài:


Để đảm bảo tính tổng quát, software-modem có thể hoạt động được theo
các chuẩn modem V.21, V.22, V.22bis, V.23 và V.32, bao gồm các phương
pháp điều chế và mã hóa FSK, DPSK, QAM, Trellis-code QAM như bảng
1 dưới đây.
ITU
STANDARDS


RELEASED
DATE

DATA
RATES

MODULATION
METHODS

V.32

1993

2.4kbps
4.8kbps
9.6kbps

Trellis-Coded
QAM

V.23

1988

1.2kbps
600kbps

FSK


V.22bis

1984

2.4kbps

QAM

V.22

1982

1.2kbps
600kbps

DPSK

V.21

1981

300kbps

FSK

Bảng 1. Tiêu chuẩn modem của ITU-T
Ghi chú:
QAM: Quadrature Amplitude Modulation
DPSK: Differential Phase Shift Keying
FKS: Frequency Shift Keying

Trellis-Coded: mã hóa Trellis
Trang 4


Giới thiệu

• Software-modem được hiện thực dưới dạng một module-software của
kernel hệ điều hành, không chiếm quá nhiều thời gian xử lý của CPU,
không ảnh hưởng đến các task khác của hệ điều hành và các ứng dụng.
• Hiện thực đảm bảo hoạt động truyền nhận dữ liệu, truy cập điều khiển
đúng theo chuẩn các modem thông thường.
• Đảm bảo tính trong suốt giao tiếp để không phải sửa đổi các ứng dụng.
Hiện thực PDA
• Sử dụng hệ điều hành uClinux-2.4.
• Có software-modem để truyền dữ liệu.
• Có LCD/touch-screen và driver của chúng.
• Thiết kế phần cứng sử dụng hệ thống nhúng uCdimm một cách tối ưu,
nhanh chóng và ít sử dụng linh kiện phụ nhất.
• Kết cấu nhỏ gọn có thể cầm tay được.
• Sử dụng nguồn pin, thời gian hoạt động chấp nhận được.
1.3. CẤU TRÚC LUẬN VĂN
Luận văn gồm 5 chương chính, với nội dung cơ bản như sau:
Chương 1: Giới thiệu về hệ thống nhúng, hệ điều hành cho hệ thống nhúng, việc
truyền dữ liệu trong hệ thống nhúng, vấn đề về software-device thay
cho hardware-device, cụ thể bằng software-modem cho hệ thống
nhúng, và việc thiết kế ứng dụng hệ thống nhúng.
Chương 2: Tóm tắt các công trình có liên quan đã công bố ở trong nước và ngoài
nước. Từ đó có các cơ sở để xây dựng đề tài, cũng như đảm bảo tính
đúng đắn và khả thi của đề tài.
Chương 3: Trình bày cơ sở lý thuyết có liên quan đến đề tài và phương pháp

được chọn lựa để nghiên cứu thực hiện giải quyết bài toán của đề tài,
bao gồm: hệ thống nhúng, hệ điều hành Linux, các cơ chế/tiện ích
của hệ điều hành dùng để giải quyết các vấn đề của softwaredevice, cơ chế của các module/driver của hệ điều hành, và lý thuyết
truyền dữ liệu, xử lý tín hiệu số liên quan đến đề tài.
Trang 5


Giới thiệu

Chương 4: Trình bày việc thiết kế và hiện thực đề tài. Xây dựng softwaremodem dạng một module-driver của kernel hệ điều hành uClinux,
tương tác giao tiếp giữa module với kernel và với application. Phần
này cũng trình bày hiện thực các vấn đề xử lý tín hiệu số, lọc số,
AGC, scramble, xử lý bất đồng bộ bằng circular-buffer,… Ngoài ra
phần này còn trình bày việc thiết kế PDA, giải quyết chống nhiễu
cho touch-screen của PDA, device-driver của touch-screen. Sau cùng
là kết quả thực hiện đề tài.
Chương 5: Kết luận: các hạn chế và đánh giá khả năng xây dựng các module
software xử lý dữ liệu thay cho hardware-device trong hệ điều hành
uCLinux; các đóng góp của đề tài, đưa ra hướng phát triển và ứng
dụng đề tài.
Phần phụ lục bao gồm:
Phụ lục A: Cài đặt môi trường phát triển hệ điều hành uClinux, xây dựng
module và ứng dụng nhúng. Hướng dẫn cách cài đặt môi trường làm
việc trên host-PC Linux, thao tác hiện thực, biên dịch, debug module
device-driver và ứng dụng.
Phụ lục B: Mã nguồn hiện thực một số giải thuật xử lý tín hiệu. Giải thuật điều
chế và giải điều chế DPSK bao gồm các giải thuật xử lý mã hóa tín
hiệu như modulation/demodulation, lọc số, scramble/descramble,
encode/decode, AGC, clock/carrier recovery,…
Phụ lục C: Thời gian đáp ứng interrupt và tốc độ xử lý: đo đáp ứng thời gian

thực xử lý interrupt và tốc độ xử lý tín hiệu của module softwaremodem của hệ thống nhúng và hệ điều hành uClinux.
Phụ lục D: Thiết kế bộ lọc số bằng phần mềm MATLAB.
Phụ lục E: Sơ đồ mạch điện thiết kế phần cứng PDA.
Phụ lục F: Chương trình ứng dụng mẫu trên PDA.
Phụ lục G: Bảng thuật ngữ Anh-Việt đối chiếu.

Trang 6


Các công trình liên quan

CHƯƠNG 2. CÁC CÔNG TRÌNH LIÊN QUAN
2.1. HỆ ĐIỀU HÀNH CHO CÁC HỆ THỐNG NHÚNG
Đầu tiên phải kể đến công trình phát triển hệ điều hành Linux cho hệ thống
nhúng. Hệ điều hành Linux ban đầu được xây dựng cho máy PC kiến trúc i286
của Intel, sau nó được cộng đồng phát triển trên nhiều kiến trúc khác nhau, cả
trên các server nhiều bộ xử lý. Có thể kể ra một số kiến trúc trong số đó là 68K,
Alpha, ARM, IA-64, PowerPC, SPARC, VR41xx,… Tuy nhiên việc đưa hệ điều
hành Linux chạy trên các hệ thống nhúng chỉ mới được bắt đầu gần đây. Do tính
chất đa dạng của hệ thống nhúng, nhờ cung cấp mã nguồn mở nên hệ điều hành
Linux rất thích hợp sử dụng trong các hệ thống nhúng. Nó cho phép các nhà phát
triển hệ thống nhúng nhanh chóng phát triển hệ điều hành cho kiến trúc phần
cứng của mình.
Hệ điều hành Linux cho hệ thống nhúng có tên là uClinux [13], quy định bản
quyền GNU/GPL, mã nguồn mở. uClinux đã và đang phát triển ngày càng nhiều
cho các hệ thống nhúng khác nhau. Khác với kiến trúc máy PC mà hệ điều hành
Windows chiếm lónh, uClinux chiếm phần khá lớn trong các hệ thống nhúng và
các thiết bị cầm tay.
2.2. SOFTWARE-DEVICE VÀ SOFTWARE-MODEM
Các nghiên cứu sử dụng một gói phần mềm thay thế cho thiết bị phần cứng trong

công nghệ máy tính đã và đang được nghiên cứu hiện thực thành công trên một
số loại thiết bị ở một số kiến trúc máy tính và hệ điều hành. Software-modem
được nghiên cứu xây dựng cho một số máy tính Laptop chạy hệ điều hành
Windows để giảm trọng lượng của máy. Tuy nhiên do khuyết điểm tiêu tốn khá
nhiều thời gian xử lý của CPU nên software-modem vẫn ít được sử dụng, nhất là
trong các trường hợp thường xuyên sử dụng đến modem. Các software-device
thường tương tác trực tiếp với hệ điều hành nên nó lệ thuộc rất nhiều vào hệ
điều hành. Nó phụ thuộc vào các cơ chế xử lý thời gian thực, cơ chế xử lý
interrupt, các vấn đề về timer, và việc xử lý các task,… của hệ điều hành.
Cấu tạo của hardware-modem bao gồm phần cứng chip xử lý tín hiệu số DSP,
RAM, chip điều khiển/giao tiếp µC, mạch lấy mẫu chuyển đổi A/D-D/A,…
Trang 7


Các công trình liên quan

Cấu tạo của software-modem, phần DSP, µC,… được thay bằng phần mềm, nhờ
vậy nó có kích thước nhỏ gọn, tiêu thụ điện ít hơn, giá thành rẻ hơn và dễ dàng
nâng cấp phần mềm. Khuyết điểm của software-modem cũng như các softwaredevice khác là đòi hỏi CPU phải tốn chi phí thời gian cho hoạt động chạy phần
mềm xử lý tín hiệu số thời gian thực. Ví dụ, [16] đo đạc software-modem
protocol V.92 chạy trên máy tính Pentium II 450MHz, nó chiếm đến 14.7% thời
gian của CPU.
Hình 2 mô tả sơ đồ khối cấu tạo của hardware-modem, hình 3 mô tả sơ đồ khối
cấu tạo của software-modem.
RAM
Phone line

DAA

Host computer


µC

AFE
A/D-D/A
(CODEC)

DSP

Hình 2. Cấu tạo của hardware-modem

Phone line

DAA

AFE
A/D-D/A
(CODEC)

Host computer

Hình 3. Cấu tạo của software-modem
DAA (Data Access Arrangement) làm nhiệm vụ đóng-ngắt kết nối giữa
modem và mạng điện thoại, làm tải giả (600Ω) khi modem được kết nối với
mạng điện thoại, nhận tín hiệu chuông từ mạng điện thoại, nó còn có chức
năng cách ly điện giữa modem và mạng điện thoại.
AFE (Analog Front End) làm nhiệm vụ chuyển đổi tín hiệu analog thu được
trên mạng điện thoại thành tín hiệu digital (A/D) để modem xử lý; và chuyển
đổi tín hiệu digital từ modem thành tín hiệu analog (D/A) trước khi phát lên
mạng điện thoại. AFE thường được chuyên môn hóa cho mạng điện thoại

bằng chip CODEC.

Trang 8


Các công trình liên quan

2.3. SỬ DỤNG HỆ THỐNG NHÚNG ĐỂ LÀM HARDWARE-DEVICE
Một số dự án sử dụng hệ thống nhúng đa năng lập trình phục vụ cho mục đích
đảm nhiệm chỉ chuyên trách chức năng của một hardware-device. Phải kể đến
dự án [21] dùng hệ thống nhúng M5407C3 của Motorola làm một softwaremodem tốc độ thấp. Các dự án này mang tính demo, thử nghiệm. Hệ thống
nhúng được sử dụng phục vụ duy nhất chức năng thay thế một hardware-device,
chúng không dùng hệ điều hành, không dùng các cơ chế/tiện ích xử lý thời gian
thực, không được đặt trong một môi trường xử lý multi-task của hệ điều hành
cũng như các vấn đề khác của hệ điều hành để giải quyết vấn đề.
Hình 4 mô tả sơ đồ kiến trúc của dự án này, được trích từ [21].

Soft Device

Controller

Data pump

Daughter card CODEC

UART1

Si3021

In modem mode


UART0

Si3015

RJ11
Phone line

RS232

Embedded system M5407C3

Hình 4. Hệ thống nhúng M5407C3 chuyên trách làm software-device
Các dự án này, đứng trên góc nhìn của hệ điều hành, hệ thống nhúng được xem
như là các hardware-device thông thường. Tuy nhiên, đứng trên góc độ hiện
thực/chế tạo phần cứng, các dự án này dùng phần mềm thay thế cho phần cứng.
Đề tài có tham khảo nhiều về phần cấu trúc dữ liệu và giải thuật xử lý tín hiệu
của các dự án [21] này.
Thông tin của [21] được cung cấp chỉ để phục vụ cho việc phát triển hệ thống và
phần mềm có sử dụng các sản phẩm của nhà phát triển dự án - Motorola. Nhà
phát triển dự án không cho phép sử dụng các thông tin này để thiết kế hay chế
tạo các vi mạch tích hợp.

Trang 9


Cơ sở lý thuyết

CHƯƠNG 3. CƠ SỞ LÝ THUYẾT
Chương này trình bày các vấn đề mang tính lý thuyết liên quan đến việc giải

quyết bài toán đặt ra của đề tài, bao gồm:
• Hệ điều hành uClinux: việc lập trình hệ thống và xây dựng các module hệ
thống trong hệ điều hành uClinux, đặc biệt là việc xây dựng các module
device driver; việc sử dụng các tiện ích hệ thống để giải quyết vấn đề thời
gian tính toán xử lý dữ liệu.
• Truyền dữ liệu qua mạng điện thoại: lý thuyết về truyền dữ liệu, xử lý tín
hiệu số liên quan đến việc truyền dữ liệu qua mạng điện thoại bằng
modem.
3.1. HỆ ĐIỀU HÀNH UCLINUX
uClinux là hệ điều hành mã nguồn mở Linux được phát triển cho các hệ thống
nhúng. Không gian bộ nhớ của uClinux theo mô hình đơn-phẳng 32bit. Khi một
process gọi hàm hệ thống fork() để sinh ra một process con, quá trình thực thi
của nó bị tạm ngưng đến khi process con gọi hàm hệ thống exec() hoặc hàm
exit(). Process cha và các process con dùng chung một stack và không gian bộ
nhớ biến toàn cục, vì vậy khi trở về từ process con, process cha phải kiểm tra lại
xem stack có bị phá vỡ không. Trong uClinux một số tương đối nhiều các API
của Linux được hiện thực. Ngoài các vấn đề trên thì lập trình trong uClinux và
Linux đều giống nhau.
Thường kernel của Linux bao gồm nhiều module gọi là các kernel-module. Các
module này có thể được nạp vào hay gỡ ra khỏi hệ thống vào bất kỳ thời điểm
nào tùy theo yêu cầu. Việc module hóa kernel mang lại nhiều ưu điểm, như tăng
thêm một chức năng cho hệ thống mà không cần phải khởi động lại hệ thống. Về
khía cạnh lập trình, module hóa kernel giúp cho việc xây dựng thêm các chức
năng mới cho hệ thống bằng cách thêm các module mới mà không cần phải dịch
lại hệ thống.
Hệ điều hành Linux được xét đến có kernel version 2.4.x. Một số các cơ chế,
tiện ích, gọi hệ thống,… để phát triển và tương tác với module được dùng trong
việc xây dựng software-modem của đề tài sẽ được xét đến sau đây.
Trang 10



Cơ sở lý thuyết

3.1.1. Xây dựng và thực thi module
Xây dựng kernel-module là làm việc trên một môi trường dự án rất lớn, các vấn
đề về lập trình phải hết sức cẩn thận. Khai báo và export một symbol phải đảm
bảo không bị trùng lặp với các symbol của hệ thống. Các symbol của hệ thống
đang được export được lưu trong file /proc/ksyms.
Có thể nạp vào và tháo bỏ một kernel-module ra khỏi hệ thống bằng cách sử
dụng lệnh insmod và rmmod của hệ thống. Để liệt kê các kernel-module đã
được nạp vào hệ thống có thể sử dụng lệnh lsmod của hệ thống.
Một module trước tiên phải có định nghóa symbol MODULE, sau đó là khai báo
#include <linux/module.h>. Biên dịch module phải có định nghóa preprocessor
_ _KERNEL_ _.
Kernel-module ít nhất phải có hai hàm: init_module() là hàm khởi động được
gọi khi module được nạp vào hệ thống và cleanup_module() là hàm kết thúc
được gọi trước khi module bị tháo bỏ khỏi hệ thống, các hàm này không có đối
số (void). Các version Linux mới sau này từ 2.4 trở đi cho phép linh động trong
việc đặt tên các hàm này bằng cách gọi gián tiếp qua hai macro sau:
module_init (start_mod);
module_exit (stop_mod);

Khai báo các hàm start và stop như sau:
static int _ _init start_mod (void) { …}
static void _ _exit stop_mod (void) { …}

Các macro _ _init và _ _exit giúp hệ thống tốn ít bộ nhớ cho module hơn
và khi không được biên dịch dạng module, hàm của nó sẽ không bị che,
tức có thể thấy được như các symbol hệ thống.
Một số các vấn đề khác khi xây dựng module như version, license, author,… là:

KERNEL_VERSION (2,4,22); //để kiểm tra version kernel khi biên dịch
MODULE_LICENSE("GPL");

//kernel có thể bị hư khi nạp các module
//không được cấp bản quyền

MODULE_AUTHOR(DRIVER_AUTHOR);

//tác giả của module

MODULE_DESCRIPTION(DRIVER_DESC); //mô tả module
module_parm(myint, "i"); //được dùng trong việc cấp tham số cho
//module khi module được nạp vào kernel

Trang 11


Cơ sở lý thuyết

3.1.2. Thời gian trong hệ điều hành
Khoảng thời gian trong kernel: hệ thống dùng cơ chế timer-interrupt phát sinh
từ phần cứng hệ thống để xác định một khoảng thời gian. Thời gian của
khoảng thời gian interrupt này được xác định bởi kernel qua giá trị HZ. HZ
có giá trị phụ thuộc vào kiến trúc hệ thống và được định nghóa trong
<linux/param.h>. Đa số các kiến trúc, HZ đều có giá trị là 100, một số
kiến trúc, HZ có giá trị là 1024 hoặc 20.
Khi hệ thống khởi động, biến jiffies (được khai báo trong <linux/sched.h>) sẽ
được khởi gán bằng 0. Mỗi khi timer-interrupt xảy ra, giá trị của biến jiffies
tăng lên một đơn vị. Jiffies xác định số khoảng thời gian trôi qua từ khi hệ
thống được khởi động.

Delay: delay thời gian dài (ví dụ: x sec) có thể thực hiện nhờ xét biến jiffies:
unsigned long j = jiffies + x * HZ;
while (jiffies < j);

Delay thời gian ngắn phải dùng các hàm hệ thống udelay(), mdelay(). Các
hàm này thực chất là các vòng lặp software, vì vậy không nên dùng chúng
để delay trong thời gian dài.
Timer hệ thống: dùng để lên lịch trình thực thi một hàm ở một thời điểm trong
tương lai. Mỗi khi đăng ký với timer hệ thống hàm chỉ được thực thi một
lần. Hệ thống cho phép tạo số lượng timer tùy ý. Cấu trúc của timer được
khai báo trong <linux/timer.h> như sau:
struct timer_list {
struct timer_list *next;
struct timer_list *prev;
unsigned long expires;
unsigned long data;
void (*function)(unsigned
volatile int running;};

/* never touch this */
/* never touch this */
/* the timeout, in jiffies */
/*argument to the handler */
long); /*handler of timeout*/
/* added in 2.4; don’t touch */

Thời gian định thời của timer dựa vào biến jiffies, timer->function sẽ được
gọi khi biến jiffies>=timer->expires, thường giá trị này được gán trước
bằng cách cộng biến jiffies khi bắt đầu định thời với khoảng gian mong
muốn định thời. Sau khi được khởi gán, timer_list được thêm vào một danh

Trang 12


Cơ sở lý thuyết

sách có thứ tự theo timer->expires. Danh sách này được thăm dò cứ khoảng
100 lần trong một giây.
Các hàm dùng để thao tác trên timer hệ thống gồm có:
void init_timer(struct timer_list *timer); Hàm này được hiện thực inline,

dùng để khởi gán timer.
void add_timer(struct timer_list *timer); Dùng để thêm một timer vào

danh sách các timer được tích cực của hệ thống
int mod_timer(struct timer_list *timer,unsigned longexpires); Dùng để

thay đổi giá trị expires của timer.
int del_timer(struct timer_list *timer); Dùng để loại bỏ một timer ra khỏi

danh sách timer hệ thống trước khi nó đạt tới giá trị định thời. Khi một
timer đạt tới giá trị định thời nó sẽ tự động bị loại khỏi danh sách timer
hệ thống mà không cần gọi hàm này.
3.1.3. Wait queues
Đôi khi một process phải chờ một sự kiện nào đó trước khi nó có thể tiếp tục xử
lý, ví dụ như chờ dữ liệu đến hay chờ một process khác kết thúc, lúc đó process
sẽ ngủ chờ, tạm ngưng thực thi và giải phóng CPU. Khi sự kiện chờ đợi xảy ra,
process phải được đánh thức để tiếp tục xử lý.
Trong Linux, việc quản lý ngủ chờ và đánh thức các process sử dụng cấu trúc dữ
liệu wait_queue_head_t, bao gồm một queue các process chờ một sự kiện. Cấu
trúc dữ liệu này được định nghóa trong <linux/wait.h>. Khai báo và khởi gán

queue như sau:
wait_queue_head_t queue;
init_waitqueue_head (&queue);

Nếu sử dụng khai báo tónh, queue có thể được khởi gán ở thời gian biên dịch:
DECLARE_WAIT_QUEUE_HEAD (queue);

Sau khi đã khai báo và khởi gán wait queue, các process có thể ngủ chờ trên các
queue này nhờ gọi một trong các hàm sau:
sleep_on (wait_queue_head_t *queue); Đưa process vào chế độ ngủ chờ trên

queue. Process được đánh thức khi gọi hàm wake_up trên chính queue này.
Trang 13


Cơ sở lý thuyết
interruptible_sleep_on (wait_queue_head_t *queue); Giống như hàm trên nhưng

process có thể được đánh thức do một tín hiệu khác.

sleep_on_timeout (wait_queue_head_t *queue, long timeout);
interruptible_sleep_on_timeout (wait_queue_head_t *queue,long timeout);

Các hàm này có chức năng giống hai hàm ở trên ngoại trừ các process sẽ
không tiếp tục ngủ chờ khi biến jiffies>=timeout.
void wait_event(wait_queue_head_t queue, int condition);
int wait_event_interruptible (wait_queue_head_t queue, int condition);

Đây là các macro, chúng thường được sử dụng nhiều hơn. Các macro này là
các vòng lặp while xét điều kiện trong suốt quá trình lặp. Trong hai macro

này, macro thứ hai được hiện thực trả về giá trị 0 nếu điều kiện thành công
và trả về giá trị -ERESTARTSYS nếu vòng lặp bị interrupt bởi một tín
hiệu.
Để đánh thức các process sử dụng các hàm sau.
wake_up(wait_queue_head_t *queue); Hàm này đánh thức tất cả các process đang

ngủ trên queue.
wake_up_interruptible(wait_queue_head_t *queue); Chỉ đánh thức các process

ngủ trên queue ở chế độ interruptible.
wake_up_sync(wait_queue_head_t *queue);
wake_up_interruptible_sync(wait_queue_head_t *queue); Hai hàm này đánh thức

các process nhưng không gây sự sắp xếp lại các CPU đối với các process.
3.1.4. Asynchronous notification
Trong một số trường hợp, process thực thi tính toán trong một vòng lặp thời gian
rất dài và ở mức ưu tiên thấp, nhưng nó cần xử lý dữ liệu nhập một cách nhanh
chóng khi xuất hiện. Ví dụ về bàn phím và chương trình ứng dụng, khi nhấn phím
CTRL-C gửi tín hiệu kết thúc process đến ứng dụng trong khi ứng dụng lại đang
thực thi một công việc khác. Tín hiệu này là một phần của khái niệm trừu tượng lớp tty, software-layer như trình ứng dụng ở mức ưu tiên thấp hơn nên không thể
thấy được chúng nhưng lại cần xử lý chúng ngay để kết thúc process. Để giải
quyết vấn đề này phải sử dụng thông báo asynchronous-notification, được gửi
từ mức device file thấp hơn đến trình ứng dụng. Trong thực tế bất kỳ dữ liệu
nhập nào đều phải được gửi đi ngay chứ không chỉ coù CTRL-C.
Trang 14


×