2 điểm bởi GN⁺ 2024-06-12 | 1 bình luận | Chia sẻ qua WhatsApp
  • RP2040 của Raspberry Pi là một vi điều khiển dùng để đưa vào thiết bị điện tử tiêu dùng; giá rẻ và dễ mua số lượng lớn từ kho, giúp giảm gánh nặng lựa chọn ở giai đoạn đầu phát triển
  • Thay vì nhiều biến thể, Raspberry Pi tập trung vào một linh kiện duy nhất, giảm phần tối ưu hóa thông số chi tiết nhưng tạo hiệu ứng gom câu hỏi, ví dụ, thư viện và công cụ về cùng một nơi
  • Mức giá khoảng 70 xu có thể bất lợi cho tối ưu chi phí linh kiện trong sản xuất hàng loạt, nhưng với các dự án như Late Mate, việc giảm chi phí phát triển có thể mang lại lợi ích lớn hơn
  • Cấu hình gồm hai lõi, 30 GPIO, USB, UART/SPI/I2C/PWM, nhiều RAM nội bộ hơn và không có flash tích hợp là một thỏa hiệp đủ dùng và linh hoạt
  • PIO, bootloader chỉ đọc và thiết kế tránh bảo vệ firmware quá mức khiến RP2040 trông như một linh kiện thực dụng được điều chỉnh cho các mục đích cụ thể

Hệ sinh thái được tạo ra từ chiến lược một linh kiện

  • RP2040 là vi điều khiển do Raspberry Pi tạo ra; khác với các bo mạch Raspberry Pi được biết đến rộng rãi hơn, nó dùng để nhúng vào thiết bị điện tử tiêu dùng
  • Trên Mouser có hàng tồn kho sẵn sàng giao ngay ở quy mô hàng chục nghìn chiếc, với giá khoảng 70 xu
  • Các nhà sản xuất vi điều khiển thông thường cung cấp rất nhiều sản phẩm tương tự nhau nhưng khác nhau đôi chút
    • Vì sản phẩm vật lý có chi phí sản xuất, nên trong sản xuất hàng loạt, việc tiết kiệm 1 xu cho mỗi linh kiện cũng ảnh hưởng đến lợi nhuận
    • Do đó xuất hiện động lực chọn đúng mức thông số: chọn vi điều khiển có hiệu năng vừa khớp với sản phẩm
  • Với RP2040, Raspberry Pi về cơ bản tập trung vào một linh kiện
    • Số lựa chọn và dư địa tinh chỉnh thông số chi tiết giảm đi
    • Đổi lại, các câu hỏi trên StackExchange, bài blog, kinh nghiệm, issue trên GitHub, thư viện và công cụ đều tích lũy quanh cùng một linh kiện
  • Với các dự án như Late Mate, có thể tiết kiệm chi phí phát triển nhiều hơn chi phí linh kiện, nên chiến lược một linh kiện có thể là một thỏa hiệp tốt
  • Hỗ trợ Rust rất tốt, chẳng hạn như ví dụ Embassy, và cũng có các ví dụ firmware cho bàn phím, drone và robot bóng đá

Phần cứng đủ dùng và sự linh hoạt của PIO

  • Thiết kế của RP2040 gần với một thỏa hiệp đa dụng chọn cấu hình đủ dùng và linh hoạt hơn là “thông số cao nhất”
    • Cung cấp hai lõi khá tốt, và lõi thứ hai có thể dùng khi cần
    • GPIO ở mức trung bình với 30 chân
    • Không có flash onboard, và dành ngân sách nhiều hơn cho RAM nội bộ, thứ khó kết nối từ bên ngoài hơn
    • ADC ở mức ổn, đồng thời cung cấp các ngoại vi phổ biến như USB và UART/SPI/I2C/PWM
  • Một tính năng ít truyền thống hơn là PIO
    • PIO là viết tắt của Programmable Input/Output, giống như hai bộ xử lý phụ nhỏ thực hiện IO tốc độ cao với thời điểm chính xác mà không dùng thời gian CPU
    • Được dùng để triển khai các giao thức truyền thông như DShot ESC
    • Pico-PIO-USB triển khai một USB stack hoàn chỉnh trên PIO, cung cấp cho RP2040 bộ điều khiển USB thứ hai
    • Khi dùng cùng DMA, driver màn hình có thể offload hoàn toàn giao tiếp với màn hình và cảm ứng khỏi CPU

