1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khóa luận tốt nghiệp: Thiết kế hệ thống nhúng uClinux để xây dựng tổng đài IP-PBX và ứng dụng nhà thông minh (intelligent home)

104 4 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thiết kế hệ thống nhúng uClinux để xây dựng tổng đài IP-PBX và ứng dụng nhà thông minh (intelligent home)
Tác giả Huynh Nhut Hai
Người hướng dẫn TS. Le Manh
Trường học Trường Đại học Công nghệ Thông tin
Chuyên ngành Công nghệ thông tin
Thể loại Luận văn tốt nghiệp
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 104
Dung lượng 49,85 MB

Nội dung

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 2

GIỚI THIỆU CHUNG

Trang 3

3 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 4

CHUONG 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 5

2 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 6

THUAT 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 7

Network 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 8

GIỚ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 9

trong đó, 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 11

CHƯƠ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 12

thố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 13

Khá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 14

Firmware

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 15

ngườ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 16

Mộ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 17

ngữ 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 18

CHƯƠ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 19

1.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 20

mở, 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 21

SnapGear 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 22

chươ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 23

việ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 24

lự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 25

nhữ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 26

e 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 27

e 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 29

e 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 30

ROM 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 31

dist/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 32

tạ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 33

thố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 34

11.Ứ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 35

rm -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 36

dị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 37

Ngà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 38

CHƯƠ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 39

viế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 40

2 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

Ngày đăng: 08/11/2024, 17:31

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w