You are currently viewing FRDM-KL46Z #1: Nền tảng phát triển hệ thống máy tính nhúng ARM

FRDM-KL46Z #1: Nền tảng phát triển hệ thống máy tính nhúng ARM

      Nền tảng phát triển FRDM-KL46Z của hãng Freescale (nay là NXP) là một bộ công cụ gồm phần mềm và phần cứng để đánh giá và phát triển các ứng dụng nhúng dựa trên dòng vi điều khiển Kinetis L. Phần cứng của nền tảng, bo mạch FRDM-KL46Z, có thiết kế tinh vi với bộ vi điều khiển MKL46Z256VLL4 là bộ vi điều khiển công nghiệp đầu tiên được xây dựng trên lõi 32-bit ARM® Cortex ™ -M0+.

      Bo mạch FRDM-KL46Z được giới thiệu lần đầu tiên ở Việt Nam vào năm 2013, tuy nhiên đến nay thì bo mạch này mới được bán rộng rãi trên thị trường. Bạn đọc có thể tìm mua bo mạch ở đây.

1.  Các đặc tính chính của kit FRMD-Kl46Z

Kít phát triển FRDM-KL46Z và các ngoại vi quan trọng

Hình 1‑1. Kít phát triển FRDM-KL46Z và các ngoại vi quan trọng [12].

     Kit phát triển FRDM-KL46Z là một kit sử dụng lõi vi xử lý ARM® Cortex™-M0+ có công suất tiêu thụ thấp, giá thành rẻ do công ty Freescale (hiện nay là NXP) sản xuất. Kit có kích thước khá nhỏ, cỡ nhỏ hơn một thẻ ATM. Nhưng trên kit tích hợp khá nhiều tính năng hấp dẫn, bao gồm:

  • Chip vi điều khiển (MCU: Microcontroller Unit)) ARM MKL46Z256VLL4 sử dụng lõi vi xử lý ARM® Cortex™-M0+ hiệu năng cao, công suất tiêu thụ thấp, có tần số hoạt động cực đại là 48MHz, tích hợp bộ nhớ flash 256kB và SRAM 32kB, tích hợp bộ điều khiển segment LCD, USB OTG, …
  • Cảm ứng điện dung (Capacitive touch slider) với bộ điều khiển cảm biến được tích hợp sẵn trên chip ARM;
  • Cảm biến gia tốc (Accelerometer) MMA8451Q;
  • Cảm biến từ trường (Magnetometer) MAG3110N;
  • Cảm biến ánh sáng ALS-PT19-315C/L177/TR8;
  • Ngoại vi I/O có thể lập trình: 2 LEDs và 2 nút bấm kiểu Switch;
  • LCD-S401M16KR với 4 chữ số kiểu 8-segment
  • Nguồn nuôi có thể được lựa chọn linh hoạt từ 5V bên ngoài hoặc từ cổng USB máy tính hoặc hoặc từ pin 3V3;
  • Các đầu cắm mở rộng chức năng (Header) tương thích hoàn toàn với chuẩn Arduino ™ R3 do đó dễ dàng sử dụng với các mô-đun mở rộng chức năng của Arduino;
  • Tích hợp sẵn bộ Debug OpenSDA trên kit, có thể sử dụng Open SDA để nạp chương trình, chạy debug và giao tiếp chuẩn RS232 với máy tính;

Bố trí các đầu cắm mở rộng (Expand Header) trên kit FRDM-KL46ZHình 1‑2. Bố trí các đầu cắm mở rộng (Expand Header) trên kit FRDM-KL46Z.

       Một đặc điểm chung của tất cả các bo mạch FRDM của NXP là chúng đã tích hợp sẵn một mạch nạp chương trình được gọi là giao diện OpenSDA trên bo mạch. Do đó người sử dụng có thể dễ dàng lập trình kit với chỉ cần thêm một sợi cáp USB để kết nối kit với máy tính chủ.

      Độc giả muốn có nhiều thông tin hơn về Kit và các ngoại vi trên kit có thể tìm đọc trong tài liệu [12] và tìm mua bo mạch ở đây.

       Việc lập trình ứng dụng Kit là khá dễ vì Kit được hỗ trợ bởi một loạt các phần mềm phát triển ứng dụng của Freescale/NXP (CodeWarrior IDE) và một số đối tác như Keil, IAR, mbed, … Một số ý tưởng ứng dụng có thể thực hiện được trên kit mà không cần phải thêm bất kỳ ngoại vi nào như:

  • Tạo ứng dụng la bàn số sử dụng cảm biến từ trường;
    • Tạo một thiết bị USB sử dụng USB controller (hỗ trợ USB low speed và USB full speed) có sẵn trên chip KL46Z256VLL4 MCU;
    • Thiết kế một máy nghe nhạc sử dụng mô-đun điều chế độ rộng xung PWM hoặc bộ biến đổi DAC có sẵn trên chip;
    • Có thể sử dụng expand Header kết nối với các board mạch khác
    • Có thể chạy một số hệ điều hành thời gian thực FreeRTOS, MQxlite, … để tạo ra một số ứng dụng phức tạp trên kit.