Bootloader và thỏa hiệp bảo mật để tránh biến thiết bị thành “cục gạch”

  • RP2040 có cấu trúc không thể bị biến thành cục gạch
    • Bao gồm bootloader chỉ đọc
    • Có thể cập nhật bằng cách mount như thiết bị lưu trữ USB dung lượng lớn rồi sao chép firmware vào “thiết bị lưu trữ” đó
    • Giao thức USB đơn giản riêng của nó được dùng trong picotool
  • Dựa trên đánh giá rằng việc bảo vệ firmware trước kẻ tấn công chuyên tâm là gần như bất khả thi, và bản thân nỗ lực đó phải trả giá bằng độ phức tạp cũng như trải nghiệm của nhà phát triển, nó không thực hiện màn trình diễn bảo mật quá mức
  • Những lựa chọn này có thể được xem là kết quả của việc RP2040 cân bằng một cách thực dụng, xét đến ngách mà một linh kiện silicon nhỏ bé đang chiếm giữ

1 bình luận

 
GN⁺ 2024-06-12
Ý kiến trên Hacker News
  • Ngôi sao thực sự của RP2040 là PIO, mang lại những khả năng mà các chip cạnh tranh như ESP32 khó lòng sánh kịp
    Vì vậy nó đang được dùng ở nhiều nơi trong mảng hack console. Tuy vậy, với các ứng dụng dùng pin thì sẽ tốt hơn nếu ở V2 mức tiêu thụ điện của chế độ ngủ sâu được giảm thêm

    • Những thứ như thời lượng pin rất có thể sẽ cải thiện khi tích lũy thêm kinh nghiệm. Tôi đã nói chuyện với một người làm bên silicon về RP2040, và họ nói đây là đặc điểm khá điển hình của một thiết kế thế hệ đầu
      Logic số có thể kiểm chứng trên FPGA nhìn chung vẫn ổn, nhưng các thành phần analog khó tinh chỉnh hơn nhiều, nên thường thể hiện ở chỗ tiêu thụ điện kém, ADC không tốt, không có DAC nội bộ hay op-amp. Chip không dây của Pico W cũng gần với nhóm này, nên không được tích hợp hoàn toàn như ESP32 mà là một linh kiện rời có sẵn trên thị trường
    • Phần khó chịu nhất của PIO là chỉ có 2 cái. Mỗi cái có 4 tiểu đơn vị, nhưng không gian lệnh chỉ có 32 lệnh và cũng không có đầu vào clock ngoài
      Nó rất tuyệt để hiện thực các thiết bị ngoại vi cực kỳ cơ bản, nhưng tôi đã nhiều lần bắt đầu làm thứ gì đó phức tạp hơn một chút rồi nhận ra nó quá chậm và không đủ chỗ. Nếu được nâng cấp thêm chút nữa thì có lẽ nó có thể thay thế khá dễ nhiều nhu cầu FPGA nhỏ nhặt
    • Với tôi, độ ổn định nguồn cung mới là yếu tố then chốt. Một IC, vòng đời sản phẩm dài, lúc nào cũng có hàng. Sau khi trải qua mớ hỗn loạn năm 2021/2022, tôi không định hy sinh chuyện này lần nữa chỉ để tiết kiệm vài cent
    • Trong robotics cũng vậy. 8 PIO là đủ để đọc và ghi 4 encoder cầu phương gần như không tốn chi phí ngắt, nhờ đó có thể tạo bộ điều khiển vòng kín hiệu năng tốt ngay cả trong môi trường chậm như Micropython
    • So sánh ESP32 với RP2040 gần như là so táo với cam
      Nếu cần nhiều I/O thì thường người ta không nhìn sang ESP32. Điểm mạnh của ESP32 là rẻ và có WiFi tích hợp. Cũng có nhiều vi điều khiển khác lợi thế hơn khi so với RP2040, nhưng phần lớn không dành cho thị trường hobby
  • Trong vài năm qua, chúng tôi đã dùng RP2040 cho huy hiệu điện tử[1] của hội nghị bảo mật RVASec, và trải nghiệm viết phần mềm khá tốt
    Kho GitHub của huy hiệu năm nay ở đây. Có một trình mô phỏng huy hiệu chỉ bằng phần mềm để bạn nghịch thử phần nào ngay cả khi không có phần cứng, nhưng các tính năng nhiều người chơi phụ thuộc vào giao tiếp hồng ngoại giữa các huy hiệu có thể sẽ kém vui hơn: https://github.com/HackRVA/badge2024

    [1] Video huy hiệu 2023: https://www.youtube.com/watch?v=KWZriUMNpLc
    [2] https://rvasec.com/

    • Tôi thắc mắc vì sao lại làm custom và không dùng sản phẩm của NXP
  • Câu nói “cùng một vi điều khiển và chỉ có hai revision sửa lỗi” là không chính xác
    Thực ra đó là hoàn toàn cùng một vi điều khiển, chỉ có hai tùy chọn đóng gói. Một loại là cuộn 7 inch 500 chiếc và loại kia là cuộn 13 inch 3400 chiếc. Chỉ cần xem mục “Ordering code” trong datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.p...

    • Dù vậy, đúng là đã có vài revision sửa lỗi. RP2040-B0 là bản gốc, -B1 có một số cải tiến ở mã ROM, còn -B2 có thêm thay đổi ROM và cũng sửa các lỗi silicon ở phiên bản đầu
      Nếu dùng SDK chính thức thì hầu như không cần bận tâm mình đang ở phiên bản nào. Thư viện chuẩn cấp cao sẽ phát hiện revision phần cứng lúc chạy và bật hoặc tắt các cách обход cần thiết
  • RP2040 gần như đã một mình hồi sinh lại một thị trường ngách khá hẹp là controller tùy biến
    Nhờ firmware gamepad mã nguồn mở gp2040[1], mọi người có thể mua fight stick và controller leverless chất lượng ổn với giá rẻ hơn rất nhiều so với sản phẩm của các hãng như Victrix hay Razer. Vì là mã nguồn mở nên trong cộng đồng đam mê controller, người ta cũng đang tạo ra đủ loại dự án và PCB RP2040 phù hợp với các ý tưởng controller kỳ lạ khác nhau

    [1] https://gp2040-ce.info

    • Tôi tò mò không biết bao nhiêu phần trong đó thực sự có thể quy trực tiếp cho RP2040. Các dự án như QMK0 từ lâu đã dùng một codebase về mặt kỹ thuật khá tương đồng cho bàn phím DIY
      Nhìn qua thì GP2040 không có gì rõ ràng là những vi điều khiển hiện đại khác không làm được. Rõ ràng RP2040 là chất xúc tác dẫn đến việc GP2040 được chấp nhận rộng rãi, nhưng có lẽ điều tương tự cũng có thể xảy ra với Pro Micro

    • Cũng không nên bỏ qua PhobGCC. Tôi là trưởng nhóm phát triển, và còn có các nhánh kế tiếp ít chuyên cho GameCube hơn như ProGCC V3, GC Ultimate, Phizard

    • Cách nói “một mình” có vẻ đã đánh giá thấp những thứ có trước đó, như các bo mạch Brook, chẳng hạn Zero-Pi[1]. Xét về mặt lịch sử thì có lẽ không hoàn toàn đúng

      [1] https://www.brookaccessory.com/detail/53169470/

  • Nếu bạn thích điện tử như một sở thích nhưng không muốn tự làm hay thiết kế bo mạch dán bề mặt, thì có rất nhiều bo mạch RP2040 rẻ và dễ tiếp cận
    Tôi đã dùng Raspberry Pi Pico($5), được gắn trên một bo mạch ổn với nhiều I/O. Bỏ thêm một ít tiền thì cũng có bản W có WiFi

    Nếu chấp nhận ít I/O hơn một chút thì có thể đặt RP-2040 Zero. Tôi đã mua 6 cái trên AliExpress với giá khoảng $12. Nó chỉ có 23 chân I/O, nhưng có nút reset, USB-C và rất nhỏ (1.5cm x 2.5cm)

Điểm hay của những bo mạch này là các công cụ phát triển tiêu chuẩn của Raspberry Pi, MicroPython và C++ đều chạy tốt nguyên trạng, và có thể nạp firmware thuận tiện qua USB

  • Cũng muốn đề xuất pico ice. Phần lớn mức giá $30 là do có kèm UP5K, nhưng với các dự án nhúng cần hoạt động ở mức dưới micro giây thì đây là một lựa chọn tương đối rẻ, lại dùng được bộ công cụ mã nguồn mở

  • Rất khuyến nghị tìm thử các bo phát triển thay thế dựa trên RP2040 ở nhiều nơi. Pi Pico chính thức thật ra khá thất vọng, và gần như mọi bo thay thế đều tốt hơn ở khía cạnh nào đó
    Không có reset, form factor lớn, chỉ có flash 2Mbit, lại còn micro USB; đến năm 2024 thì như vậy hơi chán. Gần như ưu điểm duy nhất là dễ mua ở khắp nơi

  • Các bo RP2040 nhỏ rất ổn. Tôi đã làm vài dự án nhỏ dựa trên adafruit QT Py
    Sẽ hay hơn nếu có bản không dây. Dùng ESP32 QT thì có, nhưng với RP2040 thì theo tôi thấy là không có

  • Nếu không bị hạn chế không gian cực kỳ nghiêm ngặt thì tôi không thấy rõ ưu điểm của 2040 Zero. Tính năng ít hơn mà giá lại cao hơn. Pico vốn cũng đã khá nhỏ rồi
    Dù vậy, Pico có khả năng tương thích chân thực sự tốt. Ở phía ESP, nhìn thì có vẻ nhiều chân I/O, nhưng do các chân nối với flash nội bộ hay bootloader v.v. nên may ra cuối cùng chỉ vừa đủ dùng. Tôi cũng thắc mắc sao họ lại đưa những chân đó ra ngoài. ESP32-CAM có 10 chân dữ liệu, nhưng thực tế thường chỉ dùng được 4 chân

  • Lý do tôi chuyển từ ESP32 sang RP2040 là vì thiết bị ổn định hơn và được tài liệu hóa tốt hơn
    Mối lo duy nhất hiện tại với RP2040 là có nhiều mẫu ESP32 có SPIRAM, nhưng bo RP2040 có SPIRAM thì không dễ tìm. Thành thật mà nói, môi trường phát triển C của RP2040 tốt đến mức có thể tận dụng bộ nhớ rất hiệu quả, nhưng nếu làm dự án MicroPython lớn thì SPIRAM thực sự là một tài sản lớn. Ngoài điểm đó ra thì mọi mặt của RP2040 đều rất tuyệt

    • Bài viết cuối cùng đã cắt phần về hỗ trợ Rust, nhưng nếu bạn cởi mở với Rust thì Rust bất đồng bộ trong nhúng thực sự rất dễ dùng
      Dario Nieuwenhuis, một trong những nhân vật chủ chốt của Embassy, đã có một bài trình bày tổng quan rất hay tại RustNL: https://www.youtube.com/watch?v=H7NtzyP9q8E
    • Không đồng ý mạnh. Tôi đã làm việc với hệ sinh thái Espressif trong vài tháng, và đây là nền tảng vi điều khiển có tài liệu tốt nhất hiện nay
    • RP2040 chỉ có một cổng QSPI
      JLC lắp ráp bo RP2040 với giá dưới $3 mỗi chiếc nếu làm lô 5 cái
    • Không rõ là đã dùng esp-idf hay dùng thư viện Arduino
  • Bản thân phép so sánh này giống như so táo với đào. RP2040 chỉ là một con chip, còn phía ESP32 thì có rất nhiều lựa chọn gắn sẵn đủ loại ngoại vi mà bạn muốn
    Có thể chọn từ anten WiFi/Bluetooth, bộ điều khiển pin lithium-ion, Ethernet, cho đến đầu nối màn hình hoặc camera

    Các lựa chọn CPU cũng đa dạng, và khi chạy bằng pin cúc áo thì việc có tiêu tốn điện cho lõi thứ hai hay WiFi không cũng tạo ra khác biệt

    Ở biến thể C6, Espressif còn đổi lại cả ISA, đi từ 8266 qua ESP32 sang ISA dựa trên RISC-V

    Rốt cuộc thì đây giống như đang so một SoC thế hệ đầu với một dòng họ có lịch sử 10 năm của SBC

    • Có vẻ đang nhầm giữa ESP32 devkit và bản thân ESP32. Những thứ có gắn anten, bộ điều khiển pin, hay bất kỳ đầu nối nào đều là devkit hoặc ít nhất là mô-đun. Bản thân ESP32 là một IC nhỏ giống như RP2040
      Có lẽ đang nghĩ đến một devkit như thế này: https://docs.espressif.com/projects/esp-idf/en/latest/esp32s...

      Bản thân bo này cũng dựa trên một mô-đun như ESP32-S3-WROOM-1, còn mô-đun đó thì gói IC ESP32-S3 cùng các tiện ích như anten WiFi hay đầu nối

      Phần tương ứng ở phía RP2040 là Raspberry Pi Pico, và ở đây cũng có các tiện ích nhỏ như biến thể WiFi. Cũng có những sản phẩm được đóng gói cùng các ngoại vi khác

      Cả RP2040 lẫn dòng ESP32 đều không phải SBC, và cả hai đều không có dòng dõi SBC nào. Các Raspberry Pi SBC đều dựa trên Broadcom, còn RP2040 là một IC mới do Raspberry Pi tự phát triển, và theo tôi biết thì cũng không có IP nào được cấp phép từ Broadcom

    • Về mặt kỹ thuật thì đúng, nhưng trọng tâm nằm ở mục đích sử dụng hơn. RP2040 thực sự là một thứ khá độc đáo, và đột nhiên đã trở thành lựa chọn tuyệt vời cho rất nhiều dự án, không chỉ trong giới hobby/giáo dục mà cả ở thiết bị nhúng chuyên nghiệp
      Xét theo những gì nó làm được so với giá tiền, chỉ một phiên bản chip đơn lẻ đã bao phủ được rất nhiều lĩnh vực. Với tôi, đó chính là ý nghĩa của tiến bộ công nghệ

    • Có lẽ an toàn nhất là xem như cả hai bên đều đang nói về bản thân con chip. Cả hai đều có thể nối với bộ sạc pin, camera hay lò phản ứng hạt nhân, nhưng những ngoại vi đó hoàn toàn không liên quan đến phép so sánh này

    • Tôi tò mò không biết có lựa chọn thay thế nào ngoài Trung Quốc có thể so được với ESP về mặt tích hợp mô-đun như WiFi hay không. Đắt hơn cũng không sao

  • Tôi có cảm xúc lẫn lộn về RP2040
    Một mặt, đây là con chip tuyệt vời cho dân phát triển hobby. Rẻ, dễ mua, thiết kế bo dễ, và cung cấp đủ những gì cần cho các ứng dụng thông thường

    Mặt khác, dưới góc nhìn chuyên nghiệp thì rõ ràng nó vẫn hơi thiếu. Ngoại vi thì ổn, nhưng đi vào chi tiết là dễ đụng trần giới hạn. Giao diện XIP rất tuyệt nhưng không hỗ trợ ghi, nên không thể gắn chip FRAM để mở rộng bộ nhớ. Giao diện PIO rất ấn tượng, nhưng nếu muốn triển khai các giao diện phức tạp hơn thì giới hạn 2x32 lệnh là khá chật. Timer/Counter đâu? Không có cảm ứng điện dung à? Analog chỉ có bốn chân thôi sao? Không có ngõ vào chịu được 5V à? Sao không có đầu vào xung nhịp tốc độ cao cho mô-đun PIO? Vì sao không thể chạy bootloader bằng bộ dao động vòng nội bộ? Cũng giá mà có cả USB-C PHY

    Hiệu năng ESD kém cũng khiến tôi ngạc nhiên. Atmega hay STM32 thỉnh thoảng bị sốc tĩnh điện vẫn thường không sao, và bảo vệ ESD cho các cổng lộ ra ngoài chỉ là thứ có thì tốt. Còn với RP2040, nếu không thêm bảo vệ ngoài cho mọi chân thì gần như chắc chắn sẽ thấy một vài chân chết đi trong quá trình sử dụng hằng ngày

