• Không có kết quả nào được tìm thấy

ĐỒ ÁN TỐT NGHIỆP

Protected

Academic year: 2024

Chia sẻ "ĐỒ ÁN TỐT NGHIỆP"

Copied!
78
0
0

Loading.... (view fulltext now)

Văn bản

Các hệ thống nhúng ra đời nhằm giúp người dùng sử dụng hiệu quả và triệt để các tài nguyên này. Hệ thống nhúng là thuật ngữ dùng để chỉ một hệ thống tự trị được nhúng trong môi trường, trường học hoặc hệ thống nuôi dạy con cái. Đây là những hệ thống kết hợp phần cứng và phần mềm để giải quyết các vấn đề chuyên biệt trong nhiều lĩnh vực công nghiệp, tự động hóa việc điều khiển, giám sát và truyền thông. Với sự ra đời của các hệ thống nhúng, bộ vi xử lý ngày càng được sử dụng rộng rãi trong đời sống và công nghiệp nhờ 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.

Mặc dù 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 trong tương lai của ngành điện tử nhưng hiện tại ở Việt Nam số lượng kỹ sư có kiến ​​thức về hệ thống nhúng vẫn còn rất hạn chế và chưa đáp ứng được nhu cầu nhân lực trong lĩnh vực này. Vì vậy, việc biên soạn giáo trình trên hệ thống nhúng là một yêu cầu cần thiết cả hiện tại và tương lai.

TỔNG QUAN VỀ HỆ THỐNG NHÚNG

Khái niệm về hệ thống nhúng

Đây là một hệ điều hành nhúng mở, được sử dụng cho các hệ thống nhúng. Như chúng ta đã thấy, một tiến trình không phải là một chương trình (mặc dù đôi khi một chương trình đơn giản chỉ cần một tiến trình để hoàn thành nhiệm vụ; trong trường hợp này chúng ta có thể thấy rằng tiến trình và tiến trình chương trình là một). Chúng tôi cũng có thể yêu cầu quy trình nền bằng cú pháp &.

Quản lý Linux cho phép các quy trình của cùng một chương trình sử dụng mã của nhau. Hàm system() có thể được sử dụng để gọi một tiến trình khác trong chương trình thời gian chạy.

  • Kiến trúc CPU
  • Thiết bị ngoại vi
  • Công cụ phát triển
  • Độ tin cậy
  • Các kiến trúc phần mềm hệ thống nhúng
  • Hệ thống thời gian thực
  • Hệ điều hành thời gian thực (RTOS) và kernel thời gian thực
  • Chƣơng trình, tác vụ và luồng
  • Kiến trúc của hệ thống thời gian thực

Phát triển ứng dụng nhúng

Vì vậy, cách viết chương trình phần mềm truyền thống sẽ không còn phù hợp khi lập trình hệ thống nhúng đa luồng. Điều này nhằm đảm bảo độ chính xác và cải thiện tốc độ hệ thống. Hầu hết các hệ thống nhúng ngày nay đều sử dụng ngôn ngữ C để lập trình, nhưng rất ít hệ thống vẫn sử dụng ngôn ngữ hợp ngữ.

Hệ điều hành nhúng đóng vai trò rất quan trọng trong các hệ thống nhúng. Trong quá trình vận hành, một số phần mềm cần được điều chỉnh, thay đổi thường xuyên nên hệ thống phần mềm có thể không kiểm soát được.

