21
1 BÁO CÁO CHUYÊN ĐỀ CÔNG NGHMI GVHD : Thy Phạm Văn Khoa Nhóm 5 : -Phm Hu Ái MSSV: 09901014 -Nguyễn Thành Quang Đức MSSV: 09901024 Đề tài : Bios và Boot Loader I. Tng quan vboot loader Trong các máy tính cá nhân (PC), ngay khi bt ngun,một chương trình phần mm gi là Bios ngay lp tc kim soát hoạt động xlý. Bios được viết tt tBasic Input/Output Software,nghĩa là phần mm nhp/xuất cơ bản. Bios được lưu trữ trong bnhFlash,tạo điều kin cho vic nâng cp cho chính nó.Hay nói cách khác, Bios là mt tp hợp các chương trình phần mm cu hình hthng,mô tkiến trúc phn cng cấp độ thp. Hu hết chúng ta không nhn thức được phm vi của Bios cũng như các chức năng của nó,nhưng nó lại là thành phn rt quan trng ca các máy tính PC. Nhim vchính của nó là để khi to phn cứng,đặc bit là hthng bnh,và ti hđiều hành tcng máy tính. Trong mt hthống nhúng điển hình (không da trên nn tng phn cng máy tính tiêu chun công nghip X86),mt bnp khởi động (boot loader) là mt chương trình phần mm thc hin các chức năng tương tự như Bios. Tuy nhiên,có mt snhim vquan trọng hơn mà bộ np khởi động thc hin sau khi mnguồn,đó là : Khi to các thành phn phn cng quan trng,chng hạn như bộ điều khin SDRAM, bđiều khin I/O,bđiều khiển đồ họa… Khi to bnhhthống để chun bcho việc điều khin ca hđiều hành. Cp phát tài nguyên hthống như bộ nh,mch ngt để điều khin thiết bngoi vi khi cn. Cung cấp cơ chế để định vvà ti lên file nh hđiều hành Thc hin hoạt động tải và đường điều khiển đến hđiều hành,qua bt kthông tin khởi động cn thiết nào,chng hạn như tốc độ xung nhp ca bnh,tốc độ cng ni tiếp và các dliu cu hình phn cng cp thp. Trên cơ sở các nhim vca bnp khởi động đã được đơn giản hóa trên,chúng ra nhn thy rng,nếu như Bios cung cấp các thiết lp cu hình mang tính cđịnh thì các bnp khởi động ca hthng nhúng li mang tính tùy biến,nghĩa là tùy vào nền tng (platform) ca hthng nhúng mà chức năng của bnp khởi động sdo chính người xây dng hthống đó cung cấp. Vai trò ca mt Boot loader:

Báo cáo chuyên đề công nghệ mới

  • Upload
    pham-ai

  • View
    303

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Báo cáo chuyên đề công nghệ mới

1

BÁO CÁO CHUYÊN ĐỀ CÔNG NGHỆ MỚI

GVHD : Thầy Phạm Văn Khoa

Nhóm 5 : -Phạm Hữu Ái MSSV: 09901014

-Nguyễn Thành Quang Đức MSSV: 09901024

Đề tài : Bios và Boot Loader

I. Tổng quan về boot loader

Trong các máy tính cá nhân (PC), ngay khi bật nguồn,một chương trình phần

mềm gọi là Bios ngay lập tức kiểm soát hoạt động xử lý. Bios được viết tắt từ

Basic Input/Output Software,nghĩa là phần mềm nhập/xuất cơ bản. Bios được

lưu trữ trong bộ nhớ Flash,tạo điều kiện cho việc nâng cấp cho chính nó.Hay

nói cách khác, Bios là một tập hợp các chương trình phần mềm cấu hình hệ

thống,mô tả kiến trúc phần cứng ở cấp độ thấp. Hầu hết chúng ta không nhận

thức được phạm vi của Bios cũng như các chức năng của nó,nhưng nó lại là

thành phần rất quan trọng của các máy tính PC. Nhiệm vụ chính của nó là để

khởi tạo phần cứng,đặc biệt là hệ thống bộ nhớ,và tải hệ điều hành từ ổ cứng

máy tính.

Trong một hệ thống nhúng điển hình (không dựa trên nền tảng phần cứng máy

tính tiêu chuẩn công nghiệp X86),một bộ nạp khởi động (boot loader) là một

chương trình phần mềm thực hiện các chức năng tương tự như Bios. Tuy

nhiên,có một số nhiệm vụ quan trọng hơn mà bộ nạp khởi động thực hiện sau

khi mở nguồn,đó là :

Khởi tạo các thành phần phần cứng quan trọng,chẳng hạn như bộ điều

