ADICUP360 и CrossCore Embedded Studio - ошибка: нет источника, доступного для "_start () в 0x150" - PullRequest
0 голосов
/ 17 апреля 2019

Демонстрационные проекты ADuCM360 / ADICUP360 от https://wiki.analog.com/resources/eval/user-guides/eval-adicup360 работают нормально.Но если я попытаюсь создать ( build project -> debug as ) мой собственный проект, например, что-то вроде этого:

#include <sys/platform.h>

int main (int argc, char *argv[])
{

    /* Begin adding your custom code here */

    return 0;
}

Затем я получусообщение об ошибке:

Нет источника, доступного для "_start () в 0x150"

Когда я затем нажимаю кнопку Просмотр разборки , то я получаюследующий результат:

00000150:   bkpt    0x00ab
00000152:   ldr     r0, [pc, #192]  ; (0x214 <_start+200>)
00000154:   ldr     r1, [r0, #4]
00000156:   cmp     r1, #0
00000158:   beq.n   0x15e <_start+18>
0000015a:   ldr     r2, [pc, #212]  ; (0x230 <_start+228>)
0000015c:   str     r1, [r2, #0]
0000015e:   ldr     r1, [r0, #0]
00000160:   cmp     r1, #0
00000162:   bne.n   0x168 <_start+28>
00000164:   ldr     r1, [pc, #196]  ; (0x22c <_start+224>)
00000166:   str     r1, [r0, #0]
00000168:   ldr     r1, [r0, #8]
0000016a:   ldr     r2, [r0, #12]
0000016c:   cmp     r1, #0
0000016e:   beq.n   0x172 <_start+38>
00000170:   mov     sp, r1
00000172:   cmp     r2, #0
00000174:   beq.n   0x17a <_start+46>
00000176:   add.w   r10, r2, #256   ; 0x100
0000017a:   movs    r1, #0
0000017c:   mov     r11, r1
0000017e:   mov     r7, r1
00000180:   ldr     r0, [pc, #148]  ; (0x218 <_start+204>)
00000182:   ldr     r2, [pc, #152]  ; (0x21c <_start+208>)
00000184:   subs    r2, r2, r0
00000186:   bl      0x41c <memset>
0000018a:   bl      0x6c0 <initialise_monitor_handles>
0000018e:   movs    r0, #21
00000190:   ldr     r1, [pc, #148]  ; (0x228 <_start+220>)
00000192:   bkpt    0x00ab
00000194:   ldr     r1, [pc, #144]  ; (0x228 <_start+220>)
00000196:   ldr     r1, [r1, #0]
00000198:   movs    r0, #0
0000019a:   push    {r0}
0000019c:   ldrb    r3, [r1, #0]
0000019e:   adds    r1, #1
000001a0:   cmp     r3, #0
000001a2:   beq.n   0x1d0 <_start+132>
000001a4:   cmp     r3, #32
000001a6:   beq.n   0x19c <_start+80>
000001a8:   cmp     r3, #34 ; 0x22
000001aa:   beq.n   0x1b0 <_start+100>
000001ac:   cmp     r3, #39 ; 0x27
000001ae:   bne.n   0x1b4 <_start+104>
000001b0:   movs    r2, r3
000001b2:   b.n     0x1b8 <_start+108>
000001b4:   movs    r2, #32
000001b6:   subs    r1, #1
000001b8:   push    {r1}
000001ba:   adds    r0, #1
000001bc:   ldrb    r3, [r1, #0]
000001be:   adds    r1, #1
000001c0:   cmp     r3, #0
000001c2:   beq.n   0x1d0 <_start+132>
......... ...

Как я могу это исправить?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2019

Лучший и простой способ начать - взять рабочий пример (например, blink project), удалить содержимое основной функции и добавить туда свой пользовательский код.

Из вашего комментария я понимаю, что вы отлаживаете код,Могу я узнать 1. Каково поведение, если сделан шаг от точки останова?2. Какое поведение в свободном беге?

0 голосов
/ 18 апреля 2019

Это запуск среды выполнения C - возможно, предоставленный вашему проекту в виде объектного кода, следовательно, без исходного кода.

Вам нужна отладка исходного кода исходного кода?Если это так, вам нужно включить исходный код (который в любом случае вполне может быть в ассемблерном коде, если он вообще вам доступен).

Установите точку останова на или на main() и продолжайте до тех пор, пока вы не наберете код, для которого можете предоставить источник.

Вопрос в том, почему у вас естьинструкция точки останова (мягкая точка останова) на _start()?Вы установили это или ваш отладчик автоматически вставил его?

В руководстве по компилятору CrossCore приведены подробные сведения о запуске системы во время запуска системы, но одним из часто задаваемых вопросов является * 1013.* «Где находится документация по времени выполнения системы?» .

...