2015-10-14 2 views
0

Я новичок в Atmel Studio. Я создал новый проект GCC C Execute с устройством ATSAMV71Q21. В файле main.c добавлен printf, затем запустите сборку и получил кучу «неопределенной ссылки на ошибку (_write, _fsta и т. Д.). Я попытался использовать пример Atmel« get-started », и он работал нормально. Как я могу исправить эту проблему? код и сообщение об ошибке. Спасибо за помощь.Не удается построить atmel studio 6.2 проект с командой printf

#include "sam.h" 
#include <stdio.h> 
#include <stdbool.h> 

int main(void) 
{ 
    /* Initialize the SAM system */ 
    SystemInit(); 

    while (1) 
    { 
     printf("abc"); 
     //TODO:: Please write your application code 
    } 
} 

d:/atmel/atmel toolchain/arm gcc/native/4.8.1443/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/4.8.4/../../../../arm-none-eabi/lib/armv7e-m\libc.a(lib_a-sbrkr.o): In function '_sbrk_r': D:\Atmel\samv71_softpack_1.4_for_astudio_6_2\studio\Atmel\samv71_Xplained_Ultra\examples\test\test\Debug\sbrkr.c(1,1): error: undefined reference to '_sbrk'

ответ

0

Если вы просто хотите, чтобы исправить эту ошибку связи, то вы можете добавить стандартный последовательный ввод/вывод, перейдя в Проект-> Мастер ASF и прокрутка до стандартного последовательного ввода-вывода и нажмите «Добавить».

Хотя это исправит ошибку компоновщика, вероятно, не будет делать то, что вы ожидаете. Где вы пытаетесь напечатать? привязаны к вашему встроенному устройству? Затем вам нужно будет использовать конкретный драйвер для этого дисплея и связанный с ним api.

Если вы используете только Е() для отладки при подключении к ПК, то я рекомендую использовать Atmel отладчик следить за выполнением кода, проверить переменные и т.д.

1

Я еще не знаю как делать то, что вы хотите с помощью C-program с голой костью (#include "sam.h"), но я могу вам помочь, если вы хотите использовать API ASF.

Сначала необходимо сгенерировать проект C-ASF. Затем вы добавляете стандартный серийный ввод-вывод в проект с помощью мастера ASF. Настройте правильно, и printf, puts, ... будет печатать на терминальной программе, которая подключена к контроллеру.

#include <asf.h> 
#include "stdio_serial.h" 

static void configure_console(void) 
{ 
    const usart_serial_options_t uart_serial_options = { 
     .baudrate = CONF_UART_BAUDRATE, 
     .paritytype = CONF_UART_PARIT 
    }; 

    /* Configure console UART. */ 
    sysclk_enable_peripheral_clock(CONSOLE_UART_ID); 
    stdio_serial_init(CONF_UART, &uart_serial_options); 
} 

int main(void) 
{ 
    /* Insert system clock initialization code here (sysclk_init()). */ 
    sysclk_init(); 
    board_init(); 

    configure_console(); 

    while (1) { 
     printf("abc"); 
    } 

    return 0; 
}  

Это работает на Arduino Due, который имеет контроллер SAM3X8E.

Смежные вопросы