khiển SDRAM, bộ điều khiển I/O,bộ điều khiển đồ họa…

Khởi tạo bộ nhớ hệ thống để chuẩn bị cho việc điều khiển của hệ

điều hành.

Cấp phát tài nguyên hệ thống như bộ nhớ,mạch ngắt để điều khiển

thiết bị ngoại vi khi cần.

Cung cấp cơ chế để định vị và tải lên file ảnh hệ điều hành

Thực hiện hoạt động tải và đường điều khiển đến hệ điều hành,qua

bất kỳ thông tin khởi động cần thiết nào,chẳng hạn như tốc độ xung

nhịp của bộ nhớ,tốc độ cổng nối tiếp và các dữ liệu cấu hình phần

cứng ở cấp thấp.

Trên cơ sở các nhiệm vụ của bộ nạp khởi động đã được đơn giản hóa ở

trên,chúng ra nhận thấy rằng,nếu như Bios cung cấp các thiết lập cấu hình mang

tính cố định thì các bộ nạp khởi động của hệ thống nhúng lại mang tính tùy

biến,nghĩa là tùy vào nền tảng (platform) của hệ thống nhúng mà chức năng của

bộ nạp khởi động sẽ do chính người xây dựng hệ thống đó cung cấp.

Vai trò của một Boot loader:

Page 2: Báo cáo chuyên đề công nghệ mới

2

Ngay khi bật nguồn một board xử lý, nhiều yếu tố phần cứng phải được khởi

tạo trước khi ngay cả những chương trình đơn giản nhất có thể chạy.Mỗi kiến

trúc và một bộ vi xử lý có một tập hợp các hành động được xác định trước và

cấu hình,trong đó bao gồm việc lấy một số mã khởi tạo từ một thiết bị lưu trữ

trên board (thường là bộ nhớ Flash). Mã khởi tạo này là một phần của boot

loader và chịu trách nhiệm “thổi hơi thở” cho bộ vi xử lý và các thành phần

phần cứng liên quan. Hầu hết các bộ vi xử lý có một địa chỉ mặc định mà từ đó

các byte đầu tiên của mã được lấy khi vừa mới bật nguồn hoặc reset. Người

thiết kế phần cứng cần phải dựa vào thông tin này để sắp xếp bố trí vị trí bộ nhớ

Flash trên board và chọn phạm vi địa chỉ bộ nhớ đáp ứng yêu cầu. Với cách

này,khi hệ thống vừa được cấp nguồn,mã được lấy từ một địa chỉ quen thuộc

và có thể tiên đoán được, và phần mềm điều khiển được thiết lập. Boot loader

cung cấp các mã khởi tạo này và chịu trách nhiệm khởi tạo board để các chương

trình khác có thể chạy.Các mã khởi tạo này hầu như luôn luôn được viết bằng

ngôn ngữ Assembly. Sau khi boot loader thực hiện khởi tạo nền tảng và bộ xử

lý cơ bản thì nó đã thực hiện xong chức năng cơ bản của nó,ngoài ra boot loader

còn có thêm một số tính năng nâng cao như khả năng xác nhận một ảnh hệ điều

hành,khả năng tự nâng cấp cho nó hoặc cho ảnh hệ điều hành. Không giống như

mô hình Bios PC truyền thống,khi hệ điều hành nắm quyền kiểm soát thì Boot

loader đã bị ghi đè và không còn tồn tại nữa.

So sánh giữa máy tính và hệ thống nhúng:

- Trong một hệ thống nhúng vai trò của Bootloader phức tạp hơn vì các hệ

thống nhúng không có BIOS để thực hiện cấu hình hệ thống ban đầu.

- Bộ nạp khởi động trong các máy X86 bao gồm 2 thành phần

Bios

Bộ nạp OS (nằm trong MBR-Master Boot Record của đĩa cứng )

Ví dụ : LILO và GRUB

Các loại Boot loader cho hệ thống nhúng : - U-Boot ( Universal Boot loader ) : bộ nạp khởi động cho PowerPC, ARM

dựa trên hệ thống nhúng Linux

- RedBoot : ( RedHat eCos Derived ),các máy di động,bộ nạp khởi động cho

các hệ thống nhúng

- Rrload : bộ nạp khởi động cho ARM trên hệ thống nhúng Linux.

- FILO : bộ nạp khởi động tương thích X86

- CRL/OHH : bộ nạp khởi động Flash cho ARM dựa trên hệ thống nhúng

Linux.

- PPCBoot : bộ nạp khởi động cho PowerPC dựa trên hệ thống nhúng Linux.

- Alios : hợp ngữ dựa trên bộ nạp Linux để khởi tạo các thành phần phần cứng

