Báo cáo lập trình nhúng Gồm 6 Topic cơ bản liên quan đến quá trình sử dụng, biên dịch, làm quen với các phần mềm để sử dụng cho KIT KM9260
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM
KHOA ĐIỆN – ĐIỆN TỬ
BÁO CÁO LẬP TRÌNH NHÚNG
GVHD : ĐẬU TRỌNG HIỂN SVTH : HOÀNG VĂN THƯƠNG 12341113
NGUYỄN ĐỨC HUY 12341045
Tp Hồ Chí Minh, Tháng 5 Năm 2013
Trang 2LỜI NÓI ĐẦU
Thế giới ngày nay với khoa học kĩ thuật phát triển mạnh mẽ cuộc sống con người ngày càng được phát triển tốt hơn Khoa học kỹ thuật đem lại nhiều tiện ích thiết thực hơn cho cuộc sống con người Góp phần to lớn trong quá trình phát triển của khoa học kỹ thuật là sự phát triển mạnh mẽ của vi xử lý Từ bộ vi
xử lý đầu tiên Intel 4004 được sản xuất bởi công ty Intel vào năm 1971, đến nay ngành công nghiệp vi xử lý đã phát triển vượt bậc và đa dạng với nhiều loại như:
8951, PIC, AVR, ARM, Pentium,Core i7,…
Cùng với sự phát triển đa dạng về chủng loại thì tài nguyên của vi xử lý cũng được nâng cao Các vi xử lý ngày nay cung cấp cho người dùng một nguồn tài nguyên rộng lớn và phong phú Có thể đáp ứng được nhiều yêu cầu khác nhau trong thưc tế Để giúp cho người dùng sử dụng hiệu quả và triệt để các tài nguyên này thì hệ thống nhúng ra đời Hệ thống nhúng (Embedded system) là một thuật ngữ để chỉ một hệ thống có khả năng tự trị được nhúng vào trong một môi trường hay một hệ thống mẹ Đó là các hệ thống tích hợp cả phần cứng và phần phềm phục vụ các bài toán chuyên dụng trong nhiều lĩnh vực công nghiệp,
tự động hoá điều khiển, quan trắc và truyền tin Cùng với sự ra đời của hệ thống nhúng, vi xử lý ngày càng được ứng dụng rộng rãi trong đời sống cũng như trong công nghiệp vì khả năng xử lý nhanh, đa dạng, tiết kiệm năng lượng và
độ ổn định của hệ thống nhúng
Những năm gần đây, sự năng động và tích cực hội nhập quốc tế đã đem về hơi thở mới cho Việt Nam về mọi mặt: kinh tế, xã hội, văn hóa, nghệ thuật … Lĩnh vực kỹ thuật nói chung và kỹ thuật điện tử nói riêng cũng có những thay đổi theo chiều hướng tích cực Bên cạnh việc áp dụng những kỹ thuật mới (chủ yếu mua từ nước ngoài) vào sản xuất, nhiều công ty ở Việt Nam đã chú trọng đến việc phát triển đội ngũ R&D (Research And Development) để tự chế tạo sản phẩm hoàn thiện cung ứng cho thị trường Một trong những sản phẩm đó là
Trang 3kit KM9260 là một kit nhúng được tích hợp cao trên nền vi điều khiển AT91SAM9260.
Tuy hệ thống nhúng rất phổ biến trên toàn thế giới và là hướng phát triển của ngành Điện tử sau này nhưng hiện nay ở Việt Nam đội ngũ kỹ sư hiểu biết về hệ thống nhúng còn rất hạn chế không đáp ứng được nhu cầu nhân lực trong lĩnh vực này Trước tình hình thiếu nhân lực như thế này, trường Đại Học Sư Phạm
Kỹ Thuật Thành Phố Hồ Chí Minh với tư cách là một trong những trường sư phạm kỹ thuật đứng đầu của Việt Nam đã nghiên cứu về lĩnh vực hệ thống nhúng và sẽ đưa vào hệ thống môn học đào tạo trong tương lai gần nhất
Vì vậy nhóm chúng em đã viết bài báo cáo này để củng cố lại kiến thức sau thời gian tiếp xúc với bộ môn nhúng này Bài viết gồm 6 TOPIC cơ bản liên quan đến quá trình sử dụng, biên dịch, làm quen với các phần mềm để sử dụng
cho KIT KM9260 này.
Mặc dù nhóm chúng em đã cố gắng hoàn thành nhiệm vụ đặt ra và đúng thời hạn nhưng chắc chắn sẽ không tránh khỏi những thiếu sót, mong thầy và các bạn sinh viên thông cảm Nhóm chúng em mong nhận được những ý kiến đóng góp của thầy và các bạn sinh viên
TP.HCM, Ngày 13 tháng 05 năm 2013
Nhóm 29
Trang 4LỜI CẢM ƠN
Lời đầu tiên, nhóm chúng em xin được phép chân thành gửi lời cảm ơn đến thầy Đậu Trọng Hiển, giáo viên hướng dẫn bộ môn Lập Trình Nhúng, đã định hướng và trao đổi những kinh nghiệm quý báu để nhóm chúng em thực hiện những nội dung trong cuốn tiểu luận này một cách hoàn chỉnh
TP.HCM, Ngày 15 tháng 05 năm 2013
Trang 5MỤC LỤCTOPIC 1: Phần cứng KIT nhúng KM 9260
Sơ đồ khối của kit Km9260 trang 1Một số đặc điểm chung trang 2TOPIC 2 :Các Gói Nhân Linux ( Phần Mềm) cho KIT Các gói nhân, quá trình boot, cách nạp OS cho KIT
Các gói nhân của hệ điều hành LINUX trang 13Quá trình boot hệ điều hành LINUX trang 15TOPIC 3: Phương pháp biên dịch trên KIT KM 9260
Giới thiệu sơ lượt trang 25Cách thức cài công cụ trên PC trang 25Cách thức chép file, truyền file, thư viện vào kit trang 26Thực thi chương trình trên Kit trang 28TOPIC 4 : Giới thiệu QT
Tổng quan sơ lược về QT trang 31Cài đặt thư viên Tslib trang 32Cài đặt thư viện Opensource everywhere trang 34TOPIC 5 : Phương pháp biên dịch QT sang KIT hoặc thiết bị nhúng hoặc điện thoại
TOPIC 6 : Giới thiệu về lập trình driver và phương pháp lập trình driver
Giới thiệu tổng quan về lập trình driver trang52
Số định danh character driver trang 56Cấu trúc mô tả tập tin của character driver trang 63Cấu trúc tập tin của character driver trang65Cài đặt character device driver vào hệ thống Linux trang 66Tổng quan về giao diện trong cấu trúc lệnh file_operations trang 68Giao diện read() & write() trang 68Giao diện ioctl() trang 71
Trang 6Lập trình mã lệnh trong character driver trang 77Cài đặt driver vào hệ thống linux trang 90Phương pháp lập trình driver trang 91Biên dịch chương trình driver trang 106
Trang 7TOPIC 1 PHẦN CỨNG KIT NHÚNG KM9260
Một hệ thống nhúng bao gồm hai phần: phần cứng và phần mềm Trong đó phần cứng là nền tản, là điều kiện cần để một hệ thống nhúng có thể tồn tại Để
có thể sử dụng được một hệ thống nhúng thì chúng ta phải hiểu được phần cứng của nó
Trong hệ thống nhúng ngoài vi xử lý là nồng cốt thì bên cạnh đó còn có nhiều linh kiện khác: chíp nhớ, các thiết bị ngoại vi, … Trong phần này chúng ta sẽ tìm hiểu phần cứng của Kit KM9260 gồm những linh kiện nào, chức năng của các linh kiện, vị trí của từng linh kiện trên board
Vì phần cứng hệ thống nhúng đa số là do các công ty sản xuất thiết kế, thi công nên với tư cách là một người nghiên cứu để sử dụng thì trong giáo trình này chúng ta không đi sâu vào mạch nguyên lý của kit nhúng
Sơ đồ khối của kit Km9260
Trang 8I MỘT SÔ ĐẶC ĐIỂM CHUNG
1.1 Bộ xử lý
- Sử dụng các bộ xử lý 32 bit, các vi điều khiển 32 bit đa dụng (General purpose microcontroller)
- Tốc độ xử lý: Vài trăm Mhz
- Độ tin cậy cao, tiêu thụ năng lượng thấp
- Hỗ trợ giao tiếp nhiều ngoại vi
1.2 Nguồn cung cấp
- Nguồn cung cấp phải tuyệt đối ổn định, chuẩn
- Có khả năng cung cấp nhiều mức điện áp cho hệ thống như: 5v, 3.3v, 2.5v, 1.8v
Trang 95 J10 Cổng truyền dữ liệu nối tiếp BD9
8 U9 Serial dataflash (512kB)
9 U1 AT91SAM9260, 16/32 bit ARM926EJ-S 180Mhz
11 U5 DM9161EA, Ethernet 10/100 Full-Duplex
12 RJ1 Cổng Giao tiếp Ethernet (RJ45)
13 S1, S2, S3,
S4
Các nút nhấn
Trang 10- Bộ nhớ chính sử dụng SDRAM bus 133Mhz, SDRAMC được cấu hình với bus data 16 bit.
Mã số linh kiện MT48LC16M16A2 TC75
Địa chỉ đoạn 0x20000000Dung lượng 0x2000000 (32MB)
- Bảng sau trình bày thông số bảng đồ vùng nhớ của SDRAM trong hệ thống
Thông số của SDRAM
- Mã số linh kiện là số được in trên chân của chip, mã này do nhà sản xuất qui định
- Chân chọn chip NCS1 có nghĩa là chân CS của chip được nối với chân SDCS_NCS1 của vi xử lý
- Địa chỉ đoạn là địa chỉ mà vi xử lý gán cho chip tương ứng với NCS1
- Dung lượng của SDRAM là 32 MB
1.3.2 Serial dataflash
Trang 11Sơ đồ kết nối Serial DataFlash
- Board sử dụng chip nhớ serial dataflash kết nối qua đường SPI0 ( slot CS1 )
- AT91Bootstrap các biến môi trường ( U-Boot’s Environment Variables ), U-Boot được lưu trữ trong serial data flash Các phân vùng chứa các bootloader được thể hiện bởi bảng sau:
Mã số linh kiện AT45DB041D-SU
Trang 12Sơ đồ kết nối NAND FLASH
- Nand flash 256 MB dùng để chứa nhân Linux và root file system 3 MB vùng nhớ đầu tiên dành cho việc chứa kernel Linux, phân vùng còn lại chứa root file system của hệ thống bảng sau thể thiện thông số memory map của Nand flash
Mã số linh kiện K9F2G08UOM
Trang 13- Do có hỗ trợ microSD, có thể thay thế vai trò của NAND Flash cho việc lưu trữ kernel Linux với rootfs Phân vùng đầu tiên (first partition) được format theo định dạng FAT, phân vùng thứ 2 được định dạng theo ext2 hoặc ext3 dùng để chứa rootfs Để load kernel Linux từ MicroSD vào SDRAM đòi hỏi U-Boot phải hỗ trợ mmc sub system command set MicroSD thường được dùng để boot Linux có roofs dung lượng lớn, ví dụ như Debian distribution
Trang 14Cổng truyền dữ liệu nối tiếp DB9
AT91SAM9260 có tích hợp cổng RS232 KM9260 dùng cổng RS232 này cho việc hiển thị,
xuất nhập với console chính của Linux
1.4.4 Cổng kết nối Ethernet (RJ1)
Cổng kết nối Ethernet
AT91SAM9260 có thể kết hợp với chíp Fast Ethernet PHY DM9161AEP mang lại cho hệ thống tính năng mạnh mẽ về các ứng dụng mạng KM9260 có thể sử dụng như hệ thống webserver nhúng, sử dụng trong hệ thống thu thập đo lường, điều khiển từ xa
1.4.5 Kết nối mở rộng SCI (J17)
Khe cắm kết nối mở rộng SCI
Sơ đồ chân của khe cắm kết nối mở rộng SCI
SỐ
CHÂN
TÍN HIỆU
CHÂN VXL
SỐ CHÂN
TÍN HIÊU
Trang 15Connector cho phép ta có thể mở rộng kết nối với các thiết bị I2S audio
codec, truyền nhận dữ liệu 32bit stream ( High-speed Continuous Data
Stream )
1.4.6 Kết nối mở rộng SPI (J14)
Khe cắm kết nối mở rộng SPI
SỐ CHÂN TÍN HIỆU CHÂN VXL SỐ
Sơ đồ chân của khe cắm kết nối mở rộng SPI
Connector mở rộng cho SPI, bao gồm 3 đường chip select tương ứng cho 3 slot CS0, CS1, S2
1.4.7 Kết nối mở rộng UART, ADC, TWI (J16)
Khe cắm kết nối mở rộng Uart, Adc, Twi
SỐ TÍN HIỆU CHÂN VXL SỐ CHÂN TÍN HIÊU CHÂN VXL
Trang 16Sơ đồ chân của khe cắm kết nối mở rộng Uart, Adc, Twi
Connector mở rộng cho các cổng giao tiếp serial bao gồm UART, TWI, bộ chuyển đổi ADC, GPIO, ngắt ngoài IRQ1
1.4.8 Giao tiếp JTAG ICE (J5)
Khe cắm giao tiếp JTAG ICE
Trang 17thống
Trang 19TOPIC 2 Các Gói Nhân Linux ( Phần Mềm) cho KIT Các gói nhân, quá
trình boot, cách nạp OS cho KIT.
I Các gói nhân của hệ điều hành LINUX:
* Các 3 loại kernel (nhân) khác nhau:
Về bản chất, có nhiều cách để xây dựng cấu trúc và biên dịch 1 bộ kernel nhất định từ đầu Nhìn chung, với hầu hết các kernel hiện nay, chúng ta có thể chia ra làm 3 loại: Monolithic, Microkernel, và Hybrid Linux sử dụng kernel Monolithic trong khi OS X (XNU) và Windows 7 sử dụng kernel Hybrid
1 Microkernel:
Microkernel có đầy đủ các tính năng cần thiết để quản lý bộ vi xử lý, bộ nhớ
và IPC Có rất nhiều thứ khác trong máy tính có thể được nhìn thấy, tiếp xúc và quản lý trong chế độ người dùng Microkernel có tính linh hoạt khá cao, vì vậy bạn không phải lo lắng khi thay đổi 1 thiết bị nào đó, ví dụ như card màn hình, ổ cứng lưu trữ hoặc thậm chí là cả hệ điều hành Microkernel với những thông
số liên quan footprint rất nhỏ, tương tự với bộ nhớ và dung lượng lưu trữ, chúng còn có tính bảo mật khá cao vì chỉ định rõ ràng những tiến trình nào hoạt động trong chế độ user mode, mà không được cấp quyền như trong chế độ giám sát - supervisor mode
- Phần cứng đôi khi “khó hiểu” hơn thông qua hệ thống driver
- Phần cứng hoạt động dưới mức hiệu suất thông thường vì các trình điều khiển ở trong chế độ user mode
- Các tiến trình phải chờ đợi để được nhận thông tin
Trang 20- Các tiến trình không thể truy cập tới những ứng dụng khác mà không phải chờ đợi.
2 Monolithic Kernel:
Với Monolithic thì khác, chúng có chức năng bao quát rộng hơn so với microkernel, không chỉ tham gia quản lý bộ vi xử lý, bộ nhớ, IRC, chúng còn can thiệp vào trình điều khiển driver, tính năng điều phối file hệ thống, các giao tiếp qua lại giữa server Monolithic tốt hơn khi truy cập tới phần cứng và đa tác
vụ, bởi vì nếu 1 chương trình muốn thu thập thông tin từ bộ nhớ và các tiến trình khác, chúng cần có quyền truy cập trực tiếp và không phải chờ đợi các tác vụ khác kết thúc Nhưng đồng thời, chúng cũng là nguyên nhân gây ra sự bất ổn vì nhiều chương trình chạy trong chế độ supervisor mode hơn, chỉ cần 1 sự cố nhỏ cũng khiến cho cả hệ thống mất ổn định
- Tiêu tốn nhiều footprint cài đặt và lưu trữ
- Tính bảo mật kém hơn vì tất cả đều hoạt động trong chế độ giám sát - supervisor mode
3 Hybrid Kernel:
Khác với 2 loại kernel trên, Hybrid có khả năng chọn lựa và quyết định những ứng dụng nào được phép chạy trong chế độ user hoặc supervisor Thông thường, những thứ như driver và file hệ thống I/O sẽ hoạt động trong chế độ user mode trong khi IPC và các gói tín hiệu từ server được giữ lại trong chế độ supervisor
Trang 21Tính năng này thực sự rất có ích vì chúng đảm bảo tính hiệu quả của hệ thống, phân phối và điều chỉnh công việc phù hợp, dễ quản lý.
* Ưu điểm:
- Các nhà phát triển có thể chọn và phân loại những ứng dụng nào sẽ chạy trong chế độ thích hợp
- Sử dụng ít footprint hơn so với monolithic kernel
- Có tính linh hoạt và cơ động cao nhất
* Nhược điểm:
- Có thể bị bỏ lại trong quá trình gây treo hệ thống tương tự như với microkernel
- Các trình điều khiển thiết bị phải được quản lý bởi người dùng
II QUÁ TRÌNH BOOT CỦA HỆ ĐIỀU HÀNH LINUX
Để thực hiện Boot hệ thống trước tiên ta phải thực hiện các bước như sau:
1 Kết nối dây cable (Lan) RJ45
2 Gắn day cable RS232 tử board nhúng vào máy tính sau đó
3 Chạy file chuong trình PUTTY.exeSau khi chùng ta thực hiện xong bước thứ ba thì màn hình giao diện putty sẽ hiển thị lên và thực hiện trình tự theo các bước như sau:
Trang 22* Quá trình boot hệ thống bắt đầu:
Bước 8:
- Bật nút Power On của KIT và ấn nút Reset để khởi động hệ thống
putty console sẽ hiển thị lên màn hình
- Board xuất xưởng được thiết lập autoboot với Angstrom JFFS2 rootfs
- Kernel (uImage) được chứa trong partition 0 và rootfs được chứa trong partition 1 của NAND Flash
* Nạp kernel uimage vào partion 0 của NAND flash ta làm theo các bước sau:
1 Chạy “tftpd32.exe” trên winXP, với thư mục share có chứa uImage
2 Trước tiên ta xóa vùng partition 0 và download uImage từ máy tính vào SDRAM
3 Chép uImage từ SDRAM vào NAND Flash
* uImage có thể load từ NAND vào SDRAM thông qua lệnh sau:
Trang 23* Nạp JFFS2 rootfs vào partion 1 của NAND flash ta làm theo các bước sau:
1 Chạy “tftpd32.exe” trên winXP, với thư mục share có chứa JFFS2 rootfs
2 Trước tiên ta xóa vùng partition 1 và download JFFS2 rootfs từ máy tính vào SDRAM
3 Chép JFFS2 rootfs từ SDRAM vào NAND Flash
* BIÊN DỊCH KERNEL:
+ Chuẩn bị toolchain (cross compiler):
+ Ta thực hiện add đường dẫn thư mục bin của cross compiler vào thư mục PATH
Vd: đường dẫn của thư mục cross compiler là
“/home/km9260-project/tool/ arm-2007q3/bin”
+ Sử dụng mkimage:
mkimage là chương trình dùng để tạo ra uImage, việc cài đặt mkimage có thể thực hiện thao các bước sau:
+ Giải nén và patch source kernel:
Trong thư mục root tạo thư mục km9260-project và chép source 2.6.27.tar.bz2 và patch file “linux-2.6.27-km9260-11102009.diff” vào thư
Trang 24linux-+ Tiến hành cấu hình và build kernel:
* Load kernel và boot Linux:
Sau khi biên dịch kernel, ta có được file uImage
Để boot Linux, ta load uImage vào SDRAM
Thực hiện chép uImage vào SDRAM tại địa chỉ 0x20000000
và boot hệ thống:
QUÁ TRÌNH BOOT LOADER TRONG HỆ THỐNG NHÚNG.
Boot loader có vai trò quan trọng trong hệ thống nhúng Boot
loader là trình tự thực thi các phần mềm của vi xử lý trong quá trình khởi động của hệ thống
Tùy theo loại vi xử lý khác nhau mà ta có cơ chế, trình tự boot khác nhau
* Đây là sơ đồ quá trình Boot Loader
Trang 25Bước 1: Chương trình chạy với bộ dao động nội, hoặc với bộ dao động thạch
anh để thực hiện cấu hình main clock cho hệ thống
Bước 2: Kiểm tra sự tồn tại của chương trình AT91BootStrap trong SPI serial
dataflash device (NPCS0) hay không
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
Trang 26Bước 3: Kiểm tra sự tồn tại của chương trình AT91BootStrap trong SPI serial
dataflash device (NPCS1) hay không
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
Bước 4: Kiểm tra sự tồn tại của chương trình AT91BootStrap trong NAND
FLASH device hay không
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
Bước 5: 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
Trang 27HỒI PHỤC BOOT LOADER CHO KM9260:
Trước tiên, ta cài đặt chương SAMBA của ATMEL vào máy tính (chạy WinXP)
Bước 1: Click chuột vào file "Install AT91-ISP v1.13.exe" thực hiện việc cài
đặt tool vào máy tính (chọn default cho các bước cài đặt) Sau khi hoàn tất các bước ta phải reset máy tính để cập nhật hệ thống
Bước 2: Sau khi cài đặt xong, tiến hành add KM9260 vào SAMBA bằng cách
copy thư mục "AT91-ISP v1.13" lấy từ đĩa CD và chép đè lên thư mục trong
Trang 28Sau khi có thông báo có chép đè lên file cũ hay không, chọn "Overwrite All"
để hoàn tất việc cài đặt tool SAMBA trên WinXP
TRÌNH TỰ PHỤC HỒI BOOT LOADER CHO KM9260 ĐƯỢC THỰC HIỆN NHƯ SAU:
1 Tháo Jumper J13 trên board KM9260 (gần IC AT45DB041D-SU)
2 Bật công tắc nguồn trên board
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:
HỒI PHỤC BOOT LOADER CHO KM9260:
Bước 1: Chọn tên board và kiểu kết nối ấn nút Connect
Bước 2: Chọn tab DataFlash AT45DB/DCB, trong list box "script" chọn
"Enable Dataflash (SPI0 CS1)", ấn nút Execute để khởi động AT45DB041D SPI
serial dataflash
Trang 29Bước 3: Trong list box "script" chọn "Send Boot File", ấn nút Execute,
browse đến thư mục chứa AT91BootStrap.bin (đính kèm theo đĩa CD) và chọn file này Chương trình SAMBA sẽ tự động nạp AT91BootStrap vào SPI
dataflash
Trang 30Bước 4: Trong text
box "Send File Name",
ấn nút browse và trỏ đến
file u-boot.bin (đính
kèm trong đĩa CD)
Trong text box
"Address" type vào địa
chỉ 0x8400
Ấn nút "Send File" để
hoàn tất việc nạp u-boot
vào SPI serial dataflash
Bước 5: Sau khi thực hiện các bước trên, KM9260 đã được phục hồi boot
loader, ấn nút reset và hệ thống có thể boot bình thường
Trang 31TOPIC 3 PHƯƠNG PHÁP BIÊN DỊCH TRÊN KIT KM9260
1 Giới thiệu sơ lượt
Trình biên dịch chéo cho phép biên dịch ứng dụng viết bằng ngôn ngữ C biên dịch cho AT91SAM chạy trên môi trường Linux Thực hành biên dịch chương trình và nạp chương trình xuống KIT để thực thi
2.Cách thức cài công cụ trên PC
* Gồm 3 bước:
Bước 1 : Cài đặt trình biên dịch chéo Cross GCC trên máy tính Linux
Trước tiên ta download arm-linux-gcc tại link sau:
http://www.friendlyarm.net/dl.php?file=arm-linux-gcc-4.4.3.tgz
Chuyển đến thư mục chứa file nén arm-linux-gcc-4.4.3.tar.gz và tiến hành giải nén :
$ cd Downloads/ $ sudo tar xvzf arm-linux-gcc-4.4.3.tgz –C/
Sau đó nhập password để giải nén
Kết quả giải nén được thư mục chứa trình biên dịch có đường dẫn như sau:
opt/FriendlyARM/toolschain/4.4.3/bin
Bước 2 : Cập nhật biến môi trường PATH cho trình biên dịch chéo
Mục đích: Cập nhật biến môi trường của Linux OS cho trình biên dịch chéo để có thể sử dụng trực tiếp ở mọi nơi (Gọi lệnh trên các cửa sổ lệnh mà không cần chuyển đến thư mục chứa)
Thực hiện:
Mở file ~/.bashrc bằng trình soạn thảo thích hợp (gedit, vi, vim, …): gedit
Trang 32Thêm 1 dòng vào cuối file bashrc
PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin
Lưu và đóng file bashrc Sau khi thiết lập biến môi trường cần tắt cửa sổ terminal, mở cửa sổ mới để thiết lập có hiệu lực
Bước 3 : kiểm tra thiết lập
3 Cách thức chép file, truyền file, thư viện vào kit:
Để nạp file chương trình ( đã biên dịch trên máy tính bằng trình biên dịch chéo) lên KIT, chúng ta sử dụng kết nối Ethernet ( cable LAN ) giữa máy tính
và KIT ( target ) bằng phần mềm gFTP ( phần mềm giao tiếp truyền file trên Linux/Ubuntu )
Trang 33Gồm các bước:
Bước 1 : Cài đặt gFTP
Thông thường gFTP đã được cài đặt sẵn trên Ubuntu (Mở Application/Internet/gFTP ) Nếu chưa có, có thể cài đặt từ internet dùng lệnh:
sudo apt-get install gftp
Bước 2: Cấu hình cổng LAN trên máy tính Linux
KIT KM9260 có địa chỉ IP mặc định là 192.168.3.29, netmask: 255.255.255.0
Trang 34Do vậy để kết nối cable LAN giữa máy tính PC và KIT ( target ) cần cấu hình
để máy tính có cùng giải địa chỉ này Thực hiện lệnh ifconfig cấu hình cho ethernet interface ( eth0 )
$sudo ifconfig eth0 192.168.3.20 netmask 255.255.255.0 up
Sử dụng lệnh ifconfig eth0 để kiểm tra lại xem eth0 đã có địa chỉ IP cùng giải
Bước 3: Thực hiện kết nối máy tính và KIT
Mở kết nối (Click nút Open connection)
Cửa sổ bên trái là cây thư mục trên máy phát triển (máy HOST)
Cửa sổ bên phải là cây thư mục trên kit (Target)
gFTP cung cấp chức năng duyệt/chuyển thư mục ( hệ thống file trên KIT ), và truyền/nhận file giữa Host và KIT
4 Thực thi chương trình trên Kit
Bước 1: Viết mã nguồn chương trình Hello
Dùng trình soạn thảo mã nguồn thích hợp (ví dụ: gedit)
Soạn thảo file mã nguồn C như sau (Chương trình có tính chất minh họa)
Trang 35Bước 2: Biên dịch file mã nguồn sử dụng trình biên dịch chéo
Chuyển đến thư mục chứa file mã nguồn Hello.c đã có
Biên dịch bằng lệnh:
$ gcc –o hello hello.c
Trang 36Bước 3: Nạp chương trình và thực thi chương đã biên dịch xuống KIT
Username: root
Password: km9260
Gán thuộc tính thực thi: chmod 777 hello
- Trên KIT, di chuyển đến thư mục chứa chương trình chạy (/ktmt/bin), thực hiện chương trình: Ví dụ /Hello
Trang 37TOPIC 4 GIỚI THIỆU QT
I TỔNG QUAN SƠ LƯỢC VỀ QT
Qt là nền tảng xây dựng các ứng dụng chạy được trên nhiều hệ điều hành Phần lớn các ứng dụng xây dựng bằng Qt đều có giao diện đồ họa, do vậy Qt
còn được coi như là một bộ công cụ (widget toolkit) Ban đầu Qt ra đời như một
sản phẩm thương mại và cũng được dùng để viết môi trường KDE, nhưng về sau được bổ sung giấy phép LGPL, theo đó có thể được sử dụng tự do để phát triển các phần mềm nguồn mở hay đúng hơn là có thể sử dụng trong các phần mềm thương mại nếu muốn Bản quyền thương mại của Qt hiện nay đã được chuyển qua hình thức thu phí hỗ trợ Bạn có thể dùng Qt như một thư viện để viết phần mềm thương mại, nếu có sửa đổi nào trong bộ nguồn chính của Qt thì bạn phải cung cấp mã nguồn đã sửa ra chứ không yêu cầu phải mở toàn bộ mã nguồn hay phải mua giấy phép thương mại như trước kia
Có thể nói, việc sử dụng Qt trên Linux gần giống với việc chúng ta sử dụng Visual Studio trên Windows, tuy nhiên nếu bạn muốn sử dụng Qt trên Windows thì vẫn có phiên bản dành cho hệ điều hành này
Giao diện làm việc với Qt Creator:
Trang 38* Đề cài đặt Qt Creator, trong Ubuntu bạn làm các bước như sau:
Sau khi cài đặt xong, để khởi động Qt chúng ta cũng làm các bước sau:
II cài đặt thư viên Tslib.
Tslib là một thư viện cung cấp các stack, các chức năng cho việc giao tiếp với touchscreen trong hệ thống Linux
Trước hết chúng cần cài đặt gói git-core nhằm giúp việc lấy source của tslib
Ubuntu Software Center
[tại ô Search] Qt Creator
Install
Trang 39Để dễ quản lý thì thư mục QtTut được tạo để lưu trữ các file có liên quan Để tạo thư muc QtTut ta thực hiện bằng 2 dòng lệnh sau:
$ cd /
$ mkdir QtTut
Và bắt đầu tải thư viện bằng 2 dòng lệnh tiếp theo như sau:
$ cd /QtTut/
$ git clone http://github.com/kergoth/tslib.git
Sau khi tải thành công thì màn hình Terminal có giao diện như hình dưới đây:
Sau đó config cho gói tslib bằng lệnh sau:
$ make
$ make install
Và thư viện sẽ được tạo như hình dưới đây:
Trang 40III Cài đặt thư viện Opensource everywhere.
Thư viện này sẽ giúp chúng ta biên dịch ứng dụng của Qt để chạy trên nền phần cứng ARM
Chúng ta tải một trong 2 gói này về ứng với mỗi phiên bản Ubuntu: