Перейти к содержанию
    

При запуске OS проц улетает

Гость MALLOY2

Запускаю юкос на TI 6474

 

Взял самый примитивный код

 

void main (void)
{
    OSInit(); 
    OSStart();             
    printf("FATAL return from OSStart");
}

 

При таком коде операционка должна крутится все время в Idle. Но проц улетает в ексепшен. Сначала грешил на порт но потом начал разбираться и наступил на какие то грабли.

 

Разберательстава привели к ....

 

1 void  OSStart (void)
2 {
3    if (OSRunning == OS_FALSE) {
4        OS_SchedNew();                               /* Find highest priority's task priority number   */
5        OSPrioCur     = OSPrioHighRdy;
6        OSTCBHighRdy  = OSTCBPrioTbl[OSPrioHighRdy]; /* Point to highest priority task ready to run    */
7        OSTCBCur      = OSTCBHighRdy;
8        OSStartHighRdy();                            /* Execute target specific code to start task     */
9    }
10}

 

в строке 4 вызывается OS_SchedNew(); кооторая меняет OSPrioHighRdy (как по мне эта функция должна возвращать значение а не менять глобальную переменную) так вот после вызова OSPrioHighRdy == 0, соответственно далее из таблицы OSTCBPrioTbl выбирает указатель 0 приоритета (а его то нету :) ) со всеми вытекающими !. Если в строке 5 поставить брекпоинт и OSPrioHighRdy присвоить руками 63 то OSStartHighRdy(); честно переключает на OSTaskIdle и там крутится пока не придет время переключения после чего система опять падает если руками не править.

 

уже 3 час вожусь где грабли то ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

уже 3 час вожусь где грабли то ?

Посмотрите, может у вас что с размещением таблицы OSUnMapTbl, объявленной как const.

Посмотрите, что по этим адресам лежат корретные значения таблицы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость MALLOY2

Все разобрался, дело было в следующем тип INT8U был обьявлен как char вместо unsigned char, когда начал все считать на калькуляторе все всплыло :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...