cơ bản từ ROM hoặc RAM.Mục đích để loại bỏ thành phần Bios ra khỏi hệ

thống nhúng.

II. THIẾT KẾ BOOTLOADER CHO HỆ THỐNG NHÚNG

1. Những khái niệm về thiết kế bộ nạp khởi động: - Việc thiết kế bộ nạp khởi động tùy vào CPU, board. Các giai đoạn thiết kế

Page 3: Báo cáo chuyên đề công nghệ mới

3

Bootloader :

Giai đoạn 1 :

- khởi tạo các thành phần phần cứng

- Chuẩn bị không gian bộ nhớ để tải chương trình ở giai đoạn thứ 2

- Copy chương trình ở giai đoạn thứ 2 vào bộ nhớ

- Thiết lập SP ( Stack-Pointer, con trỏ ngăn xếp )

- Nhảy đến điểm bắt đầu của chương trình thứ hai

Giai đoạn 2 :

- Khởi tạo các thành phần phần cứng cần thiết cho giai đoạn này

- Kiểm tra bản đồ ô nhớ

- Copy kernel và tập tin ảnh gốc hệ thống vào bộ nhớ

- Thiết lập các thông số

- Khởi động kernel

2. Các khối chức năng của Bootloader :

- Khối chức năng chính ( main function module )

- Khối điều khiển các kênh I/O ( I/O channel driver module )

- Khối điều khiển các thiết bị nhớ,lưu trữ (memory device driver module )

Khối chức năng chính : có các nhiệm vụ :khởi tạo CPU và thiết lập

xung nhịp, đánh dấu toàn bộ các ngắt, thiết lập con trỏ ngăn xếp,

cho phép quản lý nguồn, tải ảnh Linux kernel vào bộ nhớ RAM hệ

thống sau đó thực thi kernel, có khả năng ghi dữ liệu vào bộ nhớ

flash để hỗ trợ tải các tính năng như tự tải Kernel về và nâng cấp.

Khối điều khiển các kênh I/O : có nhiệm vụ cung cấp giao diện để

gửi lệnh đến board đầu cuối hoặc để thông báo cho người dùng

trạng thái của board đầu cuối, khởi tạo các cổng I/O ( ví dụ cổng nối

tiếp hoặc Ethernet)

Khối điều khiển thiết bị nhớ : có nhiệm vụ khởi tạo bộ nhớ,bao gồm

các thiết bị nhớ,các thanh ghi.

- Cài đặt : tất cả các phần mềm hệ thống và dữ liệu được lưu trữ trong các

loại bộ nhớ không bay hơi như Flash, ROM.

NAND Flash

- Là công nghệ Flash mới, có nhiều cải tiến so với công nghệ NOR Flash cũ

như cho phép kích thước mỗi Block nhỏ hơn, tốc độ đọc, ghi tốt hơn cũng

như hiệu quả hơn trong việc sử dụng các mảng bộ nhớ.

- NOR Flash kết nối tới Vi xử lí bằng các bus dữ liệu/địa chỉ song song. Ngược

lại, NAND Flash được truy xuất nối tiếp.

- Thiết kế một hệ thống nhúng ta có thể có nhiều tùy chọn trong việc phân

vùng các bộ nhớ. Trong hệ thống, các file Binary thực thi có thể lưu vào

Flash device. Khi boot lên file ảnh hệ thống trong Flash được đưa vào RAM.

Đây là thiết kế tối ưu vì dữ liệu trên flash ít khi cần phải cập nhật. Bất kì

Page 4: Báo cáo chuyên đề công nghệ mới

4

thay đổi nhỏ nào đều nhỏ nếu so với kích thước bộ nhớ Ram, và sẽ dữ liệu

này sẽ mất đi khi hệ thống khởi động lại

- - Hình 2.8 : Phân vùng Flash Memory Layout thường thấy

- Bootloader thường nằm trên cùng, hoặc dưới cùng. Theo sau đó là Linux

kernel image, rồi đến bộ nhớ Ram hệ thống- chứa Root file system. Thông

thường, Linux kernel và Ram disk file system image được nén lại, và được

boot loader giải nén trong quá trình khởi động.

- Một phần nhỏ của Flash, hoặc loại bộ nhớ không bay hơi (Non volatile) có

thể dành cho các dữ liệu tạm cần được lưu lại, như các dữ liệu cấu hình trong

các Wireless access point hay Router.

- Flash file system

- Những giới hạn của Flash được han chế bằng Flash File System tương tự

như với đĩa cứng. Một trong những ưu điểm với file system là tính năng

Wear leveling nhằm phân phối đều số lần ghi/xóa dữ liệu trên mỗi block

