Thứ Sáu, 19 tháng 10, 2012

Cortex là gì? Kiến trúc co bản của SMT32 - ARM Cortex M3

Trong vài nam trở lại đây, một trong những xu huớ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 nhu một vi điều khiển đa dụng. 

Ngày nay các nhà sản xuất IC đưa ra thị truờng hon 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í, cung nhu khả nang đáp ứng các ứng dụng tiêu thụ nang luợ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 đua ra một kiến trúc chuẩn cho nhu cầu đa dạng về công nghệ. Không giống nhu các chip ARM khác, dòng Cortex là một lõi xử lí hoàn thiện, dua 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 nhu 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 đuợc thiết kế dựa trên dòng Cortex-M3, dòng Cortex-M3 đuợ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ụ nang luợng thấp, CortexM3 đuợ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 đuợ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 thuờ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, Trang 6 Author: ARMVN Kiến trúc co bản của SMT32 - ARM Cortex M3 www.arm.vn bao gồm hệ thống ngắt (interrupt system), SysTick timer (đuợ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 đuợc chia thành các vùng cho mã chuong trình, SRAM, ngoại vi và ngoại vi hệ thống.

Không giống với ARM7 đuợc thiết kế theo kiến trúc Von Neumann (bộ nhớ chuong trình và bộ nhớ dữ liệu chung với nhau), Cortex-M3 đuợc thiết kế dựa theo kiến trúc Harvard (bộ nhớ chuong 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 tang hiệu suất của chip. Không giống với các kiến trúc ARM truớ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ã chuong trình đều đ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 phuong 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ờ đuợc dùng trên bộ nhớ SRAM mà không cần một bộ xử lí luận lí (Boolean processor).

Khối trung tâm của STM32 là bộ xử lí Cortex-M3. Bộ xử lí Cortex-M3 là một vi diều khiển duợc tiêu chuẩn hoá gồm một CPU 32bit, cấu trúc bus (bus structure), don vị xử lí ngắt có hỗ trợ tính nang 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 diều khiển duợc thiết kế dựa trên lõi Cortex và cách xử lí các ngắt dặ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 dó có thể duợc uu tiên hoá với các mức riêng biệt. NVIC duợc thiết kế dể xử lí các ngắt dòi hỏi thời gian dá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 dầ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 duợc thực hiện tự dộng bởi một vi chuong trình (microcode) duợc cài sẵn trong CPU. Trong truờng hợp xuất hiện các interrupt lồng nhau (tức là xảy ra ngắt khi dang xử lí ngắt truớc dó), NVIC sử dụng một phuong thức gọi là “tail chain” cho phép ngắt liên tiếp duợc phục vụ với dộ trễ chỉ có 6 chu kì xung nhịp. Trong suốt giai doạn luu trữ dữ liệu lên vùng nhớ stack dể bắt dầu thực thi chuong trình phục vụ ngắt, một ngắt có mức uu tiên cao hon 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 cung di kèm với chế dộ tiết kiệm nang luợng của trong lõi Cortex-M3. CPU có thể duợc cấu hình tự dộng vào chế dộ tiết kiệm nang luợng sau khi thoát khỏi ngắt. Sau dó lõi tiếp tục ngủ cho dến khi một exception (ngắt dặc biệt) xuất hiện. Mặc dù Cortex-M3 duợc thiết kế nhu là một lõi chi phí thấp (low cost core), nhung nó vẫn là một CPU 32-bit và vẫn hỗ trợ hai chế dộ hoạt dộng: Thread và Handler, mỗi chế dộ có thể duợc cấu hình với mỗi vùng stack riêng biệt của nó, diề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 Trang 8 Author: ARMVN Kiến trúc co bản của SMT32 - ARM Cortex M3 www.arm.vn hành thời gian thực. Lõi Cortex có hỗ trợ một timer 24-bit tự dộng nạp lại giá trị, nó sẽ cung cấp một ngắt timer dều dặ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ó dòng Cortex duợc thiết kế hỗ trợ tập lệnh ARM Thumb-2, tập lệnh này duợc pha trộn giữa tập lệnh 16 và 32bit, nhằm dạt duợc hiệu suất cao của của tập lệnh ARM 32-bit với mật dộ mã chuong trình tối uu của tập lệnh Thumb 16-bit. Tập lệnh Thumb-2 duợc thiết kế dặ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ể duợc viết bằng ngôn ngữ C mà không cần dến chuong trình khởi dộng viết bằng assembler nhu ARM7 và ARM9. 1.2 Một vài dặc diểm nổi bật của STM32 ST dã dua ra thị truờng 4 dòng vi diều khiển dựa trên ARM7 và ARM9, nhung STM32 là một buớc tiến quan trọng trên duờng cong chi phí và hiệu suất (price/performance), giá chỉ gần 1 Euro với số luợng lớn, STM32 là sự thách thức thật sự với các vi diều khiển 8 và 16-bit truyền thống. STM32 dầu tiên gồm 14 biến thể khác nhau, duợc phân thành hai nhóm: dòng Performance có tần số hoạt dộng của CPU lên tới 72Mhz và dòng Access có tần số hoạt dộng lên tới 36Mhz. Các biến thể STM32 trong hai nhóm này tuong thích hoàn toàn về cách bố trí chân (pin) và phần mềm, dồng thời kích thuớc bộ nhớ FLASH ROM có thể lên tới 128K và 20K SRAM.

Kiến trúc của STM32 nhánh Performance và Access Trang 9 Author: ARMVN Kiến trúc co bản của SMT32 - ARM Cortex M3 www.arm.vn 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 hon 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 cung giống nhu những vi điều khiển khác, nhu 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ụ nhu 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 đuợc và một đuờng break input sẽ buộc tín hiệu PWM sang một trạng thái an toàn đã đuợ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ể đuợ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 thuớ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 nhu 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 dó cho phép các don 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ụ nang luợ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 đuợc hoạt động. Kết hợp với các chế độ tiết kiệm nang luợng của Cortex, STM32 chỉ tiêu thụ 2µA khi ở Trang 10 Author: ARMVN Kiến trúc co bản của SMT32 - ARM Cortex M3 www.arm.vn 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 nang luợng trong khi bộ dao động ngoài đang khởi động.

Khả nang nhanh đi vào và thoát khỏi các chế độ tiết kiệm nang luợng làm giảm nhiều sự tiêu thụ nang luợng tổng thể.

1.2.2 Sự an toàn
Ngày nay các ứng dụng hiện đại thuờng phải hoạt động trong môi truờng khắc khe, đòi hỏi tính an toàn cao, cung nhu đòi hỏi sức mạnh xử lý và càng nhiều thiết bị ngoại vi tinh vi. Ðể dáp ứng các yêu cầu khắc khe đó, STM32 cung cấp một số tính nang 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 đuợc làm tuoi trong một khung thời gian xác dị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 (thuờ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ã chuong trình để ngan chặn sao chép trái phép phần mềm. Bộ nhớ Flash của STM32 có thể duợc khóa dể chống truy cập đọc Flash thông qua cổng debug. Khi tính nang bảo vệ đọc đuợc kích hoạt, bộ nhớ Flash cung đuợc bảo vệ chống ghi để ngan chặn mã không tin cậy đuợc chèn vào bảng vector ngắt.

Không có nhận xét nào:

DBS M05479
Quang Cao