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

Ứng dụng vi điều khiển arm AT91SAM9260 xây dựng hệ thống nhúng có giao tiếp webcam

33 411 2

Đ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

Định dạng
Số trang 33
Dung lượng 489,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

 Đồ án tốt nghiệp “nghiên cứu hệ thống nhúng và xây dựng ứng dụng giao tiếp webcam” là đề tài nghiên cứu về một lĩnh vực mới của Việt Nam. Đó là lập trình nhúng Qua thực tế và khoa học ngày càng phát triển thì nhóm đề tài tốt nghiệp đả quyết định chọn đề tài hướng về lập trình nhúng này để tìm hiểu về các kiến thức nền, kiến thức cơ bản về lập trình nhúng, hệ thống nhúng, vi điều khiển nhúng và hệ điều hành mã nguồn mở là linux. Nội dung đề tài có hai phần:  Phần I là nghiên cứu về lý thuyết phần lý thuyết có những nội dung sau : Nghiên cứu về thống nhúng bao gồm nghiên cứu những đặt trưng, đặt điểm kiến truc phần mềm hệ thống nhúng, Nghiên cứu về hệ điều hành thời gian thực , phân tích quy trình xử lý của hệ điều hành Phân tích một hệ thống nhúng chạy hệ điều hành thời gian thực Giới thiệu kiến thức cơ bản về hệ điều hành linux Nghiên cứu về vi điều khiển arm là vi điều khiển ứng dụng nhiều nhất trong hệ thống nhúng. Nghiên cứu các tính năng , cấu trúc, kiến trúc và ưu nhược điểm của vi điều khiển arm so với các dóng vi điều khiển khác Và nhóm tiến hành nghiên cứu và biên dịch lại nhân linux để chạy trên board phát triển hệ thống nhúng, chạy vi điều khiển arm AT91SAM9260.

Trang 1

I TÓM TẮT NỘI DUNG ĐỀ TÀI

 Đồ án tốt nghiệp “nghiên cứu hệ thống nhúng và xây dựng ứng dụng giao tiếp webcam” là đề tài nghiên cứu về một lĩnh vực mới của Việt Nam Đó là lập trình nhúng

Qua thực tế và khoa học ngày càng phát triển thì nhóm đề tài tốt nghiệp đả quyết định chọn đề tài hướng về lập trình nhúng này để tìm hiểu về các kiến thức nền, kiến thức cơ bản về lập trình nhúng, hệ thống nhúng, vi điều khiển nhúng và hệ điều hành mã nguồn mở là linux

Nội dung đề tài có hai phần:

 Phần I là nghiên cứu về lý thuyết

phần lý thuyết có những nội dung sau :

- Nghiên cứu về thống nhúng bao gồm nghiên cứu những đặt trưng, đặt điểm kiến truc phần mềm hệ thống nhúng,

- Nghiên cứu về hệ điều hành thời gian thực , phân tích quy trình xử lý của hệ điều hành

- Phân tích một hệ thống nhúng chạy hệ điều hành

Trang 2

thời gian thực

- Giới thiệu kiến thức cơ bản về hệ điều hành linux

- Nghiên cứu về vi điều khiển arm là vi điều khiển ứng dụng nhiều nhất trong hệ thống nhúng

- Nghiên cứu các tính năng , cấu trúc, kiến trúc và ưu nhược điểm của vi điều khiển arm so với các dóng

vi điều khiển khác

- Và nhóm tiến hành nghiên cứu và biên dịch lại nhânlinux để chạy trên board phát triển hệ thống nhúng, chạy vi điều khiển arm AT91SAM9260

 Phần 2 là phần xây dựng các ứng dụng chạy trên

board phát triển hệ thống nhúng

- Trươc tiên là nghiên cứu cài đặt cho board phát triểnhệ thống nhúng KM9260 Từ việc nghiên cứu quá trình hoặt động chạy hệ điều hành nhúng mà nhóm tiến hành cài đặt hệ điều hành cho board

- Sau đó phát triển các ứng dụng mô phỏng về giao

