|
|
 |
Ответов
|
Jun 15 2007, 12:23
|

Знающий
   
Группа: Свой
Сообщений: 943
Регистрация: 6-07-04
Из: Санкт-Петербург
Пользователь №: 274

|
Нет там никакой ошибки, вы просто плохо знакомы с компилятором. С30 для всех функций которые вызываются по указателю создает таблицу переходов в начале памяти программ (т.е. где адрес заведомо меньше 2^16-1) Скомпилируйте пример и посмотрите. В первом релизе была другая ошибка из-за которой возникал exception при первом переключении контекста, поэтому если качали давно, скачайте новый. И еще, может интересно будет: http://www.pic24.ru/uCOS/uCOS_PIC24_dsPIC.pdfhttp://www.pic24.ru/uCOS/uCOS_PIC24_dsPIC.rar
|
|
|
|
|
Jun 19 2007, 09:19
|
Участник

Группа: Участник
Сообщений: 15
Регистрация: 17-08-06
Пользователь №: 19 633

|
Цитата(Alex B._ @ Jun 15 2007, 16:23)  С30 для всех функций которые вызываются по указателю создает таблицу переходов в начале памяти программ (т.е. где адрес заведомо меньше 2^16-1) Скомпилируйте пример и посмотрите. Спасибо за ответ Alex. Я посмотрел, nо не поумнел. Вот код из вашего примерa: / //////////////////////////////////////////////////////////////////////////////////////////////////// int main (void) 57: {[font=Courier New]
00470 FA0002 lnk #0x2
58: unsigned char errc; 59: 60: OSInit(); // uCOS-II init
00472 0211AE call 0x0011ae 00474 000000 nop
61: 62: // Create start task, that creates all other tasks and events 63: 64: OSTaskCreateExt(AppStartTask, // Create application start task
00476 200030 mov.w #0x3,0x0000 ;OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR 00478 781F80 mov.w 0x0000,[0x001e++] 0047A EB1F80 clr.w [0x001e++] ;(void *)0, 0047C 200806 mov.w #0x80,0x000c ;APP_TASK_START_STK_SIZE 0047E 200007 mov.w #0x0,0x000e 00480 213265 mov.w #0x1326,0x000a ;&AppStartTaskStk[APP_TASK_START_STK_SIZE - 1] 00482 200054 mov.w #0x5,0x0008 ;APP_TASK_START_PRIO 00484 784184 mov.b 0x0008,0x0006 00486 212282 mov.w #0x1228,0x0004 ;&AppStartTaskStk[0] 00488 EB0080 clr.w 0x0002 0048A 204B00 mov.w #0x4b0,0x0000 ;AppStartTask!!! 0x4b0 = реальный адрес, не таблица 0048C 0221EC call 0x0021ec 0048E 000000 nop
65: (void *)0, // Appl start task parameter 66: (OS_STK *)& AppStartTaskStk[0], // Top of task stack pointer 67: APP_TASK_START_PRIO, // Prioriity 68: APP_TASK_START_PRIO, // Task ID - should be the same as priority 69: (OS_STK *)&AppStartTaskStk[APP_TASK_START_STK_SIZE - 1], // Bottom of task stack pointer 70: APP_TASK_START_STK_SIZE, // Stack size 71: (void *)0, // Supplied memory location 72: OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR); // Options
/////////////////////////////////////////////////////////////////////////////////////////////////////
106: __task static void AppStartTask (void *p_arg) 107: {
004B0 FA0002 lnk #0x2
108: unsigned char errc; 109: 110: // Setup RTOS timer 111: 112: T2CON_bit.TCS = 0; // Clock source - internal
004B2 A92110 bclr.b 0x0110,#1
..... ///////////////////////////////////////////////////////////////////////////////////////////////////// 290: INT8U OSTaskCreateExt (void (*task)(void *p_arg), 291: void *p_arg, 292: OS_STK *ptos, 293: INT8U prio, 294: INT16U id, 295: OS_STK *pbos, 296: INT32U stk_size, 297: void *pext, 298: INT16U opt) 299: {
021EC 4787E8 add.w 0x001e,#8,0x001e 021EE BE9F88 mov.d 0x0010,[0x001e++] 021F0 BE9F8A mov.d 0x0014,[0x001e++] 021F2 BE9F8C mov.d 0x0018,[0x001e++] 021F4 781F8E mov.w 0x001c,[0x001e++] 021F6 780600 mov.w 0x0000,0x0018 ;AppStartTask -> W12 021F8 780581 mov.w 0x0002,0x0016 021FA 780502 mov.w 0x0004,0x0014 021FC 9FEFC3 mov.b 0x0006,[0x001e-20] 021FE 780684 mov.w 0x0008,0x001a 02200 780705 mov.w 0x000a,0x001c 02202 BE0406 mov.d 0x000c,0x0010 ...... 325: psp = OSTaskStkInit(task, p_arg, ptos, opt); /* Initialize the task's stack */
0225C 97B19F mov.w [0x001e-30],0x0006 0225E 78010A mov.w 0x0014,0x0004 02260 78008B mov.w 0x0016,0x0002 02262 78000C mov.w 0x0018,0x0000 ;W12 -> task 02264 02071A call 0x00071a
Никакой таблици я не вижу и адрес на task идёт только через 2 байты.
Сообщение отредактировал jezo - Jun 19 2007, 09:22
|
|
|
|
Сообщений в этой теме
jezo Ошибка в порте uC/OS для dsPIC33 Jun 15 2007, 08:36 Newegor Пытаюсь первый раз собрать ось по dsPIC30F6014A, н... Aug 8 2007, 08:31 Alex B._ Newegor
не знаю в чем у вас может быть проблема...... Aug 8 2007, 12:26 jezo Цитата(Alex B._ @ Aug 8 2007, 16:26) 2jez... Aug 9 2007, 11:15 Newegor да действительно ругается на __task, если удалить... Aug 8 2007, 12:41 Alex B._ компилятор-то какой?
__task определен дефайном ка... Aug 8 2007, 19:22 Newegor Разобрался! При портировании под другой пик, я... Aug 9 2007, 05:45 Alex B._ Только используйте аккуратно - в этом порте есть б... Aug 9 2007, 06:56 Newegor И еще вопрос, стоит ли обратить внимание на вот эт... Aug 9 2007, 07:12 Alex B._ это вы опять чего-то с h-файлами намудрили... Нет ... Aug 9 2007, 09:01 Alex B._ >> Да, таблицa переходов есть, но я не вижу ... Aug 9 2007, 12:51 jezo Цитата(Alex B._ @ Aug 9 2007, 16:51) ... Aug 9 2007, 13:30
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|