Tóm lại thì đây là một con chip rất hay và rất tuyệt cho mục đích hobby, nhưng có lẽ không phải lựa chọn đầu tiên của tôi trong môi trường chuyên nghiệp

  • Tôi thắc mắc chính xác USB-C PHY có nghĩa là gì. USB-C là đầu nối, và bên trên nó có thể chạy USB 1.1/2.0/3.0/3.1. Thực tế thì RP2040 còn không thể gánh nổi ngay cả USB 2.0 PHY một cách đúng nghĩa

  • Ngay cả các nhà phát triển hobby rồi cũng sẽ làm những dự án phức tạp hơn, và chính lúc đó họ sẽ đụng phải các giới hạn này

  • Tôi tò mò FRAM hữu ích nhất trong loại ứng dụng nào. Bản thân công nghệ này trông thực sự rất hay, nhưng giá quá cao, nên khó hiểu khi nào nên dùng nó thay vì kết hợp SRAM hoặc PSRAM với NAND

  • Macro Synopsys DesignWare SSI trong RP2040 trên thực tế có vẻ có thể dùng với PSRAM hoặc FRAM có khả năng đọc/ghi. Tuy nhiên chỉ với bản tài liệu rút gọn của datasheet RP2040 thì có vẻ không đủ để cấu hình theo cách đó

  • Raspberry Pi ban đầu xuất phát từ một tổ chức phi lợi nhuận phục vụ giáo dục

  • RP2040 khá tuyệt, và đến giờ tôi đã dùng nó trong khoảng nửa tá dự án
    Nhưng cách tiếp cận “một con làm tất cả” không hợp với tôi. Tôi thích dùng vi điều khiển nhỏ nhất có thể làm được đúng việc cần làm

    Lý do tôi cố dùng vi điều khiển yếu nhất có thể không phải vì tiền mà vì ngân sách điện năng. Phần lớn dự án của tôi chạy bằng pin, nên dùng càng ít điện càng tốt là một lợi thế lớn

    Tuy vậy, nếu một con 20 cent cũng làm được y như thế thì tại sao lại dùng vi điều khiển giá $1?

    • Tài liệu trực tuyến phong phú hơn rất nhiều, mã ví dụ, và một cộng đồng đông đảo các hobbyist giàu kinh nghiệm sẵn sàng trả lời câu hỏi đáng giá hơn nhiều so với chênh lệch 80 cent
      Dùng bộ điều khiển kém mạnh hơn để pin dùng được lâu hơn là một lý do hoàn toàn chính đáng. Rẻ thì về lý thuyết là tốt, nhưng trong các dự án làm một lần thì hầu như chẳng có ý nghĩa gì. Tôi còn chẳng nhớ lần cuối cùng mình mua thứ gì mà mức chênh vài chục cent tạo ra khác biệt đáng kể là khi nào
  • Tôi thích RP2040, nhưng muốn giải thích vì sao tôi rời bỏ nó trong dự án hiện tại
    Thứ nhất, lùm xùm liên quan đến PlatformIO thực sự gây ấn tượng rất xấu. Tôi muốn đứng về phía các nhà phát triển đang chịu thiệt vì sự hỗn loạn về công cụ

    Thứ hai, ESP32-S3 bản cao cấp nhất có dạng module, và về cơ bản chỉ cần gắn thêm vài tụ decoupling là có thể đặt lên PCB. RP2040 thì cần bố trí cẩn thận khoảng hơn chục linh kiện, bao gồm cả crystal. Module không chỉ giảm mạnh độ phức tạp khi triển khai mà còn giúp chuẩn hóa, từ đó giảm khả năng mỗi kỹ sư tự mắc những lỗi ngớ ngẩn trong bố trí linh kiện

    Thứ ba, ESP32-S3 có 14 chân GPIO có thể cấu hình cho cảm ứng điện dung, còn RP2040 thì không. Phần lớn các dự án dùng RP2040 cùng cảm ứng điện dung đều phụ thuộc vào MPR121, mà IC này đã ngừng sản xuất, nên rất có thể trong vài tháng tới sẽ kéo theo hàng loạt đợt tái thiết kế gấp

    Có lẽ đến một lúc nào đó RP2040 cũng sẽ có các phiên bản mạnh hơn hoặc yếu hơn, và cả phiên bản dạng module. Có thể sẽ không đến mức như tình cảnh của STM hay PIC, nhưng họ ESP32 rồi cũng không còn trông kỳ quặc nữa khi bạn đã quen với nó

    • Có vẻ Espressif cũng ở tình huống tương tự Pi liên quan đến PlatformIO[1]. Từ bên ngoài nhìn vào thì PlatformIO dường như đã cố đòi RPi và Espressif trả một khoản chi phí hằng năm rất lớn, và chuyện đó xảy ra sau khi hỗ trợ ban đầu đã được thêm vào và một phần cộng đồng bắt đầu sử dụng
      Đây là một tình huống kỳ quặc, nhưng có vẻ PlatformIO đã hỗ trợ nhiều nền tảng, chấp nhận đóng góp từ cộng đồng và xây dựng vị thế thống trị, rồi sau đó tìm cách rút giá trị trực tiếp từ các nhà sản xuất. Họ còn chặn cả các PR từ cộng đồng để thêm board revision mới hoặc sửa lỗi. Xem thêm: [2]

      [1] https://github.com/platformio/platform-espressif32/issues/12...

      [2] https://github.com/platformio/platform-raspberrypi/pull/36

    • Nói công bằng thì RP2040 được thiết kế để việc bố trí các linh kiện đó trở nên rất dễ. Trên thực tế gần như chỉ có một cách bố trí hợp lý, và bạn có thể dễ dàng tiếp cận mọi chân mình muốn
      Cộng với tài liệu rất tốt, nó gần như là một thiết kế drop-in nhiều linh kiện mà sau khi đặt vào rồi bạn không cần nghĩ lại nữa. Ban đầu nó có vẻ hơi đáng sợ, nhưng thực tế triển khai lại rất thú vị

    • Tôi dùng RP2040 từ lúc nó ra mắt và chưa bao giờ dùng PlatformIO, nên khá tò mò bạn đã dùng nó theo cách nào và điều gì làm bạn thấy tệ đến vậy
      Phát triển cục bộ với cmake và pico sdk hoặc micropython có vẻ rất dễ, nên tôi không hiểu tại sao lại phải trộn thêm PlatformIO vào đó

    • Tôi không thực sự nghĩ việc biến cái này thành module sẽ tạo ra giá trị đáng kể. Ai cũng muốn form factor hơi khác nhau một chút, còn thiết kế mạch xung quanh thì quá dễ nên module khó tạo ra lợi ích nổi bật
      Cảm ứng là một ngách hẹp gần như đơn chức năng, và việc không tích hợp nó lại là điều tốt hơn. Tính năng đó nên dùng IC khác, còn việc mọi người lười nên bám vào một linh kiện đã ngừng sản xuất không phải lỗi của RPi. Hoặc cũng có thể làm bằng phần mềm

      Ở điểm này tôi đồng ý với bài gốc, và tôi nghĩ quỹ đã định nghĩa sản phẩm rất tốt

    • Tôi đã đưa các chip như Atmel, STM, TI, Ambiq, Nordic vào thiết kế suốt hàng chục năm, và không phải là không có cách giải quyết những vấn đề kiểu này. Cả cậu thực tập sinh ngồi cách tôi hai yard cũng đang vật lộn để đặt đúng các linh kiện xung quanh STM trong thiết kế PCB đầu tiên của mình. Với ai đã từng làm chút việc này thì đây không phải vấn đề khó
      Dù sao thì hơn chục linh kiện đó cũng chỉ là mạch dao động/crystal, giữ reset, nguồn 3.3V và cả đống tụ decoupling. Việc tinh chỉnh ăng-ten chắc chắn có thể khó, nhưng nếu dùng chip antenna thì cũng không đến mức quá khó

      Mọi thứ đều quá tiêu chuẩn, đến mức khi nhìn sơ đồ mạch adafruit RP2040 Feather tôi còn ngạc nhiên vì nhiều phần dường như được bê gần như nguyên xi từ các Feather trước đó. Khác biệt giữa RP2040 Feather và nRF52840 Feather chỉ là bản thân vi điều khiển, toàn bộ mạch timing 5 linh kiện cho RP2040, và mạch ăng-ten cho board Nordic

      Module rất tiện để bán vào thị trường hobby, nhưng nếu bán sản phẩm thực tế thì bạn vẫn phải trải qua quy trình chứng nhận RF. Chi phí có thể thấp hơn, nhưng việc chi phí chứng nhận giảm có bù được chi phí ban đầu cao hơn khi dùng module hay không thì bạn phải tự cân nhắc. Dù sao đi nữa, thứ bạn thực sự tiết kiệm được cuối cùng chỉ là giai đoạn tinh chỉnh ăng-ten, và thường việc này được xử lý bằng biến thể BOM chứ không phải chỉnh sửa lớn về routing

Tương tự như STM và PIC có hàng chục loại chip, TI cũng ở trong tình trạng như vậy. Khách hàng muốn chỉ trả tiền cho đúng những gì họ cần, và các nhà sản xuất có đủ năng lực sản xuất để đáp ứng nhu cầu đó. Nếu sự khác biệt là quan trọng thì đó không phải là điều gì quá phiền phức. Rất giống với việc phàn nàn rằng Home Depot bán quá nhiều loại gỗ.

IC cảm ứng điện dung cũng vậy: Adafruit chỉ bán một loại, nhưng trên Mouser có 199 linh kiện vẫn còn sản xuất chứ chưa bị ngừng. Để giữ nguyên chức năng, Adafruit chỉ cần chọn một trong số đó. Loại rẻ nhất dùng gói TSOT nên khả năng sản xuất cũng khá tốt. Nếu không quá kiệt sức vì phải thiết kế và lập trình mấy thứ này ở chỗ làm, thì tối nay về nhà tôi thậm chí còn có thể tự làm một cái. Chắc khoảng một giờ là xong thiết kế bo mạch, còn driver I2C có lẽ sẽ mất thêm vài giờ nữa.