Trang 3

phát triển nhúng chạy tập tin multimedia

- Trong đó gồm chạy file audio phát nhạc

- Giao tiếp với Webcam USB truyền và nhận ảnh để ứng dụng vào xử lý ảnh

- Giao tiếp với các thiết bị khác như MOUSE, nút nhấn , led đơn

Đó là những nội dung cơ bản mà nhóm làm đồ án tốt nghiệp đả hoàn thành mặt dù còn hạn chế về kiến thức và khả năng nhiên cứu nhưng nhóm đả cố gắn hoàn thành và xây dựng nhiều ứng dụng mô phỏng để có thể hiểu sâu về lập trình nhúng và vi điều khiển nhúng

II TÓM TẮT NỘI DUNG BÁO CÁO

 Lý thuyết về các vấn đề nghiên cứu trong đồ án

 Mô phỏng chạy tập tin mp3

 Mô phỏng chạy ứng dụng giao tiếp webcam

 PHỤ LỤC XÂY DỰNG CÁC HƯỚNG DẪN THỰC

HIỆN TRÊN BOARD PHÁT TRIỂN HỆ THỐNG

NHÚNG

Trang 4

1 BOOT LOADER CHO KM9260

Boot loader có vai trò quan trọng trong hệ thống nhúng Tùy theo loạiMPU khác nhau mà ta có cơ chế, trình tự boot khách nhau Đối vớiAT91SAM9260, Khi cấp nguồn, AT9260 chạy chương trình boot bên trongROM (được xây dựng sẵn trong quá trình sản xuất chíp) Hình sau thể hiệnlưu đồ ROM boot của AT91SAM9260:

Trang 5

5

Trang 7

B3> Kiểm tra sự tồn tại của chương trình AT91BootStrap trong SPI serialdataflash device (NPCS1) hay không, nếu tồn tại, MPU thực hiện chép mã

Trang 8

thực thi của AT91BootStrap từ SPI serial dataflash device vào SRAM nộicủa MPU, sau đó thực thi lệnh nhảy đến địa chỉ đầu tiên của SRAM để thựcthi chương trình AT91BootStrap Nếu không tồn tại chương trình boostraptrong 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 NANDFLASH device hay không, nếu tồn tại, MPU thực hiện chép mã thực thi củaAT91BootStrap từ NAND FLASH vào SRAM nội của MPU, sau đó thực thilệnh nhảy đến địa chỉ đầu tiên của SRAM để thực thi chương trìnhAT91BootStrap Nếu không tồn tại chương trình boostrap trong SPIserial 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ổngDBGU) Hoặc khi cắm cable USB vào máy tính chương trình sẽ nhảy sangSAM-BA boot

Từ lưu đồ trên, ta có thể lưu trữ AT91BootStrap.bin theo 3 cách: SPI serialdataflash (NPCS0 or NPCS2) hoặc lưu trữ trên NAND Flash KM9260 sửdụng SPI serial dataflash (NPCS1) và NAND FLASH

Trang 9

TRÌNH TỰ BOOT LINUX CỦ A KM9260:

Quá trình boot kernel Linux trên KM9260 được thực thi qua 3 tầng, hình sau biểu thị

cách hoạt động của board:

Trang 10

Hình : Trình tự boot kernel của KM9260.

Trang 11

(1) KM9260 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ự thichương trình AT91BootStrap

(2) KM9260 thực hiện khởi động PLL cho system clock, khởi độngSDRAM controller, load u-boot.bin từ AT45DB041D-SU tại offset 0x8400vào địa chỉ 0x21F00000 của SDRAM Sau đó thực hiện lệnh nhảy vào vùngSDRAM để chạy chương trình U-Boot

(3) U-Boot load kernel uImage từ nhiều nguồn khác nhau (TFTP, NANDFLASH ) chép vào địa chỉ 0x20000000 trên SDRAM, sau đó thực hiện lệnhboot hệ điều hành Linux

Trang 12

2 CÀI ĐặT CHO BOARD PHÁT TRIỂN NHÚNG

