Lập trình ARM của Ngô Vinh Những đặc điểm nổi trội của dòng ARM Cortex đã thu hút các nhà sản xuất IC, hơn 240 dòng vi điều khiển dựa vào nhân Cortex đã được giới thiệu. Không nằm ngoài xu hướng đó, hãng sản xuất chip ST Microelectronic đã nhanh chóng đưa ra dòng STM32. STM32 là vi điều khiển dựa trên nền tảng lõi ARM Cortex-M3 thế hệ mới do hãng ARM thiết kế. Lõi ARM Cortex-M3 là sự cải tiến từ lõi ARM7 truyền thống từng mang lại thành công vang dội cho công ty ARM. Một vài đặc điểm nổi bật của STM32 ST đã đưa ra thị trường 4 dòng vi điều khiển dựa trên ARM7 và ARM9, nhưng STM32 là một bước tiến quan trọng trên đường cong chi phí và hiệu suất (price/performance), giá chỉ gần 1 Euro với số lượng lớn, STM32 là sự thách thức thật sự với các vi điều khiển 8 và 16-bit truyền thống. STM32 đầu tiên gồm 14 biến thể khác nhau, được phân thành hai dòng: dòng Performance có tần số hoạt động của CPU lên tới 72Mhz và dòng Access có tần số hoạt động lên tới 36Mhz. Các biến thể STM32 trong hai nhóm này tương thích hoàn toàn về cách bố trí chân (pin) và phần mềm, đồng thời kích thước bộ nhớ FLASH ROM có thể lên tới 512K và 64K SRAM. Nhánh Performance hoạt động với xung nhịp lên đến 72Mhz và có đầy đủ các ngoại vi, nhánh Access hoạt động với xung nhịp tối đa 36Mhz và có ít ngoại vi hơn so với nhánh Performance. a. Sự tinh vi Thoạt nhìn thì các ngoại vi của STM32 cũng giống như những vi điều khiển khác, như hai bộ chuyển đổi ADC, timer, I2C, SPI, CAN, USB và RTC. Tuy nhiên mỗi ngoại vi trên đều có rất nhiều đặc điểm thú vị. Ví dụ như bộ ADC 12-bit có tích hợp một cảm biến nhiệt độ để tự động hiệu chỉnh khi nhiệt độ thay đổi và hỗ trợ nhiều chế độ chuyển đổi. Mỗi bộ định thời có 4 khối capture compare (dùng để bắt sự kiện với tính năng input capture và tạo dạng sóng ở ngõ ra với output compare), mỗi khối định thời có thể liên kết với các khối định thời khác để tạo ra một mảng các định thời tinh vi hơn. Một bộ định thời cao cấp chuyên hỗ trợ điều khiển động cơ, với 6 đầu ra PWM với dead time (khoảng thời gian được chèn vào giữa hai đầu tín hiệu xuất PWM bù nhau trong điều khiển mạch cầu H) lập trình được và một đường break input (khi phát hiện điều kiện dừng khẩn cấp) sẽ buộc tín hiệu PWM sang một trạng thái an toàn đã được cài sẵn. Ngoại vi nối tiếp SPI có một khối kiểm tổng (CRC) bằng phần cứng cho 8 và 16 word hỗ trợ tích cực cho giao tiếp thẻ nhớ SD hoặc MMC. STM32 có hỗ trợ thêm tối đa 12 kênh DMA (Direct Memory Access). Mỗi kênh có thể được dùng để truyền dữ liệu đến các thanh ghi ngoại vi hoặc từ các thanh ghi ngoại vi đi với kích thước từ (word) dữ liệu truyền đi có thể là 8/16 hoặc 32-bit. Mỗi ngoại vi có thể có một bộ điều khiển DMA (DMA controller) đi kèm dùng để gửi hoặc đòi hỏi dữ liệu như yêu cầu. Một bộ phân xử bus nội (bus arbiter) và ma trận bus (bus matrix) tối thiểu hoá sự tranh chấp bus giữa truy cập dữ liệu thông qua CPU (CPU data access) và các kênh DMA. Điều đó cho phép các đơn vị DMA hoạt động linh hoạt, dễ dùng và tự động điều khiển các luồng dữ liệu bên trong vi điều khiển. STM32 là một vi điều khiển tiêu thụ năng lượng thấp và đạt hiệu suất cao. Nó có thể hoạt động ở điện áp 2V, chạy ở tần số 72MHz và dòng tiêu thụ chỉ có 36mA với tất cả các khối bên trong vi điều khiển đều được hoạt động. Kết hợp với các chế độ tiết kiệm năng lượng của Cortex, STM32 chỉ tiêu thụ 2μA khi ở chế độ Standby. Một bộ dao động nội RC 8MHz cho phép chip nhanh chóng thoát khỏi chế độ tiết kiệm năng lượng trong khi bộ dao động ngoài đang khởi động. Khả năng nhanh đi vào và thoát khỏi các chế độ tiết kiệm năng lượng làm giảm nhiều sự tiêu thụ năng lượng tổng thể. b. Sự an toàn Ngày nay các ứng dụng hiện đại thường phải hoạt động trong môi trường khắc khe, đòi hỏi tính an toàn cao, cũng như đòi hỏi sức mạnh xử lý và càng nhiều thiết bị ngoại vi tinh vi. Để đáp ứng các yêu cầu khắc khe đó, STM32 cung cấp một số tính năng phần cứng hỗ trợ các ứng dụng một cách tốt nhất. Chúng bao gồm một bộ phát hiện điện áp thấp, một hệ thống bảo vệ xung Clock và hai bộ Watchdogs. Bộ đầu tiên là một Watchdog cửa sổ (windowed watchdog). Watchdog này phải được làm tươi trong một khung thời gian xác định. Nếu nhấn nó quá sớm, hoặc quá muộn, thì Watchdog sẽ kích hoạt. Bộ thứ hai là một Watchdog độc lập (independent watchdog), có bộ dao động bên ngoài tách biệt với xung nhịp hệ thống chính. Hệ thống bảo vệ xung nhịp có thể phát hiện lỗi của bộ dao động chính bên ngoài (thường là thạch anh) và tự động chuyển sang dùng bộ dao động nội RC 8MHz. c. Tính bảo mật Một trong những yêu cầu khắc khe khác của thiết kế hiện đại là nhu cầu bảo mật mã chương trình để ngăn chặn sao chép trái phép phần mềm. Bộ nhớ Flash của STM32 có thể được khóa để chống truy cập đọc Flash thông qua cổng Debug. Khi tính năng bảo vệ đọc được kích hoạt, bộ nhớ Flash cũng được bảo vệ chống ghi để ngăn chặn mã không tin cậy được chèn vào bảng vector ngắt. Hơn nữa bảo vệ ghi có thể được cho phép trong phần còn lại của bộ nhớ Flash. STM32 cũng có một đồng hồ thời gian thực và một khu vực nhỏ dữ liệu trên SRAM được nuôi nhờ nguồn pin. Khu vực này có một đầu vào chống giả mạo (anti-tamper input), có thể kích hoạt một sự kiện ngắt khi có sự thay đổi trạng thái ở đầu vào này. Ngoài ra một sự kiện chống giả mạo sẽ tự động xóa dữ liệu được lưu trữ trên SRAM được nuôi bằng nguồn pin. d. Phát triển phần mềm Nếu bạn đã sử dụng một vi điều khiển dựa trên lõi ARM, thì các công cụ phát triển cho ARM hiện có đã được hỗ trợ tập lệnh Thumb-2 và dòng Cortex. Ngoài ra ST cũng cung cấp một thư viện điều khiển thiết bị ngoại vi, một bộ thư viện phát triển USB như là một thư viện ANSI C và mã nguồn đó là tương thích với các thư viện trước đó được công bố cho vi điều khiển STR7 và STR9. Có rất nhiều RTOS mã nguồn mở và thương mại và middleware (TCP/IP, hệ thống tập tin, v.v.) hỗ trợ cho họ Cortex. Dòng Cortex-M3 cũng đi kèm với một hệ thống gỡ lỗi hoàn toàn mới gọi là CoreSight. Truy cập vào hệ thống CoreSight thông qua cổng truy cập Debug (Debug Access Port), cổng này hỗ trợ kết nối chuẩn JTAG hoặc giao diện 2 dây (serial wire-2 Pin), cũng như cung cấp trình điều khiển chạy gỡ lỗi, hệ thống CoreSight trên STM32 cung cấp hệ thống điểm truy cập(data watchpoint) và một công cụ theo dõi (instrumentation trace). Công cụ này có thể gửi thông tin về ứng dụng được lựa chọn đến công cụ gỡ lỗi. Điều này có thể cung cấp thêm các thông tin gỡ lỗi và cũng có thể được sử dụng trong quá trình thử nghiệm phần mềm. e. Dòng Performance và Access của STM32 Họ STM32 có hai nhánh đầu tiên riêng biệt: dòng Performance và dòng Access. Dòng Performance tập hợp đầy đủ các thiết bị ngoại vi và chạy với xung nhịp tối đa 72MHz. Dòng Access có các thiết bị ngoại vi ít hơn và chạy tối đa 36MHz. Quan trọng hơn là cách bố trí chân (pins layout) và các kiểu đóng gói chip (package type) là như nhau giữa dòng Access và dòng Performance. Điều này cho phép các phiên bản khác nhau của STM32 được hoán vị mà không cần phải sửa đổi sắp sếp lại footprint (mô hình chân của chip trong công cụ layout bo mạch) trên PCB (Printed Circuit Board). Ngoài hai dòng Performance và Access đầu tiên, hiện nay ST đã đưa ra thị trường thêm hai dòng USB Access và Connectivity như hình bên dưới.
Trang 1 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 2 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 3 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 4 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 i i i xbaA 0 1 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 5 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 6 - Đƣợ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 7 + 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 8 - 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 9 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 10 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 [...]... 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. .. 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. .. 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,... trình: nhƣ theo dõi thời gian thực, theo dõi sự kiện và phân tích quá trình thực thi 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 - Để sử dụng các định nghĩa địa chỉ các ARM7 , trong chƣơng trình cần khai báo thƣ viện hợp lệ, thí dụ với họ LPC có các khai báo: #include LPC2xxx.h hoặc LPC21xx.h hoặc LPC210x.h - Ngƣời lập trình có thể đƣa ra các hàm đƣợc biên dịch theo lệnh tập ARM. .. 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... 2.19 Mô hình lập trình tập lệnh THUMB Trang 22 Ngƣời lập trình không thể truy cập trực tiếp vào thanh ghi CPSR và SPSR Ngƣời lập trình có thể sử dụng 2 lệnh BLX và BX để chuyển chế độ hoạt động với các lệnh Khi reset vi điều khiển làm việc với tập lệnh THUMB, khi có 1 ngoại lệ xảy ra thì sẽ chuyển sang làm việc với tập lệnh ARM, khi kết thúc ngoại lệ thì quay trở về làm việc với lệnh ARM Hình 2.20... về làm việc với lệnh ARM Hình 2.20 Trao đổi giữa lệnh ARM và lệnh THUMB 2.10 Phần mềm phát triển và công cụ phần cứng - Keil C ARM là công cụ cho phép lập trình mô phỏng vi điều khiển ARM với hệ thống thƣ viện đƣợc hỗ trợ tƣơng đối đầy đủ về vi điều khiển core ARM 7 nhƣ: họ vi điều khiển LPCxxxx và ARM9 66E-S, cortex-M0 đến cortex-M3 - Phần mềm isp của atmel và H-jtag để biên dịch và nạp code lên board... đƣợ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... 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... vào ra của ARM là 32 bít, vi điều khiển có thể chỉ có 1 cổng hoặc có nhiều hơn, nhƣng các chân dùng cho cổng vào/ra cũng là các chân dùng chung cho các mục đích khác nhƣ biến đổi AD, ngắt, giao diện SPI, I2C,… - Các chân đƣợc sử dụng vào mục đích nào tùy vào việc cấu hình chúng cho mục đích đó Trong chƣơng 3 sẽ trình bày cụ thể về cách lập trình cho các chân cổng vào ra Trang 33 CHƢƠNG 3: LẬP TRÌNH . 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. 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ợ. 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