Nghiên cứu và xây dựng bộ công cụ phát triển phần mềm nhúng e studio, phần bare project Đề tài gồm các nội dung sau: Tìm hiểu kiến trúc plugin trong Eclipse Tìm hiểu kiến trúc và mô hình của các vi xử lý thuộc họ ARM7, ARM9, CortexM3 Tìm hiểu GNUARM Toolchain và các thành phần của GNUARM Toolchain, đặc biệt là GNU Debugger (GDB). Tìm hiểu kiến trúc CDT (CC++ Development Tooling), CDT Debugger và CDT Project Template Engine. Tích hợp Debugger vào ARMStudio để hoàn chỉnh hệ thống và cải tiến thêm một số chức năng mới. Tìm hiểu các kiến thức cần để phát triển plugin: kiến trúc plugin, tạo, đặc điểm plugin, chạy, debug và đóng gói plugin… Tìm hiểu về tập lệnh của vi xử lý và tổ chức bộ nhớ, kiểu thao tác, kiểu dữ liệu, thanh ghi… của các vi xử lý thuộc họ ARM7, ARM9 và CortexM3 Tìm hiểu về kiến trúc CDT, CDT Debugger và CDT Project Template Engine. Tìm hiểu cách biên dịch, cách tạo template, cách sử dụng toolchain và cách debug trên Linux. Tìm hiểu cách quốc tế hóa một plugin trong Eclipse Xây dựng ARMStudio hoàn chỉnh
Trang 1TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
NGUYỄN THỊ HỒNG NHANH - NGUYỄN LONG THỊNH
NGHIÊN CỨU VÀ XÂY DỰNG BỘ CÔNG
CỤ PHÁT TRIỂN PHẦN MỀM NHÚNG E-STUDIO, PHẦN BARE PROJECT
KHÓA LUẬN TỐT NGHIỆP CỬ NHÂN CNTT
TP.HCM, NĂM 2010
Trang 2TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
KHÓA LUẬN TỐT NGHIỆP CỬ NHÂN CNTT
GIÁO VIÊN HƯỚNG DẪN ThS NGUYỄN TẤN TRẦN MINH KHANG
CHÂU CHÍ THIỆN
KHÓA 2006 – 2010
Trang 3NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
TpHCM, ngày … tháng …… năm ……
Giáo viên hướng dẫn
Trang 4NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Khóa luận đáp ứng yêu cầu của Khóa luận cử nhân CNTT
TpHCM, ngày … tháng …… năm ……
Giáo viên phản biện
Trang 5LỜI CÁM ƠN
TpHCM, ngày 02 tháng 06 năm 2010
Trang 6Khoa Công Nghệ Thông Tin
Bộ môn Công Nghệ Phần Mềm
ĐỀ CƯƠNG CHI TIẾT
Tên Đề Tài: Nghiên cứu và xây dựng bộ công cụ phát triển phần mềm nhúng
E-Studio, phần Bare Project
Giáo viên hướng dẫn: Nguyễn Tấn Trần Minh Khang
Châu Chí Thiện Thời gian thực hiện: 23/02/2010 đến 15/7/2010
Sinh viên thực hiện: Nguyễn Thị Hồng Nhanh – 0612302
Nguyễn Long Thịnh - 0612432 Loại đề tài: Nghiên cứu, xây dựng chương trình hoàn thiện
Nội Dung Đề Tài:
1 Mô tả chi tiết nội dung đề tài:
Đề tài gồm các nội dung sau:
Tìm hiểu kiến trúc plug-in trong Eclipse
Tìm hiểu kiến trúc và mô hình của các vi xử lý thuộc họ ARM7, ARM9, Cortex-M3
Tìm hiểu GNUARM Toolchain và các thành phần của GNUARM Toolchain, đặc biệt là GNU Debugger (GDB)
Tìm hiểu kiến trúc CDT (C/C++ Development Tooling), CDT
Trang 7Debugger và CDT Project Template Engine.
Tích hợp Debugger vào ARMStudio để hoàn chỉnh hệ thống và cảitiến thêm một số chức năng mới
2 Yêu cầu:
Kiến thức về eclipse và plug-in trong Eclipse
Kiến thức về CDT, chủ yếu là CDT Debugger
Tìm hiểu cách biên dịch, cách tạo template, cách sử dụng toolchain
và cách debug trên Linux
Tìm hiểu cách quốc tế hóa một plug-in trong Eclipse
Xây dựng ARMStudio hoàn chỉnh
4 Kết quả đạt được:
ARMStudio có tính năng debug và các tính năng cải tiến khác
Xây dựng được ARMStudio chạy trên Linux
Trang 8 Xây dựng được template cho nhiều vi xử lý ARM7, ARM9, M3.
Cortex- Quốc tế hóa sản phẩm hổ trợ đa ngôn ngữ: tiếng Việt, tiếng Nhật
Kế Hoạch Thực Hiện:
2 Tìm hiểu các kiến thức cần để phát triển
plug-in trong Eclipse
22/02 05/03
3 Tìm hiểu kiến trúc và mô hình của các vi xử lý
thuộc họ ARM7, ARM9, Cortex-M3
06/03 15/03
4 Tìm hiểu GNUARM Toolchain (GNU
Binutils, Compiler set (GCC), Debugger,
Newlib) và các thành phần của GNUARM
Toolchain, đặc biệt là GDB
16/03 25/03
5 Tìm hiểu kiến trúc CDT (C/C++ Development
Tooling), CDT Debugger và CDT Project
Template Engine
26/03 09/04
6 Nghiên cứu các chức năng đã được xây dựng
trong hệ thống ARMStudio, các chức năng cần
cải tiến và các chức năng có thể phát triển
thêm để hoàn chỉnh hệ thống
10/04 19/04
8 Xây dựng được template cho nhiều vi xử lý
thuộc các họ ARM7, ARM9, Cortex-M3
20/05 03/06
Trang 99 Xây dựng hệ thống ARMStudio chạy trên
Linux
04/06 18/06
Xác nhận của GVHD Ngày……tháng……năm……
SV Thực hiện Mục lục Chương 1 ECLIPSE VÀ PLUGIN TRONG ECLIPSE 18
1.1 Tổng quan về Eclipse 18
1.1.1 Giới thiệu Eclipse, download và cài đặt 18
1.1.2 Kiến trúc Eclipse 19
Trang 101.1.3 Cách thức quản lý các tập tin mã nguồn 23
1.2 Kiến trúc plug-in trong Eclipse 23
1.2.1 Giới thiệu về plug-in và extension point 23
1.2.2 The plug-in manifest file 24
1.2.3 Vòng đời của một plug-in 25
1.2.4 Đóng gói plug-in 25
1.2.5 Plug-in fragment and features 26
Chương 2 TỔNG QUAN VỀ CHIP ARM 26
2.1 ARM7 (32-bit) 26
2.1.1 ARM7EJ-S 26
2.1.2 ARM7TDMI 26
2.2 ARM9 (32-bit) 26
2.2.1 Giới thiệu tổng quan 26
2.2.2 Tìm hiểu về ARM968E-S 26
2.2.3 Lĩnh vực ứng dụng ARM9 26
2.3 Cortex-M3 26
2.3.1 Giới thiệu tổng quan 26
2.3.2 Đơn vị xử lý trung tâm Cortex (Cortex CPU) 26
2.3.3 Đặc điểm nổi bật của Cortex-M3 26
Chương 3 GIỚI THIỆU BỘ BIÊN DỊCH GNUARM 26
3.1 Giới thiệu GNUARM Toolchain 26
3.2 Các thành phần của Toolchain 26
3.2.1 GNU Binutils 26
3.2.2 Compiler set (GCC) 26
3.2.3 Debugger 26
Trang 113.2.4 Newlib 26
Chương 4 CDT (C/C++ DEVELOPMENT TOOLING) 26
4.1 Giới thiệu CDT 26
4.2 Các gói chính trong mã nguồn CDT 26
4.3 CDT Debugger 26
4.3.1 Tương tác với trình gỡ lỗi C/C++ (CDT Debugger) 26
4.3.2 Truy cập GDB bằng Eclipse CDT và MI (Machine Interface) 26
4.4 Phát triển CDT Plug-in 26
4.4.1 Managed Build System 26
4.4.2 Project Template Engine 26
Chương 5 XÂY DỰNG HỆ THỐNG ARMSTUDIO CHO CÁC VI XỬ LÝ HỌ ARM 26 5.1 Giới thiệu hệ thống và nhu cầu xây dựng ARMStudio 26
5.2 Các chức năng của hệ thống ARMStudio 26
5.3 Chức năng của các plug-in trong hệ thống ARMStudio 26
5.3.1 vn.edu.hcmuns.selab.debug.core 26
5.3.2 vn.edu.hcmuns.selab.debug.ui 26
5.3.3 vn.edu.hcmuns.selab.arm.target.mcb23xx 26
5.3.4 vn.edu.hcmuns.selab.arm.ui 26
5.3.5 vn.edu.hcmuns.selab.arm.core 26
5.3.6 vn.edu.hcmuns.selab.tool.fm 26
5.3.7 vn.edu.hcmuns.selab.arm.managedbuilder.gnu 26
5.3.8 vn.edu.hcmuns.selab.arm.managedbuilder.gnu.ui 26
5.4 Mô tả quá trình xây dựng hệ thống 26
5.4.1 Các chức năng đã có ở hệ thống ARMStudio cũ 26
Trang 125.4.2 Các chức năng được cải tiến trong ARMStudio 26
5.4.3 Các chức năng mới ở hệ thống ARMStudio 26
5.5 Nhận xét và đánh giá (2 trang) 26
5.5.1 Tạo ra mô hình CDT 26
5.5.2 Tạo mới CProject 26
5.5.3 Tạo mới TranslationUnit và WorkingCopy 26
Danh sách hình Hình 1-1 Kiến trúc Eclipse 20
Hình 1-2 Kiến trúc hỗ trợ phát triển plug-in trên eclipse 22
Hình 1-3 Plugin và extension point trong Eclipse 23
Hình 2-1Bộ thanh ghi ở trạng thái ARM của vi xử lý ARM7EJ-S 26
Trang 13Hình 2-2Bộ thanh ghi ở trạng thái Thumb của vi xử lý ARM7EJ-S 26
Hình 2-3 Những sản phẩm ứng dụng phổ biến của vi xử lý ARM7 26
Hình 2-4 Các thành phần chính của vi xử lý ARM968E-S 26
Hình 2-5 So sánh đặc điểm giữa các vi xử lý trong họ ARM9 26
Hình 2-6 Tập thanh ghi ARM968E-S 26
Hình 2-7 Thanh ghi trạng thái chương trình của vi xử lý ARM968E-S 26
Hình 2-8 Các thành phần chính của vi xử lý Cortex-M3 26
Hình 2-9 Kiến trúc đường ống của ARM Cortex-M3 26
Hình 2-10 Kiến trúc load và store của vi xử lý ARM Cortex-M3 26
Hình 2-11 Mô hình lập trình của vi xử lý ARM Cortex-M3 26
Hình 2-12 Thanh ghi trạng thái chương trình của vi xử lý Cortex-M3 26
Hình 2-13 Mô hình hoạt động của chế độ Thread và Handler 26
Hình 4-1 Kiến trúc CDT tổng quát 26
Hình 4-2 Kiến trúc CDT chi tiết 26
Hình 4-3 Mô hình Build Definition 26
Hình 4-4 Tổng quan về Managed Build System 26
Hình 5-1 Các project mẫu cho các vi xử lý được hỗ trợ trong ARMStudio 26
Hình 5-2 Giao diện ARMStudio Launch Configuration 26
Trang 14TÓM TẮT KHÓA LUẬN
Trang 15MỞ ĐẦU
Trang 16TỔNG QUAN
Trang 18Chương 1 ECLIPSE VÀ KIẾN TRÚC PLUGIN TRONG ECLIPSE
1.1 Tổng quan về Eclipse
1.1.1 Giới thiệu Eclipse, download và cài đặt
Eclipse là một nền tảng phát triển mã nguồn mở dựa trên Java và có
thể mở rộng được Eclipse bao gồm một tập hợp các dịch vụ để xây dựng
các ứng dụng từ các thành phần plug-in Eclipse được tạo thành bởi một tập
hợp các plug-in chuẩn và thường được gọi là JDT (Java Development
Tools)
Trong khi hầu hết người dùng sử dụng Eclipse như là môi trường phát
triển tích hợp Java (IDE), một số khác còn có những nhu cầu sử dụng khác
hơn nữa Do đó, Eclipse còn bao gồm PDE (Plug-in Development
Environment) dành cho người dùng muốn mở rộng Eclipse Vì thế, Eclipse
cho phép người xây dựng các tool tích hợp vào môi trường Eclipse Bởi vì
mọi thứ trong Eclipse đều là plug-in nên các nhà phát triển các tool đều
cung cấp các sân chơi để mở rộng Eclispe và để cung cấp một IDE thống
nhất và chắc chắn cho người dùng
Mặc dù Eclipse được viết bằng ngôn ngữ Java, nhưng Eclipse có cung
cấp các plug-in hỗ trợ các ngôn ngữ lập trình khác như C/C++ và COBOL
Eclipse framework có thể được sử dụng như là nền tảng cho các loại ứng
dụng khác không liên quan đến phát triển phần mềm, ví dụ như: hệ quản trị
nội dung
Eclipse là cộng đồng mã nguồn mở mà các project của nó tập trung
vào việc xây dựng nền tảng mã nguồn mở bao gồm các framework có thể
Trang 19mở rộng, các tool và runtime để xây dựng, triển khai và quản lý các phầnmềm trong chu kỳ sống của nó Eclipse là một tổ chức phi lợi nhuận được
hỗ trợ bởi các thành viên, là nơi phát triển các dự án của Eclipse, và là nơiphát triển cộng đồng mã nguồn mở và hệ thống các sản phẩm, dịch vụ
Dự án Eclipse được IBM bắt đầu vào tháng 11 năm 2001 và được cácnhà bán phần mềm hỗ trợ Tổ chức Eclipse được thành lập vào tháng 1 năm
2004 như là một tổ chức độc lập phi lợi nhuận để quản lý cộng đồngEclipse Ngày nay, cộng đồng Eclipse gồm nhiều cá nhân và tổ chức từ cácnhánh tiêu biểu về công nghiệp phần mềm
Eclipse là phần mềm mã nguồn mở, vì thế những người tạo ra plug-incho Eclipse hoặc những người sử dụng Eclipse như là nền tảng cho các ứngdụng phát triển phần mềm cần release code Eclipse mà họ dùng hoặc sửachữa theo giấy phép EPL
Hỗ trợ việc xây dựng các tool khác nhau để phát triển ứng dụng
Hỗ trợ không giới hạn các nhà cung cấp tool, bao gồm các phầnmềm độc lập người bán
Hỗ trợ các tool để thao tác trên bất kỳ loại nội dung nào
Hỗ trợ tích hợp các tool một cách dễ dàng với các loại nội dung khácnhau và nhà cung cấp tool khác nhau
Hỗ trợ môi trường phát triển ứng dụng giao diện và không giao diệnChạy được trên nhiều hệ điều hành, gồm Window và Linux
Trang 20 Lợi dụng tính phổ biến của ngôn ngữ lập trình Java để viết ra cáctool.
Vai trò chính của platform là cung cấp các tool của các nhà sản xuấtkhác nhau cùng với cơ chế sử dụng và những quy định phải tuân thủ để cóthể tích hợp các tool một cách dễ dàng Những cơ chế này được trình bàythông gia giao diện API, các lớp và phương thức Ngoài ra, platform còncung cấp các framework và block để dễ dàng phát triển các tool mới
Eclipse Platform không giới hạn số ứng dụng ngôn ngữ Java Tuy nhiên,Eclipse SDK gồm có Eclipse Platform, JDT và PDE Trong đó JDT và PDE làcác plugin được gắn vào Platform Eclipse Platform được xây dựng dựa trên cơchế phát hiện ra, tích hợp và chạy plug-in Plug-in là đơn vị chức năng nhỏnhất có thể được phát triển và phân phối một cách riêng biệt Thông thường,một tool nhỏ được viết trong một plug-in riêng biệt, trong khi đó các tool phứctạp có các chức năng được tách ra ở nhiều plug-in
Hình 1-1 Kiến trúc Eclipse
Trang 211.1.2.1 SWT
Standard Widget Toolkit (SWT) cung cấp các API độc lập nền tảngcho các widget và công cụ đồ họa bằng cách cho phép tích hợp chặt chẽvới hệ điều hành bên dưới Giao diện Eclipse Platform sử dụng SWT đểtrình bày thông tin cho người dùng, cho dù người dùng đang làm việc trên
hệ điều hành Linux, Window hay hệ điều hành nào khác có giao diện đồhọa
Java AWT (Abstract Windowing Toolkit) cung cấp các widget đơngiản như: list, text field và button, nhưng không có các widget cấp cao như:tree hay rich text Các widget của AWT sử dụng các widget sẵn có của tất
cả các hệ điều hành Java Swing ra đời như là giải pháp để khắc phục cácvấn đề đó Swing là một GUI Framework của riêng Java , không phụ thuộcvào bất cứ nền tảng nào Swing không sử dụng các thành phần sẵn có của
hệ điều hành , nó sử dụng các đối tượng được Sun xây dựng sẵn Các ứngdụng có giao diện bằng Swing sẽ trông không được phù hợp, tự nhiên trênnền tảng mà nó đang chạy Dù ở những phiên bản cuối cùng của JVM , cácứng dụng Swing vẫn tồn tại sự khác biệt với nền tảng giao diện của các hệđiều hành Mặc dù người dùng có thể cài các bộ cảm quan (LookAndFeel )những giao diện vẫn chưa được tự nhiên
IBM đã tìm ra được giải pháp thích hợp khắc phục được những yếuđiểm trên của cả AWT và Swing, IBM đã tạo ra một GUI Framework mớiđược gọi là Standard Widget Toolkit – SWT SWT có thể truy cập vào cácthành phần giao diện tự nhiên của từng nền tảng thông qua JNI Nếu nhưmột nền tảng nào đó không có thành phần đó , SWT sẽ cung cấp chúngtrong thư viện của nó Người dùng hoàn toàn có thể chạy một ứng dụngJava có giao diện chẳng khác gì giao diện được tạo bằng C# hay VB trong
Trang 22Windows SWT chạy cực nhanh với lượng tài nguyên chiếm dụng trong bộnhớ chỉ bằng một nửa so với Swing
1.1.2.2 JFace
JFace là tookit để xây dựng giao diện người dùng cấp cao, JFace làtầng trên cùng của SWT, cung cấp các lớp thuộc mô hình MVC để pháttriển các ứng dụng đồ họa dễ dàng hơn
Những người muốn phát triển Eclipse sẽ sử dụng PDE (Plug-inDevelopment Environment) để bổ sung thêm các plug-in mới
Hình 1-2 Kiến trúc hỗ trợ phát triển plug-in trên eclipse
Trang 23Plug-in: tập hợp các chức năng
- Đơn vị nhỏ nhất của Eclipse
- Ví dụ plug-in lớn: HTML editor
- Ví dụ plug-in nhỏ: Action để tạo file zip
Extension point: thực thể được đặt tên đại diện cho
tập hợp các chức năng
- Extension point là 1 cơ chế cho phép 1 plug
in có thể thêm các chức năng từ 1 plug in
khác
- Ví dụ: extension point cho giao diện người
dùng workbench
Extension: một chức năng
- Ví dụ: các chức năng của HTML editor
1.1.3 Cách thức quản lý các tập tin mã nguồn
1.2 Kiến trúc plug-in trong Eclipse
1.2.1 Giới thiệu về plug-in và extension point
Hình 1-3 Plugin và extension point trong Eclipse
Mỗi plug-in có một hay nhiều extension point và có thể tùy ý khai báomột extension point mới Mỗi plug-in phụ thuộc vào tập hợp các plug-inkhác, có thể chứa bất kỳ thư viện hoặc tập tin nào viết bằng Java và có thểexport các Java API cơ bản Về lý thuyết thì số plug-in không bị giới hạn và
cơ chế platform phải hỗ trợ để làm gia tăng số lượng plug-in
Trang 241.2.2 The plug-in manifest file
Chi tiết của plug-in được giải thích rõ ràng trong tập tin plug-inmanifest Plugin manifest chính là tập tin plugin.xml, chứa thông tin mô tả
sẽ được Eclipse sử dụng để tích hợp plug-in vào framework Mặc định,plugin.xml mở khu vực editor của manifest khi nó được tạo ra lần đầu tiên
ở bên dưới đáy của editor có các tab để hỗ trợ người dùng lựa chọn việc
thiết lập các thông tin khác nhau về plug-in Ví dụ: tab Source hiển thị toàn
bộ nội dung tập tin plugin.xml ở dạng xml
Tập tin manifest chứa những thông tin chung về plug-in bao gồm: tênplug-in, phiên bản, tên lớp, tên file JAR Ngoài ra, tập tin manifest cònchứa danh sách những plug-in mà plug-in hiện tại cần dùng
Plug-in đầu tiên là org.eclipse.core.resources làworkspace plug-in và Plug-in thứ hai là org.elipse.ui là workbenchplugin
Một trong những extension cần tìm hiểu là extension có thuộc tínhpoint=org.eclipse.ui.actionSets Một action set là một nhómcác chức năng mà plug-in sẽ thêm vào giao diện workbench, ví dụ như làmenus, menu items, và toolbars Action set sẽ gom nhóm các chức năng đểngười dùng có thể quản lý chúng một cách dễ dàng
Một action set có thể chứa 2 thẻ: thẻ menu mô tả nơi item xuất hiện
và cách hiển thị của nó trên workbench; thẻ action mô tả một item sẽthực hiện chức năng gì và lớp xử lý action để thực hiện chức năng đó
Trang 251.2.3 Vòng đời của một plug-in
Plug-in có một chu trình sống được điều khiển bởi workbench KhiEclipse khỡi động thì nó thêm plug-in vào mà không load ngay lập tức, chỉload plug-in khi cần thiết Trong suốt quá trình load, Elipse gọi phươngthức startup() và trước khi unload thì gọi shutdown() Hai phương thứcload và unload có thể được coi như là hàm khởi tạo và hàm hủy plug-in 1.2.4 Đóng gói plug-in
Eclipse quyết định plug-in nào được load bằng cách kiểm tra thư mụcplugins vào thời điểm khỡi động Để cài đặt một plug-in thì cần tạo mộtthư mục con trong thư mục plugins và chép tất cả các tập tin chương trình
và manifest vào đó Nên đặt tên thư mục chứa plug-in theo chuẩn: tên củaplug-in được theo sau bởi dấu gạch dưới và chỉ số phiên bản Ví dụ: C:\ eclipse\plugins\com.example.hello_1.0.0 Sau đó, nén thư mục con vừađược tạo thành tập tin JAR
Trang 26Để tạo được tập tin JAR bằng giao diện Elipcse thì gọi File->Export.
Sau đó chỉ cần khỡi động lại Eclipse để Eclipse có thể nhận ra plug-in mới
1.2.5 Plug-in fragment and features
Plugin fragment: Plug-in fragment được hình thành từ một phần của
plug-in Plug-in fragment có ích khi muốn sử dụng một phần củaplug-in độc lập với phần còn lại của plug-in
Plug-in fragment có thể được dùng để thêm các đặc điểm nào
đó vào một plug-in đang có mà không cần phát hành một bản releasemới đầy đủ hoặc có thể được dùng để cung cấp chức năng cho mộtnền tảng nào đó…
Plug-in fragment gần giống với plug-in thông thường, chỉ khác
ở một vài đặc điểm sau:
- Thông tin mô tả plug-in được lưu trong tập tin fragment.xml thay
vì plugin.xml như các plug-in thông thường
- Trong tập tin fragment.xml, nút gốc là <fragment> và nút này có
2 thuộc tính là: plugin-id và plugin-version dùng để chỉ ra định danh
và phiên bản của plug-in cha
- Plug-in fragment sẽ tự động kế thừa các nút <requires> của
plug-in cha và có thể thêm các nút <requires> khác nếu cần thiết
Plug-in feature: Trong kiến trúc Eclipse, feature là việc đóng gói
một nhóm các plug-in có liên quan lại thành một sản phẩm tích hợp
Plug-in feature không có chứa code Ví dụ: Java DevelopmentTooling (JDT) là một feature project được tạo thành bởi cácplug-in như Java editor, debugger, và console
Tập tin đặc tả feature project là feature.xml, tập tinnày chứa tham chiếu đến các plug-in và các tài nguyên khác củafeature project, đồng thời chứa các thông tin về việc update,copyright và license
Trang 27Chương 2. KIẾN TRÚC VI XỬ LÝ ARM
1.3 ARM7 (32-bit)
- Ra đời vào năm 1994, ARM7 đã phát triển hết sức thành công và giúp ARM
trở thành kiến trúc được lựa chọn của thế giới kĩ thuật số Trong vài năm qua,
hơn 10 tỉ thiết bị có sử dụng chip ARM7 đã được ứng dụng trong nhiều lĩnh
vực của đời sống Hiện nay, ARM7 vẫn tiếp tuc được sử dụng rộng rãi để thiết
kế các thiết bị 32 bit đơn giản
- Đặc điểm nổi bật của ARM7:
Kiến trúc công nghiệp chuẩn
Dễ dàng thiết kế và debug
Ngày nay, các kỹ sư tại nhiều công ty có thể thiết kế vi xử lí ARM7TDMI một cách quen thuộc Và lập trình viên có thể đi về nhà sớm
hơn, bởi vì ARM7TDMI sẽ tương thích với phần mềm hiện có.
Tom Halfhill, Senior Editor & Senior Analyst, Microprocessor Report, 2005
o Automotive: Diagnostics, Maintenance, Entertainment, Sensors
o Industrial: Power meters, Circuit breakers, UPS, Brushless motor drive,Factory automation
o Point of Sale: Card readers, ATM, Cash registers, Vending machines
- Họ ARM7 gồm có các vi xử lí: ARM7TDMI-S, ARM7TDMI, ARM7EJ-S
Trang 281.1.1 ARM7EJ-S
Vi xử lý ARM7EJ-S có kiến trúc ARMv5TEJ với công nghệ Jazelle nângcao hiệu quả của việc xử lý tín hiệu số (Digital Signal Processing) Côngnghệ Jazelle cho phép thực thi trực tiếp Java bytecode trên vi xử lý ARM,điều này dẫn đến sự phát triển của các thiết bị nhúng và wireless
ARM7EJ-S là một thành phần của bộ vi xử lý đa dụng 32 bit họ ARM Vi
xử lý họ ARM có hiệu quả cao vì tiêu thụ năng lượng rất thấp và số cổng ít.Kiến trúc ARM dựa trên nguyên lý RISC Tập lệnh giảm và cơ chế giải mãđơn giản hơn nhiều so với thiết kế CISC
Kiến trúc 32 bit chỉ có lệnh 32 bit và kiến trúc 16 bit chỉ có lệnh 16bit, do đó kiến trúc 16 bit có mật độ code dày đặc hơn
Thumb implement tập lệnh 16 bit trên kiến trúc 32 bit nên hiệu quảcao hơn kiến trúc 16 bit và mật độ code dày đặc hơn kiến trúc 32 bit
Trang 29 ARM7EJ-S cho người sử dụng lựa chọn trạng thái ARM, Thumbhoặc là trộn lẫn cả hai Điều này cho phép người sử dụng tối ưu hóamật độ và hiệu quả của code tốt nhất cho từng yêu cầu của ứng dụng.
Tập lệnh Thumb
Tập lệnh Thumb là tập con của những lệnh ARM 32 bit thường được
sử dụng nhất Tập lệnh Thumb có độ dài mỗi lệnh là 16 bit và cólệnh ARM 32 bit Tập lệnh Thumb thao tác được với cấu hình thanhghi ARM chuẩn, kết hợp những điểm tốt nhất ARM và Thumb
Tập lệnh Thumb có tất cả những thuận lợi của vi xử lý 32 bit:
o Không gian địa chỉ 32 bit
o Thanh ghi 32 bit
o 32 bit Shifter và ALU
o Mang chuyển bộ nhớ 32 bit
Do đó, tập lệnh Thumb có phạm vi cho từng thành phần dàihơn, thao tác số học mạnh mẽ và không gian địa chỉ rộng lớn
Thumb code có kích thước chỉ bằng 65% code Arm và hiệu quả đến160% khi chạy code ARM trên bộ nhớ 16 bit.Tập lệnh Thumb làmcho vi xử lý ARM7EJ-S thích hợp một cách lý tưởng cho các ứngdụng nhúng vốn hạn chế về bộ nhớ
1.3.1.1 Mô hình vi xử lý ARM7EJ-S
Trạng thái thao tác của vi xử lý:
Vi xử lý ARM7EJ-S có 3 trạng thái thao tác: ARM, Thumb,Jazelle
Khi chuyển đổi giữa 3 trạng thái này thì không ảnh hưởng đếnmode của vi xử lý và nội dung của các thanh ghi
Chuyển đổi giữa các trạng thái:
Người dùng có thể chuyển đổi giữa các trạng thái của ARM7EJ-S:
Trang 30- Chuyển đổi giữa ARM và Thumb sử dụng lệnh BX và BLX
- Chuyển đổi giữa ARM và Jazelle sử dụng lệnh BXJ
Tất cả các exception được xử lý ở trạng thái ARM, nếu exceptionxuất hiện ở trạng thái Thumb hoặc Jazelle, vi xử lý trở lại trạng tháiARM Việc chuyển đổi trở lại trạng thái Thumb hoặc Jazelle đượcthực hiện tự động sau khi exception return
Tổ chức bộ nhớ
Vi xử lý xem bộ nhớ như là tập hợp dãy các byte được đánh sốtăng từ 0 Ví dụ:
Byte 0 đến byte 3 lưu từ (word) thứ nhất
Byte 4 đến byte 7 lưu từ (word) thứ hai
Vi xử lý có thể thao tác với các từ (word) được lưu trữ trong bộnhớ theo 2 kiểu định dạng:
Kiểu thao tác (Operating modes)
Tất cả các trạng thái đều có 7 kiểu thao tác:
User mode: trạng thái thực thi chương trình thông thường của ARM,được dùng để thực thi hầu hết các ứng dụng
Fast interrupt (FIQ) mode: kiểu thao tác này được dùng để xử lý ngắtkhẩn cấp
Interrupt (IRQ) mode: kiểu xử lý được dùng để xử lý các ngắt thôngthường
Trang 31 Supervisor mode: protected mode cho hệ điều hành
Abort mode : được gọi sau khi dữ liệu hoặc lệnh Prefetch Abort
System mode: user mode đặc quyền dành cho hệ điều hành
Undefined mode: được dùng khi xảy ra exception lệnh chưa đượcđịnh nghĩa
User mode còn được biết đến như là kiểu thao tác đặc quyền(privileged modes) Kiểu thao tác đặc quyền được dùng để phục vụinterrupt hoặc exception hoặc để truy xuất đến các tài nguyên được bảovệ
Thanh ghi
Vi xử lý ARM7EJ-S có tất cả 37 thanh ghi: 31 thanh ghi đa dụng 32bit và 6 thanh ghi trạng thái 32 bit
Không thể truy xuất tất cả các thanh ghi cùng thời điểm Trạng thái
và kiểu thao tác của vi xử lý quyết định thanh ghi nào được phéptruy xuất
Bộ thanh ghi của trạng thái ARM (ARM state)
Ở trạng thái ARM, có 16 thanh ghi đa dụng và 1 hoặc 2 thanh ghitrạng thái có thể được truy xuất tại bất kỳ thời điểm nào Trong kiểuthao tác độc quyền, banked registers có thể được sử dụng
Có 16 thanh ghi có thể truy xuất trực tiếp (r0-r15) Thanh ghitrạng thái chương trình (CPSR) chứa các bit điều kiện và bit mode.Thanh ghi đa dụng ro đển r13 được dùng để lưu trữ dữ liệu hoặc địachỉ Thanh ghi r14, r15và CPSR có những chức năng đặc biệt sau:
Thanh ghi liên kết (Link register):
o Thanh ghi r14 được sử dụng như là thanh ghi liên kết LR
o Thanh ghi r14 nhận giá trị của thanh ghi r15 khi lệnh BL hoặcBLX được thực thi
Trang 32o Ngoài thời điểm này ra, thanh ghi r14 có thể được sử dụngnhư là thanh ghi đa dụng Banked registers r14_svc, r14_irq,r14_fiq,
r14_abt, and r14_und cũng có thể được sử dụng để lưugiá trị trả về của thanh ghi r15 khi ngắt và exception xảy rahoặc khi lệnh BL hoặc BLX được thực thi bên trong ngắthoặc exception
Thanh ghi PC (Program Counter):
o Thanh ghi PC lưu trữ các trạng thái (Arm state, Thumb state,hoặc Jazelle state)
Ở kiểu thao tác đặc quyền, thanh ghi Saved Program StatusRegister (SPSR) được phép truy xuất Thanh ghi này chứa các bít
cờ và kiểu thao tác
Banked registers là các thanh ghi vật lý riêng biệt được ánh xạthành các thanh ghi khác tùy thuộc vào kiểu thao tác hiện thờicủa vi xử lí Nội dung của banked registers được lưu trữ khi kiểuthao tác thay đổi
Mỗi banked register có một id để xác định thanh ghi, kiểu thaotác nào đang được ánh xạ tới Xem hình …
FIQ mode có 7 banked register ánh xạ tới các thanh ghi từ r8 đếnr14 (r8_fiq đến r14_fiq) Do đó, các xử lý FIQ không cần phảilưu bất kì thanh ghi nào
Các kiểu thao tác còn lại (Supervisor, Abort, IRQ, Undefined),mỗi kiểu thao tác có những thanh ghi tương ứng ánh xạ tới cácthanh ghi từ r13 tới r14
Trang 33Hình 2-4Bộ thanh ghi ở trạng thái ARM của vi xử lý ARM7EJ-S
Bộ thanh ghi của trạng thái Thumb
Bộ thanh ghi của trạng thái ARM là tập con cùa bộ thanh ghitrạng thái ARM Người sử dụng có thể truy xuất trực tiếp đến:
8 thanh ghi đa dụng: từ r0-r7
Thanh ghi PC
Stack pointer, SP (ARM r13)
Thanh ghi liên kết LR (ARM r14)
Trang 34 Thanh ghi CPSR
Hình 2-5Bộ thanh ghi ở trạng thái Thumb của vi xử lý ARM7EJ-S
1.3.2 ARM7TDMI
ARM7TDMI là thành phần của bộ vi xử lý đa dụng 32 bit họ ARM
Vi xử lý họ ARM có hiệu quả cao do tiêu thụ năng lượng thấp và kíchthước nhỏ
Trang 35Bộ định vịNokia 500
Khủng long
Ugobe Pleo
Máy chủ Veracity TimeNet
Hệ thống thanh toánqua điện thoạiExaDigm XD2100SP
Vô lăng không
Microsoft Xbox
360
Máy tính HewlettPackard 20b Ổ đĩa LaCieBigger
Hình 2-6 Những sản phẩm ứng dụng phổ biến của vi xử lý ARM7
1.4 ARM9 (32-bit)
1.4.1 Giới thiệu tổng quan
Họ vi xử lý ARM9 là giải pháp vi xử lý đơn cho các ứng dụngmicrocontroller, DSP và Java ARM9 đem đến thị trường chip giá trẻ và giảm
Trang 36bớt sự phức tạp, tiết kiệm năng lượng và thời gian giao dịch Họ ARM9 gồm
có các vi xử lý ARM968E-S, ARM946E-S, ARM926E-S
ARM9 DSP là vi xử lý được cải tiến để tương thích tốt với các ứng dụngđòi hỏi sự kết hợp giữa DSP và hiệu quả của microcontroller
ARM946E-S
ARM946E-S có sự cải tiến về bộ xử lý cache với MPU cho các ứng dụng
Trang 37Vi xử lý hướng thời gian thực được bổ sung thêm đầy đủ MemoryProtection Unit Vi xử lý này có ích cho các ứng dụng mà phần lớn code nằm ởtrong bộ nhớ chính và có nhu cầu load vào bộ nhớ cache, trong khi việc xử lýcác exception và dữ liệu có thể tại Tightly Coupled Memory.
Hình 2-8 So sánh đặc điểm giữa các vi xử lý trong họ ARM9
1.4.2 Tìm hiểu về ARM968E-S
1.4.2.1 Giới thiệu ARM968E-S
Vi xử lý ARM968E-S là thành viên của họ ARM9 Thumb vàimplement kiến trúc ARMv5TE Vi xử lý này hỗ trợ tập lệnh 32 bit ARM
và 16-bit Thumb Vi xử lý ARM968E-S được dùng trong nhiều lĩnh vựcnhúng đòi hòi hiệu quả cao, chi phí thấp, kích thước nhỏ và tiêu thụ nănglượng ít
Đặc điểm của ARM968E-S:
Trang 38 Lõi ARM9E-S
Instruction Coupled Memory (ITCM) và Data Coupled Memory (DTCM) tương tác với nhau
Tightly- Giao diện DMA (Direct Memory Access)
Giao diện BIU (Bus Interface Unit)
Bản đồ bộ nhớ cố định
Giao diện lựa chọn ETM
Giao diện debug đầy đủ và được làm nhỏ đi
Hỗ trợ scan test
1.4.2.2 Mô hình lập trình
1.4.2.2.1 Kiểu thao tác của vi xử lý
Có 7 kiểu thao tác của vi xử lý:
User: kiểu thao tác không đặc quyền dành cho việc thực thi các
chương trình thông thường
Fast interrupt (FIQ): kiểu thao tác đặc quyền để xử lý các ngắt khẩn
Trang 39Ngoài kiểu thao tác User mode thì các kiểu thao tác còn lại được biếtđến như là kiểu thao tác đặc quyền Kiểu thao tác đặc quyền được dùng đểphục vụ cho các ngắt hoặc truy xuất đến các tài nguyên được bảo vệ.
1.4.2.2.2 Tập thanh ghi của ARM968E-S
Vi xử lý ARM968E-S có 37 thanh ghi 32-bit: trong đó có 16 thanhghi đa dụng, 1 thanh ghi trạng thái chương trình hiện tại, 15 banked registerđược dùng như là thanh ghi đa dụng và dùng cho nhiều kiểu thao tác, 5banked register được dùng như là thanh ghi lưu lại trạng thái chương trìnhcho các kiểu thao tác Các thanh ghi này không thể truy xuất cùng thờiđiểm Trạng thái và kiểu thao tác của vi xử lý sẽ quyết định thanh ghi nào
có thể dùng được tại thời điểm đó
Hình 2-9 Tập thanh ghi ARM968E-S
ARM9 có nhiều cải tiến lớn so với ARM7 bằng việc sử dụng thêmnhiều transitor, gồm có:
Trang 40• Cải tiến tần số đồng hồ: từ kiến trúc pipleline 3 giai đoạn thành 5 giaiđoạn để tốc độ đồng hồ tăng gần như gấp đôi
• Cải tiến chu kỳ xung nhịp: load và lưu trữ nhanh hơn, nhiều lệnh chỉtốn một chu kỳ đồng hồ, tối ưu hóa lúc compiler
Vi xử lý ARM9 kết hợp chặt chẽ giữa các lệnh để gia tăng DSP như
đa thực thi để hỗ trợ có hiệu quả việc thi hành các thuật toán xử lý tín hiệu
số
Truy xuất tập thanh ghi ở trạng thái Thumb
Ở trạng thái Thumb, ngoài các câu lệnh như trạng thái ARM, còn có
các câu lệnh để truy xuất đến các Thanh ghi trạng thái chương trình và các
thanh ghi cao hơn (r8-r15):
Ở trạng thái Thumb, không có lệnh MRS hoặc MSR để di chuyển dữ
liệu giữa CPSR hoặc SPSR và các thanh ghi đa dụng
Ở trạng thái Thumb, chỉ có những lệnh sau có thể truy cập vào các
thanh ghi cao:
- Lệnh ADD: dùng ADD (4)
- Lệnh CMP: dùng CMP (3)
- Lệnh MOV: dùng MOV (3)
- Lệnh BLX: dùng BLX (2)
Thanh ghi trạng thái chương trình
Vi xử lý có một thanh ghi trạng thái chương trình hiện thời (CPSR) và
5 thanh ghi trạng thái chương trình đã được lưu lại (SPSRs) để xử lý các
exception Thanh ghi trạng thái chương trình có nhiệm vụ:
Lưu trữ thông tin về những thao tác tính toán gần đây nhất được thựchiện trong ALU
Điều khiển mở và đóng các ngắt