VI XỬ LÝ ARM

  • Tổng quan
  • Cơ chế Pipeline
  • Các thanh ghi
  • Thanh ghi trạng thái chƣơng trình hiện hành
  • Các mode ngoại lệ
  • Tập lệnh ARM7
    • Các lệnh rẽ nhánh
    • Các lệnh xử lý dữ liệu
    • Các lệnh truyền dữ liệu
    • Lệnh SWAP
  • Ngắt mềm (SWI – Software Interput instruction)
  • Đơn vị MAC (Multíply Accumulate Unit (MAC)
  • Tập lệnh THUMB
  • Cổng JTAG
  • Memory Acelerator Module (MAM)
  • PLL- Phase Locked Loop
  • Bộ chia bus (VLSI Peripheral Bus Divider)

Đường ống là một phần của CPU, thanh ghi PC chạy trong 8 byte đầu tiên của lệnh hiện tại sẽ được thực thi. R15 là thanh ghi bộ đếm chương trình (PC) và thanh ghi trạng thái chương trình CPSR. Ở chế độ ngắt FIQ nhanh, các thanh ghi R7-R12 có cùng giá trị (không cần sử dụng ngăn xếp để lưu trữ các từ).

Khi một ngoại lệ xảy ra, CPU sẽ thay đổi trạng thái và thanh ghi PC sẽ nhảy tới địa chỉ của vectơ ngoại lệ. Các lệnh xử lý dữ liệu sẽ bị ảnh hưởng bởi các bit điều kiện trong thanh ghi CPSR. Cho phép nhảy tiến hoặc lùi trong phạm vi 32MB, địa chỉ của lệnh tiếp theo sẽ được lưu trong thanh ghi liên kết R14.

Mỗi lệnh có 2 toán hạng, trong đó toán hạng đầu tiên phải là một thanh ghi, toán hạng còn lại có thể là một thanh ghi hoặc một giá trị cụ thể. Khi nhân 32 bit dưới dạng số nguyên dài, kết quả là 64 bit và được đặt vào 2 thanh ghi. Các lệnh xử lý dữ liệu yêu cầu thanh ghi nguồn và thanh ghi đích.

Lập trình viên không thể truy cập trực tiếp vào các thanh ghi CPSR và SPSR. MAM trong suốt đối với người dùng và được cấu hình bởi hai thanh ghi: điều khiển (MAMCR) và thời gian (MAMTIM). Việc khởi động PLL có thể được kiểm tra bằng cách đọc bit LOCK (D10) trong thanh ghi trạng thái PLLSTAT.

Khi PLL bị khóa, nguồn xung nhịp cho Cclk có thể được thay thế bằng cách kiểm tra bit PLLC trong thanh ghi PLLCON. Thanh ghi trong bộ chia VPBDIV có thể lập trình được và chứa số lần giảm tốc.

Hình 2.2. Ba bước thực hiện của pipepline
Hình 2.2. Ba bước thực hiện của pipepline

HỆ ĐIỀU HÀNH NHÚNG EMBEDĐE LINUX

Giới thiệu hệ điều hành nhúng

  • Hệ điều hành
  • Hệ điều hành nhúng

Hệ điều hành nhúng có các tính năng cơ bản của hệ điều hành: Quản lý tài nguyên phần cứng và phần mềm của hệ thống. Làm trung gian giữa phần cứng và phần mềm và giúp phần cứng hoạt động minh bạch với phần mềm ứng dụng.

Các hệ điều hành nhúng điển hình

  • Embedded Linux
  • Windows CE
  • Andriod

Trong kernel, có hai lớp dịch vụ chính cung cấp chức năng mà ứng dụng yêu cầu. Thư viện được hầu hết các ứng dụng Linux sử dụng là thư viện GNU C glibc, được liên kết động với các ứng dụng. Điều này cho phép nhiều ứng dụng sử dụng cùng một thư viện.

Windows CE cung cấp cho các nhà phát triển ứng dụng môi trường Microsoft API 32-bit cùng với tính dễ sử dụng và tính linh hoạt của ngôn ngữ kịch bản. Hệ thống API có sẵn cho các ứng dụng thông qua thư viện coredll.dll, liên kết đến tất cả các mô-đun thực thi của hệ điều hành. Ngoài ra, hệ điều hành còn cung cấp các API ứng dụng tương tự như API Win32 trên máy tính để bàn.

Windows CE bao gồm nhiều công cụ khác nhau giúp thiết kế và cấu hình các image hệ điều hành cũng như phát triển trình điều khiển, tiện ích và ứng dụng. Android là hệ điều hành dựa trên nhân Linux (kernel 2.6), các ứng dụng chạy trên máy ảo Java - phiên bản được thiết kế cho thiết bị di động có tên Dalvik. Bên trên thư viện cốt lõi là các khung, là tập hợp các dịch vụ có thể tái sử dụng và các thành phần phổ biến phục vụ các ứng dụng.

Các ứng dụng chạy trên lớp trên cùng của hệ điều hành với một bộ lõi ứng dụng bao gồm email, lịch và duyệt web. Ví dụ: công cụ ActCreator (có sẵn dưới dạng tệp bó cho Windows và dưới dạng tập lệnh Python cho người dùng Mac và Linux) xây dựng các khung cho các ứng dụng Android. Công cụ này cũng tạo tệp Ant để biên dịch mã nguồn và tạo ứng dụng.

Lập trình C/C++ trên Linux

  • Linux và các lệnh cơ bản
  • Chƣơng trình trên Linux
  • Xử lý tiến trình trong linux

Ví dụ, bash shell là một tiến trình có thể thực thi các lệnh ls hoặc cp. Theo lập trình, chúng ta có thể sử dụng lệnh fork() để sao chép một quy trình mới từ một quy trình cũ. Quá trình init được kích hoạt ngay khi chúng ta khởi động hệ điều hành.

Chúng tôi sẽ sử dụng lệnh putenv và getenv để đặt biến môi trường cho quy trình. Nếu chúng ta hủy quá trình init, hệ điều hành sẽ kết thúc phiên. Để liệt kê các tiến trình hệ thống, chúng ta sử dụng lệnh: $ps –ax.

Điều này có nghĩa là chúng ta có thể tạo một quy trình mới từ một quy trình đang chạy. Tiến trình ban đầu được gọi là tiến trình cha, còn tiến trình mới được gọi là tiến trình con. WIFEXITED (stat_loc) Trả về giá trị khác 0 nếu tiến trình con thoát bình thường.

TRÌNH NHÚNG ARM TRÊN LINUX

Giới thiệu KIT nhúng FriendlyArm Micro2440

Môi trƣờng phát triển ứng dụng

Lập trình điều khiển LED

Lập trình đọc trạng thái nút bấm

Kiểm tra trạng thái của các nút và in trạng thái thích hợp (Phím lên hoặc phím xuống). Qua quá trình triển khai dự án, đã xuất hiện những kết quả tích cực, tạo tiền đề cho việc phát triển các ứng dụng với dòng vi điều khiển ARM. Và thông qua nghiên cứu này, tôi đã học được tầm quan trọng và ứng dụng rộng rãi của hệ thống nhúng trong nghiên cứu cũng như ứng dụng thực tế.

Nó giúp em có thêm kiến ​​thức thực tế và bổ sung những kiến ​​thức đã học ở trường. Với chủ đề này, tôi đã cơ bản hiểu được lập trình nhúng ARM trên nền tảng hệ điều hành Linux. Nhưng do thị trường ARM ở Việt Nam không lớn nên việc tìm tài liệu cũng như mua bộ dụng cụ thực hành gặp khó khăn nên việc nghiên cứu còn gặp nhiều khó khăn.

Hướng nghiên cứu và phát triển của đồ án nhận được sự giúp đỡ tận tình, chu đáo của giảng viên Nguyễn Huy Dũng. Dự án đã hoàn thành xuất sắc việc nghiên cứu và lập trình ứng dụng ARM trên Linux. Một lần nữa em xin cảm ơn các thầy cô đã truyền đạt kiến ​​thức để em có thể hoàn thành đồ án với kết quả như mong đợi.

Tài liệu tham khảo

Tài liệu liên quan