GIỚI THIỆU CHUNGTrong những năm gần đây, là một hệ điều hành Linux ngàycàng được chọn lựa nhiều cho những ứng dụng phát triển cho cácthiết bị công nghệ nhúng — mà đặc biệt là những sản p
Trang 1ĐẠI HỌC QUOC GIA THANH PHO HO CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
-000-Thiét ké hệ thống nhúng uClinux dé xây
dựng tông dai IP-PBX và ứng dung nhà
thông minh (intelligent home)
LUAN VAN TOT NGHIEP
SVTH: HUYNH NHUT HAI
MSSV: CH0401012
GVHD: TS LE MANH
Trang 2GIỚI THIỆU CHUNG
Trang 33 Kiến trúc của hệ điều hành uClinux:
4 Thư viện của hệ điều hành uClinux:
5 Cac thư mục trong bộ uClinux-distribution:
6 Thiết lập môi trường cho hệ điều hành nhúng uClinux:
7 Những công cụ phát triểi
8 Bộ linker & loader thời gian thực:
9 Tạo file anl
10 Khởi động hệ thống nhúng:.
11 Ứng dụng người dùng (user application):.
11.1 Thêm ứng dụng người dùng.
lA, Nap chương trình ứng dung
12 Tương lai của hệ thống nhúng uClinux:
13 Kếtluận
CHUONG 3:.
CÔNG NGHỆ FPGA TRONG HE THONG NHUNG
1 Giới thiệu.
2 Tổng quan về công nghệ FPGA
3 Lịch sử phát triển của FPGA
4 Cấu trúc của FPGA
5 Thiết kế và lập trình FPGA.
6 Ứng dụngFPGA
7 Kếtluận
Trang 4CHUONG 4: 253
CAC UNG DUNG TREN HE THONG NHUNG 53
1 Ứng dụng tổng đài chuyển mach trên nền công nghệ gói — IPPBX: 54
1 54 1.1 Giới thiệu công nghệ VOIP:
1.2 Ứng dụng công nghệ VOIP vào tổng đài IP-PBX: 1.55
1.3 Mô hình hệ thống thoại qua nền IP (VOIP): .58
59
1.4 Các giao thức báo hiệu trong hệ thống VOIP:
1.5 Lớp truyền tải (transfort media) 61
1.5.1 RTP (Real-Time Transport Protocol) 1.61
1.9 Ứng dụng hệ thống nhúng vào nhà thông minh sa ||
IỄOI) Giới thiệu S71 1.9.2 Công nghệ nhúng và hệ thống nhà thông minh -.73
CHUONG 5: .- 76
KIT BLACKFIN VÀO TRONG HE THONG NHÚNG XÂY DỰNG TONG
ĐÀI IP-PBX.
Trang 52 Build File ảnh Linux: 277
1 Giới thiệu KIT thi nghiệm XUPV2P 84
2 Thiết kế BSP (Base Board Support Package) & thư viện 86
1.9.3 Bước 1: Generate Phần cứng 90
Bước 2: Phân tích kế quả đạt được 99
Bước 3: Generating Processor and Hardware IP Netlists 96 Bước 4: Download chương trình test: 96
3 Build File ảnh
4 Build ứng dụng & Kết quả chạy thử:
CHUONG 7:.
KẾT LUẬN VÀ HƯỚNG PHÁT TRIÊN CỦA ĐỀ TÀI
TÀI LIỆU THAM KHẢO
Trang 6THUAT NGỮ VIET TAT
ASIC Application specific IC
ANSI American National Standards Institute
API Application Program Interface
as GNU assembler bash Bourne Again Shell
bFLT Binary Flat Format
binutils A GNU collection of binary utilities
CPU Central Processing Unit
CRAMFS Compressed RAM File System.
DCE Data Communications Equipment
eCos Embedded Configurable Operating
System
EEPROM Electrically Erasable Programmable
Read-Only Memory
ELF Execution and Linking Format
el2fIt An elf to flat binary format conversion
program
ex2 Second Extended File System
FIFO First In, First Out; a queue type
Flash A nonvolatile memory capable of
retaining digital information fork The fork() system call; creates a new
processes
FTP File Transfer Protocol
FPGA Field Programable gate array
GNU A recursive acronym for ‘GNU's Not
Unix’
GOT Global Offset Table
GPL The GNU General Public License
GPRS General Packet Radio Service
GRUB Grand Unified Bootloader
GUI General User Interface
HTTP Hypertext Transfer Protocol
HW Hardware
vO Input-Output
ĐC Inter-Integrated Circuit
Trang 7Network File Systems
Read-only filesystem for Linux Software Development Kit
Synchronous Dynamic Random Access
micro libe Micro-controller Linux User Datagram Protocol User Identifier
Uniplexed Information and Computing System
Universal Serial Bus The vfork() system call; to create processes and block parent
Virtual File System Wide Area Network
Trang 8GIỚI THIỆU CHUNG
Trong những năm gần đây, là một hệ điều hành Linux ngàycàng được chọn lựa nhiều cho những ứng dụng phát triển cho cácthiết bị công nghệ nhúng — mà đặc biệt là những sản phẩm tronglĩnh vực tiêu dùng TV, DVD, High-end Amplifier; những thiết bịtrong lĩnh vực viễn thông như router, switches, những ứng dụng
trên mạng như internet radio và những ứng dụng trong lĩnh vực tự
động hóa Rất nhiều thiết bị với tính năng rất mạnh mẽ được tíchhợp bên trong hệ điều hành Linux nhưng người dùng bên ngoàithì không biết
Ưu điểm của hệ điều hành nhúng Linux cũng như Linux, nóhoàn toàn miễn phí, mã nguồn mở, một giải pháp hoàn toàn tíchhợp đủ mạnh mẽ để cho những ứng dụng đã từng phát triển trênLinux trước đây có thé chạy tốt trên nó Linux là một hệ điều (OS-Operating System) hoàn chỉnh với những tính năng về network vàquản lý file (file-handle) rất mạnh
Là một kỹ sư từng làm thiết kế hệ thống dùng FPGA déthiết kế chip viễn thông hơn 2 năm, hơn 4 năm làm trong lĩnh vựcTelcom-Networking Planning, được tiếp xúc với nhiều thiết bịviễn thông, hệ thống mạng người thực hiện luận văn cảm nhậnđược Embedded System đã “chắp đôi cánh” cho những hệ thống
viễn thông, dân dụng, tự động đi những bước ngày càng xa,
ngày càng nhiều tính năng mà ngay cả những chuyên gia sử dụng,thiết hệ thống cũng phải kinh ngạt
Điểm khó của hệ thống nhúng là gì? Hệ thống nhúng làmột sự “kết hôn” tuyệt vời của một kỹ sư phần cứng và kỹ sưphần mềm Kỹ sư phần cứng cần thiết kế ra một hệ thống mà
Trang 9trong đó, kiến trúc bộ xử lý, chip nhớ Flash, RAM, các thiết bịngoại vi như AC97 audio devices (codec) và phải viết nhữngdriver, API để hệ điều hành có thể gọi và chạy ứng dụng lớp trên.Điều này tưởng chừng đơn giản, nhưng thực chất rất phức tạp vàtốn nhiều công sức Đối với kỹ sư phần mềm thì lại phải có kiếnthức về hệ thống nhúng, vì những chương trình chạy trên hệ thốngnhúng không hoàn toàn lập trình giống hệ thống PC bình thường,đôi khi cần phải có những đoạn code assembly riêng của chip vi
xử lý chèn vào đoạn code C/C++ để tối ưu hóa chương trình Hệthống nhúng kỹ sư hệ thống nhúng đòi hỏi vừa phải có kiến thứcphần cứng vừa có kiến thức phần mềm, đó là một điều khó
Luân văn có những nội dung chính như sau:
Chương 1: Giới thiệu tổng quan về hệ thông nhúng, những ý niệm
về phần cứng, chương trình ứng dụng, những vấn đề xoay quanh
việc biên dịch
Chương 2: Giới thiệu về hệ điều hành uClinux, đây là một hệ điềuhành tỉnh giản từ hệ điều hành linux dành riêng cho các hệ thôngnhúng được rất nhiều hãng sản xuất chip nỗi tiếng hỗ trợ
Chương 3: Giới thiệu về FPGA, luận văn sẽ minh họa nền tản mộtchip FPGA, chương này sẽ cung cấp những ý niệm rất cơ bản vềFPGA, kiến trúc của FPGA như thế nào để kiến tao raMicroprocessor để cài đặt hệ điều hành
Chương 4: Luận văn minh họa hai ứng dụng tiêu biểu của hệthống nhúng:
- Ứng dụng điều kién thiết bị từ xa qua mạng, việc này tưởngchừng rất phức tạp, tuy nhiên với kiến trúc FPGA, uClinux
việc này được thực hiện dé dàng xây dựng ứng dụng nhà
thông minh
Trang 10- Ứng dụng thứ 2 người thực muốn minh họa cho tính thiếtthực và mạnh mẽ của một hệ thống nhúng là tổng đàiAsterisk Tổng đài Asterisk nổi tiếng có thể cài đặt vào hệthống nhúng, cho phép những tính năng như gọi SIP phone,chuyển cuộc gọi, voice mail đều hỗ trợ Từ một hệ thống
to lớn còng kénh, ta có thể tích hợp vào hệ thống nhỏ, gọn
nhưng tính năng lại mạnh mẽ không kém.
Chương 5: Trình bày chỉ tiết cách thực hiện ứng dụng nhúng điềukién nha thông minh qua mạng
Chương 6: Trình bày chỉ tiết cách thực hiện nhúng tổng đài
Asterisk
Chương 7: Hướng phát triển và kết vấn đề
Trang 11CHƯƠNG 1:
GIỚI THIỆU VE HE THONG NHÚNG
Hệ thống nhúng là gì?
Như chính tên gọi của nó, hệ thống nhúng là một thiết bị
nhúng vào một hệ thống lớn hơn, cho phép những hệ thống
đó có thể giao tiếp với môi trường vật lý thực thụ Hệ thốngnhúng được thiết kế với giá thấp, hoạt động tin cậy cao sử
dụng cho những mục dich đặt biệt nào đó So với những may tính để bàn, cả hai hệ thống này đều có chương trình ứng dụng và phần cứng nhưng giao tiếp giữa người sử dụng và hệ thống thì hoàn toàn khác nhau Thông thường những thiết bị nhúng có những giao diện người dùng rất hạn chế, nó chỉ có một số nút nhấn hay vài led hiển thị giữa người dùng và những hệ thống khác hay có thể chẳng có giao tiếp người
dùng nào cả Những hệ thống nhúng thường thì chỉ giao tiếp
với một thiết bị độc lập nào đó thiết kế cho một công việc chuyên biệt nào đó
Hệ thống nhúng ngày nay
Ngày nay, hệ thống nhúng điều khiển hàng loạt những loạt những tác vụ khác nhau để đưa vào những thiết bị đòi hỏi năng lực xử lý mạnh và tính phức tạp cao Hệ thống
nhúng chang những đựơc tích hợp và nối kết vào nhiều loạimáy móc mà còn có thé là những thiết bị đứng độc lập một
mình như máy PDA, điện thoại di động, máy nghe nhạc Những loại thiết bị này có rất hữu dụng cho cuộc sống hằng ngày của chúng ta, mà hoàn toàn có thê cài đặt chương trình ứng dụng theo ý của người dùng.
Một mảng rất lớn những hệ thống nhúng này đã đưa vào
công nghiệp đề sử dụng Với một vài nút nhân, màn hình hiển thị đơn giản, hệ thống nhúng có thề kết nối để dàng với mạng
LAN hay Internet mà không cần phải sửa đổi nhiều về hệ
Trang 12thống và phần chương trình Hệ thống nhúng có thể hoạt
động như một modem kết nói với hệ thông lớn Những thông tin thu thập được có thể hiển thị trên PC thông qua phòng điều khiển và những thông tin cần thiết có thé tắt thiết bị từ
xa từ phòng điều khiển.
Hơn nữa hệ thống nhúng có thề gồm những đầu vào/ra tín
hiệu tương tự (analog) và sô (digital) đê xử lý những thông tin thu thập được.
Hệ thống nhúng ngày nay có thé đơn giản chia thành hai
loại: hệ thông nhúng cao cap (high-end Embedded System)
và hệ thông nhúng sâu ( deeply embedded System)
e Loai High-end Embedded System: sử dụng những hệ
điều hành thông dụng, được tinh giản bớt một số chứcnăng, module Ngày càng có nhiều hệ thống nhúngdùng ngày, chăng hạn như máy PDA, điện thoại di
động
© Deeply Embedded System: được thiết kế cho nhữngứng dụng chuyên biệt nào đó Nó hoàn toàn rất đơngiản, được thiết kế cho một ít những chức năng rất đơngiản Vì vậy, thiết ké hệ điều hành, phần cứng rất giảnđơn cho các hệ thống này, mà người dùng ít thấynhững giao tiếp của nó Một trong những ví dụ đơngiản của hệ thống này như: a điều khiến của lò vi
sóng, máy giặt, máy điều hoà
Các phép toán trong hệ thống nhúng:
Do những linh kiện như xử lý, bộ nhớ ngày càng rẻ và
càng được nhúng vào nhiều thiết bị khác nhau nên giá thành
của những linh kiện này ngày càng rẻ, năng lực xử lý ngày càng mạnh hơn, những phép tính toán được ngày càng phức
tạp cao Những tài nguyên khác nhau chạy trên những thiết bịyêu cầu phải được điều khiển bởi một hệ điều hành ngày
càng thông minh hơn.
Trang 13Khái niệm về hệ điều hành cũng chưa được rõ ràng lắmtrong trường hợp này Thông thường hệ điều hành đảm nhậnnhửng công việc phát huy khả năng của phần cứng Điều này
có nghĩa là là nó cung cấp một lớp bằng cách cung cấp những driver cho những con chip vật lý và một giao diện API cho người lập trình.
Hệ điều hành cũng cung cấp tài nguyên cho chương trìnhứng dụng của người dùng thực hiện bằng cách quản lý nhữngngắt, quản lý không gian vùng bộ nhớ cho những ứng dụngcủa người dùng Hệ điều hành cũng cung cấp những tiện ích
cho người lập trình.
3.1.Những vấn đề giải quyết:
Một trong những khác biệt chính của hệ điều hành thông
thường và hệ điều hành nhúng là hệ điều hành nhúng xuât phát những phiên bản của hệ điều hành thông thường bỏ đi một số tính năng không cần thiết.
Nhiều công ty, tổ chức bắt đầu phát triển những hệ điều
hành nhúng cho những yêu cầu thiết bị Da sé những công ty này chọn giải pháp UNIX-like ( hệ điều hành có kiến trúc
giông Unix) để phát triển hệ thống Song song với đó, do hệ
thống nhúng ngày càng phát triền nên nhiều Embedded OS
mã nguôn không mở cũng được phát triển Nhìn chung hệ điều hành chó thé chia ra thành những lớp sau:
API
Protocol
OS:hệ điều hành
Trang 14Firmware
Firmware
Hình 1: Kiến trúc hệ thống nhúng
Những thuận lợi của việc triển khai hệ thồng nhúng giống
UNIX - Linux là nó vẫn “chung thủy” với tính miễn phi, tính
dễ cài đăt cấu hình và hỗ trợ mạnh phần mạng Nó đã đượccài đặt để chạy trên những thiết bị nhúng và đã có nhiều công
ty cung cấp những giải pháp Linux này thương mại lẫn phithương mại Khi có được hệ thống nhúng này chúng thườngbao gồm những bộ công cụ (toolchain), vài chương trình ứng
dụng cài sẵn, vài thư viện cài đặt và dĩ nhiên phải có những
lõi (KERNEL) thực sự Bộ công cụ cho phép bạn xây dựng
những ứng dụng hay tạo ra những file ảnh cho thiết bị nhúng.Hầu hết những bộ này đều dựa trên bộ công cụ GNUToolchain, nhưng nó chỉ bao gồm những gói (packages) cầnthiết cho công cụ
Bằng cách bỏ bớt một só module không cần thiết va chi sửdụng những driver từ hệ điều hành thông dụng Linux Kernel,chúng ta có thể biên dich được ở kích thước cỡ khoảng800Kb Hầu hết hệ thống nhúng đều sử dụng ý tưởng này, tuy
nhiên khi thêm vào những tính năng xử lý thời gian thực và
hỗ trợ không dùng MMU, thì cần phải có thêm một số chỉnh sửa Một trong những ví dụ tỉnh giản Linux thông thường dé
thành hệ điều hành của hệ thống nhúng là uClinux
3.2 Quần lý thiết bị trong hệ thống nhúng:
Những giao diện vật lý phổ biến nhất của hệ thống nhúng
là cổng nối tiếp Serial và công Ethernet Những giao tiếp nàycho phép quản lý vật lý thực hiện không cân phải có giao tiếp
Trang 15người dùng như phần hiển thị và bàn phím Từ những giaotiếp này, CÓ thể giao tiếp đề điều khiển hệ thống nhúng để
điều khiển thiết bị cuối, nhưng ở trong bước phát triên ứng dụng, thì những giao tiếp này đề thiết bị Host kết nối để kiểm tra, gỡ lỗi của chương trình chạy trên hệ thống nhúng Cổng Serial cũng dùng để chép những tập tin anh (image file) vào thiết bị hay đề câu hình một sô tính năng cơ bản cho hệ thống
nhúng Giao tiếp USB khá phổ biến ngày nay, tuy nhiên hệ
thống nhúng sử dụng giao tiếp này cũng còn ít.
Giao tiếp vật lý Ethernet với những kết nói tới chương
trình ứng dụng cho phép những thiết bị có thể kết nối vớimạng mô hình TCP/IP OSI có 4 lớp theo hai giao thức chuẩn
là UDP và TCP bao quanh bởi những giao thức của lớp Applicaion-layer và lớp Host layer Hệ thống nhúng có thể
cung cap nhiều loại ứng dụng khác nhau cho phép sử dụng để
kết nối thiết và điều khiển những thiết bị Ngoài ra, các giao thức như FTP, SMTP, HTTP cũng được hỗ trợ trong hệ
thống nhúng phục vụ cho mục đích upload, download file cấuhình, chương trình để gởi email tới host, để làm
webserver
Phan cứng:
Kiến trúc cơ bản của thiết bị nhúng thường được thiết kế
dé kết nối với mạng thông ,qua giao tiếp, mạng Hệ thốngthường được giữ lại giao tiếp serial dé két nôi với thiết bị
nhúng tới toàn bộ hệ thống cuối, một giao tiếp Ethernet đề kết nối với mạng và một Micro controller Unit MCU và một
vài loại bộ nhớ Những hệ thống khác nhau thường liên quantới nhiều loại bộ xử lý, kích thước và loại bộ nhớ và nhữnggiao diện mà nó hỗ trợ Khi thiết kế phần cứng, mục đích củaviệc tiết kế là có thể đáp ứng được những yêu cầu thị trườngcủa của khách hàng bằng cách so sánh với những giản pháp
hiện thời hay việc đưa ra thị trường sản phâm nhanh hơn
những đối thủ cạnh tranh
Trang 16Một trong những cách thay thế đĩa cứng là bộ nhớ Flash Memory Nó thiết kế dé thay thé dé giả lập thay cho 6 đĩa Bộ nhớ Flash có ưu điểm là tiêu hao điện năng ít, truy xuất
nhanh hơn, ít tốn không gian hơn
MCU cũng có hai loại, loại có MMU - Memory
Management Unit và một loại khác không có phần MMU.Loại có MMU có ưu điểm là bộ nhớ được bảo vệ chặt chẽ khi
những ứng dụng hoạt động, còn loại MMU-less thì phải có những chú ý đặt biệt khi sử dụng bộ nhớ, tuy nhiên giá thành
processor sẽ rẻ, và hệ thống nhỏ gọn
Lap trình trên hệ thống nhúng:
Những đoạn mã viết cho những thiết bị nhúng thì được
biên dịch trên máy chủ (host-machine) có cài đặt những công
cụ phát triển (Development Tool) Trình tự xử lý này gọi làcross-compilation Điều này có nghĩa là máy chủ ( thường làmột Desktop PC) sẽ lưu trữ những kết quả của công cụ biên
dịch và từ từ biên dịch ra những đoạn mã máy nhị phân cho những thiết bị nhúng đầu cuối Ý tưởng chính là việc biên
dịch có thể thực hiện trên một máy có năng lực mạnh hơn
nên của thiệt bị nhúng thực sự Sau đó, toàn bộ những gói dữ
liệu được biên dịch ra, bao gồm cả kiến trúc lõi kernel và
những chương trình ứng dụng được đóng vào thành một gói
là nạp vào hệ thống nhúng
Khi phát triển phần mềm cho những thiết bị hệ thốngnhúng, cần phải kiêm tra chương trình Trong những trườnghợp xấu, những hệ ng nhúng độc lập có thê bị treo hoàn
toàn bởi những thiết kế không tốt hay quá trình kiểm tra chương trình Đó là lý do vì so mà chương trình trước khi chạy trên những thiết bị nhúng phải chạy thử trên máy chủ
(Host-machine), để hạn chế tối đa lỗi xảy ra trên hệ thống
nhúng Kích thước đoạn mã thì bị giới hạn bởi bộ nhớ vật lý
của thiết bị Cũng có trường hợp bộ xử lý không đủ mạnh dé
chạy những chương trình phức tạp cùng một lúc Những ngôn
ngữ lập trình sử dụng trong hệ thống nhúng thường là ngôn
Trang 17ngữ cấp thấp assembly và ngôn ngữ C ở mức lập trình ứngdụng Cả hai loại ngôn ngữ này đều cho phép người lập trình
truy xuât trực tiép vào phan cứng và có câu trúc dữ liệu đơn giản.
Thông thường những công cụ cung cấp cũng cho phépdebug lỗi và giản don bớt công việc của người phát triển ứng
dụng Những chương trình ngoài thị trường thường ngoài hỗ
trợ debugg lỗi, còn có những giao diện đồ hoạ GUI, và nhiều
lựa chon Vài vi dụ như: Code Warriors Developing Studio.
Nhiều nha phân phối Linux vab dựa trên bộ GNU va GNU
Debugger.
Trang 18CHƯƠNG 2:
HỆ DIEU HANH uClinux CHO HE
THONG NHUNG
uClinux hay micro-controller Linux là một nhánh
rẽ lớn khác của Linux, nó được thiết kế đặt biệt cho những
hệ thống nhúng, không có phần quản lý bộ nhớ (MMU)
Những tính chất khá phé biến của dòng vi xử lý giá rẻ là không có phần MMU uClinux cũng trung thành với ý
tưởng miễn phí và mã nguồn mở và nhắm tới việc "¬
thích với hệ điều hành thông dụng Linux
Những phần sau sẽ đi sau vào những giải pháp của
uClinux, đưa ra những cái nhìn tông quan trên nên của
uClinux và những công cụ phát triên của nó Những ví dụ
và giải pháp dựa trên nền MicroBlaze Softcore Processor
sử dụng công nghệ FPGA và dong chip DSP Blackfin của
Analog Devices nhưng có thé dé dàng thay đổi thành
những giải pháp khác
1 Hệ điều hành Linux:
1.1.Lịch sử của Linux
Bắt nguồn từ UNIX, để có được tiếng gọi Linux quen
thuộc và đơn giản như ngày nay, hệ điều hành này đã phải
trãi qua một bê dày lịch sử gần 40 năm Với từng ấy thời
gian, "số phận" của Linux ngày nay đã có những bước
thăng trầm đáng kể và có những lúc tưởng chừng như bếtắc Thế nhưng, bằng một cách nào đó, Linux vẫn đang
hiện diện và thu hút mạnh mẽ được giới "công nghệ" Vì đâu?
Chỉ đơn giản vì các yếu tố sau mà các hệ điều hành khác
khó thê có được
Trang 191.2.1 Tính ổn định
Từ những phiên bản đầu tiên, Linux đã rất ôn định, không
như người ta hay nghĩ: "của rẻ là của ôi"! Vì Linux dựa trên nên tảng 30 năm phát triển của UNIX, mà UNIX từ những năm đầu tiên ra đời cho đến tận hôm nay, vẫn được giới hâm mộ công nhận là ô ổn định.
1.2.2 Tính miễn phí
Để có một hệ điều hành thuộc sở hữu của mọi người,không tốn tiền mà lại không "ăn cấp" Quả là không
tưởng! Vậy mà Linux đã làm được điều đó Chỉ cần người
dùng thực hiện đúng theo nội dung của giấy phép GNU
GPL Thật vậy, ai trong chúng ta cũng có thể lên Internet
để lấy Linux về, sửa đổi hay nâng cấp cho phù hợp ý thích Các tài liệu này có quá nhiều trên mạng.
1.2.3 Tính mềm déo
Linux cho sử dụng trên cầu hình rất linh động Ví dụ như
không "đòi hỏi" độ phân dải màn hình cho Xwindows.
Ngay cả kernel cũng dễ dàng sửa đổi Linux có thể chạytrên nhiều máy khác nhau từ PC 386, 486 tự lắp cho đến
Do đó, thật là yên tâm, nêu chúng ta cần sự hỗ trợ từ phía
họ Cho đến nay, nhiều và rất nhiều công ty lớn đã thực sự chính thức hỗ trợ Linux Ví dụ như IBM đã chào bán IBM
Server chạy trên Linux chẳng hạn!
Như vậy, với nguồn tài liệu phong phú, chương trình
từ kernel cho đên các tiện ích là miễn phí và bộ mã nguôn
Trang 20mở, chúng ta cũng không lạ gì khi Linux thực sự trở thành
người bạn đồng hành lý tưởng cho những ai muốn thâm
nhập hệ điêu hành chuyên nghiệp UNIX và là công cụ tôt
nhất cho công tác đảo tạo tại các trường đại học
2 Lịch sứ hệ điều hành uClinux:
Dự án ucLinux bắt đầu được thực hiện vào năm
1997, nhằm mục đích trích kiến trúc lõi của Linux Kernel2.0 sử dụng cho các chip vi xử lý Nhóm thực gồm có Jeff
Dionne, Kenneth Albanowski và nhóm những nhà nghiên
cứu khác, đã thảo luận về khả năng của việc đưa hệ điềuhành Linux vào trong chip xử lý MMU-less cho mạng dé
có thể giao tiếp giữa mạng và những hệ thống thông tin.Những phiên bản đầu tiên, đặt những bước chân đầu tiêncho hện thống nhúng này là hệ điều hành cho vi xử lý
Motorola họ 68000, mà dựa trên họ vi xử lý MC68328 DragonBall Intergrated Microprocessor Họ vi xử lý này
đã được triển khai trong các hệ thống điều khiển SCADA
vào năm 1997/1998 Những phiên bản dau tiên được đưa
lên diễn đàn công đồng mã nguồn mở như là một hệ điều
hành khác cho Palm Pilot vào tháng 02 năm 1998.
Sau khi quyết định, Jeff Dionne và Michael Durant
từ công ty Lineo thiết kế và xây dựng một dòng vi xử lý
nhúng gọi là uCsimm và uCdimm Cùng lúc đó Gerg Ungerer từ cùng công ty đã nạp hệ điêu hành uClinux vào
trong hệ thống Motorola ColdFire và thiết kế một vài hệthống sử dụng dựa trên nền tản này Những thử nghiệmđầu tiên trên hệ thống thử này đã nhanh chóng triên khai,nap vào nhiều hệ thống khác
Những đầu tư nghiên cứu cho những vi xử lý đã
phát triên một cách nhanh chóng và hàng loạt những phân
mềm khác được phát triển kèm theo Một trong những sựphát triển đó là thư viện uC-libe được thiết kế thay cho
những thư viện libc và glibc của Linux trong những gói
thu nhỏ Những cải tiến khác được thực hiện bởi
Trang 21SnapGear bằng cách đưa vào những đoạn mã nhị phân, hỗ
trợ bFLT và thư viện chia sẽ ELF bởi RidgeRun.
3 Kiến trúc cúa hệ điều hành uClinux:
uClinux là một dang rất thông dụng của hệ thốngnhúng Nó được chủ định thiết kế cho những vi xử lý với
không có MMU (MMU-less) Ngày nay, những loại hỗ
trợ nhiều loại CPU khác nhau như: ColdFire, AxisETRAX, ARM, Atari 68Kva nhiều loại vi xử lý khác Sựphát triển của uClinux nhanh chóng ngoài sức tưởngtượng do ngày càng nhiều những loại vi xử lý MMU-less
có khả năng cài đặt uClinux khác biệt chính so với Linux
là sử dụng vi xử lý MMU-less, và hệ thống rất gọn Cũngnhư Linux, uClinux cũng kế thừa sự hỗ trợ tính năngmạng mạnh mẽ với bộ chuẩn giao thức TCP/IP và hỗ trợnhiều giao thức mạng Sự tương thích của uClinux đượcthiết kế càng gần hệ thống Linux càng tốt Điều này cónghĩa là các ứng dụng được thiết kế cho GPL có thé được
sử dụng trong hệ thông MMU-less phiên bản Linux với
vài thay đổi nhỏ Điều này hoàn toàn hợp lý do kiến trúcvật lý của hệ thống nhúng và do mắt hoặc sự hạn chế vềtương thích của các thiết bị ngoại vi
Hạt nhân (kernel) phải thay đổi một ít cho less Tất cả những kiến trúc quản lý bộ nhớ từ những vi
MMU-xử lý thông thường được thay thế bởi phần điều khiển của chính chương trình lõi Nó thực hiện trong thư mục mmu/
thay cho thư mục /mm Vài hệ thồng phụ khác cũng đượccải tiến cho phù hợp với vi xử lý không có phan MMU
Những ưu điểm chính của hạt nhân uClinux so với
hạt nhân Linux là kích thước Khi biên dịch kích của hạt
nhân với chỉ những phần những phần bắt buộc cho bộ xử
lý, những file hệ thống và những phần điều khiển của hạt nhân lõi thì kích thước của lõi bộ nhớ chỉ còn khoản
400Kb Khi khởi động bộ nhớ cần khoảng IMB Bộ nhớthực sự của hệ thống cần khoảng 2MB, để chứa những
Trang 22chương trình ứng dụng Với hệ thống uClinux, những fileảnh có thể nạp được có thẻ khoản từ 500 đến 900 Kb Từ
đây, một lõi uClinux có thê chiêm dưới 512Kb, hạt nhân
gồm có những cài đặt thông thường cho những công cụ
mạng có kích thước dưới 900Kb và MCF5272 với những
phần thiết lập mặt định trong 1.2Mb
Hạt nhân uClinux như những hạt nhân Linux thông
thường có thể tải về miễn phí Hạt nhân phải tuân thủ theo
GNU GPL, cũng nhưng những ứng dụng đi kèm theo bộ đóng gói Ngoài ra, trong bộ đóng gói cũng còn có những thư viện, theo bản quyên những LGPL Phần kernel và những công cụ có thê tải ở trang web www.uclinux.org.
4 Thư viện của hệ điều hành uClinux:
uClinux sử dụng thư viện viết theo C chuẩn, viết dànhkèm theo kiến trúc lõi uClinux Nó dựa trên hạt nhân củathư viện Linux 8086, thư viện C chuẩn nhưng đã được
tỉnh giảm bớt cho những gói đơn giản Những ý tưởng
phát triển thư viện ucLibe được thiết kế tối ưu hoá cho thư
viện C cho những microcontroller như là DragonBall,
ColdFire va ARM., nó hỗ trợ những kién trúc linux chuân.uClinux cũng cung cấp hàm thư viện chuẩn libC APIs
Trong bản uClinux được phân phối những nhà phát triển ứng dụng có thể chọn giữa hai thu viện libc, uC-libc
và uclibe tuỳ theo yêu cầu của những nhà phát triển ứng
dụng Thư viện uClibc được rat ra từ thu viện uC-libe
thiết kê dé giải quyét các vân đê xảy ra ở thư viện uC-libc
bằng cách làm tat cả những hàm API’s chuẩn và thêm vàonhững hàm còn thiếu Một cách tổng quát thư viện uClibe
cô găng để cung cấp một thư viện như là glibc cua, linux
chuẩn, điều đó có nghĩa a tất cả những tài liệu viết cho glibc có thé sử dụng cho uClibe.
Những đóng gói uClinux gồm một loạt những thư viện hữu ích cho nhiều ứng dụng có thể yêu cầu Những thư
Trang 23viện cho hạt nhân uClinux kềm theo có thể chọn trong bộ
biên dịch là:
Libgmp: thư viện GNU cho những thuật toán
Libg: gồm có gterncap, thiết kế cho việc
gởi di những chuỗi ký tự tới thiết bị dau Cuôi.
Libcap: cung cấp những giao tiếo độc lập
cho lớp người dùng đê bắt những gói dữ liệu.
Zlib: thư viện để nén dữ liệuNhững bản phân phối cũng có thé có những thư viện mà
có thê biên dịch với những gói:
Libatm: những chương trình thử nghiệm cho ATM Asysnchronous Transfer Mode Libjpeg: Thư viện nén anh jpeg
Libm: thư viện toán học biên dịch với libc
Libnet: Những ham API cho phép người dung truy xuât tới những giao thức
Libam: Những thư biện giao tiếp cho giao
thức Authentication Several
Libpng: thư viện đồ hoạ trên mạng, cần
phải có thư viện zlib
5 Cac thư mục trong bộ uClinux-distribution:
Khi giải nén những chương trình được phân phối „ những
gói dé có cầu trúc cây thư mục hoạt động, tất cả đều nằm trong thư mục uClinux-dist Thư mục sẽ chứa những mã nguôn mà cần thiết cho việc bien dịch file ảnh với những
Trang 24lựa chọn khác nhau Thư mục biên dịch sẽ có cấu trúc như
những chức năng bảo mật, nhận dạng và mã hoá Cân phải có thêm một sô thư viện khác.
Lib: những thư viện người dùng
Linux-2.4 and linux: Những miếng vá mã nguồn
uClinux uClibc: Phiên bản mới của thư viện libc
config: Những file cấu hình cho uClinux Sử dụng để
chạy cấu hình cho những nhà sản xuất khác nhau
romfs: ROM chứa những file cầu trúc của hệ thống
Bao gom những file nhị phân người dùng và những dau thiết bị Tạo ra sau khi biên dịch
Vendor: những nhà cung cấp và hướng dẫn cụ thể cho
hệ thống cho những chip của nhà cung cấp
Images: sau khi biên dịch thực hiện, những file nhị phân được tạo ta, ROM file và những file ảnh kèm theo được tạo sau khi biên dịch.
Những thư mục trong romfs chứa trong cùng một cây thư mục
và từ từ được tạo ra trên máy đích Những thư mục sẽ chứa
Trang 25những file cấu hình, file cấu trúc tương tự như trong hệ thống
linux:
e Bin: Những file nhị phân của hệ thống
© Dev: những file cung cấp giao diện bật lý với thiết bị
e Ect: những file cấu hình hệ thống
e Home: thư mục home của người sử dung
e_ Lib: gồm những thư viện chia sẻ khi hỗ trợ
® Mmt: mount point
e Proc
e Tp: những file tam
e Usr: những tiện ích va những ứng dụng khác
e Var: tập tin biến
6 Thiết lập môi trường cho hệ điều hành nhúng uClinux:
Lệnh Makefile dưới đường dẫn root của cây mã nguồn là lệnh
mà chúng ta gọi thực hiện trong môi trường uClinux Khi cấuhình uClinux sẽ hiện ra màn của số chính trên man hình người
dùng Từ đó người sử dụng có thé chọn những thiệt lập thông
thường, mô hình nền, những thư viện C, người sử dụng cómuốn sửa đổi những thiết lập của phần hạt nhân, cái mà những
chương trình ứng dụng người dùng có thể được biên địch theo
đó và cũng có thể trả lại những thiết lập cơ bản hay tạo ra
những thiết lập cơ bản mới Những cấu hình thì được thực hiện
thông qua mọt nhóm những file cấu hình mà được kèm theo
trong thư mục PRODUCT/MODEL Thư mục này có những
phan tử như sau:
© Confìg.linux-2.4.x: chứa những file cấu hình mặc định
© Config.vendor-2.4.x: chứa những giá tri default của ứng dụng người dùng đê tạo ra những file ảnh.
Trang 26e Rc: những đoạn script truyền cho fRom khi hệ thống
khởi động
© Config.arch: kiến trúc nào đó thiết lập cho những file
ảnh biên dịch
© Config.modules: néu những module được kích hoạt,
những module này được câu hình
© Confìg.wClibc: sử dụng dé set những câu hình đơn giản
cho thư viện uClibc
¢ Iniab: chuyên đổi giữa romfs/etc/inittab, những đoạn
mã cho khởi động những process
¢ Makefile: Tạo ra hệ thồng Bao gồm những hướng dẫn
cách thức đề tạo ra những file froms và file ảnh Những file này sẽ cũng định nghĩa cây mã nguồn để tao ra
Tom và cài đặt những file vào trong cây mã nguồn như
rs và initab.
7 Những công cụ phát triển:
Để xây dựng và biên dịch cho những ứng dụng chouClinux hay một file ảnh cho hệ thống của mình, một loại
những công cụ phát triển cần phải được cài đặt trên may chủ.
Để thiết lập môi trường phát triển cho uClinux, người sử dụng phải thiết lập phần lõi và những thư viện sử dụng để
biên tập những file nhị phân Để biên dịch phần hạt nhân của
uClinux, một nhóm những công cụ phát trién cần thiết, những
công cụ này nhằm mục đích biên dịch chuyển ứng dụng và
lõi vào trong hệ thông cuôi cùng.
Một phiên bản công cụ phát triển uClinux là m68k-elf-date,
nó có thể biên dịch nhiều loại file nhị phân Những công cụnày cung cấp nền tản cho việc phát triển và biên dịch trướcnhững gói nhị phân hay biên dịch bởi những nhà phát triển
GNU và biên dich lại với chọn lựa là m68k-elf Bộ biên dịch
gồm có:
Trang 27e Binutils: một nhóm những công cụ nhị phân, dựa trên ban GNU binutils-2.10
¢ Gee: C/C++ compiler
e Elf2flt: một công cụ đổi từ elf thành flat
e Genromfs: công cụ cho việc tao ra những file ảnh romfs
Mặc định thì những công cụ này nằm trong thư mục usr/local
direcory
Một trong những van đề đặt ra trong quá trình phát triển là
tìm ra lỗi trong những đoạn code chương trình uClinux hỗ
trợ hai loại debug: một loại cho mã trong hạt nhân, một loại
khác cho những giao tiếp người dùng Để như vậy, GNUcung cấp bộ công cụ Debugger, GDB, cho phép người sửdụng debug những đoạn chương trình viết trên C, C++ và
những ngôn ngữ khác.
GDB có nhiều miếng vá sẵn cho hệ thống uClinux và những
vi xử lý Motorola Khi hay GDB, nó thường chạy trên máy
chủ và giao tiếp với thiết bị qua cổng serial Hệ thống nhúng
chạy GDB-stub hay gdbserver dé kết nói tới hệ thong máy chủ.
Bộ linker & loader thời gian thực:
Một cách cơ bản hệ thồng linker và loader thực hiện những
tác vụ cơ bản sau:
¢ Loading chương trình cách copy đoạn chương trình tới vùng nhớ chính đề hoạt động.
° Sắp xếp lại, gán lại những giá trị địa chỉ cho bộ nhớ
chương trình và bộ nhớ dữ liệu Việc này có thê thực hiện bởi linker hay loader.
¢ Gan những địa chỉ đề trỏ tới những chương trình con
Trang 28Được sinh ra từ một đoạn mã nguồn, những đoạn mã nguồn
được sắp xêp lại hoặc những module có thê chia ra làm 3 loại: loại text/code, loại dữ liêu, và loại bss.
Ví dụ:
extern int x = 8; /.data
int y = 9; //.data
int z; //.bss
int func(){ //.text
return x*y, //.text}
Linker va Loader sẽ kết nối những đoạn chươngtrình này vào một file có thể load được Nó sẽ tạo ra mộtbảng biêu tượng cho tất cả các biểu tượng trong và ngoài
có trong chương trình và những bảng phân vùng tuỳ thuộc vào kích thước và phân vùng bộ nhớ của từng vùng Sau
đó nó sẽ tạo ra một file phân vùng bộ nhớ, phát sinh một
đoạn code nhỏ kèm theo những file xuất ra để cho mọihoạt động được chuẩn xác Loader và Linker thời gianthực có thể quản lý ở giai đoạn chạy chương trình Bộcông cụ của Uclinux có thể sửa đổi file địnhdạng loader
va linking, ELF.
Nguồn gốc của File ELF là được phát triển trongphòng thí nghiệm của hệ thống Unix và được sử dụngrộng rãi trong những hệ điều hành có kiến trúc giống hệ
điều hành Unix Định dạng ELF sử dụng rất linh hoạt và tương thích với rất nhiều hệ điều hành, nên được sử dụng rất rộng rãi Nó có khả năng như: link động, load động, điều khiển thời gian thực, tạo ra những thư viện chia sẽ Định nghĩa của ELF cho cả Linking và hoạt động, có định
dạng g6m những phần chính sau:
¢ _ Tiêu đề ELF, cho biết thông tin về File
Trang 29e Những tiêu đề của chương trình
e Dữliệu
uClinux công cụ ELF thì được sửa đổi theo cách đó
khi tạo ra những File nhị phân, những linker thật ra chỉ là
những đoạn script Bộ liên kết Linker sẽ tìm thông số elf2fit và nếu nó là lần đầu tiên chạy lênh liên kết ELF vàchạy ej/2/1 dé tạo ra những file chạy đựơc mà uClinux sử
-dụng Đây gọi là Binary Format Form, bFLT đơn giản, rât gon hẹn cũng có định dang của file biên dịch ra bFLT có hai phiên bản chính, trong đó phiên bản 4 thì được sử dụng với bộ chuyển đổi m68k elf2flt.
9 Tạo file ảnh:
Trong phiên bản đủ của uCLinux, file ảnh được tạo ra từ
lệnh make Câu lệnh sẽ đầu tiên thay đổi thư mục tới hạtnhân kernel và bắt đầu biên dịch từ file riêng lẽ Thật sựtrình tự để biên dịch một file kernnel thì giống nhau, vớiuClinux thì nó có một công cụ riêng đê thực hiện điều này
Sau khi đã biên dịch kernel xong, chương trình sẽ biên dịch
tiếp những file phụ , những file chỉ vùng nhớ, nhựng file có
cau trúc riêng biệt Jd và khỏi động những code C asm, crt0_ram.S, tạo linux file.
Chương trình biên dịch sẽ liệt kê những biểu tượng
symbol từ tập tin linux với những đã thiết định trước và sắp xếp vào tập tin System.map có thé sử dung dé debug chỉ ra những công việc của bộ nhớ.
Linux file sẽ biên dich file nhị phân, linux.bin sẽ được chứa trong đoạn code nhị phân của hạt nhân như sau:
m68k-elf-objcopy -O binary 2.4.x/linux \
/ /uClinux-dist/linux-/ /uClinux-dist/images/linux.bin
Trang 30ROM file sẽ được biên dịch dựa trên những thông số
thiết lập trong thư mục của nhà sản xuất Một file gồm tat
cả những thông tin về thiết lập cho chip của riêng một nhà sản xuất, cách thứ để biên dịch một file ảnh cho những con chip của những nha sản xuất Những makefile có những
nhãn cho những ảnh được tạo ra từ mã nguồnROMFS_DIRS và những file nguồn và với những nhãn tagthực sự trong hệ thống và file ảnh:
ROMFSIMG = $(IMAGEDIR)/romfs.img
IMAGE = $(IMAGEDIR)/image.bin
ELFIMAGE = §(IMAGEDIR)/image.elf
Trong công đoạn cuối cùng của việc tao makefile của nhà
sản cua là tạo ra những cây thực sự gôm có những thiệt bị
và những file nhị phân từ những ứng dụng được Từ thư mục này, tạo mục file Rom từ những file ảnh của hệ thông như sau:
genmomf -v -V “"ROMdisk" -f dist/images/romfs.img -đ\
⁄ uClinux-/opt/uClinux- dist/romfs
File ROM nhị phân này sau đó được nới với linux.bin để
tạo ra một đoạn mã nhị phân và đưa vào những con chip:
cat dist/images/linux bin
/ /uClinux-dist/images/romfs.img >
/ /uClinux-dist/images/image.bin
Trang 31dist/tools/cksum -b -o 2 dist/images/image.bin
/ /uClinux->>/ /uClinux-dist/images/image.bin
Va những file ảnh này được dat trong mộ thư mục có chứa
hệ thông file ảnh và những file khác tạo ra đê chạy.
10 Khởi động hệ thống nhúng:
Với những trường hợp lưu trữ loại bộ nhờ FLASH và
RAM, vi xử lý có thê truy xuất trực tiếp vào nó Một trong
những trường hợp đơn giản của việc thực thi lõi cấu trúc của uClinux có thể làm bằng cách thay thế những đoạn code khởi động trong vi xử lý ở địa chỉ khởi động Với cách thứ thiết lập này, vi xử lý có thể thực hiện thiết lập phần cứng thay thế những đoạn segments vào trong RAM.
Một cách an toàn và linh hoạt là đặt những đoạn code nhỏ gọi bootloader để khở động giá tri offset của Flash Bootloader có thé giản lý những giá trị đầu của board như thiéy lập phần cứng, cho phép tải về hững file ảnh
thông qua board Nhiều lần nó có thể thiết lập dé ghi vào
Flash mà không cần phải có những thiết bị ghi Flash uClinux có thể sử dụng với nhiều bootloader đề thực hiện những công việc khác nhau trong giai đoạn phát triển
Nhiều loại bootloader như: CoLilo, My Right Boot,
Motorola's dBug and PPCboot có kiến trúc của Arcic
PowerPC boot, PPCboot cho phép load những file ảnh thông qua công serial port hay ethernet trong qua các giao thức Trivial File Transfer Protocol, TFTP Nó cũng cho
phép sử dụng những biến môi trường, để khởi động những
file ảnh nén và giải nén và khởi động những file hạt nhân từ những partition JFFS2.
Trong uCLinux đường dẫn hệ thống và đường dẫn hat
nhân được biên dịch hoàn toàn cách biệt nhau Trong linux
thông thường, kernel thì được nhúng vào một phần của hệthống Những thiết lập này cần có một bộ bootloader phức
Trang 32tạp phần mục đích đặt biệt để yêu cầu đưa những phân bootvào trong RAM uClinux cho phép file hệ thống và nhữngpartition lõi trong bộ nhớ RAM nhiều cách khác nhau Việc
thiết lập file ảnh ở thông số dang nén và từ nơi mà chương hoạt động thực sự Khi phát triên chương trình cách tốt nhất
là tai chương trình từ giá trị về giá tri offset của bộ nhớ RAM và hoạt động từ đó nhưng khi những file ảnh dự định
chứa vào, nó phải được lưu vào hệ thống Flash
Kích thước sử dụng Flash có thể được lưu bởi kernel đã
giải nén trước và những file hệ thống gốc và tại thời điểm
bật nguồn và giải nén chương trình vào Flash Để thực hiện
được điều này thì file hệ thống phải có khả năng giải nén.
Với giải pháp này, số chân của Flash cần phải nhỏ hơn so
với ảnh của chính nó.
-rw-r r 1 root root 1.6M Oct 16 19:06 image.bin
-rw-r r 1 root root 712k Oct 16 19:06 image.bin.gz
Thông thường, vùng trên đĩa chứa uClinux chứa bootloader và những file câu hình hkác tại phân đâu và
phần còn lại của Flash được dành cho File anh của Linux
Một phân vùng của Flash thông thường có dạng như sau:
Trang 33thống thường được kết với nhau và đặt vào flash thành mộtfile ảnh đã được nén và đặt vào bộ nhớ RAM Dé cấu hình
configuration va | những file lưu trữ, Arctic cung cap
những file SPI Flash riêng biệt Từ thư mục gốc của file hệthống, những folder quan trọng và đã đổi như: /etc có théliên kết tới những serial Flash
Một cách khác có thể thực hiện là đặt file kenel và thưmục hệ thống ở hai vùng lưu trữ khác nhau Cách này cónhững điểm thuận lơi hơn là nó không cần phải biên dịch
và tải toàn bộ file image lại Cách có thể làm là lưu trữ filekernel nén vào trong Flash, do đó những sự sửa đổi đều cóthể được tự lưu lại Kernel trong trường hợp này thì đượcgiải nén và lưu trữ trong RAM Cách này thì cần phải cómột số thủ thuật như là crt0_ram.S bởi vì Coldfire luônluôn cố gắng dé tái lặp những romfsau vùng bss Phươngpháp này có thể sửa crt0_ram.S hay chi tạo những psedue-romf đều được
Cũng như là trong Linux thông thường, từ chỗ bắt đầuLinux sẽ tự động tìm và khởi động những phần cứng.Những thiết lập này sẽ được ngắt ra và load những drivercủa các thiết bị Sau khi phần cứng đã thiết lập, kernel sẽkhởi động nạp những giá trị đầu hệ thống file inittab file
Để hoàn thành quá trình khởi động uClinux chạy đoạn
script re có chứa những lệnh cân thiệt đê chạy các thiết bị
để hoạt động Doan script sẽ buộc những file cần thiết vàthiết lập giá trị địa chỉ của mạng network
Vị trí của cripts cấu hình cùng chung với vị trí script của linux Thư mục /etc chứa tat cả những đoạn script cân thiết
để boot thiết bị Nó cũng chứa tất cả những file cấu hình
cung của nhiều ứng dụng khác nhau như: ppp, chat và
crons sử dụng Những file này trong Arctic thì được lưu trữ
trong seial flash để chúng có thé dé dàng sửa đổi và lưu trữsau khi khởi động thiết bị
Trang 3411.Ứng dụng người dùng (user application):
Những chương trình ứng dụng người dùng nằm trongthư mục gốc uClinux, thư mục con /user Mặc định thì cónhiều chương trình ứng dụng có thé cài đặt cho nhiều mụcđích khác nhau Nếu người sử dung muốn thêm hoặc nạp
một ứng dụng mới, thì phải chép chương trình vào thư mục này và sửa đôi vai file dé có thé thấy được những ứng dụng
mới trong menu.
Những vấn đề chính cần quan tâm, khi phát triển vàchạy một hệ thống là chương trình lớn, phức tạp chạy trênnên uClinux là việc vi xử lý thiếu MMU Chương trình lớn
có thể sẽ không chạy trên hệ thống uClinx, để chạy đượcnhững phần như câp phát và hủy bỏ bộ nhớ cần phải được
thiết kế lại Những phần như chuyền trang, phân trang bộ nhớ cũng cần được bỏ bớt.
11.1 Thêm ứng dụng người dùng
Điều đầu tiên khi nạp một ứng dụng người dùng vàotrong hệ thống uClinux là tạo một thư mục phụ cho ứngdụng cần cài vào thư mục suer Đây là chỗ mà bạn đặtnhững file mã nguồn và tạo một makefile mà uClinux cần
Tạo ra những chọn lựa mà uClinux sử dụng cho việc
cross-compile vào trong thư mục config.arch có thé biểu diễn
makefile Một ví dụ của tập tin makefile của ứng dụng người dùng như sau:
EXEC = applicationName OBJS = applicationName.o all: §(EXEC)
S(EXEC): $(OBJS)
$(CC) $(LDFLAGS) -o $@ $(OBJS)
§(LDLIBS) romfs:
$(ROMFSINST) /bin/$(EXEC)
Trang 35rm -f $(EXEC) *.elf * gdb *.o
Trong đó, chúng ta gọi file nhị phân dygc biên dich từ
nguồn Những ứng dụng người dùng chịu trách nhiệm sao
chép những tập tin tới những thư mục thích hợp trên hệ
thống ROM Files trong con romf
Việc kế tiếp là thêm ứng dụng của bạn vào make file
chứa những thông tin đề xây dựng bộ tập lệnh cho những lớp người sử dụng, nó được thực hiện băng câu lênh sau:
di §(CONFIG USER_APPLDIR APPLBINARY
) += applicationName
Bằng cách nảy chương trình ứng dụng được thêm vào thư mục co thể xây dựng những file ảnh Đề thực hiện việc làn chương trình, khi làm những kernel và sửa đôi theo những nhà sản xuât và người dùng là thêm ứng dụng của bạn vào trong tập tin /config/config.in file Dòng lệnh:
Bool'applicationName' CONFIG_USER_APPLDIR_APPLBINARY
Phải đặt đưới phần đầu tiêu đề mà ban muốn chươngtrình của bạn xuất hiện trong suốt quá trình cấu hình.Thông thường, đối với những người sử dụng chương trình,
những vi tri đúng là trong 'Miscellaneous Applications'.
Người dùng có thể thêm một vài đoạn chú thích cho
chương trình Từ khoá mở dau là ‘#’ và không được dài quá 70 ký tự, đoạn văn bản này được đặt trong thư mục /config/Configure.help file
CONFIG_USER_APPLDIR_APPLBINARY
"Something usefull here"
Mac định thì m68k-elf -gcc tạo ra những đoạn code
m68020 Những nhà phát triển phải tìm ding những chip vi
xử lý của mình như làm một thông số theo sau Khi biên
Trang 36dịch một ứng dụng, trình biên dịch có thể tạo ra nhiều loại
Nạp chương trình ứng dụng uClinux thì giống như công
việc của Linux thông thường Vấn đề quan trọng là phải sửa đổi makefile dé chương trình ứng dụng có thể hoạt động với uClinux Một vân đề khác cân phải lưu ý là do không có MMU, việc cấp phát bộ nhớ cần phải được quna tâm.
Để hiệu quả và tiện lợi cho việc theo dõi, cần phải cậpnhật những sửa đổi, những thay đổi để người khác có thểthay đôi, chỉnh sửa đoạn code dễ đàng
Hầu hết những vấn đề khi biên dịch thường phát sinh từnhững thư viện Việc thiếu thư viện bắt buộc người dùngphải tạo thư viện trong hệ thống của mình Ngoài ra, cũng
có thể do những khác biệ từ hàm API cho từ thư viện C,thư viện uClibC hỗ trợ tốt hơn vấn đề này
12.Tương lai của hệ thống nhúng uClinux:
Trang 37Ngày nay cộng đồng | uClinux tiếp tục cung cấp nhữngphần mới, sửa đổi cải tiến cho kernel mới nhất khi họ làm
xong Quá trình phát triển này phát triển một cách nhanh
chóng cùng những phiên bản mới của kernel Cộng đồng
cũng cho ra những phiên bản thư viện uClibc thông qua
những trang web hỗ trợ của uClinux Cộng đồng ảnh hưởng
mạnh mẽ tới những loại chip xử lý không có bộ MMU.
Những phiên bản Linux đã được nhúng vào trong bộ
ucLinux 2.5.x cho những kernel chính, bắt đầu từ phiên bản
Linux-2.5.4.6 Điều này cho phép những nhà phát triển hệ
chip không có phần kiến trúc quản lý bộ nhớ MMU và có
thé thiết lập dé phát triển và thiết lập hệ thống của mình từ phiên bản của Linux
13.Kết luận
Ngày càng nhiều loại chip xử lý ra đời, của nhiều hãng sảnxuất khác nhau, giá thành ngày càng rẻ nhưng tính năng lạimạnh mẽ Cùng với sự phát triển về công nghệ, nhu cầu đòihỏi ở tính thông minh, tính uyên chuyển, tính nhanh chóngthương mai hoá của các thiết bị dân dụng, công nghiệp ngàycàng cao hơn vì vậy việc phát triển những hệ điều hành nhúngcho những loai chip này để đáp ứng được những nhu cầu này
là việc tất yếu
uClinux là một trong những hệ điều hành có thể đáp ứngđược điều đó Người viết tin là trong tương lai uClinux sẽ pháttriển rực rỡ, được sử dung rộng rãi trong các thiết bị dan dung
cũng như công nghiệp, mang sự thông minh vào thiết bị Và sẽ
có ngày nào đó những thiết như một chiếc điện thoại bàn, một cái quạt máy, một chiếc TV hay những thiết bị như ROUTER cho phép người sử dụng chính mình có thể tự viết chương trình phần mềm điều khiển nó tuỳ theo ý thích của
mình và đưa vào thiết bị đễ dàng bằng những thẻ nhớ đề khởi
động như một máy tính thu nhỏ
Trang 38CHƯƠNG 3:
CÔNG NGHỆ FPGA TRONG HỆ
THÓNG NHÚNG
1 Giới thiệu
Trong chương trình đào tạo, chắc chan thế nào các bạn
cũng đã được học môn Vi Xử Lý và thí nghiệm vi xử lý, và
các bạn đã làm quen với việc lập trình vi xử lý bằng ngôn
ngữ Assembly dành cho các học vi xử lý AT 8051 của Atmel, Mircoprocessor họ 386 của Intel, PIC của Microchip.Tuy nhiên, bên cạnh đó các bạn cũng có thê lập
trình cho họ vi xử lý bằng ngôn ngữ C(cy thé là Keil C) Vingôn ngữ C là ngôn ngữ cấp cao nên việc lập trình cho
8051 dé dang hon so với sử dụng ngôn ngữ Assembly Việc
viết chương trình rồi đồ vào vi xử lý được gọi là “nhúng”
và hệ thống tạo ra được gọi là hệ thống nhúng
Tuy nhiên, những vi xử lý có hạn chế là bộ nhớ nhỏ (cả
trong lẫn ngoài) nên ở đây, chúng tôi xin giới thiệu một hệ
thống nhúng hoàn toàn khác với những hệ t ống nhúngtruyền thống, vi điều khiển và chương trình điều khiển ở
đây cũng sẽ được nhúng vào trong một FPGA (Field Programable Gate Array) Một trong những chương trình thông dụng được sử dụng hiện nay là chương trình EDK
(Embedded Development Kit) được viết bởi hãng Xilinx và
sử dụng FPGA của hãng Xilinx, luận án này sẽ trình bày
phương pháp sử dụng phần mềm EDK 8.1i, là version 2005
Trang 39viết các IP đó, mà chỉ sử dụng nó, phần quan trọng làchúng ta phải viết phần mềm điều khiển Chip nhúng đã
được viết sẵn đó, và điều này cũng thực sự không phải là
khó khăn vì chúng ta không cần sử dụng tập lệnh Asembly
của chip nhúng ( được da tên là MicroBlaze) mà chúng ta
sẽ sử dụng ngôn ngữ Standard C hay C++ dé viết chương
trình điều khién MicroBlaze (tương đương với một vi xử lý
32 bit, đối với version 4.0 còn có thêm FPU/don vị xử lý
đấu chấm động) và các thư viên hỗ trợ sẵn với các hàn điềukhiển ngoại vi rất nhiều)
Luu ý: chương trình EDK 8.1i chỉ có thể chạy được khi các
ban đã cài phan mêm Xilinx ISE 8.1, có thê Download bảng chạy thử 30 ngày tại trang web: www.xilinx.com/edk
Trang 402 Tổng quan về công nghệ FPGA
FPGA là thuật ngữ viết tắt từ chữ field-programmable gatearray, là một loại linh kiện điện tử chứa những phần tử lập
trình được, được gọi là những “logic blocks” và những đường
kết nói lập trình được Những khối lập trình được nây có thé
được lập trình dé trở thành những cổng logic căn bản như công AND, XOR hay kết hợp những chức năng phức tạp như:
decoder, những bộ thuật toán đơn giản Trong hầu hết những
con chip FPGA, những khối logic đều có chứa những phan tử nhớ, có thể đơn giản chỉ là những Flip-Flop hoặc những khối
bộ nhớ đã được thiết kế sẵn.
Cấu trúc của những đường kết nói trình được cho phép người lập trình có thê kết nối những khôi lập trình được với
nhau Người sử dụng, người thiết kế có thể lập trình được bắt
cứ khối logic nào trong FPGA, chính vi ly do đó, mà FPGA
được gọi là “Field Programmable”
FPGA thường có tốc độ xử lý chậm hơn ASIC (ApplicationSpecific Intergrated Circuit) Nó thường tiêu hao nhiều điệnnăng và mật độ phức tạp của thiết kế không bằng ASIC Tuy
nhiên, nó lại có ưu điểm là rút ngắn thời gian đưa sản phẩm ra thị trường, khả năng có thể lặp trình lại cho phép người thiết
kế khắc phục những lỗi lập trình (program bugs) đơn giản, dễ dàng, giảm chỉ phí thiết kế mạch Nhà sản xuất cuối cùng có thể thiết kế trên loại FPGA, hoàn chỉnh thiết kế, sau đó sử dụng loại FPGA lập trình chỉ được 1 lần với giá rẻ hơn hoặc
tai cầu câu trúc những thiết kế đã được hoàn chỉnh trên FPGA
để sản xuất ASIC
3 Lich sir phát triển của FPGA
FPGA có lịch sử phát triển từ CPLD (complex
programmable logic devices — Linh kiện lập trình phức tap)
vào những năm đầu của thập niên 80 Ross Freeman, một
trong những người sang lập hãng Xilinx, phát minh ra field