1. OS_TASK_IDLE_STK_SIZE - это размер стэка для задачи IDLE, задачи которая есть всегда и выполняется во-время отсутсвия в очереди других процессов на выполнение. Строка OSTaskStkSize = OS_TASK_IDLE_STK_SIZE следовательно означает, что у вашего таска будет такой же размер стэка, что и у задачи IDLE.
Скорее всего после OSInit() в вашем примере следует строка OSTaskCreate() в которую передается OSTaskStkSize в качестве параметра.
Я предпологаю, что OSTaskStkSizeHard = OS_TASK_IDLE_STK_SIZE_HARD определяет тотже параметр, только для систем жесткого реального времени (возможно UCOS-II имеет какой-то дефайн для работы в режиме HARD REALTIME)
2-3. Как написано в книге OSInit() создает два таска (который IDLE, и для сбора статистики) , OSStart() запускает диспетчер. Я думаю инициализацию МК можно сделать и до OS_Init(), но вот прерывания нужно разрешить до OS_Start(), т.к. после операционка улетит на диспетчер.
4. Проще оставить тот ISR на ассмеблере добавив туда call на ф-ию на Си, и в этой ф-ии осуществить всю необходимую логику для обработки прерывания...
Цитата(Ember @ Sep 26 2005, 14:16)
Решил освоить uCOS-II. Возникло пару вопросов в ключевых моментах.
1. В примере для АВР есть такие строки. Не пойму логики зачем это ?
OSTaskStkSize = OS_TASK_IDLE_STK_SIZE; // ?
OSTaskStkSizeHard = OS_TASK_IDLE_STK_SIZE_HARD; // ?
OSInit();
2. Где правильнее всего инициализировать МК ? Перед OSInit(), перед
OSStart() или гдето в потоке ?
3. Когда разрешать прерывания ? Как только запустил тиковый таймер ?
4. Как корректно вызвать OSTimeTick() ?
В доке написано так:
void OSTickISR(void)
{
Сохранить регистры процессора;
Вызов OSIntEnter() или непосредственное увеличение OSIntNesting;
Вызов OSTimeTick();
Вызов OSIntExit();
Восстановление регистров процессора;
Выполнение команды возврата из прерывания;
}
Меня интересует какие функции вызывать для сохранения и востановления регистров. В примере этот участок кода на асме и вызываются макросы. А если я на Си пишу обработчик ?
Поделитесь проектиком тестовым плиз кто нить. Чтобы эти вопросы просмотреть.