Comments 13
Я смотрел на серию TLSR9 - но у них написано "подписывайте NDA", так что нафиг. В 21 веке даташиты на микроконтроллеры под NDA - это дикость, участвовать в которой я не хочу.
Даже у WCH в этом плане получше. Половина даташитов на китайском - но они хотя бы есть.
Поддерживаю, дико неудобно. Как кстати WCH? Давно к ним приглядываюсь.
Я у них, если не считать классических интерфейсных чипов, не так-то много чипов использовал.
Линейка CH55x прикольная, но не без недостатков. Из преимуществ - дешёвые чипы, USB на борту, USB загрузчик из коробки, и не требует почти никакой обвязки. Приятно. Из недостатков - все типичные для 8051. Древняя архитектура, маловато периферии, нет нормальной отладки. Для простого USB-устройства чип подошёл вполне.
Сейчас вот смотрел в сторону CH569 - это уже из их современных RISC-V линеек. Хочу попробовать, какой там на вкус USB 3.0 и сколько гигабит эта странная штука сможет реально стримить в комп.
А как вообще bluetooth стэк в целом? Приемлимый? Или баг на баге?
Тоже хотел попробовать серию TLSR9 в качестве bluetooth аудио проигрывателя.
На вид - вполне норм, но нет уверенности в сколь нибудь активной поддержке со стороны вендора. Хочу погонять его на хоббийных проектах, потому что в коммерческое устройство такое ставить пока боязно
Ну да, так всегда с китайскими вендорами.
А еще интересно, у них стэк прям честный bluetooth 5.2, или как часто это бывает, железо 5.1-5.2, а софт только 4.2 поддерживет (привет bluez'у)?
Ну, 2MBit поддерживает, значит уже 5.0)
BlueZ это отдельная история. Однажды писал себе вспомогательную тулу и столкнулся с тем, что bluez не распознает пакеты адвертайзинга и SRP как отдельные пакеты, если тип данных в адвертайзинге - manufacturer specific (0xFFFF). Вместо этого он на серьезных щщах утверждал, что получил только scan response.
Зачем Вы тут Сmake стали применять? Для такого простого проекта проще на gnu make скрипт сборки составить.
А где у вас опции компоновщика про выбор libc?
Я бы порекомендовал добавить больше опций компилятора
#COMPILE_OPT += -fpack-struct
COMPILE_OPT += -fshort-enums
COMPILE_OPT += -flto
COMPILE_OPT += -fomit-frame-pointer
COMPILE_OPT += -Wno-nonnull-compare
COMPILE_OPT += -Wall
COMPILE_OPT += -fdata-sections
COMPILE_OPT += -ffunction-sections
COMPILE_OPT += -Werror=shadow
COMPILE_OPT += -Werror=address
COMPILE_OPT += -Werror=switch
COMPILE_OPT += -Werror=array-bounds=1
COMPILE_OPT += -Werror=comment
COMPILE_OPT += -Werror=div-by-zero
COMPILE_OPT += -Werror=duplicated-cond
COMPILE_OPT += -Werror=shift-negative-value
COMPILE_OPT += -Werror=duplicate-decl-specifier
COMPILE_OPT += -Werror=enum-compare
COMPILE_OPT += -Werror=uninitialized
COMPILE_OPT += -Werror=empty-body
COMPILE_OPT += -Werror=unused-but-set-parameter
COMPILE_OPT += -Werror=unused-but-set-variable
COMPILE_OPT += -Werror=float-equal
COMPILE_OPT += -Werror=logical-op
COMPILE_OPT += -Werror=implicit-int
COMPILE_OPT += -Werror=implicit-function-declaration
COMPILE_OPT += -Werror=incompatible-pointer-types
COMPILE_OPT += -Werror=int-conversion
COMPILE_OPT += -Werror=old-style-declaration
COMPILE_OPT += -Werror=maybe-uninitialized
COMPILE_OPT += -Werror=redundant-decls
COMPILE_OPT += -Werror=sizeof-pointer-div
COMPILE_OPT += -Werror=misleading-indentation
COMPILE_OPT += -Werror=missing-declarations
COMPILE_OPT += -Werror=missing-parameter-type
COMPILE_OPT += -Werror=overflow
COMPILE_OPT += -Werror=parentheses
COMPILE_OPT += -Werror=address-of-packed-member
COMPILE_OPT += -Werror=pointer-sign
COMPILE_OPT += -Werror=return-type
COMPILE_OPT += -Werror=shift-count-overflow
COMPILE_OPT += -Werror=strict-prototypes
COMPILE_OPT += -Werror=unused-but-set-variable
COMPILE_OPT += -Werror=unused-function
COMPILE_OPT += -Werror=unused-variable
COMPILE_OPT += -Werror=type-limits
COMPILE_OPT += -Werror=override-init
COMPILE_OPT += -Werror=duplicate-decl-specifier
COMPILE_OPT += -Werror=int-conversion
COMPILE_OPT += -Wno-stringop-truncation
COMPILE_OPT += -Wno-format-truncation
COMPILE_OPT += -Wno-restrict
COMPILE_OPT += -Wno-format
COMPILE_OPT += -Wno-cpp #TODO temp
COMPILE_OPT += -Wno-discarded-qualifiers
COMPILE_OPT += -Wmissing-prototypes
# cause too many errors
#COMPILE_OPT += -Werror=traditional
# cause too many errors
COMPILE_OPT += -Werror=missing-prototypes
#Perform dead code elimination
COMPILE_OPT += -fdce
#Perform dead store elimination
COMPILE_OPT += -fdse
COMPILE_OPT += -fmessage-length=0
COMPILE_OPT += -fsigned-char
COMPILE_OPT += -fno-common
COMPILE_OPT += -fstack-usage
COMPILE_OPT += -fzero-initialized-in-bss
COMPILE_OPT += -finline-small-functions
COMPILE_OPT += -Wmissing-field-initializers
COMPILE_OPT += -Werror=missing-field-initializers
COMPILE_OPT += -Werror=unused-but-set-variable
COMPILE_OPT += -Werror=implicit-function-declaration
COMPILE_OPT += -Werror=unused-variable
ifeq ($(DEBUG), Y)
COMPILE_OPT += -O0
else
COMPILE_OPT += -Os
endif
ifeq ($(DEBUG), Y)
COMPILE_OPT += -g3 -ggdb -gdwarf-2
endif
#COMPILE_OPT += -Wformat-overflow=1
COMPILE_OPT += $(CSTANDARD)
COMPILE_OPT += $(MICROPROCESSOR)
COMPILE_OPT += $(INCDIR)
# Generate dependency information
COMPILE_OPT += -MMD -MP -MF"$(@:%.o=%.d)"
CFLAGS += $(OPT)
CFLAGS += $(COMPILE_OPT)
Опции компилятора каждый разработчик добавляет те, которые считает нужными для решения задач конкретного проекта.
Вы готовы аргументировать необходимость каждой опции в этой стене текста безотносительно целевого проекта?
Вы готовы поручиться, что они нанесут больше пользы, чем вреда, не имея доступа к целевому устройству?
Настройка VSCode для отладки китайского RISC-V SoC