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

báo cáo bài tập lớn đề tàitìm hiểu về embedded android

51 1 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Tìm hiểu về Embedded Android
Tác giả Trương Minh Tuấn, Hoàng Thế Vinh, Bùi Thị Hương Trà, Nguyễn Thị Phượng, Phạm Tuyên
Người hướng dẫn Lương Công Duẩn
Trường học Học viện Công nghệ Bưu chính Viễn thông
Chuyên ngành Điện Tử Tiên Tiến
Thể loại Báo cáo bài tập lớn
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 51
Dung lượng 2,5 MB

Cấu trúc

  • CHƯƠNG I: GIỚI THIỆU (5)
    • 1.1. Tổng quan về Embedded Android (0)
    • 1.2. Mục tiêu và phạm vi nghiên cứu (6)
      • 1.2.1. Mục tiêu (6)
      • 1.2.2. Phạm vi nghiên cứu (6)
    • 1.3. Cấu trúc tổ chức của báo cáo (6)
    • 1.4. Sự khác biệt giữa hệ thống nhúng và hệ thống thông thường (7)
    • 1.5. Kiến trúc cơ bản của một hệ thống nhúng Android (0)
  • CHƯƠNG II: ANDROID VÀ EMBEDED ANDROID (12)
    • 2.1. Hệ điều hành android (12)
    • 2.2 Android nhúng (12)
    • 2.3 Lợi ích khi ứng dụng android nhúng vào dự án (12)
  • CHƯƠNG III: KIẾN TRÚC HỆ THỐNG NHÚNG ANDROID (15)
    • 3.1. Kiến trúc của hệ điều hành android (15)
      • 3.1.1. Kernel Linux (15)
      • 3.1.2. Libraries (16)
      • 3.1.3. Android Runtime (ART/Dalvik) (16)
      • 3.1.4. Application Framework (18)
      • 3.1.5. Application (20)
    • 4.1. Môi trường phát triển và công cụ cần thiết (21)
      • 4.1.1. Trình biên dịch chéo (21)
      • 4.1.2. Android studio (21)
    • 4.2. Kết nối phần cứng (30)
  • CHƯƠNG V TỔNG KẾT (49)
    • 5.1 Kết luận và thử nghiệm (49)
    • 5.2 Phương hướng phát triển tiếp (50)
  • TÀI LIỆU THAM KHẢO (51)

Nội dung

Nội dung báo cáo sẽ bao gồm các phần chính như: kiến trúc của Android, phương pháp tích hợp Android vào các thiết bị nhúng, các thách thức và giải pháp khi triển khai Android Embedded, c

GIỚI THIỆU

Mục tiêu và phạm vi nghiên cứu

Cung cấp cho người đọc cái nhìn tổng quan về Android nhúng, bao gồm định nghĩa, lợi ích, ứng dụng và các thành phần chính Phân tích chi tiết kiến trúc hệ thống Android nhúng, bao gồm phần cứng, phần mềm và các lớp trừu tượng Đề cập đến các công cụ và nền tảng phổ biến được sử dụng cho phát triển Android nhúng Thảo luận về các thách thức và giải pháp tiềm năng trong việc phát triển và triển khai Android nhúng Xu hướng và dự báo tương lai cho Android nhúng

Báo cáo sẽ tập trung vào các khía cạnh cơ bản của Android nhúng, bao gồm kiến trúc hệ thống, công cụ phát triển và các trường hợp sử dụng phổ biến Sẽ không đi sâu vào các chi tiết kỹ thuật cụ thể của các phiên bản Android khác nhau hoặc các thiết bị nhúng cụ thể Báo cáo sẽ dựa trên thông tin có sẵn công khai và các nguồn

Android nhúng là một nền tảng mạnh mẽ và linh hoạt cho phát triển các ứng dụng nhúng Với những lợi ích như tính mở, khả năng tương thích rộng rãi và cộng đồng phát triển lớn, Android nhúng đang được sử dụng ngày càng phổ biến trong nhiều lĩnh vực khác nhau Báo cáo này cung cấp cho người đọc một cái nhìn tổng quan về Android nhúng, bao gồm kiến trúc hệ thống, công cụ phát triển, trường hợp sử dụng, thách thức và xu hướng tương lai.tài liệu uy tín.

Cấu trúc tổ chức của báo cáo

Tóm lại, Mục tiêu chính của nghiên cứu là tạo ra các giải pháp nhận diện khuôn mặt hiệu quả, đáp ứng nhu cầu thực tiễn và đảm bảo an toàn thông tin cá nhân của người dùng Đồng thời, nghiên cứu cũng nhằm khám phá và ứng dụng các tiềm năng của công nghệ nhận diện khuôn mặt trong các lĩnh vực khác nhau như an ninh, quản lý truy cập, giáo dục, y tế, và công nghiệp Điều này đặt ra yêu cầu về

6 việc tối ưu hóa hiệu suất và tích hợp hệ thống vào các môi trường thực tế một cách linh hoạt và hiệu quả

Cấu trúc tổ chức của một báo cáo về embedded Android thường bao gồm các phần sau:

 Hệ điều hành nhúng: Giới thiệu về hệ điều hành nhúng và cách chúng hoạt động

 Android OS: Trình bày kiến thức cơ bản về hệ điều hành Android, cấu trúc của nó và cách hoạt động

