injen-d 1 August 7, 2025 Posted August 7, 2025 · Report post Сделал для себя порт GCC-RISC-V. За основу брал порт для Cortex. Юзаю на К1921ВГ015. В проекте всего 2 процесса, все работает как надо. Специальных тестов для выявления всех возможных косяков не делал, нет на это времени. Код тоже особо не причесывал. Если кому интересно, могу выложить Quote Share this post Link to post Share on other sites More sharing options...
dimka76 96 August 7, 2025 Posted August 7, 2025 · Report post On 8/7/2025 at 3:40 PM, injen-d said: Если кому интересно, могу выложить К чему эти вопросы ? Если есть желание выложить, то надо обязательно выложить. Quote Share this post Link to post Share on other sites More sharing options...
injen-d 1 August 7, 2025 Posted August 7, 2025 · Report post On 8/7/2025 at 3:57 PM, dimka76 said: К чему эти вопросы ? Если есть желание выложить, то надо обязательно выложить. Вопросы к тому, что годами в этой ветке никто не пишет, возможно я последний динозавр, кто польузет scmRTOS, и то, что я сделал, нафиг никому не нужно. scmRTOS-GCC-RISCV.zip 1 Quote Share this post Link to post Share on other sites More sharing options...
dimka76 96 August 7, 2025 Posted August 7, 2025 · Report post On 8/7/2025 at 4:07 PM, injen-d said: Вопросы к тому, что годами в этой ветке никто не пишет, возможно я последний динозавр, кто польузет scmRTOS, и то, что я сделал, нафиг никому не нужно. Возможно и так. На github последний релиз аж 2021 году вышел Quote Share this post Link to post Share on other sites More sharing options...
dxp 213 August 7, 2025 Posted August 7, 2025 · Report post А чему там выходить -- оно в рамках своей концепции развилось до потолка. Релиз не выпускали, но в прошлом году добавился порт для GCC-Cortex-A9 (Zynq-7000) в репозиторий. А использоваться -- используется, работает вроде стабильно и предсказуемо. 1 Quote Share this post Link to post Share on other sites More sharing options...
AHTOXA 25 August 9, 2025 Posted August 9, 2025 · Report post Надо бы всё же сделать релиз. Много чего накопилось уже. Ну и показать, что проект жив:) 1 1 Quote Share this post Link to post Share on other sites More sharing options...
RabbitRabbit 2 September 16, 2025 Posted September 16, 2025 · Report post "Раз пошла такая пьянка", то тоже налабал себе порты scmRTOS 5.2 под К1921ВГ015 и MIK32 Амур. Каждый с парой примеров. Quote Share this post Link to post Share on other sites More sharing options...
injen-d 1 September 23, 2025 Posted September 23, 2025 · Report post On 9/16/2025 at 9:15 AM, RabbitRabbit said: "Раз пошла такая пьянка", то тоже налабал себе порты scmRTOS 5.2 под К1921ВГ015 и MIK32 Амур. Каждый с парой примеров. Не нашел, где у вас trap_handler()? Интересно глянуть что там Quote Share this post Link to post Share on other sites More sharing options...
injen-d 1 September 23, 2025 Posted September 23, 2025 · Report post Я намеренно перенес trap_handler() в код ОС, так как это позволяет: 1. Избежать двойного сохранения контекста (trap_handler на всех один и в нем должен сохраняться контекст, а вы еще в своем обработчике софтовых прерываний еще раз его сохраняете). 2. Избежать ненужных выходов из trap_handler() (с лишним сохранением/восстановлением контекста) пока не будут обработаны все активные прерывания. 3. Избежать ненужного сохранения/восстановления callee-saved-регистров, если не произошло софтовое прерывание (которое может привести к переключению контекста). Обработчики обычных прерываний в RISC-V - это обычные функции, они сами сохраняют/восстанавливают callee-saved регистры. Ну и еще у меня есть пара оптимизаций за счет условной компиляции: - если использование float отключен ключами компилятора, - если данный RISC-V поддерживает расширение ZBB (битовые операции - К1921ВГ015 поддерживает) - дает существенный выигрыш при поиске самой приоритетной задачи Quote Share this post Link to post Share on other sites More sharing options...
RabbitRabbit 2 September 23, 2025 Posted September 23, 2025 · Report post 3 часа назад, injen-d сказал: Я намеренно перенес trap_handler() в код ОС, так как это позволяет: 1. Избежать двойного сохранения контекста (trap_handler на всех один и в нем должен сохраняться контекст, а вы еще в своем обработчике софтовых прерываний еще раз его сохраняете). 2. Избежать ненужных выходов из trap_handler() (с лишним сохранением/восстановлением контекста) пока не будут обработаны все активные прерывания. 3. Избежать ненужного сохранения/восстановления callee-saved-регистров, если не произошло софтовое прерывание (которое может привести к переключению контекста). Обработчики обычных прерываний в RISC-V - это обычные функции, они сами сохраняют/восстанавливают callee-saved регистры. Ну и еще у меня есть пара оптимизаций за счет условной компиляции: - если использование float отключен ключами компилятора, - если данный RISC-V поддерживает расширение ZBB (битовые операции - К1921ВГ015 поддерживает) - дает существенный выигрыш при поиске самой приоритетной задачи Зато у меня всё прокомментировано, по-русски 🙂 1 Quote Share this post Link to post Share on other sites More sharing options...
RabbitRabbit 2 September 24, 2025 Posted September 24, 2025 · Report post 7 часов назад, injen-d сказал: а вы еще в своем обработчике софтовых прерываний еще раз его сохраняете Хорошее замечание, спасибо. Убрал у себя сохранение лишних регистров. Повысилась скорость переключения контекста :) Quote Share this post Link to post Share on other sites More sharing options...
injen-d 1 September 25, 2025 Posted September 25, 2025 · Report post On 9/24/2025 at 12:03 AM, RabbitRabbit said: Зато у меня всё прокомментировано, по-русски 🙂 Пользователь не должен лазить в эти файлы, а значит наличие подробных комментариев на русском существенного значения не имеет Quote Share this post Link to post Share on other sites More sharing options...