Arm cortex-m3 là gì

Kiến trúc cơ bản của SMT32 - ARM Cortex M3 www.arm.vn Trang 1 Author: ARMVN Kiến trúc cơ bản của STM32_ARM Cortex M3 ARM Vietnam 3/18/2010 Kiến trúc cơ bản của SMT32 - ARM Cortex M3 www.arm.vn Trang 2 Author: ARMVN Mục Lục Mục Lục 1 Chương 1 6 GIỚI THIỆU 6 1.1 Cortex là gì? 6 1.2 Một vài ñặc ñiểm nổi bật của STM32 9 1.2.1 Sự tinh vi 10 1.2.2 Sự an toàn 11 1.2.3 Tính bảo mật 11 1.2.4 Phát triển phần mềm 12 1.2.5 Dòng Performance và Access của STM32 12 Chương 2 14 TỔNG QUAN VỀ CORTEX 14 2.1 Các phiên bản kiến trúc ARM 14 2.2 Bộ xử lí Cortex và ñơn vị xử lí trung tâm Cortex 15 2.3 Đơn vị xử lí trung tâm Cortex [Cortex CPU] 15 2.3.1 Kiến trúc ñường ống [Pipline] 15 2.3.2 Mô hình lập trình [Programmer’s model] 16 2.3.2.1 Thanh ghi XPSR 18 2.3.3 Các chế ñộ hoạt ñộng của CPU 19 2.3.4 Tập lệnh Thumb-2 21 2.3.5 Bản ñồ bộ nhớ [Memory Map] 22 2.3.6 Truy cập bộ nhớ không xếp hàng [Unaligned Memory Accesses] 24 2.3.7 Dải Bit [Bit Banding] 25 2.4 Bộ xử lí Cortex 28 2.4.1 Bus 28 2.4.2 Ma trận Bus 29 2.4.3 Timer hệ thống [System timer] 29 2.4.4 Xử lí ngắt [Interrupt Handling] 30 2.4.5 Bộ ñiều khiển vector ngắt lồng nhau [Nested Vector Interrupt Controller] 30 2.4.5.1 Phương pháp nhập và thoát khỏi một ngoại lệ của NVIC [NVIC Operation Exception Entry And Exit] 32 2.4.5.2 Các chế ñộ xử lí ngắt cao cấp [Advanced Interrupt Handling Modes] 33 2.4.5.2.1 Quyền ưu tiên ngắt [Interrupt Pre-emption] 33 2.4.5.2.2 Kỹ thuật Tail Chaining trong NVIC 34 2.4.5.3 Cấu hình và sử dụng NVIC 35 2.4.5.3.1 Bảng vector ngắt [Exception Vector Table] 35 2.5 Các chế ñộ năng lượng 40 2.5.1 Cách ñi vào chế ñộ năng lượng thấp của CPU Cortex 40 Kiến trúc cơ bản của SMT32 - ARM Cortex M3 www.arm.vn Trang 3 Author: ARMVN 2.5.2 Khối hỗ trợ gỡ lỗi CoreSight 42 Chương 3 45 PHẦN CỨNG CƠ BẢN CHO MỘT THIẾT KẾ THỰC TẾ 45 3.1 Kiểu ñóng gói chip và kiểu chân linh kiện 45 3.3.1 Sơ ñồ mạch phần cứng cơ bản 47 Chương 4 48 KIẾN TRÚC HỆ THỐNG CỦA ARM CORTEX 48 4.1 Cấu trúc bộ nhớ 49 4.2 Tối ña hiệu năng 50 4.2.1 Vòng Khóa Pha[Phase Lock Loop] 51 4.2.1.1 Cấu hình cho bus 53 4.2.2 Flash Buffer 54 4.2.3 Direct Memory Access 55 Chương 5 61 NGOẠI VI 61 5.1 Ngoại vi ña dụng 61 5.1.1 Các cổng I/O ña dụng 61 5.1.1.1 Chức năng thay thế[Alternate Function] 63 5.1.1.2 Event Out 64 5.1.2. Ngắt ngoại[EXTI] 64 5.1.3 ADC 66 5.1.3.1 Thời gian chuyển ñổi và nhóm chuyển ñổi 66 5.1.3.2 Analogue WatchDog 69 5.1.3.3 Cấu hình ADC 69 5.1.3.4. Dual mode 71 5.3.1.4.1. Cả hai khối ADC cùng hoạt ñộng ở cùng chế ñộ Regular hoặc Injected 71 5.3.1.4.2. Cả hai khối cùng hoạt ñộng ở 2 chế ñộ Regular và Injected xen kẽ 72 5.3.1.4.3. Hoạt ñộng xen kẽ nhanh và chậm Regular 72 5.3.1.4.4. Chế ñộ kích hoạt thay thế 73 5.3.1.4.5. Kết hợp ñồng bộ hóa Regular và kích hoạt thay thế 73 5.3.1.4.6. Kết hợp ñồng bộ hóa Injected và xen kẽ Regular 73 5.1.4. Bộ ñịnh thời ña nhiệm và nâng cao 74 5.1.4.1. Bộ ñịnh thời ña nhiệm 74 5.1.4.1.1 Khối Capture/Compare 75 5.1.4.1.2 Khối Capture 75 5.1.4.1.3 Chế ñộ PWM Input 76 5.1.4.1.5 Chế ñộ One Pulse 78 5.1.4.3 Đồng bộ hoá các bộ ñịnh thời 78 5.1.5 RTC và các thanh ghi Backup 79 5.2 Kết nối với các giao tiếp khác 80 Kiến trúc cơ bản của SMT32 - ARM Cortex M3 www.arm.vn Trang 4 Author: ARMVN 5.2.1 SPI 80 5.2.2 I2C 82 5.2.3 USART 83 5.2.4 CAN 85 5.2.5 USB 88 Chương 6 89 CHẾ ĐỘ TIÊU THỤ NĂNG LƯỢNG THẤP 89 6.1 Chế ñộ bình thường - RUN mode 89 6.1.1 Chế ñộ Half-cycle và Prefetch-buffer 90 6.2. Các chế ñộ sử dụng công suất tiêu thụ thấp 91 6.2.1. SLEEP 91 6.2.2 STOP Mode 92 6.3 Standby 94 6.4. Sự tiêu thụ công suất của nguồn dự phòng [Backup Region Power Consumption] 96 6.5 Hỗ trợ Debug [Debug Support] 96 Chương 7 97 TÍNH AN TOÀN 97 7.1 Reset Control 97 7.2 Kiểm tra ñiện áp nguồn 99 7.3 Hệ thống an toàn xung nhịp [Clock Security System - CSS] 99 7.4 Watchdogs 100 7.4.1 Windowed Watchdog 101 7.4.2 Independent Watchdog 102 7.5 Tính năng ngoại vi 104 7.5.1 GPIO Port Locking [khóa port GPIO] 104 7.5.2 Analog Watchdog 104 7.5.3 Break Input 104 Chương 8: 105 FLASH 105 8.1 Lập trình và ñảm bảo an toàn cho FLASH nội 105 8.2 Hoạt ñộng xóa và ghi 106 8.3 Các byte Option [Option Bytes] 107 8.3.1 Bảo vệ ghi 107 8.3.2 Bảo vệ ñọc 107 8.3.3 Byte Cấu hình 108 Chương 9: 109 CÔNG CỤ PHÁT TRIỂN 109 9.1 Evaluation Tools 110 Kiến trúc cơ bản của SMT32 - ARM Cortex M3 www.arm.vn Trang 5 Author: ARMVN 9.2 Các thư viện và giao thức 110 9.3 Hệ ñiều hành thời gian thực 111 Kiến trúc cơ bản của SMT32 - ARM Cortex M3 www.arm.vn Trang 6 Author: ARMVN Chương 1 GIỚI THIỆU Trong vài năm trở lại ñây, một trong những xu hướng chủ yếu trong các thiết kế với vi ñiều khiển là sử dụng các chip ARM7 và ARM9 như một vi ñiều khiển ña dụng. Ngày nay các nhà sản xuất IC ñựa ra thị trường hơn 240 dòng vi ñiều khiển sử dụng lõi ARM. Tập ñoàn ST Microelectronic vừa cho ra mắt dòng STM32, vi ñiều khiển ñầu tiên dựa trên nền 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 của lõi ARM7 truyền thống, từng mang lại sự thành công vang dội cho công ty ARM. Dòng STM32 thiết lập các tiêu chuẩn mới về hiệu suất, chi phí, cũng như khả năng ñáp ứng các ứng dụng tiêu thụ năng lượng thấp và tính ñiều khiển thời gian thực khắc khe. 1.1 Cortex là gì? Dòng ARM Cortex là một bộ xử lí thế hệ mới ñưa ra một kiến trúc chuẩn cho nhu cầu ña dạng về công nghệ. Không giống như các chip ARM khác, dòng Cortexk là một lõi xử lí hoàn thiện, ñưa ra một chuẩn CPU và kiến trúc hệ thống chung. Dòng Cortex gồm có 3 phân nhánh chính: dòng A dành cho các ứng dụng cao cấp, dòng R dành cho các ứng dụng thời gian thực như các ñầu ñọc và dòng M dành cho các ứng dụng vi ñiều khiển và chi phí thấp. STM32 ñược thiết kế dựa trên dòng Cortex-M3, dòng Cortex-M3 ñược thiết kế ñặc biệt ñể nâng cao hiệu suất hệ thống, kết hợp với tiêu thụ năng lượng thấp, Cortex-M3 ñược thiết kế trên nền kiến trúc mới, do ñó chi phí sản xuất ñủ thấp ñể cạnh tranh với các dòng vi ñiều khiển 8 và 16-bit truyền thống. Các chip ARM7 và ARM9 ñược các nhà sản xuất bán dẫn thiết kế với giải pháp riêng của mình, ñặc biệt là phần xử lí các các ngắt ñặc biệt [exception] và các ngắt thông thường [interrupt]. Cortex-M3 ñưa ra một lõi vi ñiều khiển chuẩn nhằm cung cấp phần tổng quát, quan trọng nhất của một vi ñiều khiển, Kiến trúc cơ bản của SMT32 - ARM Cortex M3 www.arm.vn Trang 7 Author: ARMVN bao gồm hệ thống ngắt [interrupt system], SysTick timer [ñược thiết kế cho hệ ñiều hành thời gian thực], hệ thống kiểm lỗi [debug system] và memory map. Không gian ñịa chỉ 4Gbyte của Cortex-M3 ñược chia thành các vùng cho mã chương trình, SRAM, ngoại vi và ngoại vi hệ thống. Không giống với ARM7 ñược thiết kế theo kiến trúc Von Neumann [bộ nhớ chương trình và bộ nhớ dữ liệu chung với nhau], Cortex-M3 ñược thiết kế dựa theo kiến trúc Harvard [bộ nhớ chương trình và bộ nhớ dữ liệu tách biệt với nhau], và có nhiều bus cho phép thực hiện các thao tác song song với nhau, do ñó làm tăng hiệu suất của chip. Không giống với các kiến trúc ARM trước ñó, dòng Cortex cho phép truy cập dữ liệu không xếp hàng [unaligned data, vì chip ARM là kiến trúc 32bit, do ñó tất cả các dữ liệu hoặc mã chương trình ñều ñược sắp sếp khít với vùng bộ nhớ là bội số của 4byte]. Đặc ñiểm này cho phép sử dụng hiệu quả SRAM nội. Dòng Cortex còn hỗ trợ việc ñặt và xoá các bit bên trong hai vùng 1Mbyte của bộ nhớ bằng phương pháp gọi là bit banding. Đặc ñiểm này cho phép truy cập hiệu quả tới các thanh ghi ngoại vi và các cờ ñược dùng trên bộ nhớ SRAM mà không cần một bộ xử lí luận lí [Boolean processor]. Hình 1.1. Kiến trúc vi xử lí ARM Cortex-M3 Kiến trúc cơ bản của SMT32 - ARM Cortex M3 www.arm.vn Trang 8 Author: ARMVN Khối trung tâm của STM32 là bộ xử lí Cortex-M3. Bộ xử lí Cortex-M3 là một vi ñiều khiển ñược tiêu chuẩn hoá gồm một CPU 32bit, cấu trúc bus [bus structure], ñơn vị xử lí ngắt có hỗ trợ tính năng lồng ngắt vào nhau [nested interrupt unit], hệ thống kiểm lỗi [debug system] và tiêu chuẩn bố trí bộ nhớ [standard memory layout]. Một trong những thành phần chính của lõi Cortex-M3 là NVIC [Nested Vector Interrupt Controller]. NVIC cung cấp một cấu trúc ngắt chuẩn cho tất cả các vi ñiều khiển ñược thiết kế dựa trên lõi Cortex và cách xử lí các ngắt ñặc biệt [exceptional interrupt]. NVIC cung cấp các vector ngắt chuyên dụng lên tới 240 nguồn ngắt từ ngoại vi, mỗi nguồn ngắt ñó có thể ñược ưu tiên hoá với các mức riêng biệt. NVIC ñược thiết kế ñể xử lí các ngắt ñòi hỏi thời gian ñáp ứng cực kì nhanh [extremely fast interrupt]. Thời gian từ lúc nhận một tín hiệu ngắt cho tới khi thực thi dòng lệnh ñầu tiên trong trình phục vụ ngắt chỉ là 12 chu kì xung nhịp. Công việc này ñược thực hiện tự ñộng bởi một vi chuong trình [microcode] ñược cài sẵn trong CPU. Trong trường hợp xuất hiện các interrupt lồng nhau [tức là xảy ra ngắt khi ñang xử lí ngắt trước ñó], NVIC sử dụng một phương thức gọi là “tail chain” cho phép ngắt liên tiếp ñược phục vụ với ñộ trễ chỉ có 6 chu kì xung nhịp. Trong suốt giai ñoạn lưu trữ dữ liệu lên vùng nhớ stack ñể bắt ñầu thực thi chương trình phục vụ ngắt, một ngắt có mức ưu tiên cao hơn ngắt hiện tại có thể cạnh tranh với [pre-empt] ngắt hiện tại mà không chịu bất kì trì hoãn nào. Cấu trúc ngắt cũng ñi kèm với chế ñộ tiết kiệm năng lượng của trong lõi Cortex-M3. CPU có thể ñược cấu hình tự ñộng vào chế ñộ tiết kiệm năng lượng sau khi thoát khỏi ngắt. Sau ñó lõi tiếp tục ngủ cho ñến khi một exception [ngắt ñặc biệt] xuất hiện. Mặc dù Cortex-M3 ñược thiết kế như là một lõi chi phí thấp [low cost core], nhưng nó vẫn là một CPU 32-bit và vẫn hỗ trợ hai chế ñộ hoạt ñộng: Thread và Handler, mỗi chế ñộ có thể ñược cấu hình với mỗi vùng stack riêng biệt của nó, ñiều này cho phép thiết kế các phần mềm phức tạp và hỗ trợ các hệ diều Kiến trúc cơ bản của SMT32 - ARM Cortex M3 www.arm.vn Trang 9 Author: ARMVN hành thời gian thực. Lõi Cortex có hỗ trợ một timer 24-bit tự ñộng nạp lại giá trị, nó sẽ cung cấp một ngắt timer ñều ñặn cho một nhận RTOS [Real Time Operating System]. Các chip ARM7 vả ARM9 có hai tập lệnh [tập lệnh ARM 32-bit và tập lệnh Thumb 16-bit], trong khi ñó dòng Cortex ñược thiết kế hỗ trợ tập lệnh ARM Thumb-2, tập lệnh này ñược pha trộn giữa tập lệnh 16 và 32-bit, nhằm ñạt ñược hiệu suất cao của của tập lệnh ARM 32-bit với mật ñộ mã chương trình tối ưu của tập lệnh Thumb 16-bit. Tập lệnh Thumb-2 ñược thiết kế ñặc biệt dành cho trình biên dịch C/C++, tức là các ứng dụng dựa trên nền Cortex hoàn toàn có thể ñược viết bằng ngôn ngữ C mà không cần ñến chương trình khởi ñộng viết bằng assembler như ARM7 và ARM9. 1.2 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 nhóm: 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 128K và 20K SRAM. Hình 1.2. Kiến trúc của STM32 nhánh Performance và Access Kiến trúc cơ bản của SMT32 - ARM Cortex M3 www.arm.vn Trang 10 Author: ARMVN Dòng STM32 có hai nhành, 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. 1.2.1 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 mode chuyển ñổi. Mỗi bộ timer có 4 khối capture compare, mỗi khối timer có thể liên kết với các khối timer khác ñể tạo ra một mảng các timer tinh vi. Một timer cao cấp chuyên hỗ trợ ñiều khiển ñộng cơ, với 6 ñầu ra PWM với dead time lập trình ñược và một ñường break input 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 7 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 ở Kiến trúc cơ bản của SMT32 - ARM Cortex M3 www.arm.vn Trang 11 Author: ARMVN 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ể. 1.2.2 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ổ. 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, 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. 1.2.3 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, 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. Kiến trúc cơ bản của SMT32 - ARM Cortex M3 www.arm.vn Trang 12 Author: ARMVN 1.2.4 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, các công cụ phát triển ñã ñượ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 một 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. 1.2.5 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 32MHz. 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. Kiến trúc cơ bản của SMT32 - ARM Cortex M3 www.arm.vn Trang 13 Author: ARMVN Hình 1.3. Đặc ñiểm của bốn nhánh trong họ STM32 Kiến trúc cơ bản của SMT32 - ARM Cortex M3 www.arm.vn Trang 14 Author: ARMVN Chương 2 TỔNG QUAN VỀ CORTEX Như chúng ta ñã thấy trong phần giới thiệu, bộ xử lý Cortex là thế hệ lõi nhúng kế tiếp từ ARM. Cortex thừa kế các ưu ñiểm từ các bộ xử lí ARM trước ñó, nó là một lõi xử lý hoàn chỉnh, bao gồm bộ xử lí trung tâm Cortex và một hệ thống các thiết bị ngoại vi xung quanh, Cortex cung cấp phần xử lí trung tâm của một hệ thống nhúng. Để ñáp ứng yêu cầu khắc khe và ña dạng của các hệ thống nhúng, bộ xử lý Cortex gồm có 3 nhánh, ñược biểu hiện bằng các ký tự sau tên Cortex như sau:  Cortex-A : bộ vi xử lý dành cho hệ ñiều hành và các ứng dụng của người dùng phức tạp. Hỗ trợ các tập lệnh ARM, Thumb và Thumb-2.  Cortex-R : bộ xử lí dành cho các hệ thống ñòi hỏi khắc khe về tính thời gian thực. Hỗ trợ các tập lệnh ARM, Thumb, và Thumb-2.  Cortex-M : bộ xử lí dành cho dòng vi ñiều khiển, ñược tối ưu hóa cho các ứng dụng nhạy cảm về chi phí. Chỉ hỗ trợ tập lệnh Thumb-2. Con số nằm cuối tên Cortex cho biết mức ñộ hiệu suất tương ñối, với 1 là thấp nhất và 8 là cao nhất. Hiện nay dòng Cortex-M có mức hiệu suất cao nhất là mức 3. STM32 dựa trên bộ xử lý Cortex-M3. 2.1 Các phiên bản kiến trúc ARM Tính ñến thời ñiểm hiện tại thì phiên bản kiến trúc mới nhất của lõi ARM là ARMv7 [Trước ñó có ARMv4, ARMv5, ARMv6]. Bộ xử lý Cortex-M3 dựa trên kiến trúc ARMv7 M và có khả năng thực hiện tập lệnh Thumb-2. Kiến trúc cơ bản của SMT32 - ARM Cortex M3 www.arm.vn Trang 15 Author: ARMVN Hình 2.1. Các phiên bản kiến trúc của lõi ARM Các tài liệu hướng dẫn kỹ thuật cho Cortex-M3 và kiến trúc ARMv7-M có thể ñược tải về từ website của ARM tại www.arm.com. 2.2 Bộ xử lí Cortex và ñơn vị xử lí trung tâm Cortex Trong suốt phần còn lại của tài liệu này, các thuật ngữ bộ xử lí Cortex [Cortex processor] và ñơn vị xử lí trung tâm Cortex [Cortex CPU] sẽ ñược sử dụng ñể phân biệt giữa nhúng lõi Cortex hoàn chỉnh và bộ xử lí trung tâm RISC nội [internal RISC CPU]. Trong phần tiếp theo chúng ta sẽ xem xét các ñặc ñiểm chính của ñơn vị xử lí trung tâm Cortex, tiếp theo là hệ thống thiết bị ngoại vi bên trong bộ xử lý Cortex. 2.3 Đơn vị xử lí trung tâm Cortex [Cortex CPU] Trung tâm của bộ xử lý Cortex là một CPU RISC 32-bit. CPU này có một phiên bản ñược ñơn giản hóa từ mô hình lập trình [programmer’s model] của ARM7/9 , nhưng có một tập lệnh phong phú hơn với sự hỗ trợ tốt cho các phép toán số nguyên, khả năng thao tác với bit tốt hơn và khả năng ñáp ứng thời gian thực tốt hơn. 2.3.1 Kiến trúc ñường ống [Pipline] Kiến trúc cơ bản của SMT32 - ARM Cortex M3 www.arm.vn Trang 16 Author: ARMVN CPU Cortex có thể thực thi hầu hết các lệnh trong một chu kì ñơn. Giống như CPU của ARM7 và ARM9, việc thực thi này ñạt ñược với một ñường ống ba tầng. Tuy nhiên Cortex-M3 khả năng dự ñoán việc rẽ nhánh ñể giảm thiểu số lần làm rỗng [flush] ñường ống. Hình 2.2. Kiến trúc ñường ống của ARM Cortex-M3 Trong khi một lệnh ñang ñược thực thi, thì lệnh tiếp theo sẽ ñược giải mã và lệnh tiếp theo nữa sẽ ñược lấy về từ bộ nhớ. Phương thức hoạt ñộng này sẽ phát huy hiệu quả tối ña cho mã tuyến tính [linear code], nhưng khi gặp phải một rẽ nhánh [ví dụ cấu trúc lệnh if…else] thì các ñường ống phải ñược làm rỗng [flush] và làm ñầy [refill] trước khi mã có thể tiếp tục thực thi. Với CPU ARM7 và ARM9, việc rẽ nhánh là rất tốn kém về mặt hiệu suất mã [code performance]. Trong CPU Cortex có ñường ống ba tầng ñược tăng cường khả năng dự ñoán rẽ nhánh, có nghĩa rằng khi một lệnh rẽ nhánh có ñiều kiện xuất hiện, một thao tác lấy lệnh dựa trên suy ñoán ñược thực hiện, do ñó lệnh rẽ nhánh có ñiều kiện sẵn sàng ñể thực hiện mà không cần chịu thêm một thao tác nào. Trường hợp xấu nhất khi gặp phải một rẽ nhánh gián tiếp, khi ñó không thể thực hiện việc lấy lệnh dựa trên việc suy ñoán, do ñó phải làm rỗng ñường ống dẫn. Kiến trúc ñường ống là chìa khóa dẫn ñến hiệu suất tổng thể của CPU Cortex, vì vậy không cần bất kì cân nhắc, xem xét ñặc biệt nào ñược thực hiện trong mã ứng dụng. 2.3.2 Mô hình lập trình [Programmer’s model] CPU Cortex là bộ xử lý dựa trên kiến trúc RISC, do ñó hỗ trợ kiến trúc nạp và lưu trữ [load and store architecture]. Để thực hiện lệnh xử lý dữ liệu, các toán Kiến trúc cơ bản của SMT32 - ARM Cortex M3 www.arm.vn Trang 17 Author: ARMVN hạng phải ñược nạp vào một tập thanh ghi trung tâm, các phép tính dữ liệu phải ñược thực hiện trên các thanh ghi này và kết quả sau ñó ñược lưu lại trong bộ nhớ. Hình 2.3. Kiến trúc load và store của ARM Cortex-M3 Do vậy tất cả các hoạt ñộng của chương trình tập trung xung quanh tập thanh ghi của CPU. Tập thanh ghi này bao gồm mười sáu thanh ghi 32-bit. Các thanh ghi R0-R12 là các thanh ghi ñơn giản, có thể ñược dùng ñể chứa các biến của chương trình. Các thanh ghi R13-R15 có chức năng ñặc biệt trong CPU Cortex. Thanh ghi R13 ñược dùng như là con trỏ ngăn xếp [stack pointer]. Thanh ghi này ñược chia thành nhóm [banked], cho phép CPU Cortex có hai chế ñộ hoạt ñộng, mỗi chế ñộ có không gian ngăn xếp riêng biệt. Đặc ñiểm này thường ñược hệ ñiều hành thời gian thực [Real Time Operating System] sử dụng ñể có thể chạy mã hệ thống của mình trong một chế ñộ bảo vệ. Trong CPU Cortex có hai ngăn xếp ñược gọi là main stack và process stack. Thanh ghi R14 tiếp theo ñược gọi là thanh ghi liên kết [link register]. Thanh ghi này ñược sử dụng ñể lưu trữ các ñịa chỉ trở về khi một cuộc gọi thủ tục [call a procedure] ñược thực hiện. Điều này cho phép CPU Cortex thực hiện rất nhanh việc nhập và thoát khỏi một thủ tục [fast entry and exit to a procedure]. Nếu chương trình của bạn gọi sâu vào nhiều lớp chương trình con, trình biên dịch sẽ tự ñộng lưu R14 trên ngăn xếp [stack]. Thanh ghi cuối cùng R15 là bộ ñếm chương trình [Program Counter]; nó là một phần của tập thanh ghi trung tâm, nó có thể ñược ñọc và thao tác giống như bất kỳ thanh ghi khác. Kiến trúc cơ bản của SMT32 - ARM Cortex M3 www.arm.vn Trang 18 Author: ARMVN Hình 2.3. Mô hình lập trình của ARM Cortex-M3 2.3.2.1 Thanh ghi XPSR Ngoài tập thanh ghi trung tâm còn có một thanh ghi riêng biệt ñược gọi là thanh ghi trạng thái chương trình [Program Status Register]. Nó không phải là một phần của tập thanh ghi chính và chỉ có thể truy cập thông qua hai lệnh chuyên dụng. XPSR chứa một số các vùng chức năng quan trọng ảnh hưởng ñến việc thực thi của CPU Cortex. Hình 2.4. Thanh ghi trạng thái chương trình của CPU Cortex Thanh ghi xPSR cũng có thể ñược truy cập thông qua ba biệt hiệu ñặc biệt [special alias names] cho phép truy cập vào các bit trong xPSR. Năm bit ñầu là những cờ mã ñiều kiện và ñược gán biệt hiệu [aliased] như thanh ghi trạng thái chương trình ứng dụng. Bốn cờ N, Z, C, V [Negative, Zero, Carry và Overflow] sẽ ñược thiết lập và xóa tùy thuộc vào kết quả của một lệnh xử lý dữ liệu. Bit Q là ñược sử dụng bởi các lệnh toán học DPS ñể chỉ ra rằng một biến ñã ñạt giá trị tối ña hoặc giá trị tối thiểu của nó. Giống như tập lệnh ARM 32-bit, các lệnh Thumb-2 chỉ ñược thực hiện nếu mã ñiều kiện của lệnh phù hợp với trạng thái của các cờ trong thanh ghi trạng thái chương trình ứng dụng [Application Program Status Register]. Nếu mã ñiều kiện của lệnh không phù hợp, thì lệnh ñi ngang qua ñường ống như là một lệnh NOP [lệnh này không Kiến trúc cơ bản của SMT32 - ARM Cortex M3 www.arm.vn Trang 19 Author: ARMVN làm gì cả]. Điều này ñảm bảo rằng các lệnh ñi qua ñường ống một cách trơn tru và giảm thiểu làm rỗng ñường ống. Trong CPU Cortex, kỹ thuật này ñược mở rộng với thanh ghi trạng thái chương trình thực thi. Đây là một biệt hiệu của bit các bit từ 8-26 của xPSR. Nó gồm ba trường: trường "If then", trường "interrupt continuable instruction"và trường lệnh Thumb. Lệnh Thumb-2 có một phương pháp hiệu quả khi thực hiện các khối lệnh nhỏ 'if then'. Khi một kiểm tra ñiều kiện là ñúng, nó có thể thiết lập một giá trị trong vùng IT, báo cho CPU thực thi lên bốn lệnh. Nếu việc kiểm tra ñiều kiện là sai, các lệnh này sẽ ñi ngang qua ñường ống như là một lệnh NOP. Vì vậy, một dòng lệnh C ñiển hình sẽ ñược mã hoá như sau: If [r0 ==0] CMP r0,#0 ;compare r0 to 0 ITTEE EQ ;if true execute the next two instructions Then r0 = *r1 +2; LDR r0,[r1] ;load contents of memory location into r0 ADDr0,#2 ;add 2 Hầu hết các lệnh Thumb-2 thực thi trong một chu kì ñơn, một số khác [như lệnh load và store] cần nhiều chu kỳ. Vì vậy, ñể CPU Cortex có thể có một thời gian ñáp ứng ngắt xác ñịnh, các lệnh cần nhiều chu kì thực thi phải ñược ngắt. Khi một lệnh ñược chấm dứt sớm, vùng ICI [Interrupt Continuable Instruction] trong thanh ghi xPSR sẽ lưu lại số các thanh ghi tiếp theo ñược dùng trong lệnh load hoặc store nhiều dữ liệu cùng lúc. Vì vậy, một khi ngắt ñược phục vụ, lệnh load/store bị ngắt trước ñó có thể tiếp tục ñược thực hiện. Trường Thumb cuối cùng ñược thừa hưởng từ phiên bản CPU ARM trước ñó. Trường này chỉ ra nếu tập lệnh ARM hoặc Thumb ñang ñược thực hiện bởi CPU. Trong Cortex-M3 bit này luôn luôn ñược thiết lập mức 1 [tức là tập lệnh ñang ñược thực thi là tập lệnh Thumb]. Cuối cùng, trường trạng thái ngắt chứa thông tin về yêu cầu ngắt ñã ñược ưu tiên trước [pre-empted]. 2.3.3 Các chế ñộ hoạt ñộng của CPU Bộ vi xử lý Cortex ñược thiết kế với mục tiêu giảm số bóng bán dẫn, nhanh chóng và dễ sử dụng lõi vi ñiều khiển, nó có ñược thiết kế ñể hỗ trợ việc sử Kiến trúc cơ bản của SMT32 - ARM Cortex M3 www.arm.vn Trang 20 Author: ARMVN dụng hệ ñiều hành thực hành thời gian. Bộ xử lý Cortex có hai chế ñộ hoạt ñộng: chế ñộ Thread và chế ñộ Handler. CPU sẽ chạy ở chế ñộ Thread trong khi nó ñang thực thi ở chế ñộ nền không có ngắt xảy ra và sẽ chuyển sang chế ñộ Handler khi nó ñang thực thi các ngắt ñặc biệt [exceptions]. Ngoài ra, CPU Cortex có thể thực thi mã trong chế ñộ ñặc quyền hoặc không ñặc quyền [privileged or non-privileged mode]. Trong chế ñộ ñặc quyền, CPU có quyền truy cập tất cả các lệnh. Trong chế ñộ không coӘ ñặc quyền, một số lệnh bị cấm truy cập [như lệnh MRS và MSR cho phép truy cập vào xPSR và các trường của nó]. Ngoài ra, việc cập các thanh ghi ñiều khiển hệ thống trong bộ vi xử lý Cortex cũng bị cấm. Cách sử dụng ngăn xếp [stack] cũng có thể ñược cấu hình. Ngăn xếp chính [main stack-R13] có thể ñược sử dụng bởi cả hai chế ñộ Thread và Handler. Chế ñộ Handler có thể ñược cấu hình ñể sử dụng ngăn xếp quá trình [process stack-R13 banked register]. Hình 2.5. Mô hình hoạt ñộng của chế ñộ Thread và Handler Kiến trúc cơ bản của SMT32 - ARM Cortex M3 www.arm.vn Trang 21 Author: ARMVN Sau khi reset, bộ xử lý Cortex sẽ chạy trong cấu hình phẳng [flat configuration]. Cả hai chế ñộ Thread và Handler ñược thực thi trong chế ñộ ñặc quyền [privileged mode], do ñó, không có sự giới hạn nào về quyền truy cập vào bất kỳ tài nguyên của bộ xử lý. Cả hai chế ñộ Thread và Handler ñều sử dụng ngăn xếp chính. Để bắt ñầu thực hiện, bộ xử lý Cortex ñơn giản chỉ cần vector reset và ñịa chỉ bắt ñầu của ngăn xếp ñể ñược cấu hình trước khi bạn có thể bắt ñầu thực thi chương trình ứng dụng C của bạn. Tuy nhiên, nếu bạn ñang sử dụng một hệ ñiều hành thời gian thực [RTOS] hoặc ñang phát triển một ứng dụng ñòi hỏi khắc khe về ñộ an toàn, chip có thể ñược sử dụng trong chế ñộ cấu hình nâng cao, nơi chế ñộ Handler [exceptions và RTOS] chạy trong chế ñộ ñặc quyền và sử dụng ngăn xếp chính [main stack], trong khi mã ứng dụng chạy trong chế ñộ Thread và không có ñặc quyền truy cập và sử dụng ngăn xếp quá trình [process stack]. Bằng cách này mã hệ thống và mã ứng dụng ñược phân vùng và các lỗi trong mã ứng dụng sẽ không làm cho RTOS sụp ñổ. 2.3.4 Tập lệnh Thumb-2 Các CPU ARM7 và ARM9 có thể thực thi hai tập lệnh: ARM 32-bit và Thumb 16-bit. Điều này cho phép người phát triển ñể tối ưu hoá chương trình của mình bằng cách lựa chọn tập lệnh nào ñược sử dụng cho thủ tục khác nhau: lệnh 32-bit ñể tăng tốc ñộ xử lí và lệnh 16-bit ñể nén mã chương trình. CPU Cortex ñược thiết kế ñể thực thi tập lệnh Thumb-2, là một sự pha trộn của lệnh 16-bit và 32-bit. Tập lệnh thumb-2 cải tiến 26% mật ñộ mã so với tập lệnh ARM 32-bit và 25% hiệu suất so với tập lệnh Thumb 16-bit. Tập lệnh Thumb2 có một số lệnh nhân ñược cải tiến, có thể thực hiện trong một chu kì ñơn và khả năng thực hiện phép chia bằng phần cứng và chỉ mất từ 2-7 chu kỳ. Kiến trúc cơ bản của SMT32 - ARM Cortex M3 www.arm.vn Trang 22 Author: ARMVN Hình 2.6. Đồ thị biểu diễn hiệu năng của bộ xử lí Cortex Điểm chuẩn bộ xử lý Cortex [Cortex processor benchmark] cho một mức ñộ thực hiện là 1,25 DMIPS/MHz, cao hơn so với ARM7 [0.95 DMIPS/MHz với tập lệnh ARM và 0.74 DMIPS/MHz với tập lệnh Thumb] và ARM9 []. Tập lệnh Thumb-2 có: các lệnh rẽ nhánh ñược cải tiến bao gồm việc kiểm tra và so sánh, các khối thực thi có ñiều kiện if/then, thứ tự byte thao tác dữ liệu, các lệnh trích byte và half word. CPU Cortex có một tập lệnh phong phú ñược thiết kế ñặc biệt cho trình biên dịch C. Một chương trình Cortex-M3 ñiển hình sẽ ñược viết hoàn toàn bằng ANSI C, với tối thiểu các từ khoá non-ANSI và chỉ có bảng véc tơ ngắt ñược viết bằng Assembler. 2.3.5 Bản ñồ bộ nhớ [Memory Map] Bộ xử lý Cortex-M3 là một lõi vi ñiều khiển ñược tiêu chuẩn hóa, như vậy nó có một bản ñồ bộ nhớ cũng ñược xác ñịnh. Mặc dù có nhiều bus nội, bản ñồ bộ nhớ này là một không gian ñịa chỉ 4 Gbyte tuyến tính. Bản ñồ bộ nhớ này là chung cho tất cả các thiết bị dựa trên lõi Cortex. Kiến trúc cơ bản của SMT32 - ARM Cortex M3 www.arm.vn Trang 23 Author: ARMVN Hình 2.6. Bản ñồ bộ nhớ tuyến tính 4Gbyte của bộ xử lí Cortex-M3 Một Gbyte bộ nhớ ñầu tiên ñược chia ñều cho một vùng mã [code region] và một vùng SRAM [SRAM region]. Không gian mã ñược tối ưu hóa ñể thực thi từ bus I-Code. Tương tự, SRAM ñược nối ñến bus D-Code. Mặc dù mã có thể ñược nạp và thực thi từ SRAM, các lệnh sẽ ñược lấy bằng cách sử dụng bus hệ thống, vì vậy phải chịu thêm một trạng thái chờ [an extra wait state]. Tức là mã chạy trên SRAM sẽ chậm hơn so với từ bộ nhớ Flash trên chip [on-chip] nằm trong vùng mã. Vùng 0,5 Gbyte tiếp theo của bộ nhớ là vùng ngoại vi trên chip, tất cả thiết bị ngoại vi ñược cung cấp bởi nhà sản xuất vi ñiều khiển sẽ ñược ñặt tại vùng này. Vùng 1 Mbyte ñầu tiên gồm cả SRAM [màu vàng nhạt] và vùng ngoại vi [màu hồng nhạt] ñược ñịnh ñịa chỉ theo bit, sử dụng một kỹ thuật ñược gọi là dải bit [bit banding]. Từ ñó tất cả SRAM và các thiết bị ngoại vi người dùng [user peripherals] trên STM32 ñược ñặt tại vùng này, và tất cả các vị trí bộ nhớ của những vùng này trên STM32 ñều có thể ñược thao tác theo word-wide hoặc bitwise. Không gian ñịa chỉ 2 Gbyte tiếp theo ñược phân Kiến trúc cơ bản của SMT32 - ARM Cortex M3 www.arm.vn Trang 24 Author: ARMVN cho bộ nhớ ngoài - ánh xạ SRAM và thiết bị ngoại vi [external RAM và external Device]. Vùng 0,5 Gbyte cuối cùng ñược phân cho các thiết bị ngoại vi bên trong của bộ xử lí Cortex và một khu vực dành cho các cải tiến trong tương lai của nhà sản xuất chip cho bộ xử lý Cortex. Tất cả các thanh ghi của bộ xử lý Cortex ñược ñặt ở vị trí cố ñịnh cho tất cả vi ñiều khiển dựa trên lõi Cortex. Điều này cho phép mã chương trình dễ dàng ñược chuyển giữa các biến thể STM32 khác nhau và các vi ñiều khiển dựa trên lõi Cortex của các nhà sản xuất chip khác. 2.3.6 Truy cập bộ nhớ không xếp hàng [Unaligned Memory Accesses] Tập lệnh ARM7 và ARM9 có khả năng truy cập các biến có dấu và không dấu có kích thước byte, half word [thường là 2byte] và word [thường là 4byte]. Điều này cho phép CPU hỗ trợ các biến số nguyên mà không cần ñến thư viện phần mềm hỗ trợ, thường ñược yêu cầu ñối với vi ñiều khiển 8 và 16-bit. Tuy nhiên, các phiên bản CPU ARM trước ñó gặp bất lợi ở chỗ, nó chỉ có thể truy cập dữ liệu kích thước là word hoặc half word. Điều này hạn chế khả năng của trình liên kết của trình biên dịch [compiler linker] trong việc ñóng gói dữ liệu vào SRAM và như vậy một số SRAM sẽ bị lãng phí [Việc lãng phí này có thể lên ñến 25% tùy thuộc vào sự kết hợp của các biến ñược sử dụng]. Hình 2.7. Khả năng truy cập bộ nhớ không xếp hàng của bộ xử lí Cortex-M3 so với các phiên bản CPU ARM trước ñó Bộ xử lí Cortex-M3 có thể truy cập bộ nhớ không xếp hàng, việc ñó ñảm bảo rằng SRAM ñược sử dụng một cách hiệu quả. Kiến trúc cơ bản của SMT32 - ARM Cortex M3 www.arm.vn Trang 25 Author: ARMVN CPU Cortex có các chế ñộ ñịnh ñịa chỉ cho word, half word và byte, nhưng có thể truy cập bộ nhớ không xếp hàng [unaligned memory]. Điều này cho phép trình liên kết của trình biên dịch tự do sắp xếp dữ liệu chương trình trong bộ nhớ. Việc bổ sung hỗ trợ tính năng dải bit [bit banding] vào CPU Cortex cho phép các cờ chương trình ñược ñóng gói vào một biến word hoặc half-word hơn là sử dụng một byte cho mỗi cờ. 2.3.7 Dải Bit [Bit Banding] Các phiên bản CPU ARM7 và ARM9 trước ñó chỉ có thể thực hiện thao tác bit trên bộ nhớ SRAM và vùng nhớ thiết bị ngoại vi bằng cách dùng các phép toán AND và OR. Điều này ñòi hỏi thao tác ñọc sửa ñổi ghi [READ MODIFY WRITE operation], thao tác này sẽ tốn nhiều chu kì thực hiện ñể thiết lập và xoá các bit riêng biệt và cần nhiều không gian mã cho mỗi bit. Hình 2.8. Thao tác ñọc sửa ñổi ghi của CPU ARM7 và ARM9 và kĩ thuật dải Bit của bộ xử lí Cortex-M3 Kỹ thuật dải Bit cho phép bộ xử lí Cortex-M3 thao tác các bit trong khi vẫn giữ ñược số lượng bóng bán dẫn ở mức tối thiểu. Để khắc phục những hạn chế trong các thao tác bit ở CPU ARM7 và ARM9, có thể ñưa ra các lệnh chuyên dụng ñể thiết lập hoặc xoá bit, hoặc một bộ xử lý Boolean ñầy ñủ, nhưng ñiều này sẽ làm tăng kích thước và sự phức tạp của CPU Cortex. Thay vào ñó, một kỹ thuật gọi là dải bit cho phép thao tác bit trực tiếp trên các phần không gian bộ nhớ của các thiết bị ngoại vi và SRAM, mà

Video liên quan

Chủ Đề