1.3.2 Kiến thức cơ bản về Embedded Android:

 Embedded Android là gì?: Giải thích khái niệm và ý nghĩa của Embedded

 Kiến thức cơ bản: Đặc điểm và tính năng của Embedded Android, cách tích hợp Android vào các thiết bị nhúng

1.3.3 Thực hiện và Triển khai:

 Phát triển ứng dụng nhúng: Mô tả quy trình phát triển ứng dụng nhúng trên nền tảng Android

 Triển khai vào thiết bị: Hướng dẫn cách triển khai ứng dụng Android vào thiết bị nhúng

1.3.4 Thử nghiệm và Đánh giá:

 Kiểm thử: Mô tả quy trình kiểm thử ứng dụng nhúng trên thiết bị

 Đánh giá hiệu suất: Đánh giá hiệu suất của ứng dụng và hệ thống nhúng

1.3.5 Kết luận và Tương lai:

 Tóm tắt: Tóm lại kết quả quan trọng nhất của nghiên cứu

 Hướng phát triển: Đề xuất các hướng phát triển tiềm năng hoặc công việc tương lai liên quan đến Embedded Android.

Sự khác biệt giữa hệ thống nhúng và hệ thống thông thường

Hệ điều hành thời gian thực (realtime) Hệ điều hành thông thường (non-

Thường không có giao diện (GUI) tường tác với người dung

Thường có giao diện (GUI) tương tác với người dùng như ta dùng hàng ngày

Chúng cần phản hồi nhanh bởi vì đa số các tác vụ tương tác với thiết bị, máy móc khác chứ không phải con người

Khi mở một phần mềm trên đó, có thể bạn phải chờ nó tải rất lâu, việc chờ đợi này cũng không ảnh hưởng gì cả Bởi vì đa số phần mềm đó tương tác với con người chứ ít tương tác với các phần mềm hoặc thiết bị khác

Ví dụ: VxWorks và FreeRTOS Ví dụ: Windows, macOS và Linux

1.5 Kiến trúc cơ bản của một hệ thống nhúng Android

Hình 1 1.Kiến trúc cơ bản của một hệ thống nhúng Android

 Ứng dụng là lớp trên cùng của kiến trúc Android Đây là nơi chứa các ứng dụng được cài đặt trên thiết bị, bao gồm:

 Ứng dụng hệ thống được cài đặt sẵn như: Màn hình chính, Danh bạ, Camera, Thư viện ảnh,

 Ứng dụng của bên thứ ba được tải xuống từ CH Play như: Ứng dụng trò chuyện, Trò chơi,

 Các ứng dụng này chạy trên nền Android Runtime (ART) bằng cách sử dụng các lớp và dịch vụ được cung cấp bởi framework ứng dụng

 Framework ứng dụng cung cấp nhiều lớp quan trọng được sử dụng để xây dựng một ứng dụng Android Nó đóng vai trò trung gian, giúp:

 Truy cập phần cứng theo một cách thống nhất, không phụ thuộc vào từng loại thiết bị cụ thể

 Quản lý giao diện người dùng (UI) với các tài nguyên của ứng dụng

 Cung cấp các dịch vụ để tạo và quản lý các thành phần của ứng dụng

 Framework ứng dụng bao gồm các loại dịch vụ khác nhau như: Trình quản lý hoạt động (activity manager), Trình quản lý thông báo (notification manager), Hệ thống giao diện người dùng (view system), Trình quản lý gói (package manager), Mỗi dịch vụ đều hỗ trợ việc phát triển ứng dụng theo các yêu cầu cụ thể

 Môi trường chạy Android (ART) là một trong những thành phần quan trọng nhất của hệ điều hành Android Nó bao gồm các thư viện cốt lõi và máy ảo Dalvik (DVM) Chức năng chính của ART là cung cấp nền tảng cho framework ứng dụng và hỗ trợ các ứng dụng hoạt động nhờ các thư viện cốt lõi

 Giống như Máy ảo Java (JVM), Máy ảo Dalvik (DVM) là một máy ảo dựa trên thanh ghi được thiết kế và tối ưu hóa đặc biệt cho Android để đảm bảo thiết bị có thể chạy nhiều ứng dụng hiệu quả DVM phụ thuộc vào nhân Linux để quản lý luồng và quản lý bộ nhớ cấp thấp

Các thư viện cốt lõi cho phép chúng ta triển khai các ứng dụng Android bằng các ngôn ngữ lập trình Java hoặc Kotlin tiêu chuẩn

 Thư viện nền tảng bao gồm nhiều thư viện cốt lõi C/C++ và thư viện Java như Media, Graphics, Surface Manager, OpenGL, v.v để hỗ trợ phát triển ứng dụng Android

 Thư viện media cung cấp hỗ trợ phát và ghi âm các định dạng âm thanh và video

 Surface manager chịu trách nhiệm quản lý quyền truy cập vào hệ thống hiển thị

 SGL (phmutlich là thư viện đồ họa 2D) và OpenGL (thư viện đồ họa 3D) đều là các API đa ngôn ngữ, đa nền tảng được sử dụng cho đồ họa máy tính 2D và 3D

 SQLite cung cấp hỗ trợ cơ sở dữ liệu và FreeType cung cấp hỗ trợ font chữ

 WebKit: Công cụ render web nguồn mở này cung cấp mọi chức năng để hiển thị nội dung web và đơn giản hóa việc tải trang

 SSL (Secure Sockets Layer) là công nghệ bảo mật để thiết lập liên kết được mã hóa giữa máy chủ web và trình duyệt web

Nhân Linux là trái tim của kiến trúc Android Nó quản lý tất cả các trình điều khiển (driver) cần thiết trong quá trình chạy, chẳng hạn như trình điều khiển hiển thị, camera, Bluetooth, âm thanh, bộ nhớ, v.v

Nhân Linux đóng vai trò như một lớp trừu tượng giữa phần cứng thiết bị và các thành phần khác của kiến trúc Android Nó chịu trách nhiệm quản lý bộ nhớ, năng lượng, thiết bị, v.v

Các tính năng chính của Nhân Linux:

 Bảo mật: Xử lý vấn đề bảo mật giữa ứng dụng và hệ thống

 Quản lý bộ nhớ: Hiệu quả phân bổ và quản lý bộ nhớ, tạo điều kiện thuận lợi cho việc phát triển ứng dụng

 Quản lý tiến trình: Điều phối tiến trình hoạt động trơn tru, phân bổ tài nguyên khi cần thiết

 Ngăn xếp mạng: Xử lý hiệu quả các hoạt động liên lạc mạng

 Mô hình trình điều khiển: Đảm bảo ứng dụng hoạt động chính xác trên thiết bị Nhà sản xuất phần cứng chịu trách nhiệm tích hợp trình điều khiển của họ vào bản dựng Linux.

ANDROID VÀ EMBEDED ANDROID

Hệ điều hành android

Android là một hệ điều hành nguồn mở được xây dựng dựa trên phiên bản sửa đổi của nhân Linux Nó đi kèm với một khung giao diện người dùng đầy đủ, được tích hợp với SELinux Tính linh hoạt và dễ sử dụng của HĐH đã góp phần làm cho nó ngày càng phổ biến trong nhiều ứng dụng.

Android nhúng

Android nhúng cung cấp tất cả lợi ích của Linux nhúng và bổ sung thêm giao diện thân thiện với người dùng cũng như môi trường lập trình quen thuộc Nó được sử dụng trong nhiều ứng dụng khác nhau như bảng hiệu kỹ thuật số, thử nghiệm và đo lường, điểm bán hàng và hệ thống ô tô (chúng tôi sẽ tập trung vào phần sau của bài viết).

Lợi ích khi ứng dụng android nhúng vào dự án

Google cung cấp mã nguồn cho lõi của Android thông qua Dự án mã nguồn mở Android (AOSP) AOSP bao gồm mã nguồn cho nhiều thành phần khác nhau, bao gồm màn hình khởi chạy, trình duyệt cơ bản, đồng hồ và ứng dụng điện thoại

Bạn có thể nhận bản sao AOSP ngay bây giờ thông qua máy chủ git của Google nhưng hãy nhớ rằng tải xuống đầy đủ sẽ mất khoảng 50 GB Tại source.android.com, bạn có thể tìm thấy hướng dẫn chi tiết về cách xây dựng AOSP tuyến chính

Thành phần phần mềm chính thứ hai mà bạn cần là nhân Linux, nhân này cũng có sẵn miễn phí theo giấy phép GPL copyleft Giấy phép này cho phép các nhà phát triển sửa đổi mã và phân phối nó, miễn là các sửa đổi đó được công khai

 Android có giao diện người dùng (UI) quen thuộc

Nếu sản phẩm của bạn có màn hình cảm ứng thì Android là lựa chọn lý tưởng Vì hầu hết mọi người đều đã từng sử dụng điện thoại Android nên họ sẽ quen với giao diện người dùng (UI), bao gồm cử chỉ chạm và cách điều hướng menu cũng như các tùy chọn trên màn hình Bằng cách kết hợp giao diện người

12 dùng của Android vào sản phẩm của bạn, người tiêu dùng cuối sẽ thấy nó trực quan và dễ sử dụng, nâng cao trải nghiệm tổng thể của họ

 Android có môi trường lập trình quen thuộc

Google cung cấp tài liệu và hỗ trợ mở rộng cho giao diện lập trình Android

Bạn có thể truy cập giao diện này thông qua dev.android.com Điều này không chỉ đơn giản hóa quá trình phát triển ứng dụng cho sản phẩm của bạn mà còn tạo điều kiện thuận lợi cho nhiệm vụ tìm kiếm các nhà phát triển lành nghề

So với C++, được sử dụng rộng rãi trong môi trường Linux nhúng cơ bản, Android có lượng người theo dõi lớn hơn và nhiều nhà phát triển quen thuộc với nó hơn Tuy nhiên, trình độ thông thạo C++ của bạn vẫn có giá trị vì Android có thể được lập trình bằng cả C++ và Java

 Công cụ tốt để lập trình và gỡ lỗi

Google cung cấp nhiều công cụ miễn phí để tạo ứng dụng Android, trong đó Android Studio đóng vai trò là nền tảng chính để viết chương trình Java và

C++.Tuy nhiên, nếu bạn không thoải mái với Java và C++ thì có một số dịch vụ của bên thứ ba phục vụ cho các ngôn ngữ và môi trường khác nhau

 Hỗ trợ tốt từ các nhà cung cấp chip Để tích hợp Android vào một thiết bị nhúng, bạn sẽ cần phần cứng có khả năng chạy hệ điều hành cũng như gói hỗ trợ bo mạch cấu hình chính xác cả Android và nhân Linux Điều quan trọng cần lưu ý là các thiết bị nhúng thường phải tuân theo các tiêu chuẩn cao hơn so với các sản phẩm dành cho người tiêu dùng vì chúng thường phải hoạt động trong điều kiện khắc nghiệt trong thời gian dài và có thể không có sự giám sát của con người

 Bên dưới là Linux Vì Android chạy trên nhân Linux do nhà sản xuất SoC cung cấp nên kiến thức chuyên môn về Linux mà bạn thu thập được vẫn phù hợp Bạn có thể tùy chỉnh kernel và cài đặt trình điều khiển cho thiết bị của mình và tất cả các công cụ phát triển Linux tiêu chuẩn đều có sẵn, bao gồm cả tính năng hoàn hảo để theo dõi hiệu suất và theo dõi để theo dõi

 Bạn có thể tùy chỉnh Android theo nhu cầu của mình Khả năng tùy chỉnh là một lợi thế chính của Phần mềm nguồn mở/tự do (FLOSS), đặc biệt trong bối cảnh các hệ thống nhúng Khả năng sửa đổi mã nền tảng cơ bản là rất quan trọng để tối ưu hóa hiệu suất sản phẩm của bạn Tuy nhiên, chúng tôi khuyên bạn chỉ nên thực hiện những điều chỉnh nhỏ thay vì sửa đổi lớn đối với hệ điều hành cốt lõi để tránh các vấn đề về bảo trì Ví dụ: giới hạn quyền truy cập của người dùng chỉ vào các chương trình bạn cung cấp bằng cách bảo mật giao diện người dùng là một ví dụ điển hình về một chỉnh sửa nhỏ có thể nâng cao sản phẩm của bạn

KIẾN TRÚC HỆ THỐNG NHÚNG ANDROID

Kiến trúc của hệ điều hành android

Hệ điều hành Android là 1 ngăn xếp các thành phần phần mềm, được chia thành 5 phần và 4 lớp chính như trong hình bên dưới

Hình 3 1.Kiến trúc hệ điều hành android

Dưới cùng là lớp Linux - Linux 3.6 cùng với khoảng 115 bản vá Lớp này cung cấp 1 cấp độ trừu tượng giữa phần cứng của thiết bị và các thành trình điều khiển phần cứng thiết yếu như máy ảnh, bàn phím, màn hình hiển thị Đồng thời, hạt nhân (kernel) còn xử lý tất cả các thứ mà Linux có thể làm tốt như mạng kết nối và 1 chuỗi các trình điều khiển thiết bị, giúp cho giao tiếp với các thiết bị ngoại vi dễ dàng hơn

Tuy được phát triển dựa vào nhân Linux nhưng nhân đã được nâng cấp sửa đổi để phù hợp với các thiết bị di động cầm tay do những hạn chế về bộ vi xử lý, dung lượng bộ nhớ, kích thước màn hình, nhu cầu kết nối không dây

3.1.2 Libraries Ở trên lớp nhân Linux là tập các thư viện bao gồm WebKit – trình duyệt Web mã nguồn mở, được biết đến như thư viện libc, cơ sở dữ liệu SQLite – hữu dụng cho việc lưu trữ và chia sẻ dữ liệu ứng dụng, các thư viênj chơi và ghi âm audio, video, hay các thư viện SSL chiụ trách nhiệm bảo mật Internet… Đây là các thư viện dựa trên Java phục vụ cho việc phát triển Android Ví dụ của các thư viện này bao gồm các thư viện ứng dụng dùng để xây dựng giao diện người dùng, vẽ đồ họa hay truy cập cơ sở dữ liệu 1 số thư viện chính của Android:

 android.app – Cung cấp quyền truy cập vào ứng dụng và là nền tảng của tất cả ứng dụng Android

 android.content – Cung cấp quyền truy cập nội dung (content), truyền tải thông điệp giữa các ứng dụng hay các thành phần của ứng dụng

 android.database – Đựoc sử dụng để truy cập dữ liệu của content provider và cơ sở dữ liệu SQLite

 android.opengl – giao diện các phuơng thức Java để sử dụng OpenGL ES

 android.os – Cung cấp các ứng dụng với quyền truy cập vào các dịch vụ của hệ điều hành bao gồm thông điệp, các dịch vụ hệ thống và các giao tiếp nội tại

 android.text – Đựoc sử dụng để hiển thị và điều chỉnh chữ trên màn hình thiết bị

 android.view – Các thành phần cơ bản trong việc xây dựng giao diện người dùng của ứng dụng

 android.widget – Tập các thành phần giao diện người dùng đã được xây dựng sẵn như các nút, các nhãn (label), list view,…

 android.webkit – Tập các lớp cho phép xây dựng khả năng duyệt web

Android Runtime (ART), cùng với người tiền nhiệm của nó là Dalvik, đóng vai trò quan trọng trong việc thực thi các ứng dụng trên hệ điều hành Android Cả hai đều là môi trường runtime, nghĩa là chúng chịu trách nhiệm chạy ứng dụng

16 Android tại thời điểm thực tế (khác với biên dịch mã nguồn sang mã máy trước khi cài đặt) Tuy nhiên, chúng có những điểm khác biệt đáng kể:

 Là môi trường runtime mặc định cho Android cho đến phiên bản 4.4 KitKat

 Sử dụng phương pháp Just-In-Time (JIT) compilation, nghĩa là nó chỉ biên dịch các phần cần thiết của mã ứng dụng thành mã máy ngay tại thời điểm ứng dụng được chạy Điều này giúp tiết kiệm dung lượng lưu trữ nhưng có thể khiến khởi chạy ứng dụng chậm hơn

 Sử dụng Dalvik Virtual Machine (DVM) để thực thi mã bytecode của ứng dụng Android (bytecode là mã trung gian được tạo ra từ mã nguồn gốc của ứng dụng)

 Được giới thiệu từ Android 4.4 KitKat, dần thay thế Dalvik

 Sử dụng phương pháp Ahead-of-Time (AOT) compilation, nghĩa là toàn bộ ứng dụng được biên dịch thành mã máy tại thời điểm cài đặt Điều này làm cho việc khởi chạy ứng dụng nhanh hơn nhưng lại chiếm nhiều dung lượng lưu trữ hơn

 Cũng có thể sử dụng JIT compilation để cải thiện hiệu suất hơn nữa

 Cung cấp các tính năng cải tiến khác so với Dalvik, chẳng hạn như improved garbage collection (dọn rác) và hỗ trợ cho các kiến trúc bộ xử lý mới hơn

17 Hình 3 2.So sánh giữa Dalvik và ART

 Ứng dụng được phát triển cho Dalvik vẫn tương thích và có thể chạy trên ART

 Sự lựa chọn giữa AOT và JIT compilation trên ART có thể phụ thuộc vào nhà phát triển ứng dụng

Dịch vụ hệ thống là những thành phần cốt lõi của hệ điều hành Android, cung cấp các chức năng cơ bản để hỗ trợ hoạt động của ứng dụng và hệ thống Một số dịch vụ hệ thống quan trọng bao gồm:

 Quản lý hoạt động (Activity Manager): Quản lý vòng đời của các ứng dụng, bao gồm khởi tạo, tạm dừng, tiếp tục và hủy

 Quản lý gói (Package Manager): Cài đặt, gỡ cài đặt và cập nhật ứng dụng

 Quản lý tài nguyên (Resource Manager): Quản lý các tài nguyên của hệ thống như hình ảnh, âm thanh và chuỗi

 Quản lý thông báo (Notification Manager): Hiển thị thông báo cho người dùng về các sự kiện quan trọng

 Quản lý giao diện người dùng (View System): Cung cấp các thành phần giao diện người dùng cơ bản như TextView, Button và ImageView

 Khung dịch vụ (Service Framework): Cho phép các ứng dụng giao tiếp với nhau và với hệ thống

 Khung liên kết (Binder Framework): Cung cấp cơ chế liên lạc giữa các tiến trình

 Khung vị trí (Location Framework): Cung cấp thông tin về vị trí của thiết bị

 Khung bảo mật (Security Framework): Cung cấp các chức năng bảo mật cho ứng dụng và hệ thống

Framework Android là một tập hợp các lớp và API (Application Programming Interface) cung cấp cho các nhà phát triển các công cụ cần thiết để xây dựng các ứng dụng Android Framework bao gồm các thành phần sau:

 Thành phần cơ bản: Cung cấp các lớp cơ bản cho các ứng dụng Android, chẳng hạn như lớp Activity, lớp View và lớp Service

 Thành phần UI: Cung cấp các lớp để xây dựng giao diện người dùng của ứng dụng, chẳng hạn như lớp TextView, Button và ImageView

 Thành phần dữ liệu: Cung cấp các lớp để truy cập và quản lý dữ liệu, chẳng hạn như lớp SQLiteDatabase và lớp Cursor

 Thành phần mạng: Cung cấp các lớp để truy cập mạng, chẳng hạn như lớp HttpClient và lớp URL

 Thành phần đa phương tiện: Cung cấp các lớp để phát và ghi âm thanh và video, chẳng hạn như lớp MediaPlayer và lớp Camera

 Thành phần vị trí: Cung cấp các lớp để truy cập thông tin về vị trí của thiết bị, chẳng hạn như lớp LocationManager và lớp LocationListener

 Thành phần bảo mật: Cung cấp các lớp để bảo mật ứng dụng và dữ liệu, chẳng hạn như lớp CryptographyManager và lớp KeyStore

Framework Android được thiết kế để giúp các nhà phát triển xây dựng các ứng dụng mạnh mẽ, hiệu quả và dễ sử dụng Nó cung cấp một môi trường phát triển thống nhất và cho phép các nhà phát triển tận dụng các tính năng và chức năng của hệ điều hành Android

19 Dịch vụ hệ thống và Framework Android hoạt động cùng nhau để cung cấp một nền tảng mạnh mẽ và linh hoạt cho các ứng dụng Android Dịch vụ hệ thống cung cấp các chức năng cơ bản cần thiết cho hoạt động của ứng dụng và hệ thống, trong khi Framework Android cung cấp các công cụ cần thiết để xây dựng các ứng dụng

Framework Android sử dụng các dịch vụ hệ thống để cung cấp các chức năng cho các nhà phát triển Ví dụ, Framework Android sử dụng dịch vụ Activity Manager để quản lý vòng đời của các ứng dụng và sử dụng dịch vụ Resource Manager để quản lý các tài nguyên của hệ thống

Dịch vụ hệ thống cũng có thể sử dụng Framework Android để cung cấp các chức năng cho người dùng Ví dụ, dịch vụ Notification Manager sử dụng

Framework Android để hiển thị thông báo cho người dùng

Sự tương tác giữa Dịch vụ hệ thống và Framework Android là điều cần thiết để cung cấp một trải nghiệm người dùng mượt mà và hiệu quả cho các ứng dụng Android

Môi trường phát triển và công cụ cần thiết

Biên dịch chéo hay còn được gọi là Cros Compiler là một trình biên dịch mà có thể chuyển đổi được mã trên máy hoặc là các loại mã cấp thấp với một máy tính khác đang chạy arm-linux-androideabi-4.9 là trình biên dịch chéo do google cung cấp biên dịch từ máy chủ host linux sang kiến trúc arm 32 bit của hệ điều hành android

Hướng dẫn cài đặt Link tải xuống : https://github.com/KudProject/arm-linux-androideabi-4.9.git

Android Studio là Integrated Development Environment (IDE) môi trường phát triển tích hợp chính thức để phát triển các ứng dụng Android Phần mềm này dựa trên IntelliJ IDEA, môi trường phát triển cho phần mềm Java, một môi trường phát triển tích hợp phần mềm Java, kết hợp với các công cụ cho nhà phát triển và chỉnh sửa mã của nó

Hướng dẫn cài đặt : 1 Download bộ cài Bộ công cụ phát triển JAVA – JDK Các bạn có thể down phiên phản JDK mới nhất tại: https://www.oracle.com/java/technologies/javase-downloads.html

21 Hình 4 1.Bộ công cụ phát triển JAVA – JDK

Bộ cài đặt Android Studio Các bạn có thể down phiên bản Android Studio mới nhất tại: https://developer.android.com/studio/index.html

Hình 4 2.Bộ cài đặt Android Studio

 Tối thiểu 4 GB RAM, cấu hình đề nghị: 8 GB RAM

 Ổ cứng trống ít nhất 10 GB, ưu tiên ổ SSD

 Độ phân giải tối thiếu 1280 x 800

 Java Development Kit (JDK) 7 trở lên 3 Cài đặt Java JDK

Chạy file cài đặt trong để bắt đầu cài đặt Theo mặc định, file JDK và JRE sẽ được đặt trong thư mục C:\Program Files\Java\

Hình 4 3.Thư mục chứa file JDK và JRE Để kiểm tra xem JDK đã cài đặt thành công trên máy tính của bạn chưa, tiến hành kiểm tra như sau:

 Mở CMD ( Bấm tổ hợp phím Window + R sau đó gõ CMD)

 Gõ dòng lệnh java –version Nếu xuất hiện thông báo như bên dưới có nghĩa bạn đã cài đặt thành công

Hình 4 4.Cài đặt thành công

23 Hình 4 5 Welcome to Android Studio Setup

Lựa chọn tất cả các tùy chọn (options)

The Android SDK (software development kit) là một tập hợp các công cụ được sử dụng để phát triển ứng dụng cho Android Android SDK bao gồm:

 Các thư viện đòi hỏi

 Thiết bị giả lập (emulator)

 Các tài liệu liên quan cho Android API

 Các hướng dẫn cho hệ điều hành Android

Android Virtual Device (AVD) là một thiết bị ảo, nó chạy với bộ giả lập Android (Android emulator) Nó làm việc với bộ giả lập để cung cấp một môi trường thiết bị ảo mà qua đó chúng ta có thể cài đặt và chạy ứng dụng Android giống như trên máy thật

Hình 4 7.Liscense Agreement Chọn thư mục cài đặt:

 Android Studio Installation Location: C:\Program Files\Android\Android

 Android SDK Install Location: C:\Program Files\Android\sdk

Hình 4 9.Choose Start Menu Folder

Hình 4 11.Completing Android Studio Setup Bạn đã cài đặt xong Android Studio

ADB, còn được gọi là Cầu gỡ lỗi Android, là một công cụ dòng lệnh chủ yếu dành cho các nhà phát triển để gỡ lỗi ứng dụng Giờ đây, nó không bị giới hạn đối với các nhà phát triển và bạn có thể sử dụng nó để thực hiện một số việc hữu ích trên PC của mình, chẳng hạn như sao lưu và khôi phục Android bằng ADB, ADB cài đặt APK cho Android từ máy tính, khởi động lại điện thoại về Chế độ khôi phục và Bootloader, v.v

ADB Tải xuống Windows 10 và cài đặt

Việc thiết lập ADB trên Windows 10 không phức tạp và xem các bước bên dưới:

Tải xuống SDK Platform-Tools và giải nén nó

Bước 1: Đi tới trang https://developer.android.com/tools/adb?hl=vi và nhấp vào Tải xuống Công cụ nền tảng SDK cho Windows để nhận thư mục ZIP

Hình 4 12.Tải xuống SDK Platform-Tools

Bước 2: Giải nén tất cả nội dung của thư mục này trên PC Windows 10 của bạn

Bước 3: Trong thư mục giải nén, nhấn phím Shift và nhấp chuột phải vào khoảng trống Điều này có thể mang lại một menu ngữ cảnh và chọn Open PowerShell window here Trên một số máy tính, bạn nhìn thấy Open command window here

28 Hình 4 13.Tải xuống SDK Platform-Tools

Bật gỡ lỗi USB trên điện thoại Android của bạn Để sử dụng ADB, bạn cần đảm bảo đã bật tính năng gỡ lỗi USB

1 Kết nối điện thoại Android của bạn với PC Windows qua cáp USB Chọn MTP làm chế độ kết nối

2 Nhập lệnh adb devices vào lệnh CMD hoặc PowerShell rồi nhấn Enter Lệnh này có thể xem danh sách các thiết bị Android đang giao tiếp với máy tính của bạn

29 Hình 4 14.Nhập lệnh adb devices vào lệnh CMD

3 Trên màn hình điện thoại của bạn, một dấu nhắc bật lên yêu cầu bạn cho phép truy cập Gỡ lỗi USB Chỉ cần cho phép nó Bạn có thể chọn hộp Luôn cho phép từ máy tính này

4 Sau khi bật gỡ lỗi USB, bạn nên thực thi lại adb devices để liệt kê thiết bị của mình

Bây giờ, ADB đã được cài đặt thành công trên máy tính Windows của bạn Sau đó, bạn có thể chạy một số lệnh ADB tùy theo nhu cầu của mình Hãy xem một số lệnh phổ biến:

 adb install – cài đặt ứng dụng theo chương trình bằng tệp

 phục hồi khởi động lại adb – khởi động lại thiết bị Android của bạn ở chế độ khôi phục

 adb restart bootloader – khởi động lại thiết bị Android của bạn vào bootloader

 adb shell – khởi động shell từ xa bằng thiết bị Android của bạn

 adb pull – di chuyển tệp từ thiết bị Android của bạn theo chương trình

Kết nối phần cứng

30 Chân GPIO18 sẽ được kết nối với chân VCC của led chân GND của led nối với GND của board rpi3

Lưu ý : điện áp đầu ra của board là 5V với các led có hiệu điện thế nhỏ lên mắc thêm điện trở

Hình 4 15.Kết nối phần cứng

4.3.Qúa trình phát triển ứng dụng điều khiển led

Trong bài lần này chúng em sẽ sử dụng phương pháp gọi trực tiếp system call từ tầng application lý do chọn phương pháp này do không phải build lại aosp.Các phương pháp sử dụng AIDL và HIDL với HAL tạo service theo nhóm em tìm hiểu đều phải build lại aosp.Mà yêu cầu phần cứng để build aosp rất cao Để xây dựng ứng dụng bằng phương pháp gọi system call từ tầng application cần phải xây dựng qua 3 giai đoạn

Giai đoạn 1: Bổ sung driver điều khiển led

Trong giai đoạn này để bổ sung được driver hỗ trợ điều khiển led cần phải cài đặt trình biên dịch chéo sang kiến trúc đối tượng.Tiến hành biên dịch lại kernel để cung cấp mã nguồn cho driver.Sau đó biên dịch lại driver

Giai đoạn 2 : Đưa driver và hệ thống

Sử dụng công cụ adb của android copy file đã biên dịch của driver sang hệ thống Sử dụng các câu lệnh và chèn driver vào kiểm tra hoạt động của trình điều khiển thiết bị

Giai đoạn 3 : Viết chương trình ở tầng điều khiển ứng dụng

Chi tiết quá trình phát triển

Tải về trình biên dịch chéo arm-linux-androideabi-4.9

$ git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm- linux-androideabi-4.9 Tải về kernel

$ Git clone -b lineage-16.0 https://github.com/lineage-rpi/android_kernel_brcm_rpi.git

Sau khi đã tải về ta tiến hành biên dịch kernel.Ta tiến hành tải vể giấy phép của bản hệ điều hành này

$ Git clone -b lineage-16.0 https://github.com/lineage rpi/proprietary_vendor_brcm.git

Tiến hành thêm giấy phép tệp lineageos_rpi3_defconfig nằm trong đường dẫn arch/arm/configs/lineageos_rpi3_defconfig

Di chuyển vào thư mục của kernel và tiến hành ghi vào tệp cấu hình.Sử dụng lệnh

$ Make ARCH=arm CROSS_COMPILE=~/arm/bin/arm-linux-androidkernel- lineageos_rpi3_defconfig

Sau khi đã chỉnh sửa xong tệp cấu hình.Chúng ta tiến hành biên dịch lại nhân

$ Make ARCH=arm CROSS_COMPILE=~/arm/bin/arm-linux-androidkernel- Chờ cho máy host biên dịch lại nhân

Khi nhân đã được biên dịch thành công thự hiện viết chương trình điều khiển thiêt bị Sử dụng công cụ nano tạo 1 file mã nguồn bằng trình điều khiển thiết bị bằng ngôn ngữ C Nội dung của file tiến hành điều khiển thiết bị

* \details Simple GPIO driver explanation

#include //copy_to/from_user()

//LED is connected to this GPIO

#define LED_ON 1 dev_t dev = 0;

33 static struct class *dev_class; static struct cdev etx_cdev; static int init etx_driver_init(void); static void exit etx_driver_exit(void);

/*************** Driver functions **********************/ static int etx_open(struct inode *inode, struct file *file); static int etx_release(struct inode *inode, struct file *file); static ssize_t etx_read(struct file *filp, char user *buf, size_t len,loff_t * off); static ssize_t etx_write(struct file *filp, const char *buf, size_t len, loff_t * off); static long etx_ioctl(struct file *file, unsigned int cmd, unsigned long arg);

//File operation structure static struct file_operations fops = {

owner = THIS_MODULE, read = etx_read, write = etx_write, open = etx_open, unlocked_ioctl = etx_ioctl, release = etx_release, };