nhằm kéo dài tuổi thọ của bộ nhớ. Ngoài ra File system còn nhằm hạn chế

sự mất mát dữ liệu khi gặp sự cố về nguồn điện. Một trong những File system

được sử dung phổ biến ngày nay đối với Flash là JFFS2- Journaling Flash

File System 2.

- - /bin – Thư mục này chứa các file chương trình thực thi dạng nhị phân và

các chương trình khởi động của hệ thống. (binary applications),

- - /boot – các tập tin cấu hình cho quá trình khởi động hệ thống (boot

configuration files).

3. Chế độ hoạt động của bộ nạp khởi động :

Boot Loading mode : chế độ nạp khởi động,được thiết kế cho người

dùng đầu cuối

Page 5: Báo cáo chuyên đề công nghệ mới

5

Downloading Mode : sử dụng khi tải các thành phần phần mềm vào

hệ thống nhúng lần đầu tiên,được thiết kế dành cho các nhà phát triển.

Trình tự khởi động:

Một giai đoạn (single stage) hay nhiều giai đoạn ( multi-stage).Bộ

nạp khởi động nhiều giai đoạn cung cấp nhiều chức năng phức tạp

hơn và khả năng di động tốt hơn.

Bộ nạp khởi động lưu trữ trong bộ nhớ không bay hơi thường trải qua

2 giai đoạn sau :

+ Giai đoạn đầu tiên : khởi tạo các thành phần phần cứng,chuẩn bị

không gian bộ nhớ để tải chương trình ở giai đoạn thứ 2,sau đó copy

chương trình này vào bộ nhớ,thiết lập con trỏ SP sau đó nhảy đến

điểm bắt đầu của chương trình ở giai đoạn thứ 2.

+ Giai đoạn thứ hai :khởi tạo các thành phần phần cứng cần thiết

cho giai đoạn này,sau đó kiểm tra tổ chức bộ nhớ,copy kernel và

ảnh của file root hệ thống vào trong bộ nhớ, tiến hành thiết lập các

thông số và khởi động kernel.

III. Tìm hiểu boot loader cho kit KM926X

KM926x là board nhúng trên nền vi điều khiển ARM9. Board có kích

thước nhỏ gọn và có tính năng mạnh, sử dụng dòng vi điều khiển

AT91SAM9 của ATMEL cho phép hệ thống chạy với các hệ điều hành

nhúng Linux, WinCE và µC/OS-II RTOS. Hoặc có thể chạy chương trình

ứng dụng standalone như các hệ thống vi điều khiển thông thường.

Các chức năng chính của board km9260:

Bộ xử lý ARM 9260EJ-S, 8Kbyte bộ nhớ đệm lệnh, 8Kbyte bộ

nhớ đệm dữ liệu.

Bus giao tiếp bộ nhớ ngoài 32 bit hỗ trợ 4 bank

SDRAM/LPSDR, static memory, CompactFlash, NAND Flash với EEC.

4Kbyte bộ nhớ SRAM nội, 32 Kbyte bộ nhớ ROM nội để chứa

bootstrap.

Ma trận bus AHB 6 lớp 32 bit với tốc độ 90Mhz.

22 kênh DMA.

Boot từ NAND Flash, SDCard, DataFlash, Serial Data Flash.

4 bộ ADC 10 bit.bộ USART, 2 UART.

10/100 mbps ethernet.

Giao tiếp SPI….

1. TỔ CHỨC PHẦN MỀM TRONG HỆ THỐNG NHÚNG KM926x

Page 6: Báo cáo chuyên đề công nghệ mới

6

HÌNH 4.9 : Tổ chức phần mềm trong hệ thống nhúng KM9260.

1.1 Bootstrap

BootStrap là một chương trình khởi động được nạp xuống trước tiên

cho các vi điều khiển dòng ARM 9 của Atmel.

BootStrap là một module ứng dụng, nó được sử dụng để thực hiện các

chức năng sau:

Khởi tạo phần cứng như tần số xung clock, thiết lập các PIO

(programmable Input Output).

Thiết lập các ngoại vi như PIO, PCM, SDRAM,..

Thực hiện các thực toán truy xuất vật lý các ngoại vi như

DataFlash, NANDFlash, Paralell Flash..

Điều khiển các tập tin hệ thống như JFFS2, FAT..

Thực thi các ứng dụng như ELF, Linux,

BootStrap có thể được đặt trong vùng bootLoader, cụ thể là được đặt

trong vùng DataFlash. BootStrap được chép lên RAM nội bởi trình SAM-

BA Boot. BootLoader thực hiện khởi tạo vi xử lý (PLL, PIO, SDRAMC,

SPI).

BootStrap thực hiện load U-boot từ DataFlash lên SRAM và trỏ đến

