2017-01-07 42 views
0

У меня есть интерес к написанию проекта планировщика/RTOS в XC8 с использованием расширенного MCU с доступом к стеке оборудования.Написание планировщика/RTOS в XC8

Я пытаюсь понять, как управлять созданием стеков программного обеспечения, чтобы каждый программный стек каждой задачи получал определенный диапазон в баре общего назначения.

Концептуально все это легко программировать в ASM, но я хочу иметь возможность писать программы на C и иметь стеки программного обеспечения для каждой задачи, которые будут помещены в правильное адресное пространство.

Кажется, что нет возможности создать отдельный стек программного обеспечения для определенного раздела кода или даже создать несколько стеков программного обеспечения - как это сделать?

Благодаря

+0

С 8-разрядным ПОС вы говорите не больше о 8 КБ и не много ОЗУ. Сколько места вы ожидаете для каждого стека – cup

+0

Sub 250 байт. Это позволит выполнить примерно 4 задачи для запуска. Кроме того, устройство имеет линейный доступ к штосселю, который можно использовать в стихах всех банковских переключений. – FourierFlux

ответ

0

переключение стека является обязанностью Teh планировщика, а не Дэ компилятор - так что вы не найдете опцию в компилятор для этого. Вы должны реализовать это в планировщике, который вы собираетесь писать, - это на самом деле большая часть того, что делает планировщик.

В RTOS контекст переключения включает в себя сохранение всех регистров, относящихся к одному потоку выполнения, и их замену на другой. Это включает в себя замену указателя стека - это то, как вы переключаете стеки между потоками. Переключатель контекста завершается при загрузке регистра счетчика программ, в результате которого происходит переход к последней точке выполнения нового потока (все реестры, включая указатель стека, восстановлены.

Коммутатор контекста обязательно включает по крайней мере небольшую количество кода ассемблера, но большая часть его все еще может быть записана на C, а сами задачи могут быть записаны на C .. Хорошее описание простого планировщика RTOS приведено в книге Жана Лаброса по μC/OS-II - freely available in PDF. Порт PIC18 μC/OS-II описан here с загрузкой.

+0

Спасибо, да, я понимаю. У меня возникла проблема с контролем того, где находится стек программного обеспечения с использованием XC8, и с использованием соответствующих переменных (все помещается в отдельные стеки, используя то, что он называл «скомпилированным стеком». Кроме того, у меня возникла проблема, регистры, используемые компилятором, или если можно направить их из определенной области памяти. В ASM все это будет довольно легко, но я чувствую, что руководство пользователя XC8 не дает достаточно подробностей о реализации компилятора. – FourierFlux

+0

книга, которую вы ссылаетесь можно найти здесь: https://www.micrium.com/books/ucosii/ (ссылка на вашу собственную домашнюю папку!) –

+0

@JonathanV: Спасибо, исправлена ​​ссылка. – Clifford

 Смежные вопросы

  • Нет связанных вопросов^_^