Невозможно собрать проект atmel studio 6.2 с помощью команды printf
Я новичок в студии Atmel. Я создал новый проект GCC C Execute с устройством ATSAMV71Q21. В файле main.c добавлен printf, затем запустите сборку и получите кучу ошибки "неопределенная ссылка на (_write, _fsta и т. Д.)". Я попробовал пример "начала работы" Atmel, и он работал нормально. Как я могу исправить эту проблему? код и сообщение об ошибке. Спасибо за помощь.
#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): в функции '_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): ошибка: неопределенная ссылка на _sbrk
2 ответа
Я еще не знаю, как делать то, что вы хотите с голой C-программой (#include "sam.h"
), но я могу помочь вам, если вы захотите использовать ASF API.
Сначала вы должны сгенерировать C-ASF-проект. Затем вы добавляете стандартный последовательный ввод-вывод в свой проект с помощью мастера ASF. Правильно сконфигурируйте, и printf, put, ... распечатает программу терминала, подключенную к контроллеру.
#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.
Если вы просто хотите исправить эту ошибку ссылки, то вы можете добавить Стандартный последовательный ввод-вывод, перейдя в Мастер Project->ASF и прокрутив вниз до Стандартного последовательного ввода-вывода и нажав Добавить.
Хотя это исправит ошибку компоновщика, он, вероятно, не будет делать то, что вы ожидаете. Где вы пытаетесь распечатать? К вашему встроенному устройству подключен дисплей? Затем вам нужно будет использовать определенный драйвер для этого дисплея и связанный с ним API.
Если вы просто используете printf() в целях отладки при подключении к компьютеру, то я рекомендую использовать отладчик atmel для отслеживания выполнения кода, проверки переменных и т. Д.