Jump to content
    

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

10 hours ago, mantech said:

Вы мне лучше покажите "сервисную" функцию для работы с портом, вот что мне больше интересно)))

На github есть 100500 готовых сервиных функций. Скачиваете и смотрите.

Share this post


Link to post
Share on other sites

1 hour ago, Serhiy_UA said:

Может сделаем так: Кто-то из нас создаст четыре топика: "Raspberry Pi Pico. Старт в Arduino", "Raspberry Pi Pico. Старт в Keil",  "Raspberry Pi Pico. Старт в VC Code + C-SDK", а также "Raspberry Pi Pico. Просто разговоры".

я только ЗА! В теме Keil я создал похожую тему)

Share this post


Link to post
Share on other sites

Как в Keil "прикрутить" скрипт для линковщика из SDK?
 
pico-sdk\src\rp2_common\pico_crt0\rp2040\memmap_default.ld
 
там их много разных вариантов ("memmap_blocked_ram.ld", "memmap_copy_to_ram.ld","memmap_default.ld","memmap_no_flash.ld",)в зависимости от где находиться испольняемая программа.
Всем этим заведует файл BUILD.bazel  
Видимо его надо "прикрутить" к проекту и указать в настройках PICO_DEFAULT_LINKER_SCRIPT
Вопрос как это сделать?
 
Без этого системная переменная __StackOneBottom не задана значением из файла memmap_default.ld

Share this post


Link to post
Share on other sites

2 hours ago, backa said:

Как в Keil "прикрутить" скрипт для линковщика из SDK?
 
pico-sdk\src\rp2_common\pico_crt0\rp2040\memmap_default.ld
 
там их много разных вариантов ("memmap_blocked_ram.ld", "memmap_copy_to_ram.ld","memmap_default.ld","memmap_no_flash.ld",)в зависимости от где находиться испольняемая программа.
Всем этим заведует файл BUILD.bazel  
Видимо его надо "прикрутить" к проекту и указать в настройках PICO_DEFAULT_LINKER_SCRIPT
Вопрос как это сделать?
 
Без этого системная переменная __StackOneBottom не задана значением из файла memmap_default.ld

Сделайте пустой проект в Keil для RP2040, изучите и потом напишите здесь. А лучше на Хабре.

Share this post


Link to post
Share on other sites

У кейла свой компоновщик, это не GCC. Совсем другой формат.

Share this post


Link to post
Share on other sites

2 minutes ago, Arlleex said:

У кейла свой компоновщик, это не GCC. Совсем другой формат.

Естественно, так у него и sct файл свой есть для этого

Share this post


Link to post
Share on other sites

4 минуты назад, x893 сказал:

Естественно, так у него и sct файл свой есть для этого

Ну дык то-то же. backa либо методом тыка все перебирает. В надежде что заработает.

Share this post


Link to post
Share on other sites

1 hour ago, x893 said:

sct файл свой

я знаю про него но не было необходимости что-то меня в нем. Прежний проект на Tiva-C прекрасно компидировался без внесений по умолчанию.

 

1 hour ago, Arlleex said:

backa либо методом тыка все перебирает. В надежде что заработает.

Я не люблю тупо не читая чтото делать но а как еще можно чтото сделать "по-написанаму" когда таких инструкций нет от производиьеля процессора и компилятора.

Keil дает 2 примера как моргнуть светодиодом и как подключиться к WiFi. Там задейсвовано 1 ядро и все работвет как часики. Я тоже попробовал стандарные интерфейсы - все работает.Но как коснулось использовать 2 ядра - вот тут и вылезло что заявленная поддержка для данного микроконтроллера - ЧАСТИЧНАЯ!!!  Вышла новая версия кейла на днях - вряд-ли там чтото исправили.Данный проц не для комерческий и никто не хочет тратить силы на его поддержку.

1 hour ago, Arlleex said:

У кейла свой компоновщик, это не GCC. Совсем другой формат.

я это уже понял.Но может ему както можно руками прописать про границы стэком для ядер. Ятакого не делал никогда и нигде не нашел как это сделать ((( А потратил уже уйму времени...

 

1 hour ago, x893 said:

Сделайте пустой проект в Keil для RP2040, изучите и потом напишите здесь. А лучше на Хабре.

А зачем пустой если я делал тестовые без многоядерности.Все работает и намного шустрее чем VS.

Вы думаете что хабр лучше место для таких вопросов?)))))