thực hiện chương trình U-Boot.

Page 7: Báo cáo chuyên đề công nghệ mới

7

1.2 U-boot

U-boot (universal bootLoader) là một tập mã nguồn mở, hổ trợ

bootLoader cho nhiều kiến trúc nền khác nhau. U-boot hổ trợ các lệnh tương

tác, các biến môi trường, các lệnh thực thi và boot hệ thống từ các thiệt bị

bên ngoài. U-boot hỗ trợ nhiều lọai CPU và các họ CPU thông dụng hiện

nay. U-boot hỗ trợ các board phát triển trên nền các vi xử lý thông dụng hiện

nay.

U-boot thực hiện cấu hình các khối phần cứng trong một board và đặt

chúng vào trạng thái hoạt động. Nó có thể tải và thực thi hệ điều hành một

cách tự động (auto-boot) hoặc ngược lại nó cho phép người dùng khởi động

hệ điều hành thông qua các lệnh giao tiếp mà u-boot hổ trợ. Tập lệnh chuẩn

của u-boot cung cấp khả năng cho phép người sử dụng thao tác trên bộ nhớ,

mạng và nhiều thao tác khác khi hệ thống khởi động.

Thông thường u-boot được đặt trong phân vùng đầu tiên của Flash, bắt

đầu từ sector hay block nào được định nghĩa bởi vi xử lý. U-boot khởi tạo

CPU và một vài phần cứng trên board, tạo một vài cấu trúc dữ liệu để cho

kernel sử dụng và tải nó lên phân vùng đầu tiên của bộ nhớ.

Khi quyền điều khiển được chuyển đến cho u-boot, nó sẽ khởi tạo các

ngắt và các thiết bị ngoại vi. Sau đó u-boot chờ nhập các lệnh từ người dùng.

Nếu u-boot nhận được lệnh boot ảnh của kernel hoặc nếu nó được sử dụng

để boot kernel trực tiếp thì u-boot sẽ giải nén ảnh của kernel, tải kernel lên

bộ nhớ và chuyển điều khiển đến kernel. Kernel sẽ thực thi mà không có sự

tương tác với u-boot.

U-boot cung cấp các hàm chuẩn để hiệu chỉnh qúa trình khơi động và

khởi tạo kernel. Thường thì nó cung cấp các thao tác dưới dạng các lệnh

(command-line).

Cấu trúc thư mục của U-boot.

HÌNH 4.10 : Cấu trúc thư mục U-boot

Page 8: Báo cáo chuyên đề công nghệ mới

8

1.3 Kernel

Nhân được ví như trái tim của hệ điều hành . Về bản chất nhân cũng là

một chương trình phần mềm máy tính nhưng ở cấp độ hệ thống có vai trò

điều khiển các thành phần của hệ thống máy tính , quản lý tài nguyên của

hệ thống , cung cấp một số dịch vụ và phần mềm cơ bản cho máy tính , cung

cấp môi trường thực thi cho các ứng dụng khác nhau chạy trên hệ thống .

Nhân chính là cầu nối giữa phần cứng vật lý của máy tính với và chương

trình ứng dụng .

Các dịch vụ của nhân được chạy trong chế độ đặc quyền của bộ xử lý .

Trái lại, các chương trình ứng dụng được chạy trong chế độ người dùng

hoàn toàn cách ly với hệ điều hành . Khi ứng dụng chạy trong chế độ người

dùng gọi tới một dịch vụ hệ thống thông qua một giao diện , bộ xử lý chặn

lại lời gọi và thi hành dịch vụ mức nhân hệ điều hành. Thông thường việc thi

thực thi ở mức nhân đơn giản và nhanh hơn bởi vì nó không bị chuyển giữa

chế độ đặc quyền và không đặc quyền .

Nhân Linux là phần mềm tự do được phân phối theo Giấy phép sở hữu

công cộng phần mềm GNU GPL ( General Public License ) .

Nhân linux được nhiều hãng phân phối đóng gói và phát triển thành

nhiều bản phân phối (Distribution) khác nhau như Ubuntu, Fedora,

OpenSUSE, Redhat....mỗi bản phân phối đều được đóng gói với các phần

mềm tiện ích hướng tới nhiều thị trường khác nhau

1.4 File system

Trong hệ điều hành Linux, những tập tin mà người sử dụng nhìn thấy

được đều theo cấu trúc cây thư mục, với root nằm ở trên cùng. Từ điểm này

các thư mục và tập tin mới mọc nhánh ra lan dần xuống phía dưới. Thư mục

cao nhất, được ký hiệu bằng vạch /, được gọi là root directory (thư mục

gốc).

Với người sử dụng bình thường thì cây thư mục này là một dải những tập

