|
|
  |
Выпущена scmRTOS 4.0., Ура, товарищи! :) |
|
|
|
May 4 2012, 12:41
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Про пользовательский системный таймер. Сделал так: Инициализацию таймера вынес в WEAK-функцию init_system_timer(). Переименовал SystemTimer_ISR() в Default_SystemTimer_ISR(), а SystemTimer_ISR() объявил WEAK-алиасом для неё. То есть, если ничего не трогать, то всё работает как было. Теперь, чтобы перейти на свой альтернативный системный таймер, надо: - написать свою функцию init_system_timer() (extern "C");
- (опционально) написать свой обработчик прерывания таймера SystemTimer_ISR();
- перенести в таблице векторов SystemTimer_ISR() на место нужного вектора.
Мне кажется, что это достаточно удобно. Если не будет замечаний, то я запилю это в транк.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
May 5 2012, 20:52
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Залил в репозиторий примеры для STM32F2XX (пока три штуки). Пример 2-Message сделан на альтернативном таймере. (функцию init_system_timer() я, подумав немного, переименовал в __init_system_timer(), ибо она в какой-то мере системная). Заодно замерил скорость. Цитата(VslavX @ Apr 28 2012, 01:46)  Наконец запустил свою плату на F207, IAR 6.30 + TNКernel 72МНz, 2WS, IAR6.30 - 2.16 мкс 120МНz, 3WS, IAR6.30 - 1.30 мкс Платка TE-STM32F217, arm-kgp-eabi-gcc, 120 МГц, 3WS - 1.192 мкс. Правда, для достижения такого результата пришлось задействовать LTO, без него получалось 1.4 мкс. Но всё равно, scmRTOS побеждает!
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
May 6 2012, 05:30
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
LTO - это тяжёлая артиллерия  Скрипт везде одинаковый. --- А если использовать svn, то ничего руками копировать не надо: Заходим в нужную папку, командуем: Код svn co http://scmrtos.svn.sourceforge.net/svnroot/scmrtos/trunk/Samples/CortexM3/GCC/STM32F2XX STM32F2XX Создаётся папка STM32F2XX с примерами. Заходим в неё, командуем: Код switch.bat , или Код sh ./switch.sh , и всё появляется само
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
May 6 2012, 15:41
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(AHTOXA @ May 6 2012, 08:30)  Код svn co http://scmrtos.svn.sourceforge.net/svnroot/scmrtos/trunk/Samples/CortexM3/GCC/STM32F2XX STM32F2XX Я где-то уже спрашивал, но не помню где... Какой лучше клиент взять под WinXp? svn ведь не идёт в комплекте к windows.
|
|
|
|
|
May 8 2012, 11:59
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Залил недостающий пример 4-Debug для CortexM3/GCC/STM32F2XX. Цитата(_Артём_ @ May 7 2012, 00:18)  В Оси есть функции disable_context_switch/enable_context_switch, которые реализованы через запрет/разрешение прерываний. А как они должны реализовываться, если делать без запрета прерываний (через маскировку Осевых уровней)? Да. Только там ещё много чего надо будет учесть. Цитата(_Артём_ @ May 7 2012, 00:18)  И как должен быть сконфигурён ContextSwitcher_ISR? Должен "сидеть" один на самом низшем уровне прерываний? Да. Он работает исходя из предположения, что он прерывает основной поток выполнения.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|