Jump to content
    

Raspberry Pi Pico. Какой софт кто и как использует.

Недавно приобрел этот кит. Привлекли PIO-свойства его портов. В частности высокоскоростной ввод байтов c применением ассемблерной технологии конечных автоматов на портах и затем прямой доступ от портов к RAM. Интересует опыт программирования на C/C++, а также какой при этом используется софт и на сколько успешно. 

Share this post


Link to post
Share on other sites

pico-sdk

очень успешно

Share this post


Link to post
Share on other sites

Приветствую x893, от Вас я получал хорошие советы. Уточните, в Windows или в Linux (WSL, VBox или прямо в ОС).

Share this post


Link to post
Share on other sites

14 часов назад, Serhiy_UA сказал:

Привлекли PIO-свойства его портов.

Сейчас еще , его и официально ускорили до 200МГц.

Я использую VSCode( там есть VS Code extension for Raspberry Pi Pico development)  c pico sdk.  

Плохо только , что он не сильно распространен , и получить ответ на свой вопрос сложнее.

Например, пытаюсь сейчас понять, как  отлаживать 2 ядра.  

Я в Вин. В линукс  тоже можно.  https://rptl.io/pico-get-started

 

 

Share this post


Link to post
Share on other sites

10 minutes ago, muravei said:

Сейчас еще , его и официально ускорили до 200МГц.

Я использую VSCode( там есть VS Code extension for Raspberry Pi Pico development)  c pico sdk.  

Плохо только , что он не сильно распространен , и получить ответ на свой вопрос сложнее.

Например, пытаюсь сейчас понять, как  отлаживать 2 ядра.  

 

Вопрос про 2 ядра тоже супер интересный. Это вроде два независимых МК в одном корпусе, или как-то по другому. Как организовано их взаимодействие не ясно. Или все иначе и распараллеливанием занимается компилятор...

Share this post


Link to post
Share on other sites

1 минуту назад, Serhiy_UA сказал:

Вопрос про 2 ядра тоже супер интересный. Это вроде два независимых МК в одном корпусе, или как-то по другому. Как организовано взаимодействие не ясно. Или все иначе...

В СДК есть АПИ для работы с с двумя ядрами , примеры работают. То что я делаю - не всегда. 🙂

Скачайте VSCode и минут за 20 все установится , еще минут 5 по материтесь , и примеры у вас заработают. 🙂

 

Share this post


Link to post
Share on other sites

muravei, уточните в какой ОС Вы работаете. Я пока пытаюсь в Win10. Тоже установил VSCode и с ним пакет расширений CMake Tools, "C/C++" от Microsoft, еще предлагалось Pico-W-Go, но вместо него был только MicroPico. Последний должен автоматом сформировать CMakeLists.txt, но он почему-то не создается. Пока разбираюсь. Попутно зреет вопрос о переходе, например, на Ubuntu, говорят, что там все без проблем

Share this post


Link to post
Share on other sites

30 minutes ago, Serhiy_UA said:

Приветствую x893, от Вас я получал хорошие советы. Уточните, в Windows или в Linux (WSL, VBox или прямо в ОС).

Windows, WSL, Debian/Ubuntu (VMWare, RasPi).

31 minutes ago, muravei said:

Например, пытаюсь сейчас понять, как  отлаживать 2 ядра. 

С JLink проблем особых нет. Или на отдельном Pico сделать DebugProbe.

Share this post


Link to post
Share on other sites

6 minutes ago, x893 said:

Windows, WSL, Debian/Ubuntu (VMWare, RasPi).

Работаю (подрабатываю) в WSL с Ubuntu-22-04, там достаточно сложный проект но не для МК. Смотрю, у Вас в списке Debian, видимо целесообразно отделить эти темы, и для МК организовать все в Debian...

Share this post


Link to post
Share on other sites

1 час назад, Serhiy_UA сказал:

установил VSCode и с ним пакет расширений CMake Tools, "C/C++" от Microsoft, еще предлагалось Pico-W-Go,

Возможно , вы слишком суетились .

Я установил VSCode и одно расширение , то что с картинкой платки с RP , далее оно САМО все установило. 

1 час назад, Serhiy_UA сказал:

CMakeLists.txt,

Я сам его делаю .

плюс в папке проекта должно быть pico_sdk_import.cmake и папка ".vscode"

2 часа назад, x893 сказал:

Или на отдельном Pico сделать DebugProbe.

У меня так и сделано, одно ядро отлаживаю.

Share this post


Link to post
Share on other sites

On 3/18/2025 at 5:26 AM, x893 said:

С JLink проблем особых нет

только если он новее чем версия 8. Мне пришлось мои JLink Hardware ver8 отправить на полку - профильной теме очень подробно это обсуждали.

 

On 3/18/2025 at 5:02 AM, Serhiy_UA said:

Вопрос про 2 ядра тоже супер интересный.

Вот и мне был очень инетерсный в разрезе того , что пример от TinyUSB "Host & Device" компилируется только в связке MS VS 2015 + VisualDGB 5.6 (VS code не работает адекватно из под Win7 ). Keil нормально работает с перферией но как дело доходит до мультиядерности то сразу имеем HardFault(). IAR тоже работает замечательно и с мультиядерностью без нареканий - но вот у них в поддержке только древний SDK и как привязать новый - не имею понятия.

On 3/18/2025 at 7:29 AM, muravei said:

Я сам его делаю .

было бы здорово если бы Вы дали ссылку где можно почитать о правилах как и почему делаеться в

 

On 3/18/2025 at 7:29 AM, muravei said:

CMakeLists.txt

А то приходиться методом "тыка" - иногда на это уходит просто недопустимое количество времени и сил.

Я изза этого хотел вернуться к любимой теплой ламповой IDE Keil - а он не знает как компилировать многоядерные приложения для RP2040. Странная у них политика поддержки - заявить 20 версий назадо поддержке RP2040 и умолчать что она "частичная" и ничего не делать с этим в новых версиях.

Share this post


Link to post
Share on other sites

2 часа назад, backa сказал:

Вы дали ссылку

У меня их не осталось, но встречались довольно толковые. Но в моем случае , ничего сложного - все сводится : "откуда взять , и куда положить" Больше оно не на что не влияет.

Пример

2 часа назад, backa сказал:

приходиться методом "тыка"

 

2 часа назад, backa сказал:

как дело доходит до мультиядерности то сразу имеем HardFault()

VSCode  компилирует. Только пока не разобрался в отладке двух ядер. 

И разбираюсь , как настроить прерывание от GPIO  на второе ядро.

Share this post


Link to post
Share on other sites

7 minutes ago, muravei said:

VSCode  компилирует

Keil тоже компилирует так , что при отладке вылетает в HardFault при инициализации  ядра №1. Я прошел по шагам эту инициализацию в MS VS и там все четко и красиво и главное - осмысленно)))

 

10 minutes ago, muravei said:

пока не разобрался в отладке двух ядер

IAR  с ядрами работает просто замечательно , но как я сказал - они используют древний урезанный SDK и как его заменить на новый - ума не преложу

 

12 minutes ago, muravei said:

разбираюсь , как настроить прерывание от GPIO  на второе ядро

Вы уже далеко зашли)) Тоже хотел каждому ядру свой светодиод назначить в учебных целях - вникнуть смысловую нагрузку работы 2х ядер (инкогда не делал проекты с 2мя ядрами)

23 minutes ago, muravei said:

все сводится : "откуда взять , и куда положить"

оххх - если бы так все просто было ))) там свой синтаксис ( например пути к файла - папки отделяют нижним подчеркиманием - где такое прописано и где надо указывать папку а где просто файл например - вопросы изза отсуствия толкового описания ) Ссылку конечно видел - на той страничке бываю очень часто)))

 

25 minutes ago, muravei said:

Больше оно не на что не влияет

еще как влияеет - проект просто не линкуется без ошибок пока все не пропишешь в этом файле

Share this post


Link to post
Share on other sites

38 минут назад, backa сказал:

оххх - если бы так все просто было

Именно так!

В 18.03.2025 в 11:55, muravei сказал:

Я использую VSCode( там есть VS Code extension for Raspberry Pi Pico development)  c pico sdk.  

 

38 минут назад, backa сказал:

еще как влияеет

Это у вас влияет, у меня - нет! 🙂

Глюки тоже, естественно , есть как без них.

Вы посмотрите ссылку примера.

38 минут назад, backa сказал:

при отладке вылетает в HardFault при инициализации  ядра №1.

Возможно , у вас они куда-нибудь лезут, одновременно.

 

40 минут назад, backa сказал:

Тоже хотел каждому ядру свой светодиод назначить в учебных целях

У меня практическое , прерывание по изменению состояния. 

Share this post


Link to post
Share on other sites

40 minutes ago, muravei said:

Возможно , у вас они куда-нибудь лезут, одновременно

Скорее всего именно так:

Spoiler
void multicore_launch_core1_with_stack(void (*entry)(void), uint32_t *stack_bottom, size_t stack_size_bytes) {
    assert(!(stack_size_bytes & 3u));
    uint32_t *stack_ptr = stack_bottom + stack_size_bytes / sizeof(uint32_t);
    // Push values onto top of stack for core1_trampoline
#ifdef __riscv
    // On RISC-V we also need to initialise the global pointer
    stack_ptr -= 4;
    uint32_t vector_table = riscv_read_csr(mtvec);
    asm volatile ("mv %0, gp" : "=r"(stack_ptr[3]));
#else
    stack_ptr -= 3;
    uint32_t vector_table = scb_hw->vtor;
#endif
    stack_ptr[0] = (uintptr_t) entry;
    stack_ptr[1] = (uintptr_t) stack_bottom;
    stack_ptr[2] = (uintptr_t) core1_wrapper;
#if PICO_VTABLE_PER_CORE
    #warning PICO_VTABLE_PER_CORE==1 is not currently supported in pico_multicore
    panic_unsupported();
#endif
    multicore_launch_core1_raw(core1_trampoline, stack_ptr, vector_table);
} 

на шаге запуска ядра №1 , когда пробует писать в stack_ptr[0] = (uintptr_t) entry

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...