tin và thư mục nối liền nhau. Trên thực tế, nhiều thư mục trong cây thư mục

này nằm ở nhiều vị trí vật lý khác nhau, trên các partition khác nhau, và

thậm chí trên các ổ đĩa khác nhau. Khi một trong các partition ấy được kết

nối với cấu trúc cây tại một thư mục gọi là mount point (điểm kết nối, điểm

lắp ráp), thì mount point này và tất cả các thư mục cấp dưới được gọi là file

system.

Hệ điều hành Linux hình thành từ nhiều thư mục và tập tin khác nhau.

Các thư mục có thể lập thành nhiều file system khác nhau, tùy vào cách cài

đặt bạn đã chọn. Nhìn chung, đa phần hệ điều hành nằm ở hai file system:

Page 9: Báo cáo chuyên đề công nghệ mới

9

root file system (file system gốc) được ký hiệu là /, và một file system khác

được kết nối theo /usr (đọc là user).

Khi dùng lệnh cd / để chuyển về thư mục gốc và gọi hiển thị danh sách

thư mục, bạn sẽ thấy nhiều thư muc. Những thư mục này tạo thành nội dung

của root file system, đồng thời cung cấp mount point cho các file system

khác. Các thư mục được liệt kê chi tiết tại chương 2.

Hình 4.11 : Cấu trúc file system

2. Quá trình boot trên Board KM926x

Khi cấp nguồn, AT926x chạy chương trình boot bên trong ROM (được xây

dựng sẵn trong quá trình sản xuất chíp). Hình sau thể hiện lưu đồ ROM boot

của AT91SAM926x:

Page 10: Báo cáo chuyên đề công nghệ mới

10

Trình tự boot của MPU AT91SAM926x

Page 11: Báo cáo chuyên đề công nghệ mới

11

B1> Chương trình chạy với bộ dao động nội, hoặc với bộ dao động thạch anh.

B2> Kiểm tra sự tồn tại của chương trình AT91BootStrap trong SPI serial

dataflash device (NPCS0), nếu tồn tại, MPU thực hiện chép mã thực thi của

AT91BootStrap từ SPI serial dataflash device vào SRAM nội của MPU, sau đó thực

thi lệnh nhảy đến địa chỉ đầu tiên của SRAM để thực thi chương trình AT91BootStrap.

Nếu không tồn tại chương trình boostrap trong SPI serial dataflash device, MPU thực

hiện bước B3 sau đây.

B3> Kiểm tra sự tồn tại của chương trình AT91BootStrap trong SPI serial

dataflash device (NPCS1), nếu tồn tại, MPU thực hiện chép mã thực thi của

AT91BootStrap từ SPI serial dataflash device vào SRAM nội của MPU, sau đó thực

thi lệnh nhảy đến địa chỉ đầu tiên của SRAM để thực thi chương trình AT91BootStrap.

Nếu không tồn tại chương trình boostrap trong SPI serial dataflash device, MPU thực

hiện bước B4 sau đây.

B4> Kiểm tra sự tồn tại của chương trình AT91BootStrap trong NAND FLASH

device, nếu tồn tại, MPU thực hiện chép mã thực thi của AT91BootStrap từ NAND

FLASH vào SRAM nội của MPU, sau đó thực thi lệnh nhảy đến địa chỉ đầu tiên của

SRAM để thực thi chương trình AT91BootStrap. Nếu không tồn tại chương

trình boostrap trong SPI serial dataflash device, MPU thực hiện bước B5 sau đây.

B5> Nếu MPU nhận được ký tự bất kỳ từ bàn phím máy tính (qua cổng DBGU).

Hoặc khi cắm cable USB vào máy tính chương trình sẽ nhảy sang SAM-BA boot.

Từ lưu đồ trên, ta có thể lưu trữ AT91BootStrap.bin theo 3 cách: SPI serial dataflash

(NPCS0 hay NPCS1) hoặc lưu trữ trên NAND Flash. KM926x sử dụng SPI serial

dataflash (NPCS1) và NAND FLASH.

Trình tự boot Linux của KM926x

Quá trình boot kernel Linux trên KM926x được thực thi qua 3 tầng,như hình

sau :

Page 12: Báo cáo chuyên đề công nghệ mới

12

(1) KM926x thực thi ROM boot, load AT91AT91BootStrap.bin từ

AT45DB041D-SU (SPI NPCS1) vào SRAM, thực hiện lệnh nhảy và thực thi chương

trình AT91BootStrap.

(2) KM926x thực hiện khởi động PLL cho system clock, khởi động SDRAM

controller, load u-boot.bin từ AT45DB041D-SU tại offset 0x8400 vào địa chỉ