** This function will be called when we open the Device file

*/ static int etx_open(struct inode *inode, struct file *file) { pr_info("Device File Opened !!!\n"); return 0;

** This function will be called when we close the Device file

*/ static int etx_release(struct inode *inode, struct file *file) { pr_info("Device File Closed !!!\n"); return 0;

** This function will be called when we read the Device file

*/ static ssize_t etx_read(struct file *filp, char user *buf, size_t len, loff_t *off) { uint8_t gpio_state = 0;

//reading GPIO value gpio_state = gpio_get_value(GPIO_21);

//write to user len = 1; if( copy_to_user(buf, &gpio_state, len) > 0) { pr_err("ERROR: Not all the bytes have been copied to user\n");

} pr_info("Read function : GPIO_21 = %d \n", gpio_state); return 0;

** This function will be called when we write the Device file

*/ static ssize_t etx_write(struct file *filp, const char user *buf, size_t len, loff_t *off)

{ uint8_t rec_buf[10] = {0}; if( copy_from_user( rec_buf, buf, len ) > 0) { pr_err("ERROR: Not all the bytes have been copied from user\n");

} pr_info("Write Function : GPIO_21 Set = %c\n", rec_buf[0]); if (rec_buf[0]=='1') { //set the GPIO value to HIGH gpio_set_value(GPIO_21, 1);

} else if (rec_buf[0]=='0') { //set the GPIO value to LOW gpio_set_value(GPIO_21, 0);

} else { pr_err("Unknown command : Please provide either 1 or 0 \n");

} static long etx_ioctl(struct file *file, unsigned int cmd, unsigned long arg)

{ switch(cmd) { case LED_OFF: gpio_set_value(GPIO_21,0); break; case LED_ON: gpio_set_value(GPIO_21,1); break; default: pr_info("Default\n"); break;

*/ static int init etx_driver_init(void) {

/*Allocating Major number*/ if((alloc_chrdev_region(&dev, 0, 1, "etx_Dev"))

Ngày đăng: 27/05/2024, 17:44

HÌNH ẢNH LIÊN QUAN

Hình 1. 1.Kiến trúc cơ bản của một hệ thống nhúng Android. - báo cáo bài tập lớn đề tàitìm hiểu về embedded android
Hình 1. 1.Kiến trúc cơ bản của một hệ thống nhúng Android (Trang 8)
Hình 3. 1.Kiến trúc hệ điều hành android - báo cáo bài tập lớn đề tàitìm hiểu về embedded android
Hình 3. 1.Kiến trúc hệ điều hành android (Trang 15)
Hình 4. 2.Bộ cài đặt Android Studio - báo cáo bài tập lớn đề tàitìm hiểu về embedded android
Hình 4. 2.Bộ cài đặt Android Studio (Trang 22)
Hình 4. 3.Thư mục chứa file JDK và JRE - báo cáo bài tập lớn đề tàitìm hiểu về embedded android
Hình 4. 3.Thư mục chứa file JDK và JRE (Trang 23)
Hình 4. 7.Liscense Agreement  Chọn thư mục cài đặt: - báo cáo bài tập lớn đề tàitìm hiểu về embedded android
Hình 4. 7.Liscense Agreement Chọn thư mục cài đặt: (Trang 25)
Hình 4. 8.Configuration Settings - báo cáo bài tập lớn đề tàitìm hiểu về embedded android
Hình 4. 8.Configuration Settings (Trang 26)
Hình 4. 11.Completing Android Studio Setup  Bạn đã cài đặt xong Android Studio. - báo cáo bài tập lớn đề tàitìm hiểu về embedded android
Hình 4. 11.Completing Android Studio Setup Bạn đã cài đặt xong Android Studio (Trang 27)
Hình 4. 15.Kết nối phần cứng - báo cáo bài tập lớn đề tàitìm hiểu về embedded android
Hình 4. 15.Kết nối phần cứng (Trang 31)
Hình 5. 1.Demo ứng dụng - báo cáo bài tập lớn đề tàitìm hiểu về embedded android
Hình 5. 1.Demo ứng dụng (Trang 49)

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

TÀI LIỆU LIÊN QUAN

w