2.         Vi điều khiển Freesacle KL46Z256VLL4

      FRDM-KL46Z là một nền tảng phát triển giá thành thấp cho vi điều khiển MCU Kinetis KL4x (KL43/46) được xây dựng trên bộ xử lý ARM® Cortex ™ -M0+ như trong Hình 1‑3. Bộ vi điều khiển được sử dụng trên bo mạch FRDM-KL46Z là KL462Z256VLL4, một thiết bị dòng Kinetis L có định dạng đóng gói là 100 LQFP. Chip KL46Z256VLL4 có bộ nhớ Flash trên chip 256K byte (256KB) cho lưu mã chương trình, 32KB SRAM trên chip cho lưu dữ liệu và một số lượng lớn các thiết bị ngoại vi trên chip như trong Hình 1‑4.

Họ vi điều khiển Kinetis của Freescale

Hình 1‑3. Họ vi điều khiển Kinetis của Freescale.

     Các tính năng của MCU KL46Z bao gồm:

  • Lõi vi xử lý ARM Cortex-M0+ 32-bit, tần số hoạt động lên đến 48 MHz, Cổng I/O truy cập nhanh trong một chu kỳ đơn
  • Bộ nhớ:
    • Flash dung lượng 256 KB
    • SRAM dung lượng 32 KB
  • Tích hợp hệ thống
    • Bộ điều khiển chế độ và quản lý nguồn
    • Thiết bị đánh thức dòng rò thấp
    • Máy xử lý mức bit cho các hoạt động ngoại vi đọc-sửa đổi-ghi
    • Bộ điều khiển truy cập bộ nhớ trực tiếp (DMA)
    • Bộ định thời Watchdog
  • Tín hiệu xung nhịp
    • Mô-đun tạo tín hiệu xung nhịp với chức năng vòng bám tần số FLL và vòng bám pha PLL để tạo xung nhịp cho hệ thống và CPU
    • Tích hợp sẵn nguôn xung nhịp tham chiếu bên trong tấn số 4 MHz và 32 kHz
    • Hệ thống dao động hỗ trợ tinh thể ngoài hoặc bộ cộng hưởng
    • Bộ tạo dao động RC 1kHz công suất thấp cho khối đồng hồ thời gian thực RTC và bộ định thời Watchdog
  • Thiết bị ngoại vi tương tự
    • Hỗ trợ ADC 16-bit kiểu SAR với chế độ truy xuất bộ nhớ trực tiếp DMA
    • Hỗ trợ DAC 12-bit với chế độ truy xuất bộ nhớ trực tiếp DMA
    • Bộ so sánh tốc độ cao
  • Thiết bị ngoại vi truyền thông
    • Một giao diện âm thanh chuẩn I2S
    • Hai giao diện ngoại vi nối tiếp SPI 8-bit
    • Bộ điều khiển USB vai trò kép với bộ thu phát FS/LS tích hợp
    • Bộ ổn định điện áp USB
    • Hai mô-đun I2C
    • Một mô-đun UART công suất thấp và hai mô-đun UART tiêu chuẩn
  • Bộ định thời:
    • Một mô-đun Timer/PWM (định thời/điều chế độ rộng xung) 6 kênh
    • Hai mô-đun Timer/PWM 2 kênh
    • Bộ định thời ngắt định kỳ 2 kênh (PIT)
    • Đồng hồ thời gian thực (RTC)
    • Bộ định thời công suất thấp (LPT)
    • Bộ định thời hệ thống (System tick timer)
  • Giao diện người-máy (HMI)
    • Bộ điều khiển LCD phân đoạn. Phân đoạn tối đa là 8×47 hoặc 4×51.
    • Bộ điều khiển đầu vào/đầu ra mục đích chung
    • Mô-đun phần cứng giao diện ghép nối đầu vào cảm biến cảm ứng điện dung

Sơ đồ khối chức năng của vi điều khiển KL46Z256VLL4

Hình 1‑4. Sơ đồ khối chức năng của vi điều khiển KL46Z256VLL4.

     Bạn đọc có thể tìm mua bo mạch ở đây.

