Tài liệu Lập trình ARM của Ngô Vinh (Hỗ trợ dowload tài liệu zalo 0587998338)

  • Số trang: 92 |
  • Loại file: PDF |
  • Lượt xem: 10 |
  • Lượt tải: 0
taitruongtan

Tham gia: 11/09/2019

Mô tả:

MỤC LỤC CHƢƠNG 1: CÁC KHÁI NIỆM CƠ BẢN TRONG HỆ THỐNG NHÚNG ................ 3 1.1. Hệ nhúng ........................................................................................................... 3 1.2. Hệ thời gian thực ............................................................................................... 3 1.3. Biễu diễn số và dữ liệu ...................................................................................... 3 1.4. Cấu trúc phần cứng của hệ thống nhúng ............................................................ 4 1.5. Hệ điều hành nhúng và phần mềm nhúng .......................................................... 5 1.5.1. Hệ điều hành nhúng .................................................................................... 5 1.5.2. Hệ điều hành thời gian thực –RTOS: (Realtime Operationg System ) ......... 6 1.5.3. Phần mềm nhúng ........................................................................................ 7 1.6. Quy trình thiết kế hệ thống nhúng ..................................................................... 8 1.7. Mô hình hệ thống nhúng .................................................................................. 10 CHƢƠNG 2: HỌ VI ĐIỀU KHIỂN ARM ................................................................. 11 2.1. Tổng quan ....................................................................................................... 11 2.2. Cơ chế Pipeline ............................................................................................... 12 2.3. Các thanh ghi .................................................................................................. 13 2.4. Thanh ghi trạng thái chƣơng trình hiện hành ................................................... 14 2.5. Các mode ngoại lệ ........................................................................................... 15 2.6. Tập lệnh ARM 7.............................................................................................. 16 2.6.1. Các lệnh rẽ nhánh ..................................................................................... 18 2.6.2. Các lệnh xử lý dữ liệu ............................................................................... 18 2.6.3. Các lệnh truyền dữ liệu ............................................................................. 19 2.6.4. Lệnh SWAP ............................................................................................. 20 2.7. Ngắt mềm (SWI – Software Interrupt Instruction) ........................................... 20 2.8. Đơn vị MAC (Multiply Accumulate Unit (MAC) ............................................ 21 2.9. Tập lệnh THUMB ........................................................................................... 21 2.10. Phần mềm phát triển và công cụ phần cứng ................................................... 23 2.10.1. Cấu trúc file start up ............................................................................... 23 2.10.2. Công cụ phần cứng ................................................................................. 25 2.10.3. Cách viết chƣơng trình C với tập lệnh ARM và tập lệnh THUMB .......... 25 2.11. Cấu trúc bên trong ......................................................................................... 26 2.11.1. Bản đồ bộ nhớ ........................................................................................ 26 2.11.2. Lập trình thanh ghi ................................................................................. 27 Trang 1 2.11.3. Memory Acelerator Module (MAM) ...................................................... 27 2.11.4. PLL- Phase Locked Loop ....................................................................... 29 2.11.5. Bộ chia bus (VLSI Peripheral Bus Divider) ............................................ 32 2.12. Các cổng vào ra ............................................................................................. 33 CHƢƠNG 3: LẬP TRÌNH VI ĐIỀU KHIỂN ARM ................................................... 34 3.1. Hƣớng dẫn sử dụng phần mềm Keil C ............................................................. 34 3.2. Truy nhập các chân vào ra chung..................................................................... 42 Thí dụ 1: Viết chƣơng trình điều khiển led đơn sáng nhấp nháy ......................... 43 Thí dụ 2: Chƣơng trình hiển thị chữ trên LCD .................................................... 44 3.3. Lập trình ngắt .................................................................................................. 50 3.3.1. Chân Connect Block ................................................................................. 50 3.3.2. Các chân ngắt ngoài .................................................................................. 51 3.3.3. Cấu trúc ngắt ............................................................................................ 52 3.3.4. Ngắt FIQ .................................................................................................. 54 3.3.5. Kết thúc ngắt ............................................................................................ 56 3.3.6. Vecto IRQ ................................................................................................ 56 3.3.7. Kết thúc một ngắt IRQ .............................................................................. 57 3.3.8. Ngắt không có địa chỉ ............................................................................... 58 3.3.9. Kết thúc ngắt không địa chỉ ...................................................................... 59 3.4. Lập trình Timer ............................................................................................... 59 3.4.1. Các Timer ................................................................................................. 59 3.4.2. Đồng hồ thời gian thực (Real Time Clock - RTC) .................................... 67 3.5. Lập trình qua UART........................................................................................ 70 3.6. Giao diện I2C .................................................................................................. 78 3.7. Giao diện SPI .................................................................................................. 81 3.8. Chuyển đổi ADC và DAC ............................................................................... 83 3.8.1. Chuyển đổi ADC ...................................................................................... 83 3.8.2. Chuyển đổi D/A........................................................................................ 85 3.9. Truyền dữ liệu qua CAN(Controller Area Network) ........................................ 85 TÀI LIỆU THAM KHẢO .......................................................................................... 92 Trang 2 CHƢƠNG 1: CÁC KHÁI NIỆM CƠ BẢN TRONG HỆ THỐNG NHÚNG (tổng số tiết: 3T, số tiết lý thuyết: 3T, số tiết thực hành: 0) 1.1. Hệ nhúng Hệ nhúng là một phần hệ thống xử lý thông tin nhúng trong các hệ thống lớn, phức hợp và độc lập. Thí dụ: ôtô, tủ lạnh, các thiết bị đo lƣờng, điều khiển, truyền thông. Là những tổ hợp của phần cứng và phần mềm để thực hiện một hoặc một nhóm chức năng chuyên biệt, cụ thể (Trái ngƣợc với máy tính PC là đa năng). Một hệ thống nhúng là một máy tính với chất lượng cao, yêu cầu về độ tin cậy cao hơn các loại máy tính khác. Các thiết bị PDAs, Web pad không phải là hệ thống nhúng. 1.2. Hệ thời gian thực Chia làm 2 loại:  Thời gian thực cứng là khi hệ thống hoạt động với yêu cầu thoả mãn sự ràng buộc trong khung thời gian cứng tức là nếu vi phạm thì sẽ dẫn đến hoạt động của toàn hệ thống bị sai hoặc bị phá huỷ. Thí dụ: Lò phản ứng hạt nhân,…  Thời gian thực mềm là khi hệ thống hoạt động với yêu cầu thoả mãn ràng buộc trong khung thời gian mềm, nếu vi phạm và sai lệch nằm trong khoảng cho phép thì hệ thống vẫn có thể hoạt động được và chấp nhận được. Thí dụ nhƣ hệ thống phát thanh truyền hình. Hầu hết hệ nhúng là các hệ thời gian thực và hầu hết các hệ thời gian thực là hệ nhúng-> Thuộc tính thời gian là thuộc tính tiêu biểu cho hệ thống nhúng. 1.3. Biễu diễn số và dữ liệu Đơn vị cơ bản nhất trong biểu diễn thông tin của hệ thống số đƣợc gọi là bit, chính là ký hiệu viết tắt của thuật ngữ binary digit.  1964, IBM đã thiết kế và chế tạo máy tính số sử dụng một nhóm 8 bit để đánh địa chỉ bộ nhớ và định nghĩa ra thuật ngữ 8 bit = 1 byte.  Ngày nay sử dụng rộng rãi thuật ngữ word là một từ dữ liệu dùng để biểu diễn kích thƣớc dữ liệu mà đƣợc xử lý một cách hiệu quả nhất đối với mỗi Trang 3 loại kiến trúc xử lý số cụ thể. Chính vì vậy một từ có thể là 16 bits, 32 bits, hoặc 64 bits…  Mỗi một byte có thể đƣợc chia ra thành hai nửa 4 bit và đƣợc gọi là các nibble.  Nibble chứa các bít trọng số lớn đƣợc gọi là nibble bậc cao, và nibble chứa các bit trọng số nhỏ đƣợc gọi là nibble bậc thấp.  Các hệ thống cơ số: Một cách tổng quát một hệ biểu diễn số cơ số b và a là một số nguyên nằm trong khoảng giá trị cơ số b đƣợc biểu diễn nhƣ sau: n A   ai xbi1 i 0 cơ số binary (nhị phân), cơ số decimal (thập phân), cơ số hexadecimal, cơ số 8 Octal (bát phân). 1.4. Cấu trúc phần cứng của hệ thống nhúng Hình 1.1. Kiến trúc cơ bản của của các chip vi điều khiển nhúng  CPU: Đóng vài trò là bộ não, giả mã và thực thi lệnh, gồm khối ALU, bộ giả mã, bộ tuần tự và các thanh ghi. Trang 4 Xung nhịp và trạng thái tín hiệu: Hoạt động của hệ thống đƣợc thực hiện đồng bộ hoặc dị bộ theo các xung nhịp chuẩn. Các nhịp đó đƣợc lấy trực tiếp hoặc gián tiếp từ một nguồn xung chuẩn thƣờng là các mạch tạo xung hoặc dao động thạch anh.  Bus: có 3 loại, bus dữ liệu, địa chỉ và điều khiển (Bus điều khiển phục vụ truyền tải các thông tin dữ liệu để điều khiển hoạt động của hệ thống).  Bộ nhớ: có 2 loại kiến trúc - Kiến trúc von neumann: không phân biệt vùng chứa dữ liệu và mã chƣơng trình. Cả chƣơng trình và dữ liệu đều đƣợc truy nhập theo cùng một đƣờng. - Kiến trúc Havard: tách/phân biệt vùng lƣu mã chƣơng trình và dữ liệu. Mã chƣơng trình chỉ có thể đƣợc lƣu và thực hiện trong vùng chứa ROM và dữ liệu cũng chỉ có thể lƣu và trao đổi trong vùng RAM. Hầu hết các vi xử lý nhúng ngày nay sử dụng kiến trúc bộ nhớ Havard hoặc kiến trúc Havard mở rộng (tức là bộ nhớ chƣơng trình và dữ liệu tách biệt nhƣng vẫn cho phép khả năng hạn chế để lấy dữ liệu ra từ vùng mã chƣơng trình).  Bộ nhớ chƣơng trình: Eprom và Flash Là các chíp khả trình, cấu tạo từ các transitor, eprom có thể xóa bằng tia cực tím, trong khi Flash có thể xóa bằng các xung điện, có thể lập trình trực tiếp và không cần tháo ra khỏi mạch.  Bộ nhớ RAM: gồm SRAM và DRAM  Bộ điều khiển ngắt: Xử lý yêu cầu ngắt  Bộ định thời chó canh (Watchdog Timer): Là một bộ định thời đặc biệt để định nghĩa 1 khung thời gian hoạt động bình thƣờng của hệ thống. Tự động reset lại hệ thống khi phát hiện các sự cố mềm nhƣ hệ thống bị treo hoặc chạy quẩn. Khung thời gian do ngƣời lập trình đặt ra. 1.5. Hệ điều hành nhúng và phần mềm nhúng 1.5.1. Hệ điều hành nhúng - Đóng vai trò trung gian để tƣơng tác trực tiếp với phần cứng và các chƣơng trình ở lớp trên cũng nhƣ ngƣời sử dụng: Quản lý các tiến trình, quản lý tài ngyên và bảo về các tài nguyên khỏi sự xâm phạm. Trang 5 - Đƣợc nạp và thực thi đầu tiên khi hệ thống khởi động - Để nạp hệ điều hành cần sử dụng bộ nạp boot-loader, có kích thƣớc nhỏ gọn, đảm nhiệm chức năng tiền hệ điều hành. - Bộ nạp khởi tạo cũng có nhiệm vụ khởi tạo vùng nhớ dữ liệu và các thanh ghi hệ thống trƣớc khi nhảy tới chƣơng trình ứng dụng chính. - Có rất nhiều dạng khác nhau của bộ nạp khởi tạo, từ dạng đơn giản đến phức tạp. 1.5.2. Hệ điều hành thời gian thực –RTOS: (Realtime Operationg System ) - Các chức năng chính nhƣ định thời, giải quyết xung đột dữ liệu, giao tiếp giữa các tác vụ process/task.->Ngắn gọn: RTOS là hệ điều hành đa nhiệm - multitasking dùng cho các ứng dụng thời gian thực. - RTOS: Cung cấp các giao tiếp giữa phần cứng và chƣơng trình ứng dụng, với các tính năng chủ yếu sau: Đa nhiệm - Multitasking, Đồng bộ - Sync , xử lý sự kiện và ngắt, I/O, truyền thông giữa các tách vụ process/task, quản lý Timer, Clock và bộ nhớ (tựa chung là quản lý tài nguyên). Hình 1.2. Cấu trúc của OSEK Phân loại: a. Các hệ điều hành mang tính thƣơng mại: thƣờng nhỏ và nhanh, nhƣ QNX, PDOS, pSOS, VxWorks, Nulceus, ERCOS, EMERALDS, Windows CE, chúng có các đặc điểm sau: Trang 6 + Có thời gian chuyển ngữ cảnh và thời gian đáp ứng nhanh. + Kích thƣớc rất nhỏ. + Không có bộ nhớ ảo và có thể cố định mã, dữ liệu trong bộ nhớ. + Hệ thống đa tác vụ và chuẩn giao tiếp liên quá trình. Các mailbox, các sự kiện, các tín hiệu và các đèn báo đƣợc định nghĩa tốt. Những hệ điều hành này thƣờng có các đặc tả tốt và có các công cụ tốt để phát triển các ứng dụng nhúng thời gian thực. Nó hỗ trợ các ràng buộc thời gian thực với các dịch vụ nhƣ: + Các giới hạn thời gian thực hiện. + Đồng hồ thời gian thực. + Lập lịch thứ tự ƣu tiên. + Cảnh báo đặc biệt và thời gian quá hạn (timeout). + Hỗ trợ các hàng đợi thời gian thực. + Cung cấp việc xử lý độ trễ, treo hay kích hoạt việc thực hiện. b. Hệ điều hành thời gian thực mở rộng tới Unix và các hệ điều hành khác Các hệ điều hành này nhƣ: RT-UNIX, RT-LINUX, RT-MACH, RT-POSIX. Chúng chậm hơn và có khả năng dự đoán ít hơn so với các hệ điều hành thời gian thực thƣơng mại ở trên nhƣng chúng lại có nhiều chức năng và môi trƣờng phát triển tốt hơn dựa trên tập các giao tiếp chuẩn và thân thiện. c. Các nhân cho mục đích nghiên cứu Thí dụ nhƣ: Spring, MARS, HARTOS, MARUTI, ARTS, CHAOS, DARK. Các hệ điều hành này có các đặc điểm sau: + Hỗ trợ các thuật toán lập lịch thời gian thực và việc phân tích thời gian. + Hỗ trợ các dịch vụ cơ bản để đồng bộ thời gian thực. + Nhấn mạnh khả năng dự đoán hơn là hiệu năng trung bình. + Hỗ trợ cho khả năng chịu lỗi. - Đối với LPC2000 thì OS đƣợc xem là hệ điều hành tốt nhất. 1.5.3. Phần mềm nhúng - Ngôn ngữ đƣợc sử dụng để phát triển các ứng dụng nhúng thƣờng là C hoặc Assembler. - Keil C là công cụ hỗ trợ viết soạn thảo, debug và biên dịch code (cả C và ASM). Trang 7 - Simulator là một chƣơng trình phần mềm cho phép ngƣời phát triển mã chƣơng trình chạy mô phỏng một chƣơng trình viết cho một nền VXL/VĐK (nền phần cứng đích) trên một môi trƣờng phần cứng khác (hay còn gọi là môi trƣờng phát triển); cho phép chạy từng bƣớc, kiểm thử, điều chỉnh với các giá trị khác nhau, sử dụng các thuật toán khác nhau. Hỗ trợ các chức năng giống nhƣ trên phần cứng đích, có thể kèm theo emulator. - Emulator là một thiết bị phần cứng có khả năng thực hiện nhƣ một nền phần cứng đích ( Còn gọi là cộng cụ phát triển thời gian thực bởi vì nó cho ta phản ứng với các sự kiện nhƣ VĐK đích thực thi) Các bộ Emulator thƣờng có kèm theo cả phần chƣơng trình giám sát (monitor program) để cho phép ngƣời phát triển chƣơng trình cho VĐK đích kiểm tra nội dung, trạng thái các thanh ghi và các khu vực bộ nhớ và thiết lập các điểm dừng khi thực hiện chạy chƣơng trình. 1.6. Quy trình thiết kế hệ thống nhúng Khi tiếp cập kiển trúc hệ thống nhúng dƣới góc nhìn kỹ thuật có thể sử dụng một số mô hình để miêu tả chu kỳ thiết kế. Một số mô hình điển hình nhƣ sau:  Mô hình big-bang: Mô hình này về cơ bản là không cần có kế hoạch và quy trình trƣớc và trong quá trình thiết kế.  Mô hình code anh fix: Đƣa ra ra các yêu cầu nhƣng không có quy trình trƣớc khi bắt đầu phát triển dự án.  Mô hình waterfall(thác nƣớc): Phát triển hệ thống theo từng bƣớc, có đƣợc kết quả của bƣớc trƣớc mới thực hiện bƣớc sau và lặp lại từ đầu. Trang 8 Hình 1.3. Mô hình thác nƣớc  Mô hình spiral (xoáy ốc): Là một quy trình phát triển hệ thống theo từng bƣớc, tại mỗi bƣớc có sự thay đổi và quay lại thiết kế bƣớc trƣớc sao cho phù hợp. Hình 1.4. Mô hình xoán ốc Thực tế ngƣời ta thƣờng kết hợp các mô hình, nhƣ mô hình chu kỳ thời gian sống là sự kết hợp của mô hình waterfall và mô hình spiral Trang 9 Hình 1.5. Mô hình phát triển hệ thống theo chu kỳ thời gian sống 1.7. Mô hình hệ thống nhúng Mô hình hệ thống nhúng gồm 3 lớp Hình 1.5. Mô hình tổng thể của hệ thống nhúng Trang 10 CHƢƠNG 2: HỌ VI ĐIỀU KHIỂN ARM 2.1. Tổng quan - Họ vi điều khiển LPC2000 là ARM7, ngƣời lập trình không cần thiết phải thành thạo ARM 7 để sử dụng LPC2000 mà vấn đề phức tạp là ở trình biên dịch C. - Ngƣời lập trình cần có kiến thức cơ bản về cách CPU làm việc và các đặc tính của nó để tạo ra các thiết kế tin cậy. - ARM 7 là một máy tính nhỏ với tập lệnh nhỏ, khả năng tính toán cao, tiêu thụ năng lƣợng thấp. - Vi điều khiển ARM đƣợc phát triển theo kiến trúc RISC (Reduced Instruction Set Computer): - Chỉ có các lệnh nạp hoặc lƣu trữ là có thể tham chiếu tới bộ nhớ, - Tồn tại ít lệnh và kiểu định địa chỉ, khuôn dạng lệnh cố định, - Có nhiều tập thanh ghi, - Các lệnh thực hiện trong một chu ky máy, - Lệnh đƣợc thực hiện trực tiếp trên phần cứng(CISC có 1 chƣơng trình thông dịch nhỏ), - Chƣơng trình biên dịch mã nguồn phức tạp(CISC-chƣơng trình thông dịch phức tạp), - Hỗ trợ cơ chế pipeline, - Kích thƣớc chƣơng trình lớn. Cấu trúc các chân: Thí dụ các chân của LPC2101: Trang 11 Hình 2.1. Cấu trúc các chân của LPC2101 2.2. Cơ chế Pipeline - Trái tim của ARM7 là cơ chế pipeline, thực thi lệnh theo ba bƣớc: đọc lệnh, giải mã lệnh và thực thi lệnh. Hình 2.2. Ba bƣớc thực hiện của pipepline - Pipeline có phần cứng độc lập để thực hiện các bƣớc, trong khi lệnh thứ nhất đang thực thi, lệnh thứ 2 đƣợc giải mã và lệnh thứ 3 đƣợc đọc lên pipeline. - Hầu hết các lệnh của ARM 7 đƣợc thực thi trong 1 chu kỳ máy. Trang 12 - Pipeline làm việc rất tốt trong trƣờng hợp chƣơng trình không rẽ nhánh. ARM chỉ cho phép thực hiện các bƣớc nhảy ngắn trong đoạn chƣơng trình. - Pipeline là một thành phần của CPU, thanh ghi PC chạy ở 8 bytes đầu của lệnh hiện hành sẽ đƣợc thực thi. Thí dụ: 0x4000 LDR PC,[PC,#4]-> PC=0x400C 2.3. Các thanh ghi - ARM7 có kiến trúc kiểu load and store, bởi vậy, để thực hiện các lệnh xử lý dữ liệu thì tất cả các dữ liệu phải đƣợc tải từ bộ nhớ vào một tập các thanh ghi trung tâm, lệnh xử lý dữ liệu đƣợc thực hiện và lƣu trữ dữ liệu trở lại bộ nhớ. Hình 2.3. Kiến trúc load and store của ARM 7 - ARM7 có 17 thanh ghi 32 bít: - Các thanh ghi R0 đến R12 là các thanh ghi chung, - Thanh ghi R13 là thanh ghi con trỏ ngăn xếp, - R14 là thanh ghi liên kết, - R15 là thanh ghi bộ đếm chƣơng trình (PC) và - Thanh ghi trạng thái chƣơng trình CPSR. - Thanh ghi R14 dùng trong chƣơng trƣờng hợp gọi đến chƣơng trình con “gần” thì nó sẽ cất giữ địa chỉ của trả về của chƣơng trình chính, nếu trong chƣơng trình con này gọi đến một chƣơng trình con khác thì địa chỉ của chƣơng trình chính phải đƣợc cất giữa vào ngăn xếp. Trang 13 Hình 2.4. Các thanh ghi của ARM7 2.4. Thanh ghi trạng thái chƣơng trình hiện hành Hình 2.5. Thanh ghi trạng thái chƣơng trình CPSR - CPU ARM7 thực thi 2 loại lệnh: Tập lệnh ARM 32 bít và tập lệnh đƣợc nén 16 bít. Bít T sẽ quyết định loại lệnh nào sẽ đƣợc thực thi, ngƣời lập trình không nên set hay xóa giá trị của bít này. - ARM7 có 7 chế độ hoạt động khác nhau, ngƣời lập trình thƣờng chạy trong chế độ ngƣời dùng để truy cập đến các bank thanh ghi từ R0-R15 và thanh ghi trạng thái chƣơng trình(CPSR). Tuy nhiên khi gặp các ngoại lệ nhƣ ngắt, lỗi bộ nhớ, ngắt mềm CPU sẽ chuyển sang chế độ khác. Mỗi chế độ các thanh ghi R13 và R14 có giá trị Trang 14 riêng. Ở chế độ ngắt nhanh FIQ các thanh ghi R7-R12 có giá trị giống nhau (không cần dùng stack để lƣu chữ). Hình 2.6. 6 chế độ hoạt động của APU ARM7 2.5. Các mode ngoại lệ - Khi có một ngoại lệ xảy ra, CPU sẽ chuyển chế độ và thanh ghi PC sẽ đƣợc đảy về địa chỉ của vecto ngoại lệ. Bảng vecto bắt đầu từ địa chỉ 0 trùng địa chỉ vecto ngắt. - Mỗi vecto ngoại lệ là 4 bytes. Hình 2.6. Bảng các vecto ngắt Trang 15 Hình 2.7. Thứ tự ƣu tiên của các ngắt Hình 2.8. Thí dụ về trật tự xử lý khi có một ngoại lệ ngắt xảy ra Hình 2.9. CPU trở lại trạng thái ban đầu khi kết thúc phụ vụ ngoại lệ 2.6. Tập lệnh ARM 7 - ARM7 có 2 tập lệnh: Tập lệnh mở rộng 32 bít và tập lệnh nén (THUMB) 16 bít. - CPU ARM7 đƣợc thiết kế để hỗ trợ xử lý theo kiểu big endian hay little endian: Trang 16 Hình 2.10. Hai kiểu xử lý của CPU ARM7 - Một đặc điểm thú vị của ARM7 là tất cả các lệnh đều có thể là các lệnh có điều kiện, bằng cách so sánh 4 bít từ bit 28 đến bít 31 của kết quả thực hiện lệnh với các bít điều kiện trong thanh ghi CPSR, nếu điều khiện không thỏa mãn thì lệnh sẽ không đƣợc thực thi. - Các lệnh xử lý dữ liệu sẽ bị ảnh hƣởng bởi các bít điều kiện trong thanh ghi CPSR. Hai lệnh cơ bản MOV và ADD có thể đặt các tiến tố đằng trƣớc với 16 điều kiện nhƣ sau: Hình 2.11. 16 điều kiện đƣợc kiểm tra trƣớc khi thực thi lệnh Trang 17 Thí dụ: EQMOV R1,#0x00800000; Giá trị 0x00800000 chỉ đƣa vào R1 khi kết quả cuối cùng của lệnh có các bít tƣơng ứng với 4 bít trong thanh ghi CPSR và bít cờ Z đƣợc set =1. - Các lệnh của ARM7 có thể chia thành 6 nhóm: Các lệnh rẽ nhánh, các lệnh xử lý dữ liệu, truyền dữ liệu, truyền khối dữ liệu, lệnh số học và ngắt mềm. 2.6.1. Các lệnh rẽ nhánh - 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 vào thanh ghi liên kết R14. - Lệnh rẽ nhánh có 2 biến thể: Rẽ nhánh trao đổi (branch exchange) và rẽ nhánh liên kết trao đổi (branch link exchange). Hai lệnh này cơ giống nhau nhƣng lệnh rẽ nhánh liên kết địa chỉ của lệnh tiếp theo đƣợc cộng thêm 4 bytes rồi đƣa vào R14. 2.6.2. Các lệnh xử lý dữ liệu Cú pháp tổng quát: Hình 2.12. Cú pháp tổng quát của một lệnh xử lý dữ liệu có điều kiện Mỗi lệnh đều có 2 toán hạng, trong đó toán hạng thứ nhất phải là thanh ghi, toán hạng còn lại có thể thanh ghi hoặc giá trị cụ thể. Bít „S‟ đƣợc sử dụng để điều khiển điều kiện của lệnh:  S=1 thì điều kiện của lệnh phụ thuộc vào kết quả của lệnh,  S=0 thì không có điều gì xảy ra  Nếu S=1 và PC là thanh ghi chứa kết quả thì SPSR của chế độ hiện hành đƣợc copy vào CPSR. Trang 18 Hình 2.13. Bảng các lệnh xử lý dữ liệu 2.6.3. Các lệnh truyền dữ liệu Hình 2.14. Các lệnh truyền dữ liệu Trang 19 Hình 2.15. Các lệnh truyền một khối dữ liệu 2.6.4. Lệnh SWAP - ARM7 hỗ trợ các tín hiệu thời gian thực với một lệnh swap cho phép trao đổi chỗ nội dung của hai thanh ghi. - Lệnh này đƣợc hỗ trợ trong thƣ viện ARM chứ không trực tiếp từ ngôn ngữ C. Hình 2.16. Mô tả lệnh swap trong ARM7 2.7. Ngắt mềm (SWI – Software Interrupt Instruction) Trang 20
- Xem thêm -