0x21F00000 của SDRAM. Sau đó thực hiện lệnh nhảy vào vùng SDRAM để chạy

chương trình U-Boot.

(3) U-Boot load kernel Image từ nhiều nguồn khác nhau (TFTP, NAND

FLASH...) chép vào địa chỉ 0x20000000 trên SDRAM, sau đó thực hiện lệnh boot

hệ điều hành Linux.

Page 13: Báo cáo chuyên đề công nghệ mới

13

AT91Bootstrap, các biến môi trường (U-Boot’s Environment Variables),

U-Boot được lưu trữ trong serial dataflash. Các phân vùng chứa các

bootloader được thể hiện bởi bảng sau:

BẢNG 4.2 : Phân vùng memory map của NAND Flash.

Page 14: Báo cáo chuyên đề công nghệ mới

THAM KHẢO

CÀI ĐẶT CHƯƠNG TRÌNH CHO HỆ THỐNG

Hướng dẫn Cài đặt SAMBA

Vào thư mục DVD\SW\SAMBA trên đĩa chọn Install AT91-ISP v1.13.exe để

cài đặt.

Sau khi cài đặt xong, chép thư mục “ATMEL Corporation” chép đè

lên thư mục cài đặt mặc định: C:\Program Files\

Quá trình cài đặt SAMBA thành công.

Nạp Bootloader vào board bằng SAM-BA.

Gồm các bước sau:

1. Mở jumper S7 và S8 sau đó gắn cáp nguồn cho board (USB-B hoặc 5VDC)

2. Tháo Jumper S5 trên board AT91SAM9 (gần IC AT45DB041D-SU).

3. Đóng S8 cấp nguồn cho board bằng USB-B hoặc S7 nếu cấp nguồn 5VDC

ngoài.

4. Gắn cable USB-B kết nối board AT91SAM9 và máy vi tính (nếu dùng nguồn

5VDC) Nếu kết nối lần đầu cần cài driver cho chip AT91 tại thư mục ở phần cài

SAMBA.

5. Sau khi máy tính nhận dạng được thiết bị USB ta đóng Jumper S5 vào board

AT91SAM9. Nếu nhận thiết bị tốt sẽ hiện driver như sau

Hình 4.12 : Máy windows kết nối KM9260 qua Samba.

6. Khởi động chương trình SAMBA trên máy vi tính và thực hiện các bước

sau:

Bước 1: Chọn tên board và kiểu kết nối ấn nút Connect.

Page 15: Báo cáo chuyên đề công nghệ mới

Hình 4.13 : Giao diện chọn kết nối Samba.

Tại scripts chọn :Send Boot File:

Tại Address chọn:0x0 địa chỉ offset của Bootstrap

Nhấn nút Excute SW sẽ browse tới bootstrap.bin chọn và nhấn nút open

thì bootstrap code sẽ tự động nạp vào dataflash.

HÌNH 4.14 : Nạp bootstrap

Nạp U-Boot

Tại script chọn Enable NandFlash

Tại Address chọn 0x20000 địa chỉ offset của U-Boot trên NandFlash

Tại Send file name : chọn đường dẫn tới U-boot.bin

Page 16: Báo cáo chuyên đề công nghệ mới

HÌNH 4.15 : Nạp U-boot

Nạp kernel

Tại script chọn: Enable NandFlash

Tại Address chọn :0x200000 địa chỉ offset của Kernel trên NandFlash

Tại send file name : chọn đường dẫn tới Kernel :uImage

Nhấn nút send file

Page 17: Báo cáo chuyên đề công nghệ mới

HÌNH 4.16 : Nạp kernel

Nạp roots

Tại script chọn: Enable NandFlash

Tại Address chọn 0x500000 địa chỉ offset của Rootfs trên NandFlash

Tại Send file name : chọn đường dẫn tới roort:*.jffs2,*.*

Nhấn nút Send file

Page 18: Báo cáo chuyên đề công nghệ mới

HÌNH 4.17 : Nạp roots

Thiết lập biến môi trường cho U-boot lần đầu sử dụng

Sử dụng lệnh printenv để xem tất cả các biến môi trường đã được thiết

lập trong U-boot. Các lệnh được trình bày với định dạng bằng font in đậm,

màu đỏ để dễ phân biệt.

U-Boot> printenv

Thiết lập biến môi trường cho Uboot trong lần đầu sử dụng.

U-Boot> setenv bootcmd ‘nand read 0x20000000 0x20000

0x200000;bootm 0x20000000’

U-Boot> setenv bootargs root=/dev/mtdblock5 rw rootfstype=jffs2

U-Boot> setenv ipaddr 192.168.1.35