1 Tổ chức phần mềm trong hệ thống nhúng KM9260

2 Cài đặt chương trình cho hệ thống

2.1.Cài đặt BootStrap và U- boot

BootStrap

U-boot

Kernel

File System

Trang 13

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

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

(programmable Input Output)

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

o 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

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

o 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

- Cài đặt BootStrap và u-boot thực hiện theo hướng dẫn trong tài liệu kèm theoboard

Trang 14

- 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ị media 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ể load và thực thị 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à load 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ọa 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 kernel image, load kernel lên bộ

Trang 15

-2.2.Các thao tác trên u-boot

- Sau khi U-boot đã được load vào hệ thống Bootstrap thực thi, khởi tạo các thông số cho CPU, load uboot và thực thi uboot Khi uboot thực thi, u-boot command cho phép người sử dụng có thể giao tiếp với hệ thống thông qua các lệnh u-boot hổ trợ

- Trước hết cần thiết lập các thông số môi trường cho hệ thống

Trang 16

- Để thiết lập các thông số môi trường chúng ta sử dụng command setenv như sau

o Thiết lập địa chỉ IP cho board: setenv ipaddr <địa chỉ IP cho board>

o Thiết lập địa chỉ IP cho host : setenv serverip <địa chỉ host>

o Thiết lập địa chỉ ethernet(MAC): setenv ethaddr <MAC address>

o Thiết lập mặt nạ : setenv netmask <submask net>

o Lưu lại các biến môi trường vào dataflash : save

- Chuẩn bị kernel cho hệ thống

- Tại command line của uboot:

o Xóa vùng nhớ NAND FLASH để chuẩn bị cho kernel:

 nand erase offset length

Trang 17

 Để có thể chép thông qua giao thức tftp thì trên máy tính host phải cài đặt và chạy dịch vụ tftp, file uImage được lưu trong thưc mục của tftp server

 U-boot sẽ dò trong biến môi trường xem địa chỉ của server là bao nhiêu và nó sẽ lên sever này tìm file có tên uImage và chép vào bộ nhớ SRAM từ địa chỉ 0x20000000

o Thực thi kernel

 Bootm 0x20000000

 Hệ thống sẽ chuyển đến địa chỉ SRAM 0x20000000 để boot Umage

 Trong trường hợp này lần sau khi mở điện nội dung trên SRAM

sẽ mất đi Để có thể sư dụng uImage cho các lần khởi động sau chúng ta cần chep uImage lên NandFlask

Trang 18

 Bạn chú ý các thao tác chép uImage từ Nandflash xuống SRAMvà thực thi nó được thiết lập trong biến môi trường uboot để thực hiện một cách tự động.

3 Xây dựng và phát triển hệ thống

3.1.bootstrap : boostrap do nhà sản xuất hổ trợ, download bootstrap.bin tại trangcủa atmel.com

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

- 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

Trang 19

- 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ể dowanload 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 sao đó 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

- 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

- PATH=/usr/local/arm/3.4/bin:$PATH

- Trong đó thư mục PATH=/usr/local/arm/3.4/bin chứa các trình biên dịch nhưarm-linux-gcc…

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

o Make clean : xóa hết các cấu hình biên dịch trước đo

o Make at91sam9260ek_config : khai báo biên dịch uboot cho hệ thống board at91sam9260ek

o Make all

Trang 20

- Nếu quá trình biên dịch thành công trong thư mục u-boot-1.3.4 sẽ tồn tại file u-boot.bin

- Một điều chú ý là ở đây chúng ta sử dụng make at91sam9260ek_config vì board KM9260 co thiết kế gần giống board chuẩn at91sam9260ek, nhưng do các file cấu hình cho board KM9260 chưa update lên nên tạm thời có thể sử dụng at91sam9260 để biên dịch cho hệ thống Chính vè điều đó mà khi tạo rauboot.bin sẽ có một số module không hoạt động được

- Để khắc phục trường hợp trên trước khi biên dịch chúng ta cần sửa một số cấu hình trong tập mã nguồn uboot1.3.4

