ݺߣ

ݺߣShare a Scribd company logo
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:
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ế
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ì
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
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
6
HÌNH 4.9 : Tổ chức phần mềm trong hệ thống nhúng KM9260.
1.1Bootstrap
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.
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
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:
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:
10
Trình tự boot của MPU AT91SAM926x
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 :
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.
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.
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 DVDSWSAMBA 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.
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
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
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
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.
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.
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.
HÌNH 4.19 :Máy linux sau khi biên dịch xong uImage

More Related Content

What's hot (20)

Bài 12: Giao tiếp với hệ điều hành
Bài 12: Giao tiếp với hệ điều hànhBài 12: Giao tiếp với hệ điều hành
Bài 12: Giao tiếp với hệ điều hành
Anh Nguyen
Hệ điều hành (chương 1)
Hệ điều hành (chương 1)Hệ điều hành (chương 1)
Hệ điều hành (chương 1)
realpotter
Chuong2 cautruchedieuhanh
Chuong2 cautruchedieuhanhChuong2 cautruchedieuhanh
Chuong2 cautruchedieuhanh
Hai Nguyen
Bai bao cao 3
Bai bao cao 3Bai bao cao 3
Bai bao cao 3
tuankiet123
Mô phỏng vi điều khiển
Mô phỏng vi điều khiểnMô phỏng vi điều khiển
Mô phỏng vi điều khiển
Nguyễn Trung
Bai1laprapcaidat ttth
Bai1laprapcaidat ttthBai1laprapcaidat ttth
Bai1laprapcaidat ttth
ut1101833
Pdfbài 4 ổ cứng hard drive bảo trì sự cố máy tính-mastercode.vn
Pdfbài 4 ổ cứng hard drive   bảo trì sự cố máy tính-mastercode.vnPdfbài 4 ổ cứng hard drive   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 4 ổ cứng hard drive bảo trì sự cố máy tính-mastercode.vn
MasterCode.vn
Bài 8 BỘ NHỚ THỨ CẤP
Bài 8 BỘ NHỚ THỨ CẤPBài 8 BỘ NHỚ THỨ CẤP
Bài 8 BỘ NHỚ THỨ CẤP
MasterCode.vn
Huong dan cai dat bx 25
Huong dan cai dat bx 25Huong dan cai dat bx 25
Huong dan cai dat bx 25
Nguyễn Anh
Tóm tắt lệnh Ubuntu
Tóm tắt lệnh UbuntuTóm tắt lệnh Ubuntu
Tóm tắt lệnh Ubuntu
Quang Ngoc
HDH
HDHHDH
HDH
thaint095
Cac lenh co_ban_linux
Cac lenh co_ban_linuxCac lenh co_ban_linux
Cac lenh co_ban_linux
gofriv
Hệ điều hành (chương 2)
Hệ điều hành (chương 2)Hệ điều hành (chương 2)
Hệ điều hành (chương 2)
realpotter

Similar to Báo cáo chuyên đề công nghệ mới (20)