U-Boot> setenv serverip 192.168.1.34

Chú ý: Số serverip này phải trùng với ip của máy PC chứa file cần

download .

U-Boot> setenv ethaddr 00:11:22:33:44:55

U-Boot> setenv netmask 255.255.255.0

Lưu lại bằng lệnh

U-Boot> save

Mục đích: để bootup tự động load kernel và rootfs.

Page 19: Báo cáo chuyên đề công nghệ mới

4.6 XÂY DỰNG VÀ PHÁT TRIỂN HỆ THỐNG

4.6.1 Bootstrap

Bootstrap do nhà sản xuất hổ trợ, download bootstrap.bin tại trang

của atmel.com .

4.6.2 U-boot

Uboot có nhiều phiên bản, tuy nhiên từ phiên bản 1.3.4 trở đi thì mới

hỗ trợ board AT91SAM9260,ở đây ta doawload u-boot phiên bản 2009.

Sau khi download u-boot về, chép nó vào một thư

mục nào đó trong máy tính cài hệ điều hành linux.

Việc chép vào máy tính linux có thể được thực hiện

thông qua nhiều cách, ví dụ bạn có thể tải trực tiếp trên máy tính Linux có

nối mạng internet, hoặc từ máy tính Windows XP sau đó chép sang máy

tính Linux thống qua dịch vụ truyền file của SSH server – client, hoặc có

thể chép bằng các thiết bị lưu trữ như USB.

Biên dịch uboot cho arm không sử dụng trình biên

dịch gcc có sẵn trên máy tính cài linux. Trước hết bạn cần cài gói phần

mềm biên dịch arm-linux-gcc.

Gói phần mềm biên dịch bạn có thể tải về từ trên

mạng. Sau khi tải ta được file arm-2009q3-67-arm-none-linux-gnueabi-

.tar về và giải nén vào thư mục gốc của máy tính.

Trước khi biên dịch, cần thiết lập biến môi trường về đường dẫn cho

trình biên dịch, ví dụ như sau:

$export PATH=$PATH:/home/arm/project/compile/arm-

2009q3/bin/

Trong đó thư mục

PATH=/home/arm/project/compile/arm-2009q3/bin/ chứa các trình biên

dịch như arm-linux-gcc.

Biên dịch uboot cho hệ thống

Make CROSS_COMPILE=arm-none-linux-gnueabi- distclean: Xóa

hết các cấu hình biên dịch trước đó.

Make at91sam9260ek_nandflash_config: Khai báo biên dịch uboot cho

hệ thống board at91sam9260ek.

Make CROSS_COMPPILE= arm-none-linux-gnueabi-

Nếu quá trình biên dịch thành công trong thư mục u-

boot-2009 sẽ tồn tại file u-boot.bin.

Page 20: Báo cáo chuyên đề công nghệ mới

Hình 4.18: Máy linux sau khi biên dịch xong u-boot.

4.7 BIÊN DỊCH LINUX KERNEL.

Hệ thống nhúng sử dụng bộ xử lý ARM9 của Atmel

sử dụng hệ điều hành của linux có phiên bản từ 2.6.27. Biên dịch nhân hệ

điều hành cho hệ thống là quá trình thay đổi cấu hình nhân hệ điều hành

Linux sao cho tương thích với hệ thống, quá trình này thông thường một

phần được thực hiện bởi các nhà sản xuất, một phần được thực hiện bởi các

nhà phát triển hệ thống.ở đây ta xài phiên bản Linux-2.6.30, tải phiên bản

Linux-2.6.30 về máy tính dưới dạng mã nguồn linux-2.6.30.tar.bz2.

Chép và giải nén mã nguồn Linux vào máy tính Linux

để thực hiện biên dịch. Trước khi biên dịch, dowload trình biên dịch cross

compile về cài vào máy tính Linux.

Phần mềm arm-2011q3-67-arm-none-linux-gnueabi-i686-pc-linux-

gnu.tar.bz2 chứa các trình biên dịch cần thiết phục vụ cho quá trình biên

dịch nhân hệ điều hành Linux. Chép về và giải nén vào máy tính Linux.

Tiến hành thêm đường dẫn đến trình biên dịch như sau:

Tạo biến môi trường như sau:

$export PATH=$PATH:/home/project/compiler/arm-2011q3/bin/ là

đường dẫn tới compiler

Sau khi chọn xong tiến hành biên dịch uImage.

Make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-

uImage

Sau khi biên dịch thành công,tập tin ảnh của nhân hệ điều hành được

tạo ra trong thư mục /arch/arm/boot.

Page 21: Báo cáo chuyên đề công nghệ mới

HÌNH 4.19 :Máy linux sau khi biên dịch xong uImage