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

 
 
> scmRTOS. Порт под AT91SAM7X, у кого есть уже отлаженный?
LessNik
сообщение Jan 9 2008, 12:23
Сообщение #1


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

Группа: Свой
Сообщений: 107
Регистрация: 6-09-06
Из: Москва
Пользователь №: 20 118



Привет всем.
Решил поиграться с scmRTOS. Скачал порт под арм, но поддержки AT91Sam7x... там не было. Дописал часть сам, но ОС работает как-то не стабильно. Может где-то ошибся...
Может кто-нибудь поделится уже отлаженным портом?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Waso
сообщение Jun 19 2008, 07:31
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 268
Регистрация: 4-11-05
Пользователь №: 10 470



C макросом я пока париться не стал.
А со стеком вот что прикрутил:
Код
        template<TPriority pr, word stack_size>
        class process : public TBaseProcess
        {
        public:
            INLINE process() : TBaseProcess(&Stack[stack_size/sizeof(TStackItem)], pr, (void (*)())Exec) { }
            OS_PROCESS static void Exec();
dword Used_Stack_Size() {return (dword)(StackPointer - Stack);};
Код
        private:
            TStackItem Stack[stack_size/sizeof(TStackItem)];
        };
Потом в IdleProcessUserHook() использовал:
Код
    debug_printf("EMAC stack %d  ",DataShower_Proc.Used_Stack_Size());
    debug_printf("DBG stack %d  ",DBG_Output_Proc.Used_Stack_Size());
Как я понимаю, когда выполняется идл-процесс, окружение остальных процессов находится в их стеках и это какраз подходящее время чтобы узнать использованный размер. Поправте если не прав. А вообсче работает. yeah.gif
Как насчет прикрутить нечто подобное в исходник? smile.gif

И еще одно пожелание - ИМХО, удобнее задавать (дефайнить) тип используемого процессора прямо в файле device.h. Или вынести в конфиг.аш А лазить по настройкам проекта для этого - ИМХО неудобно.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 19 2008, 08:20
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Waso @ Jun 19 2008, 10:31) *
Как я понимаю, когда выполняется идл-процесс, окружение остальных процессов находится в их стеках и это какраз подходящее время чтобы узнать использованный размер. Поправте если не прав. А вообсче работает.
Да. Но если между переключениями контекста процесс разместил на стеке локальную переменную (пусть будет массив smile.gif ) и успел ее уничтожить до следующего переключения, то занимаемая этой переменной память учтена не будет. Один из возможных вариантов отлова такой ситуации - просматривать стек от вершины и искать первое ненулевое слово. Или в конструкторе процесса заполнить стек какой-то константой и искать первое слово, не равное этой константе.
Цитата(Waso @ Jun 19 2008, 10:31) *
И еще одно пожелание - ИМХО, удобнее задавать (дефайнить) тип используемого процессора прямо в файле device.h. Или вынести в конфиг.аш А лазить по настройкам проекта для этого - ИМХО неудобно.
Есть такое. Вот в EWAVR сделано грамотно - выбор типа процессора в настройках проекта заставляет оболочку подставлять соответствующий символ в командную строку компилятора и ассемблера и по этому символу подставляется нужный ioXXX.h в io.h. Здесь было реализовано то же самое, но вручную. При сборке с помощью make или scons это не представляет проблемы. Локализовать это определение в одно место вместо двух (ассемблер, компилятор) - мысль неплохая, надо ее подумать.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- LessNik   scmRTOS. Порт под AT91SAM7X   Jan 9 2008, 12:23
- - Сергей Борщ   Цитата(LessNik @ Jan 9 2008, 14:23) Решил...   Jan 9 2008, 12:45
|- - LessNik   Цитата(Сергей Борщ @ Jan 9 2008, 15:45) А...   Jan 9 2008, 15:36
|- - Сергей Борщ   Цитата(LessNik @ Jan 9 2008, 17:36) Принц...   Jan 9 2008, 16:19
|- - LessNik   ЦитатаЭто тоже уже дописано в той версии, которая ...   Jan 10 2008, 05:33
|- - dxp   Цитата(LessNik @ Jan 10 2008, 11:33) Этот...   Jan 10 2008, 07:07
|- - LessNik   Цитата(dxp @ Jan 10 2008, 10:07) Нет, име...   Jan 10 2008, 11:46
|- - Сергей Борщ   Цитата(LessNik @ Jan 10 2008, 13:46) Спас...   Jan 10 2008, 12:36
|- - LessNik   Цитата(Сергей Борщ @ Jan 10 2008, 15:36) ...   Jan 11 2008, 10:03
|- - Сергей Борщ   Цитата(LessNik @ Jan 11 2008, 12:03) Что ...   Jan 11 2008, 11:20
|- - LessNik   Цитата(Сергей Борщ @ Jan 11 2008, 14:20) ...   Jan 11 2008, 13:32
- - Waso   Пересаживаюсь с FreeRTOS на scmRTOS. Проц AT91SAM7...   Jun 18 2008, 08:41
|- - Сергей Борщ   Цитата(Waso @ Jun 18 2008, 11:41) КодLoad...   Jun 18 2008, 14:33
- - Waso   Скажите, а у вас стек ниспадающий чтоле? 0_о Запол...   Jun 20 2008, 08:28
|- - Сергей Борщ   Цитата(Waso @ Jun 20 2008, 11:28) Скажите...   Jun 20 2008, 09:02
- - Waso   Ясно. Незнал, простите. Вобщем теперь реализация т...   Jun 20 2008, 09:32
- - Waso   После ручного сброса или сьема/подачи питания пере...   Jun 23 2008, 08:43
|- - Сергей Борщ   Цитата(Waso @ Jun 23 2008, 11:43) После р...   Jun 23 2008, 09:52
- - Waso   Дописал в инициализацию AT91C_BASE_PMC->PMC_PC...   Jun 23 2008, 11:14
- - Сергей Борщ   Цитата(Waso @ Jun 23 2008, 14:14) Дописал...   Jun 28 2008, 12:51


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 13:27
Рейтинг@Mail.ru


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