3.         Giao diện nạp chương trình OpenSDA tích hợp sẵn trên Kit

     Trên bo mạch FRDM có hai bộ vi điều khiển như chỉ ra trong Hình 1‑5. Một vi điều khiển là K20DX128Vxx5 được dành riêng cho thực hiện giao diện OpenSDA (chúng ta sẽ gọi nó là vi điều khiển điều khiển). Vi điều khiển còn lại trên bo mạch FRDM là KL46Z256VLL4 thuộc dòng Kinetis L được sử dụng để chạy các ứng dụng người dùng (tức là các chương trình được xây dựng và biên dịch của người sử dụng) – chúng ta sẽ gọi nó là vi điều khiển đích. Đầu nối USB OpenSDA được kết nối với vi điều khiển điều khiển.

Giao diện OpenSDA

Hình 1‑5. Giao diện OpenSDA.

      Khi được cấp nguồn và ghép nối với máy tính, bo mạch FRDM hoạt động ở chế độ “Thiết bị lưu trữ khối MSD” (Mass Storage Device) cho phép bo mạch (hay chính xác hơn là vi điều khiển điều khiển) được nhận diện như một ổ nhớ USB trên máy tính, do đó người dùng có thể kéo và thả các chương trình đã được biên dịch lên đó. Khi thao tác này xảy ra, bộ vi điều khiển điều khiển tự động reset bộ vi điều khiển đích (tức là bộ vi điều khiển Kinetis KL46Z256VLL4) và lập trình lại nó rồi cho phép vi điều khiển đích hoạt động.

Kit FRDM-KL46Z được nhận diện như một ổ USB trên máy tính

Hình 1‑6. Kit FRDM-KL46Z được nhận diện như một ổ USB trên máy tính.

        Phần bộ nhớ chương trình của vi điều khiển điều khiển được phân thành hai phần: một phần chứa chương trình khởi động giao diện OpenSDA gọi là “MSD Bootloader” và một phần chứa chương trình thực hiện chức năng giao diện OpenSDA gọi là “OpenSDA Application” như chỉ ra trong Hình 1‑5. Cả hai vùng bộ nhớ này đều có thể được lập trình lại bởi người sử dụng. Để thiết lập giao diện OpenSDA tới một chức năng mong muốn, người sử dụng cần nạp một chương trình ứng dụng mới tới vùng bộ nhớ OpenSDA Application. Chẳng hạn, khi người sử dụng muốn gỡ lỗi các ứng dụng của mình bằng giao diện OpenSDA thì cần phải lập trình lại vi điều khiển điều khiển để nó không chạy chức năng MSD mà chạy chức năng gỡ lỗi. Để thực hiện lập trình lại chức năng của vi điều khiển điều khiển, trước tiên cần bấm và giữ nút bấm Reset (cạnh các đầu nối USB) và cắm cáp USB vào cổng USB có tên OpenSDA để cấp nguồn cho bo mạch. Lúc này trên máy tính bo mạch vẫn sẽ xuất hiện dưới dạng một ổ nhớ USB, nhưng có tiêu đề là BOOTLOADER. Điều này có nghĩa là nếu bạn kéo và thả bất kỳ chương trình nào vào ổ USB này, nó sẽ được lập trình vào vi điều khiển điều khiển chứ không phải vi điều khiển đích (Tham khảo tài liệu [12] để biết thêm chi tiết).

     Trong phiên bản ứng dụng OpenSDA mới nhất cho vi điều khiển điều khiển thì hai chức năng lập trình MSD và gỡ lỗi Debug đã tích hợp cùng nhau do đó thao tác lập trình lại vi điều khiển điều khiển để chuyển đổi giữa hai chức năng là không cần thiết. Do đó, vi điều khiển điều khiển (tức là giao diện gỡ lỗi OpenSDA) có ba chức năng hoạt động:

  • Giao diện lập trình nhanh thiết bị lưu trữ khối MSD (chế độ ngầm định) – với giao diện này người dùng có thể nạp các ứng dụng vào vi điều khiển mà không cần cài đặt thêm bất kỳ công cụ phát triển nào. Điều này có nghĩa là để nạp chương trình tới vi điều khiển đích KL46Z256M, người dùng chỉ cần kết nối bo mạch với máy tính và sau đó copy và dán (hoặc kéo và thả) tệp chương trình đã được biên dịch vào ổ nhớ FRDM_KL46Z. Lưu ý là tệp chương trình phải là tệp có phần mở rộng là .bin (theo định dạng của Intel) hoặc .srec (theo định dạng của Motorola).
  • Giao diện gỡ lỗi P&E cung cấp giao diện gỡ lỗi kiểu điều khiển-chạy (tương thích với chức năng gỡ lỗi của các công cụ phát triển như Codewarrior Development Suite hay KEIL MDK-ARM). Điều này có nghĩa là máy tính chủ cần phải cài đặt một chương trình gỡ lỗi debugger chẳng hạn Codewarrior Development Suite hay KEIL MDK-ARM.
  • Một cổng nối tiếp ảo cho phép cổng nối tiếp UART của vi điều khiển đích có thể ghép nối với máy tính qua giao diện USB.

      Nhắc lại rằng khi bo mạch được ghép nối với máy tính ở chế độ Giao diện lập trình nhanh thiết bị lưu trữ khối MSD thì bo mạch sẽ xuất hiện trên máy tính như một ổ USB có tên FRDM_KL46Z. Trên ổ USB có một số tệp dữ liệu. Một trong số này là tệp SDA_INFO.HTM cho phép kết nối với một trang website chứa các thông tin nhận dạng bo mạch và các thông tin liên quan đến firmware đang được cài trên bo mạch. Thông qua website này người dùng cũng có thể tải xuống Firmware OpenSDA mới nhất.

