Title Image

Blog Logo

Thực hành với Makefile (2)

🌱 Thực hành với Makefile (2)

    Ở bài viết trước mình đã cùng các bạn thực hành viết một Makefile cho một project cơ bản.

    Vậy ở bài này mình sẽ cần bổ sung thêm một số kiến thức nếu muốn viết / đọc hiểu Makefile của các Project về Vi điều khiển. 

    👉 Khác nhau giữa một Project C và Project C nhúng - Vi điều khiển

  • Compiler : project C thông thường dùng Compiler là GCC, trong khi với C cho vi điều khiển, thì cần Cross Compiler. Chẳng hạn, với Vi điều khiển STM32 thì mình đang dùng GNU Toolchain, chính là một GCC riêng cho dòng chip ARM. 
  • Linker : Đối với một chương trình C trên máy tính, mình không quan tâm đến Linker, vì việc allocate máy tính đã làm, nhưng với Vi điều khiển, vấn đề này rất quan trọng. Cần phải viết một file Linker (.ld) cho quá trình linking. 
  • Tiếp theo một số đặc trưng riêng của project C nhúng: Nạp code, Debug, Hardware Test, các file output cũng khác (.elf, .hex, .bin) thay vì .exe.

    👉 Compiler và Linker trong Makefile

    ➤ Bạn cần phải trỏ đến file Linker cũng như folder của Cross Compiler.

Makefile

    
 Tiếp theo là Compiler và Linker Flags:

Makefile

     Việc Build trong Vi điều khiển sẽ thêm vào một số Compiler Option và Linker Option
    Ví dụ với Compiler Option chúng ta có rất nhiều: 
  • -mcpu=cortex-m4 : là option chọn Core của VĐK.
  • -mthumb : option chọn tập lệnh là Thumb.
  • -o0 : option chọn mức độ tối ưu hóa của Compiler.
  • ... có rất nhiều option khác nữa có thể tham khảo trên trang https://gcc.gnu.org/
    ➤ Đối với Linker thì cần trỏ đến Linker file, có một option là -Map để có thể log lại memory map sau khi nạp code.

Makefile

   👉 Sử dụng Compiler/Linker Options & Build ra file .elf 

    Các Compiler option và Linker option sử trong lệnh build giống như các lệnh GCC. File elf là một file quan trọng nạp xuống VĐK để hỗ trợ debug.

Makefile

    Cách học tập tốt nhất với Makefile là các bạn hãy thử viết Makefile cho một project đơn giản. 

>>> Đăng ký khóa học Makefile <<<

Chúc các bạn học tập tốt 😊

Đăng nhận xét

0 Nhận xét