- Biên dịch lại uboot

3 PHÁT TRIỂN LINUX TRÊN KM9260

G IỚ I THIỆU MỘ T SỐ TOOL HỮU ÍCH:

Putty.exe (WinXP):

Trang 21

Có thể sử dụng putty làm terminal cho console chính của board KM9260.

Ở đây, baudrate của cổng COM được set ở 115200 Nếu máy Linux đangchạy ssh server và được nối trong mạng LAN, ta có thể sử dụng console củamáy Linux đó thông qua putty bằng cách sử dụng kiểu kết nối SSH như hình trên

Trang 22

Win SCP.exe ( Win XP):

Chương trình cho phép ta dễ dàng thao tác file của máy Linux trên máyWinXP, giao diện tương tự WinCommander, ta có thể chép file ra-vào từ máyWinXP với máy Linux Để sử dụng chương trình này, trên máy Linux cần phảicó ssh server

Trang 23

Hình : Đăng nhập vào

WinSCP Thông tin đăng nhập:

Host name : Địa chỉ IP của máy Linux : 192.168.3.29

User name : root

Password : thanhmai06119058

Sau khi điền thông tin, ấn nút "Save" và thực hiện kết nối

Trang 24

Hình : Thao tác file trên WinSCP.

Ta có thể drop, drap file vào-ra từ màn hình destop WinXP để thực hiện saolưu file với máy Linux

Cross Toolchians (Linux):

Trang 25

hướng dẫn cách cài đặt toolchains trên máy host Linux PC:

Trước tiên ta tạo thư mục làm việc

Trang 26

Để có thể sử dụng toolchains, ta khai báo biến môi trường như lệnh sau:

$ export PATH=$PATH:/home/km9260-project/tool/arm-2007q3/bin

Để ý rằng trong thư mục “arm-2007q3/bin” chứa những file cần thiết phụcvụ cho việc biên dịch cho KM9260, có thể xem tên các file này bằng cáchdùng lệnh “ls” Các file này được đặt tên theo quy luật Prefix bao gồmchuỗi ký tự “arm-none-linux-gnueabi-“

Và các suffix bao gồm: gcc, ld,

as …

Ta có thể kiểm tra việc export biến môi trường PATH thành công hay khôngbằng cách type lệnh shell như sau:

$ arm-none-linux-gnueabi-gcc

$ arm-none-linux-gnueabi-gcc: no input files

Nếu có xuất hiện thông báo “no input files” thì thao tác export trên thành

Trang 27

khởi động máy Linux hoặc sử dụng console khác ta bắt buộc phải export lại để đảm bảo toochains có thể hoạt động được

MÔ HÌNH MÔI TRƯỜ NG PHÁT TRIỂ N LINUX CHO KM9260:

Môi trường phát triển Linux cho KM9260 có thể áp dụng theo một số mô hình sau:

Mô hình cho nhi ều me mber:

serv

er TFTP serverToolchains

Trang 28

RT LA

Trang 29

Các thành viên có thể coding trên máy tính chạy WinXP hoặc Linux Các máy này có thể kết nối với Workstation thông qua đường Ethernet Việc biên dịch source có thể thực hiện trên Workstation, và các máy Developer có thể truy cập console, truy xuất file với Workstation hoặc KM9260 thông qua giao thức của SSH server.

Workstation (host) :

Là máy tính Linux, có nhiệm vụ biên dịch source code từ các Developerbằng cách sử dụng cross-compiler (toolchains) Do host có chạy SSH server,các Developer có thể sử dụng console của host thông qua SSH client Ngoài

ra TFTP server có vai trò lưu trữ các file ảnh sau khi đã biên dịch xong, sẵnsang cho việc boot, chạy chương trình ứng dụng trên target

Targ

et

Là đích mà chúng ta cần phát triển đến TFTP client trên target có nhiệmvụ download các file ảnh từ TFTP server (ở host) và boot kernel thông quabootloader (U-Boot, RedBoot…) Console chính của target được nối với

Ngày đăng: 09/05/2015, 08:50

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w