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

 
 
 
Reply to this topicStart new topic
> Порт для Cortex-M1, GCC, Интересует кого? Для 1986ВЕ1Т делал, полгода юзаю - полет нормальный
injen-d
сообщение Nov 8 2014, 22:32
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 91
Регистрация: 10-10-07
Из: Воронежа
Пользователь №: 31 250



Выкладываю.
Прикрепленный файл  scmRTOS.4.00.Cortex_M1.GCC.7z ( 18.31 килобайт ) Кол-во скачиваний: 108



ОПИСАНИЕ

scmRTOS v4
Cortex-M1
GCC

Что было изменено относительно порта для Cortex-M3:

1. Замена неподдерживаемых инструкций.
Файл OS_Target_asm.S, функция PendSV_Handler().
Cortex-M1 не поддерживает инструкции STMDB R0!, {R4-R11} и LDMIA R0!, {R4-R11}.
Инструкции заменены на соответствующие последовательности поддерживаемых инструкций.

2. Добавлена возможность выбора в качестве системного таймера TIMER1 или SystemTimer.
Поскольку порт делался конкретно под 1986ВЕ1Т, а в нем присутствует бага в железе,
из-за которой в большинстве случаев невозможно корректно настроить частоту SystemTimer,
то пришлось в качестве системного использовать TIMER1.

В файл scmRTOS_CONFIG.h был добавлен макрос scmRTOS_USE_SYSTICKTIMER.
В файлах:
OS_Kernel.h,
OS_Target_asm.S,
OS_Target_cpp.cpp,
scmRTOS_TARGET_CFG.h
добавлены директивы условной компиляции, позволяющие переключаться между TIMER1 или SystemTimer.
Инициализация TIMER1 должна быть произведена до запуска ОС.

3. Добавлена возможность использования уникальной структуры _reent для каждого процесса.
Это позволяет сделать реентерабельными функции стандартной библиотеки, но приведет к
дополнительному расходу ОЗУ. Чтобы уменьшить дополнительный расход ОЗУ на хранение
структур _reent, рекомендуется добавить ключ компиляции -D_WANT_REENT_SMALL

Для включения данной опции, в файл scmRTOS_CONFIG.h был добавлен макрос scmRTOS_REENT_STDLIB.
В файлах:
OS_Kernel.h,
OS_Kernel.cpp,
OS_Target.h
добавлены директивы условной компиляции.

Пример объявления процессов с этой опцией:

Код
#if scmRTOS_REENT_STDLIB==1
        _reent reent_struct_USB                 =_REENT_INIT(reent_struct_USB);
        _reent reent_struct_terminal            =_REENT_INIT(reent_struct_terminal);
        _reent reent_struct_measurement    =_REENT_INIT(reent_struct_measurement);
        TProc_USB            Proc_USB(&reent_struct_USB);
        TProc_terminal        Proc_terminal(&reent_struct_terminal);
        TProc_measurement    Proc_measurement(&reent_struct_measurement);
    #else
        TProc_USB            Proc_USB;
        TProc_terminal        Proc_terminal;
        TProc_measurement    Proc_measurement;
    #endif    //scmRTOS_REENT_STDLIB==1


Так как в своем проекте я активно использовал стандартную библиотеку, то решил добавить в ОС
эту опцию, не дожидаясь когда появятся глюки в многопоточных приложениях.
В реальной полезности опции до конца не уверен. По крайней мере, с ней все работает.
Данная опция не имеет непосредственного отношения к предлагаемому порту ОС.
Если никому не интересно, могу вырезать это с корнями.


--------------------
- Бендер, ты же робот, зачем тебе пить пиво?
- Незачем! Я могу бросить в любой момент!
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Nov 9 2014, 07:55
Сообщение #2


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



QUOTE (injen-d @ Nov 9 2014, 01:32) *
Если кому интересно, выложу. Надо только в нормальный вид привести.

..интересно конечно, выложите если не жалко.
Если здоровье позволит - самому скоро 1986ВЕ1Т пробовать на зуб.


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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