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

 
 
 
Reply to this topicStart new topic
MALLOY2
сообщение Aug 7 2009, 13:24
Сообщение #1


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Запускаю юкос на 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 приоритета (а его то нету smile.gif ) со всеми вытекающими !. Если в строке 5 поставить брекпоинт и OSPrioHighRdy присвоить руками 63 то OSStartHighRdy(); честно переключает на OSTaskIdle и там крутится пока не придет время переключения после чего система опять падает если руками не править.

уже 3 час вожусь где грабли то ?
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Aug 7 2009, 14:56
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(MALLOY2 @ Aug 7 2009, 17:24) *
уже 3 час вожусь где грабли то ?

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


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение Aug 7 2009, 15:00
Сообщение #3


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Все разобрался, дело было в следующем тип INT8U был обьявлен как char вместо unsigned char, когда начал все считать на калькуляторе все всплыло smile.gif
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th June 2025 - 20:17
Рейтинг@Mail.ru


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