реклама на сайте
подробности

 
 
17 страниц V  « < 14 15 16 17 >  
Reply to this topicStart new topic
> Выпущена scmRTOS 4.0., Ура, товарищи! :)
AHTOXA
сообщение May 4 2012, 12:41
Сообщение #226


фанат дивана
******

Группа: Свой
Сообщений: 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() на место нужного вектора.

Мне кажется, что это достаточно удобно. Если не будет замечаний, то я запилю это в транк.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
ReAl
сообщение May 4 2012, 17:52
Сообщение #227


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



На мой взгляд — нормально. Лучше очередного #define.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение May 5 2012, 05:21
Сообщение #228


фанат дивана
******

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



Окей, запилил (rev 539) sm.gif

Пример использования будет на днях.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
ReAl
сообщение May 5 2012, 08:29
Сообщение #229


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Думаю, отдельный пример не нужен, просто в каком-то из существующих реализовать на другом таймере и описать это в комментариях к примерам. Как прерывание SPM либо компаратора для переключения контекстов в примерах AVR.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение May 5 2012, 08:46
Сообщение #230


фанат дивана
******

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



Да, я так и хотел. Просто как раз сейчас готовлю примеры для F2xx, вот заодно и приурочу.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение May 5 2012, 20:52
Сообщение #231


фанат дивана
******

Группа: Свой
Сообщений: 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 побеждает! sm.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 5 2012, 21:32
Сообщение #232


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(AHTOXA @ May 5 2012, 23:52) *
для достижения такого результата пришлось задействовать LTO


LTO - это плохо?

В папке 2-Message\prj ничего нет. Скрипт из 1-EventFlag\prj будет работать с USE_LTO=YES?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение May 6 2012, 05:30
Сообщение #233


фанат дивана
******

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



LTO - это тяжёлая артиллерия sm.gif
Скрипт везде одинаковый.

---
А если использовать svn, то ничего руками копировать не надо:
Заходим в нужную папку, командуем:
Код
svn co http://scmrtos.svn.sourceforge.net/svnroot/scmrtos/trunk/Samples/CortexM3/GCC/STM32F2XX STM32F2XX

Создаётся папка STM32F2XX с примерами. Заходим в неё, командуем:
Код
switch.bat

, или
Код
sh ./switch.sh

, и всё появляется само sm.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 6 2012, 15:41
Сообщение #234


Гуру
******

Группа: Свой
Сообщений: 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.
Go to the top of the page
 
+Quote Post
VslavX
сообщение May 6 2012, 16:31
Сообщение #235


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(_Артём_ @ May 6 2012, 18:41) *
Я где-то уже спрашивал, но не помню где...
Какой лучше клиент взять под WinXp?
svn ведь не идёт в комплекте к windows.

Мне нравится TortoiseSVN - удобно интегрируется прямо в Explorer.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение May 6 2012, 16:35
Сообщение #236


фанат дивана
******

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



Для команд, которые я привёл, достаточно собственно svn. А если нужно что-то графическое - то tortoise svn. Есть ещё RapidSVN, он слабоват, но зато работает и под виндой и под линуксом.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 6 2012, 18:18
Сообщение #237


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Не разъяснит ли кто-нибудь такой момент (интересуюсь для углубления понимания):
В Оси есть функции disable_context_switch/enable_context_switch, которые реализованы через запрет/разрешение прерываний.
А как они должны реализовываться, если делать без запрета прерываний (через маскировку Осевых уровней)?
И как должен быть сконфигурён ContextSwitcher_ISR? Должен "сидеть" один на самом низшем уровне прерываний?
Спасибо.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение May 8 2012, 11:59
Сообщение #238


фанат дивана
******

Группа: Свой
Сообщений: 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? Должен "сидеть" один на самом низшем уровне прерываний?

Да. Он работает исходя из предположения, что он прерывает основной поток выполнения.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 8 2012, 20:09
Сообщение #239


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(AHTOXA @ May 8 2012, 14:59) *
Да. Он работает исходя из предположения, что он прерывает основной поток выполнения.

Расточительно как-то выглядит, если у проца уровней мало (stm8, xmega): низший исключительно для ContextSwitcher, средний - OS_SystemTimer_ISR и остальные ОСевые прерывания, высший - для вне ОСевых. Тесно.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение May 8 2012, 20:30
Сообщение #240


фанат дивана
******

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



SystemTimer тоже можно на низший. И другие малоприоритетные. Смысл в том, чтобы ContextSwitcher не прерывал какое-либо другое прерывание.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

17 страниц V  « < 14 15 16 17 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 01:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.0149 секунд с 7
ELECTRONIX ©2004-2016