Share this post


Link to post
Share on other sites

1 hour ago, x893 said:

так у него и sct файл свой есть для этого

Где можно почитать а лучше "подсмотреть" после чтения доков как выглядит файл scr для других "взрослых" многоядерников о NXP и STM32. Чтобы разобраться на реальноработающем scr файле как прописывают параметры и уже потом изменить scr файлдля RP2040. Хочеться довести это до логического конца ( на столе лежит ждет парочка на RP2350 ).

Share this post


Link to post
Share on other sites

Линковщик ведь о многоядерности ничего не знает. Он, по сути, только память размечает, грубо говоря, если [censored] детали.

Файл scr для взрослых многоядерников ничем выдающимся отличаться не будет от такого же для одноядерных МК.

Формат и синтаксис можно узреть в ARM Compiler 6 Reference Manual.

Share this post


Link to post
Share on other sites

5 minutes ago, Arlleex said:

Линковщик ведь о многоядерности ничего не знает. Он, по сути, только память размечает,

да - я это понял . В scr файле лежать системные "константы" которые используються в программе. Вот в моем случае надо задать значение для __StackOneBottom (0х20040800). Именно изза того что она не задана и происходит чехарда в работе sdkкашной функции.

Share this post


Link to post
Share on other sites

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

да - я это понял . В scr файле лежать системные "константы" которые используються в программе. Вот в моем случае надо задать значение для __StackOneBottom (0х20040800). Именно изза того что она не задана и происходит чехарда в работе sdkкашной функции.

К примеру

LOAD1 0x08000000 917504 {
  FLASH 0x08000000 917504 {
    *.o (RESET, +first)
    *(InRoot$$Sections)
    .any (+ro)
  }
  
  SRAM1_NOINIT 0x20000010 UNINIT 16 {
    *.o (.bss.bootInfoSection)
  }
  
  SRAM1 0x20000080 114560 {
    .any (+rw, +zi)
  }
}

 

extern u32 Image$$SRAM1$$Base;

volatile u32 *sramAddr = (u32 volatile *)&Image$$SRAM1$$Base;

Теперь sramAddr будет указывать на память по адресу 0x20000080.

Это?

Share this post


Link to post
Share on other sites

4 minutes ago, Arlleex said:

Это?

Похоже на то чтотя спрашивал и что в итоге мне нужно сделать.Попробую чуть попозже и отпишусь . Однозначно мне надо читать как правильно создавать и редактировать scr файл если я хочу все-таки поработать в любимом )) Keil с RP2040 и RP2350.

Share this post


Link to post
Share on other sites

On 3/28/2025 at 7:49 PM, backa said:

RP2040.

Я на второй странице оставил архив с двумя примерами при работе связки RP2040 + Arduino. Оба примера работающие. Один на непрерывное программное переключение пина с частотой 33 МГц на самом низком регистровом уровне. А второй пример - инициализация и работа двух ядер, каждое со своим светодиодом, здесь уровень повыше с функциями. Посмотрите, может заинтересует. 

У меня неспешный проект с фото-видео камерой, нужно быстродействие на входах, а также производительность для алгоритма, и здесь два ядра кстати. Arduino IDE с такой задачей справляется.

Share this post


Link to post
Share on other sites

52 minutes ago, Serhiy_UA said:

Посмотрите, может заинтересует. 

Спасибо! Скачаю и обязательно исследую - может себе чтото подчерпну)))

 

52 minutes ago, Serhiy_UA said:

здесь два ядра кстати. Arduino с такой задачей справляется.

Потратив некорое количество  времени ( как тут заметили , что я методом тыка все перебираю))) я могу сказать что немного изучил эту тему. У Keil проблема с многоядерностью изза того что они не до конца сделали поддержку данного контроллера. Точнее они "забыли" нужным образом видоизменить srt файл из .ld файла который находиться в SDK. Я пришел к выводу , что IDE , которые использую CMake файл для компиляции по-умолчанию используют это .ld файл с разметкой памяти для 2х ядер. Я больше чем уверен что Arduino тоже использует CMake файл как и MS VS, IAR VS CODE.

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...