bai-3-thiet-lap-bios-61c90f9b8bb80c5l02.pptx
bai-3-thiet-lap-bios-61c90f9b8bb80c5l02.pptxbai-3-thiet-lap-bios-61c90f9b8bb80c5l02.pptx
bai-3-thiet-lap-bios-61c90f9b8bb80c5l02.pptx
lenamct1983
tài liệu Mã nguồn mở 02 sudung
tài liệu Mã nguồn mở  02 sudungtài liệu Mã nguồn mở  02 sudung
tài liệu Mã nguồn mở 02 sudung
Thuyet Nguyen
cấu trúc máy tính Chuong3
cấu trúc máy tính Chuong3cấu trúc máy tính Chuong3
cấu trúc máy tính Chuong3
Thay Đổi
03 installing linux as a server
03  installing linux as a server03  installing linux as a server
03 installing linux as a server
Cơn Gió
Báo cáo thực tập lắp ráp cài đặt sữa chữa máy tính
Báo cáo thực tập lắp ráp cài đặt sữa chữa máy tínhBáo cáo thực tập lắp ráp cài đặt sữa chữa máy tính
Báo cáo thực tập lắp ráp cài đặt sữa chữa máy tính
Dịch vụ viết bài trọn gói ZALO: 0936 885 877
Chương 2 căn bản cisco ios
Chương 2 căn bản cisco iosChương 2 căn bản cisco ios
Chương 2 căn bản cisco ios
nguyenhoangbao
U boot
U bootU boot
U boot
Ho Nghia Duc
Tai lieu quan tri he thong erp oracle
Tai lieu quan tri he thong erp oracleTai lieu quan tri he thong erp oracle
Tai lieu quan tri he thong erp oracle
Kiet Tran
Tổng quan về Hệ điều hành
Tổng quan về Hệ điều hànhTổng quan về Hệ điều hành
Tổng quan về Hệ điều hành
PhamTuanKhiem
Bai tap3
Bai tap3Bai tap3
Bai tap3
Hằng Lê
Lesson 2 - Install Linux & Command Line Environment
Lesson 2 - Install Linux & Command Line EnvironmentLesson 2 - Install Linux & Command Line Environment
Lesson 2 - Install Linux & Command Line Environment
Thang Man
cấu trúc máy tính Chuong2
cấu trúc máy tính Chuong2cấu trúc máy tính Chuong2
cấu trúc máy tính Chuong2
Thay Đổi
Baocao th ctmt
Baocao th ctmtBaocao th ctmt
Baocao th ctmt
John Lemon
Chappter 1 - Embedded system presentation.pdf
Chappter 1 - Embedded system presentation.pdfChappter 1 - Embedded system presentation.pdf
Chappter 1 - Embedded system presentation.pdf
ngtloc2017
Sao luu va phuc hoi trong win xp
Sao luu va phuc hoi trong win xpSao luu va phuc hoi trong win xp
Sao luu va phuc hoi trong win xp
Nguyễn Anh
Sao lưu và phục hồi dữ liệu trong win xp
Sao lưu và phục hồi dữ liệu trong win xp Sao lưu và phục hồi dữ liệu trong win xp
Sao lưu và phục hồi dữ liệu trong win xp
Quoc Nguyen
bai-3-thiet-lap-bios-61c90f9b8bb80c5l02.pptx
bai-3-thiet-lap-bios-61c90f9b8bb80c5l02.pptxbai-3-thiet-lap-bios-61c90f9b8bb80c5l02.pptx
bai-3-thiet-lap-bios-61c90f9b8bb80c5l02.pptx
lenamct1983
tài liệu Mã nguồn mở 02 sudung
tài liệu Mã nguồn mở  02 sudungtài liệu Mã nguồn mở  02 sudung
tài liệu Mã nguồn mở 02 sudung
Thuyet Nguyen
cấu trúc máy tính Chuong3
cấu trúc máy tính Chuong3cấu trúc máy tính Chuong3
cấu trúc máy tính Chuong3
Thay Đổi
03 installing linux as a server
03  installing linux as a server03  installing linux as a server
03 installing linux as a server
Cơn Gió
Chương 2 căn bản cisco ios
Chương 2 căn bản cisco iosChương 2 căn bản cisco ios
Chương 2 căn bản cisco ios
nguyenhoangbao
Tai lieu quan tri he thong erp oracle
Tai lieu quan tri he thong erp oracleTai lieu quan tri he thong erp oracle
Tai lieu quan tri he thong erp oracle
Kiet Tran
Tổng quan về Hệ điều hành
Tổng quan về Hệ điều hànhTổng quan về Hệ điều hành
Tổng quan về Hệ điều hành
PhamTuanKhiem
Lesson 2 - Install Linux & Command Line Environment
Lesson 2 - Install Linux & Command Line EnvironmentLesson 2 - Install Linux & Command Line Environment
Lesson 2 - Install Linux & Command Line Environment
Thang Man
cấu trúc máy tính Chuong2
cấu trúc máy tính Chuong2cấu trúc máy tính Chuong2
cấu trúc máy tính Chuong2
Thay Đổi
Chappter 1 - Embedded system presentation.pdf
Chappter 1 - Embedded system presentation.pdfChappter 1 - Embedded system presentation.pdf
Chappter 1 - Embedded system presentation.pdf
ngtloc2017
Sao luu va phuc hoi trong win xp
Sao luu va phuc hoi trong win xpSao luu va phuc hoi trong win xp
Sao luu va phuc hoi trong win xp
Nguyễn Anh
Sao lưu và phục hồi dữ liệu trong win xp
Sao lưu và phục hồi dữ liệu trong win xp Sao lưu và phục hồi dữ liệu trong win xp
Sao lưu và phục hồi dữ liệu trong win xp
Quoc Nguyen

Recently uploaded (18)

