Hướng dẫn sử dụng dự án DaisyExamples

1. Cấu trúc thư mục của dự án

Dự án DaisyExamples có cấu trúc thư mục như sau:

DaisyExamples/
├── DaisySP/
├── libDaisy/
├── pod/
├── patch/
├── patch_sm/
├── patch_fx/
├── seed/
├── seed_modular/
├── petal/
├── quad/
├── examples/
├── README.md
└── ...
  • DaisySP/: Chứa mã nguồn và tài nguyên của thư viện xử lý âm thanh DaisySP.
  • libDaisy/: Chứa mã nguồn lõi cho nền tảng phần cứng Daisy.
  • pod/: Ví dụ dành riêng cho thiết bị Daisy Pod.
  • patch/: Ví dụ cho thiết bị Daisy Patch.
  • patch_sm/: Ví dụ cho phiên bản Daisy Patch SM.
  • patch_fx/: Ví dụ cho thiết bị Daisy Patch FX.
  • seed/: Ví dụ chạy trên bo mạch Daisy Seed.
  • seed_modular/: Ví dụ dành cho Daisy Seed Modular.
  • petal/: Ví dụ cho thiết bị Daisy Petal.
  • quad/: Ví dụ cho thiết bị Daisy Quad.
  • examples/: Các ví dụ chung có thể áp dụng cho nhiều nền tảng.
  • README.md: Tài liệu hướng dẫn tổng quan và cách sử dụng dự án.

2. Tập tin khởi chạy điển hình

Mỗi ví dụ trong dự án thường có một tập tin chính (entry point), ví dụ như pod/SynthVoice.cpp hoặc seed/Blink.cpp. Tập tin này khởi tạo phần cứng, đăng ký hàm xử lý âm thanh và duy trì vòng lặp chính.

Ví dụ minh họa với pod/SynthVoice.cpp:

#include "daisysp.h"
#include "daisy_pod.h"

using namespace daisysp;
using namespace daisy;

DaisyPod hardware;

void ProcessAudio(float **inputs, float **outputs, size_t frame_count) {
    // Xử lý tín hiệu âm thanh tại đây
}

int main() {
    hardware.Configure();
    hardware.StartAdc();
    hardware.StartAudio(ProcessAudio);
    while (true) {
        // Vòng lặp nền (nếu cần)
    }
}
  • daisysp.h: Thư viện DSP (Digital Signal Processing) của Daisy.
  • daisy_pod.h: Định nghĩa phần cứng cụ thể cho Daisy Pod.
  • ProcessAudio: Hàm callback được gọi liên tục để xử lý dữ liệu âm thanh theo từng khung (frame).
  • main(): Khởi tạo hệ thống, kích hoạt ADC và bắt đầu luồng xử lý âm thanh.

3. Tập tin cấu hình biên dịch

Dự án sử dụng Makefile để quản lý quá trình biên dịch. Mỗi thư mục thiết bị (như pod/) thường đi kèm một Makefile riêng.

Ví dụ nội dung pod/Makefile:

TOOLCHAIN = arm-none-eabi-
CC = $(TOOLCHAIN)gcc
CXX = $(TOOLCHAIN)g++
AR = $(TOOLCHAIN)ar

COMMON_FLAGS = -Wall -Wextra -Werror -O2 -g \
               -mcpu=cortex-m7 -mthumb \
               -mfpu=fpv5-d16 -mfloat-abi=hard

CFLAGS = $(COMMON_FLAGS)
CXXFLAGS = $(COMMON_FLAGS)

LDFLAGS = -T linker.ld -nostdlib -Wl,--gc-sections

SRC_FILES = SynthVoice.cpp
OBJ_FILES = $(SRC_FILES:.cpp=.o)
OUTPUT = SynthVoice.elf

$(OUTPUT): $(OBJ_FILES)
	$(CXX) $(LDFLAGS) -o $@ $^

%.o: %.cpp
	$(CXX) $(CXXFLAGS) -c -o $@ $<

clean:
	rm -f $(OBJ_FILES) $(OUTPUT)
  • TOOLCHAIN: Chuỗi công cụ biên dịch nhắm đến vi điều khiển ARM Cortex-M.
  • COMMON_FLAGS: Cờ biên dịch chung cho cả C và C++, bao gồm tối ưu hóa và cấu hình CPU.
  • LDFLAGS: Tùy chọn liên kết, sử dụng script linker.ld để định nghĩa vùng nhớ.
  • SRC_FILES: Danh sách tập tin nguồn cần biên dịch.
  • OUTPUT: Tệp nhị phân đầu ra (định dạng ELF).
  • clean: Mục tiêu xóa các tệp trung gian và đầu ra.

Sau khi cấu hình đúng, người dùng có thể chạy make để biên dịch và tạo firmware cho thiết bị mục tiêu.

Thẻ: Daisy embedded-audio STM32 dsp Makefile

Đăng vào ngày 11 tháng 7 lúc 11:52