haker_fox 60 5 ноября, 2020 Опубликовано 5 ноября, 2020 · Жалоба 13 hours ago, jeka said: Когда rtos ставить не хочется А теперь подитоживающий вопрос: а чего так не хочется? Можно же взять совсем крохотную "ртоску". Она гарантированно будет работать на любом микроконтроллере с минимумом 1 кБ ОЗУ, если не меньше. Зато сразу заложен задел на будущее: захотелось добавить задачку, не проблема. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 29 5 ноября, 2020 Опубликовано 5 ноября, 2020 · Жалоба 16 часов назад, jeka сказал: Когда rtos ставить не хочется, 16 часов назад, jeka сказал: Но тут вырисовывается проблемка в совместимости с RTOS: Один я нахожу это странным? Может как-то определиться? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 33 5 ноября, 2020 Опубликовано 5 ноября, 2020 · Жалоба 5 часов назад, haker_fox сказал: Можно же взять совсем крохотную "ртоску". Пользуясь случаем, не подскажете маленькую РТОСку, с поддержкой контроллера прерываний АРМ7(9)? Это тот, что не NVIC. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 5 ноября, 2020 Опубликовано 5 ноября, 2020 · Жалоба 11 minutes ago, mantech said: Пользуясь случаем, не подскажете маленькую РТОСку, с поддержкой контроллера прерываний АРМ7(9)? Я использовал scmRTOS на ARM7 (LPC2478) лет 8 назад. Есть порт под компилятор GCC. В текущем году я делал порт под IAR, но для Cortex'ов, т.к. ARM7 давно не использую. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 5 ноября, 2020 Опубликовано 5 ноября, 2020 · Жалоба 7 минут назад, mantech сказал: с поддержкой контроллера прерываний АРМ7(9)? Он там свой у каждого производителя. ATsam, LPC2xx, ADuC7xxx есть в scmRTOS, не вижу особых проблем написать под любой другой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 5 ноября, 2020 Опубликовано 5 ноября, 2020 · Жалоба 04.11.2020 в 13:50, jeka сказал: exec_task: push {r0-r11,lr} mov32 r1,#core_task_sp str sp,[r1] ldr sp, [r0] ; sp=inline task stack pop {r0-r11,lr} bx lr task_yield: push {r0-r11,lr} ; save inline task state mov r12,sp mov32 r0,#core_task_sp ldr sp,[r0] ; sp=core stack pop {r0-r11,lr} str r12,[r0] bx lr Вроде пишете про оптимизацию, экономию ОЗУ и про облегчение жизни CPU, но код написан очень неоптимально, с кучей ненужный действий. Зачем отдельная BX LR если можно POP {R0-R11, PC} ? Зачем в exe_task() и в task_yield() сохранять и затем восстанавливать регистры R0-R3,R12 ? Почитайте про соглашения вызова вашего компилятора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jeka 0 7 ноября, 2020 Опубликовано 7 ноября, 2020 · Жалоба On 11/5/2020 at 6:34 PM, jcxz said: Вроде пишете про оптимизацию, экономию ОЗУ и про облегчение жизни CPU, но код написан очень неоптимально, с кучей ненужный действий. Спасибо за замечание, учту. Я не настолько глубоко копался в этом чтоб все идеально сделать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться