ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
1391783 Топик полностью
klen (11.01.2024 03:31, просмотров: 308) ответил il-2 на Так тебе надо все-таки определять нахождение в обработчике? а не режим? Для МК по моему надо тупо работать в режиме M, не переключаясь в U. В Cortex для определения нахождения в обработчике прерывания всегда пользовал поле VECTACTIVE. И здесь наверное есть что-то похожее - в Vendor defined CSRs
уряяяя!!!! прикрутил к ch32v307 freertos 10.5.1 

в MounRiver_Studio_Community_Linux_x64_V160 есть порт для ch32v307, но устаревшей версии freertos 10.4.6. сделано через жопу - работа потоков в user mode невозможна, переключалка контекста всегда гоняет FPU регистры( не зависимо от того использует поток FPU или нет) - то есть не реализовано ленивое сохранение/загрузка регистров fpu,

configGENERATE_RUN_TIME_STATS потребует применить еще один таймер - и он будет не 64 битный, придется бороться с заворачиванием 32битного счетчика :( часть кода на асме совершенно гармонично можно и нужно перенести в С код. ничего не сделано для поддержки "продвинутой" отладки через openocd, ну и так далее.....


по этому сегодня потрачен день на написание порта для ядра QKV4F как я это вижу :)

че сделано - в качестве таймеров тика - sys_tick, причем сконфигурен так чтобы не сбрасывался а только непрерывно считал вверх. это я так закрутил из-за того что счетчик 64 битный и удалось разом его же использовать как счетчик реального времени с частотой клока процессора! короче - и системный тик и 64-bit high-resolution real time clock в "одной коробке" - c cortex-m и qkv2a (сh32v003) такой приятный фокус не проканает.

потоки могут быть созданы как user mode так и в machine mode,

старт и стоп шедуллера возможен как user mode так и в machine mode

протянуто то что нужно для openocd чтоб мониторить состояние freertos

осталось только в инициализации стояния стека задачи и в переклчалке контекстов учесть комбинации аппаратного сохранения целочисленных регистров и условное (если вытесняемый и вытесняющий потоки используют/не используют FPU) ленивое сохранение и выгрузку регистров FPU


сильно помогла вот эта найденная дока Syscalls_exceptions_interrupts.pdf