Tệp thông tin có sẵn trên bo mạch FRDM-KL46Z

Hình 1‑7. Các tệp có sẵn trên Kit.

Video Demo Kit:

TÀI LIỆU THAM KHẢO

  1. Marilyn Wolf. Computers as components: Principles of Embedded Computing Systems Design. Morgan Kaufmann publisher, ISBN: 978-0-12-388436-7, 2012
  2. The Design Warrior’s Guide to FPGA, ELSEVIER 2004
  3. Shuvra S. Bhattacharyya, Ed F. Deprettere, Rainer Leupers, Jarmo Takala, Handbook of Signal Processing Systems, Springer Press LLC, 2010
  4. Ron Sass, Andrew G. Schmidt: Embedded Systems Design with Platform FPGAs, Elsevier Inc, 2010.
  5. http://www.xilinx.com/training/free-video-courses.htm#ASIC
  6. Douglas L. Perry: VHDL : Programming By Example, Fourth Edition, McGrow-Hill 2002
  7. Stephen Brown, Zvonko Vranesic, Fundamentals of Digital Logic with VHDL Design, 3rd Edition, McGrow-Hill 2009.
  8. http://opencores.org/projects
  9. Overview of FPGA
  10. James A. Langbridge, PROFESSIONAL Embedded ARM Development,John Wiley & Sons, Inc., ISBN: 978-1-118-78894-3,
  11. Sarah Harris, David Harris-Digital Design and Computer Architecture. ARM Edition-Morgan Kaufmann (2015)
  12. Quick Start Guide for FRDM-KL46Z (Quick Start Guide for Freedom KL46Z Rev1.pdf)
  13. FRDM-KL46Z User’s Manual (FRDM-KL46Z_UM.pdf)
  14. KL46 Sub-Family Reference Manual (Docs/KL46P121M48SF4RM.pdf)
  15. FRDM-KL46Z Schematic (FRDM-KL46Z_SCH.pdf)
  16. FRDM-KL46Z Example
  17. FRDM-KL46 OpenSDA applications

Nguyễn Kiêm Hùng

Hung K. Nguyen studied “Electronic Engineering” in both his bachelor’s and master’s degrees at the Vietnam National University, Hanoi, Vietnam. He received the bachelor’s degree in 2003. After receiving his bachelor’s degree, He worked as an internship in the Research Center of Electronics and Telecommunications. In 2006, He received the master’s degree in electronic engineering from VNU University of Engineering and Technology (VNU-UET). Before pursuing his Ph.D’s degree, He worked as a researcher at the Laboratory for Smart Integrated Systems in VNU University of Engineering and Technology for two years. In 2008, He went to Southeast University, Nanjing, China to get his Ph.D degree. He received the Ph.D. degree in Microelectronics and Solid State Electronics from Southeast University in 2013. After got his Ph.D’s degree, He returned to VNU University of Engineering and Technology to continue his research in VLSI design. He works currently as an assistant professor and senior researcher at VNU Key Laboratory for Smart Integrated Systems. His research interests mainly include multimedia processing, reconfigurable computing, and SoC designs.

This Post Has 5 Comments

  1. Xuân Thanh Phạm

    thầy có file pdf của cuốn Marilyn Wolf. Computers as components: Principles of Embedded Computing Systems Design. Morgan Kaufmann publisher ko ạ cho e xin với. e cảm ơn

Trả lời