Giáo án Ngữ văn 10 KNTT BỘ 2 NGƯỜI CẦM QUYỀN....docx
Giáo án Ngữ văn 10 KNTT BỘ 2 NGƯỜI CẦM QUYỀN....docxGiáo án Ngữ văn 10 KNTT BỘ 2 NGƯỜI CẦM QUYỀN....docx
Giáo án Ngữ văn 10 KNTT BỘ 2 NGƯỜI CẦM QUYỀN....docx
thanhyt004
Nghiên cứu sinh học về đột biến Nhiễm sắc thể
Nghiên cứu sinh học về đột biến Nhiễm sắc thểNghiên cứu sinh học về đột biến Nhiễm sắc thể
Nghiên cứu sinh học về đột biến Nhiễm sắc thể
nguyenphuonguyen1412
[PPT11] Bài 7 - Đọc - Cà Mau quê xứ.pptx
[PPT11] Bài 7 - Đọc - Cà Mau quê xứ.pptx[PPT11] Bài 7 - Đọc - Cà Mau quê xứ.pptx
[PPT11] Bài 7 - Đọc - Cà Mau quê xứ.pptx
phuonguyn2400
[PPT11] Bài 7 - Đọc - Và tôi vẫn muốn mẹ....ppt
[PPT11] Bài 7 - Đọc - Và tôi vẫn muốn mẹ....ppt[PPT11] Bài 7 - Đọc - Và tôi vẫn muốn mẹ....ppt
[PPT11] Bài 7 - Đọc - Và tôi vẫn muốn mẹ....ppt
phuonguyn2400
Cours 3 Les voyelles nasales semi voyelles.pptx
Cours 3 Les voyelles nasales semi voyelles.pptxCours 3 Les voyelles nasales semi voyelles.pptx
Cours 3 Les voyelles nasales semi voyelles.pptx
HaihuyDong
bac-gau-den-va-hai-chu-tho-co-chu_02122022.ppt
bac-gau-den-va-hai-chu-tho-co-chu_02122022.pptbac-gau-den-va-hai-chu-tho-co-chu_02122022.ppt
bac-gau-den-va-hai-chu-tho-co-chu_02122022.ppt
LuPhm10
Bac gau den va hai chu tho co NGUYET.ppt
Bac gau den va hai chu tho co NGUYET.pptBac gau den va hai chu tho co NGUYET.ppt
Bac gau den va hai chu tho co NGUYET.ppt
LuPhm10
Chương 3. Đối lưu nhiệt. hóa hữu cơ TDTU
Chương 3.  Đối lưu nhiệt. hóa hữu cơ TDTUChương 3.  Đối lưu nhiệt. hóa hữu cơ TDTU
Chương 3. Đối lưu nhiệt. hóa hữu cơ TDTU
ngKhi80
Bài giảng LSĐ.pptx.pptx Bài giảng LSĐ.pptx.pptx
Bài giảng LSĐ.pptx.pptx Bài giảng LSĐ.pptx.pptxBài giảng LSĐ.pptx.pptx Bài giảng LSĐ.pptx.pptx
Bài giảng LSĐ.pptx.pptx Bài giảng LSĐ.pptx.pptx
2251010138
373E879C-764F-11EF-AA2F-F5F8FA70038B.pdf
373E879C-764F-11EF-AA2F-F5F8FA70038B.pdf373E879C-764F-11EF-AA2F-F5F8FA70038B.pdf
373E879C-764F-11EF-AA2F-F5F8FA70038B.pdf
KimAnhDng
cd-van-6_-t47-b4-thtv-tu-dong-am-tu-da-nghia_11072023.pptx
cd-van-6_-t47-b4-thtv-tu-dong-am-tu-da-nghia_11072023.pptxcd-van-6_-t47-b4-thtv-tu-dong-am-tu-da-nghia_11072023.pptx
cd-van-6_-t47-b4-thtv-tu-dong-am-tu-da-nghia_11072023.pptx
ThyLinh936093
Airport Vocabulary IN ENGLISH BBBHHBHBHBHB
Airport Vocabulary IN ENGLISH BBBHHBHBHBHBAirport Vocabulary IN ENGLISH BBBHHBHBHBHB
Airport Vocabulary IN ENGLISH BBBHHBHBHBHB
HBng40
Bac gau den va hai chu tho co NGUYET.ppt
Bac gau den va hai chu tho co NGUYET.pptBac gau den va hai chu tho co NGUYET.ppt
Bac gau den va hai chu tho co NGUYET.ppt
LuPhm10
pppppp.pptxmmmmmmmmmmmmmmmmmoommmmmmmmmmmmmmmmm
pppppp.pptxmmmmmmmmmmmmmmmmmoommmmmmmmmmmmmmmmmpppppp.pptxmmmmmmmmmmmmmmmmmoommmmmmmmmmmmmmmmm
pppppp.pptxmmmmmmmmmmmmmmmmmoommmmmmmmmmmmmmmmm
ngPhan57
Bài giảng TTHCM.pptx Bài giảng TTHCMBài giảng TTHCM
Bài giảng TTHCM.pptx Bài giảng TTHCMBài giảng TTHCMBài giảng TTHCM.pptx Bài giảng TTHCMBài giảng TTHCM
Bài giảng TTHCM.pptx Bài giảng TTHCMBài giảng TTHCM
2251010138
CHINH PHỤC LÝ THUYẾT SINH HỌC BẰNG SƠ ĐỒ TƯ DUY.pdf
CHINH PHỤC LÝ THUYẾT SINH HỌC BẰNG SƠ ĐỒ TƯ DUY.pdfCHINH PHỤC LÝ THUYẾT SINH HỌC BẰNG SƠ ĐỒ TƯ DUY.pdf
CHINH PHỤC LÝ THUYẾT SINH HỌC BẰNG SƠ ĐỒ TƯ DUY.pdf
Huyn804581
GRAMMAR PRACTICE TEST 01 ANSWER KEY.docx
GRAMMAR PRACTICE TEST 01 ANSWER KEY.docxGRAMMAR PRACTICE TEST 01 ANSWER KEY.docx
GRAMMAR PRACTICE TEST 01 ANSWER KEY.docx
AnhDuc498595
MICE Trường Anh ngữ IU Cebu Brochure 2025.pdf
MICE Trường Anh ngữ IU Cebu Brochure 2025.pdfMICE Trường Anh ngữ IU Cebu Brochure 2025.pdf
MICE Trường Anh ngữ IU Cebu Brochure 2025.pdf
Du học MICE - Du học tiếng Anh
Giáo án Ngữ văn 10 KNTT BỘ 2 NGƯỜI CẦM QUYỀN....docx
Giáo án Ngữ văn 10 KNTT BỘ 2 NGƯỜI CẦM QUYỀN....docxGiáo án Ngữ văn 10 KNTT BỘ 2 NGƯỜI CẦM QUYỀN....docx
Giáo án Ngữ văn 10 KNTT BỘ 2 NGƯỜI CẦM QUYỀN....docx
thanhyt004
Nghiên cứu sinh học về đột biến Nhiễm sắc thể
Nghiên cứu sinh học về đột biến Nhiễm sắc thểNghiên cứu sinh học về đột biến Nhiễm sắc thể
Nghiên cứu sinh học về đột biến Nhiễm sắc thể
nguyenphuonguyen1412
[PPT11] Bài 7 - Đọc - Cà Mau quê xứ.pptx
[PPT11] Bài 7 - Đọc - Cà Mau quê xứ.pptx[PPT11] Bài 7 - Đọc - Cà Mau quê xứ.pptx
[PPT11] Bài 7 - Đọc - Cà Mau quê xứ.pptx
phuonguyn2400
[PPT11] Bài 7 - Đọc - Và tôi vẫn muốn mẹ....ppt
[PPT11] Bài 7 - Đọc - Và tôi vẫn muốn mẹ....ppt[PPT11] Bài 7 - Đọc - Và tôi vẫn muốn mẹ....ppt
[PPT11] Bài 7 - Đọc - Và tôi vẫn muốn mẹ....ppt
phuonguyn2400
Cours 3 Les voyelles nasales semi voyelles.pptx
Cours 3 Les voyelles nasales semi voyelles.pptxCours 3 Les voyelles nasales semi voyelles.pptx
Cours 3 Les voyelles nasales semi voyelles.pptx
HaihuyDong
bac-gau-den-va-hai-chu-tho-co-chu_02122022.ppt
bac-gau-den-va-hai-chu-tho-co-chu_02122022.pptbac-gau-den-va-hai-chu-tho-co-chu_02122022.ppt
bac-gau-den-va-hai-chu-tho-co-chu_02122022.ppt
LuPhm10
Bac gau den va hai chu tho co NGUYET.ppt
Bac gau den va hai chu tho co NGUYET.pptBac gau den va hai chu tho co NGUYET.ppt
Bac gau den va hai chu tho co NGUYET.ppt
LuPhm10
Chương 3. Đối lưu nhiệt. hóa hữu cơ TDTU
Chương 3.  Đối lưu nhiệt. hóa hữu cơ TDTUChương 3.  Đối lưu nhiệt. hóa hữu cơ TDTU
Chương 3. Đối lưu nhiệt. hóa hữu cơ TDTU
ngKhi80
Bài giảng LSĐ.pptx.pptx Bài giảng LSĐ.pptx.pptx
Bài giảng LSĐ.pptx.pptx Bài giảng LSĐ.pptx.pptxBài giảng LSĐ.pptx.pptx Bài giảng LSĐ.pptx.pptx
Bài giảng LSĐ.pptx.pptx Bài giảng LSĐ.pptx.pptx
2251010138
373E879C-764F-11EF-AA2F-F5F8FA70038B.pdf
373E879C-764F-11EF-AA2F-F5F8FA70038B.pdf373E879C-764F-11EF-AA2F-F5F8FA70038B.pdf
373E879C-764F-11EF-AA2F-F5F8FA70038B.pdf
KimAnhDng
cd-van-6_-t47-b4-thtv-tu-dong-am-tu-da-nghia_11072023.pptx
cd-van-6_-t47-b4-thtv-tu-dong-am-tu-da-nghia_11072023.pptxcd-van-6_-t47-b4-thtv-tu-dong-am-tu-da-nghia_11072023.pptx
cd-van-6_-t47-b4-thtv-tu-dong-am-tu-da-nghia_11072023.pptx
ThyLinh936093
Airport Vocabulary IN ENGLISH BBBHHBHBHBHB
Airport Vocabulary IN ENGLISH BBBHHBHBHBHBAirport Vocabulary IN ENGLISH BBBHHBHBHBHB
Airport Vocabulary IN ENGLISH BBBHHBHBHBHB
HBng40
Bac gau den va hai chu tho co NGUYET.ppt
Bac gau den va hai chu tho co NGUYET.pptBac gau den va hai chu tho co NGUYET.ppt
Bac gau den va hai chu tho co NGUYET.ppt
LuPhm10
pppppp.pptxmmmmmmmmmmmmmmmmmoommmmmmmmmmmmmmmmm
pppppp.pptxmmmmmmmmmmmmmmmmmoommmmmmmmmmmmmmmmmpppppp.pptxmmmmmmmmmmmmmmmmmoommmmmmmmmmmmmmmmm
pppppp.pptxmmmmmmmmmmmmmmmmmoommmmmmmmmmmmmmmmm
ngPhan57
Bài giảng TTHCM.pptx Bài giảng TTHCMBài giảng TTHCM
Bài giảng TTHCM.pptx Bài giảng TTHCMBài giảng TTHCMBài giảng TTHCM.pptx Bài giảng TTHCMBài giảng TTHCM
Bài giảng TTHCM.pptx Bài giảng TTHCMBài giảng TTHCM
2251010138
CHINH PHỤC LÝ THUYẾT SINH HỌC BẰNG SƠ ĐỒ TƯ DUY.pdf
CHINH PHỤC LÝ THUYẾT SINH HỌC BẰNG SƠ ĐỒ TƯ DUY.pdfCHINH PHỤC LÝ THUYẾT SINH HỌC BẰNG SƠ ĐỒ TƯ DUY.pdf
CHINH PHỤC LÝ THUYẾT SINH HỌC BẰNG SƠ ĐỒ TƯ DUY.pdf
Huyn804581
GRAMMAR PRACTICE TEST 01 ANSWER KEY.docx
GRAMMAR PRACTICE TEST 01 ANSWER KEY.docxGRAMMAR PRACTICE TEST 01 ANSWER KEY.docx
GRAMMAR PRACTICE TEST 01 ANSWER KEY.docx
AnhDuc498595

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

  • 1. 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:
  • 2. 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ế
  • 3. 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ì
  • 4. 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
  • 5. 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
  • 6. 6 HÌNH 4.9 : Tổ chức phần mềm trong hệ thống nhúng KM9260. 1.1Bootstrap 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.
  • 7. 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
  • 8. 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:
  • 9. 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:
  • 10. 10 Trình tự boot của MPU AT91SAM926x
  • 11. 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 :
  • 12. 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.
  • 13. 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.
  • 14. 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 DVDSWSAMBA 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.
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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.
  • 19. 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.
  • 20. 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.
  • 21. HÌNH 4.19 :Máy linux sau khi biên dịch xong uImage