mirror of
git://projects.qi-hardware.com/ben-wpan.git
synced 2024-12-22 19:58:59 +02:00
atusb/fw: Introduce DEBUG flag
This flag can be used to enable debugging over uart. Currently only available for boards with the at90usb1287 chip. Signed-off-by: Josef Filzmaier <j.filzmaier@gmx.at>
This commit is contained in:
parent
ac710d0de4
commit
8c574484b8
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Makefile - Makefile of the ATUSB firmware
|
||||
# Makefile - Makefile of the ATUSB firmware
|
||||
#
|
||||
# Written 2010-2011, 2013 by Werner Almesberger
|
||||
# Copyright 2010-2011, 2013 by Werner Almesberger
|
||||
@ -13,11 +13,16 @@
|
||||
SHELL = /bin/bash
|
||||
|
||||
NAME = atusb
|
||||
DEBUG = false
|
||||
|
||||
CFLAGS = -g -mmcu=$(CHIP) -DBOOT_ADDR=$(BOOT_ADDR) \
|
||||
-Wall -Wextra -Wshadow -Werror -Wno-unused-parameter \
|
||||
-Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes
|
||||
|
||||
ifeq ($(DEBUG),true)
|
||||
CFLAGS += -DDEBUG
|
||||
endif
|
||||
|
||||
ifeq ($(NAME),rzusb)
|
||||
CHIP=at90usb1287
|
||||
CFLAGS += -DRZUSB -DAT86RF230
|
||||
@ -46,6 +51,9 @@ OBJS = atusb.o board.o board_app.o sernum.o spi.o descr.o ep0.o \
|
||||
BOOT_OBJS = boot.o board.o sernum.o spi.o flash.o dfu.o \
|
||||
dfu_common.o usb.o boot-atu2.o
|
||||
|
||||
ifeq ($(DEBUG),true)
|
||||
OBJS += uart.o
|
||||
endif
|
||||
|
||||
ifeq ($(NAME),rzusb)
|
||||
OBJS += board_rzusb.o
|
||||
|
@ -24,6 +24,10 @@
|
||||
#include "spi.h"
|
||||
#include "atusb/ep0.h"
|
||||
|
||||
#ifdef DEBUG
|
||||
#include "uart.h"
|
||||
#endif
|
||||
|
||||
|
||||
int main(void)
|
||||
{
|
||||
@ -35,6 +39,13 @@ int main(void)
|
||||
|
||||
/* now we should be at 8 MHz */
|
||||
|
||||
#ifdef DEBUG
|
||||
uart_init();
|
||||
static FILE atben_stdout = FDEV_SETUP_STREAM(uart_write_char, NULL,
|
||||
_FDEV_SETUP_WRITE);
|
||||
stdout = &atben_stdout;
|
||||
#endif
|
||||
|
||||
usb_init();
|
||||
ep0_init();
|
||||
#ifdef ATUSB
|
||||
|
@ -45,8 +45,15 @@
|
||||
#define HW_TYPE HW_TYPE_RZUSB
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG
|
||||
#include "uart.h"
|
||||
#include <stdio.h>
|
||||
#define debug(FORMAT,args...) printf(FORMAT,##args)
|
||||
#define error(FORMAT,args...) printf(FORMAT,##args)
|
||||
#else
|
||||
#define debug(...)
|
||||
#define error(...)
|
||||
#endif
|
||||
|
||||
|
||||
static const uint8_t id[] = { EP0ATUSB_MAJOR, EP0ATUSB_MINOR, HW_TYPE };
|
||||
|
64
atusb/fw/uart.c
Normal file
64
atusb/fw/uart.c
Normal file
@ -0,0 +1,64 @@
|
||||
/*
|
||||
* fw/uart.h - Functions needed for debugging over uart
|
||||
*
|
||||
* Code adapted from http://www.roboternetz.de/wissen/index.php/UART_mit_avr-gcc
|
||||
* and http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
|
||||
*
|
||||
* Published under the Creative Commons Share-Alike licence
|
||||
* https://creativecommons.org/licenses/by-sa/2.0/de/
|
||||
*
|
||||
* S. Salewski 2007
|
||||
*
|
||||
* Adapted by
|
||||
* Josef Filzmaier 2017
|
||||
*/
|
||||
|
||||
#include <avr/io.h>
|
||||
#include "uart.h"
|
||||
|
||||
#define USART_BAUD 38400UL
|
||||
#define F_CPU 8000000UL
|
||||
|
||||
#define Wait_USART_Ready() while (!(UCSR1A & (1<<UDRE1)))
|
||||
#define UART_UBRR (F_CPU/(16L*USART_BAUD)-1)
|
||||
|
||||
// initialize USART, 8N1 mode
|
||||
void
|
||||
uart_init(void)
|
||||
{
|
||||
/* TODO: Find a working configuration for uart for the atmega32u2 */
|
||||
#if CHIP == at90usb1287
|
||||
CLKPR = (1 << CLKPCE);
|
||||
CLKPR = 0; // clock prescaler == 0, so we have 16 MHz mpu frequency
|
||||
UBRR1 = UART_UBRR;
|
||||
UCSR1C = (1 << UCSZ10) | (1 << UCSZ11);
|
||||
UCSR1B = (1 << TXEN1);
|
||||
do
|
||||
{
|
||||
UDR1;
|
||||
}
|
||||
while (UCSR1A & (1 << RXC1));
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
int uart_write_char(char c, FILE* stream)
|
||||
{
|
||||
if (c == '\n'){
|
||||
uart_new_line();
|
||||
}
|
||||
else {
|
||||
Wait_USART_Ready();
|
||||
UDR1 = c;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
uart_new_line(void)
|
||||
{
|
||||
Wait_USART_Ready();
|
||||
UDR1 = '\r';
|
||||
Wait_USART_Ready();
|
||||
UDR1 = '\n';
|
||||
}
|
25
atusb/fw/uart.h
Normal file
25
atusb/fw/uart.h
Normal file
@ -0,0 +1,25 @@
|
||||
/*
|
||||
* fw/uart.h - Functions needed for debugging over uart
|
||||
*
|
||||
* Code adapted from http://www.roboternetz.de/wissen/index.php/UART_mit_avr-gcc
|
||||
* and http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
|
||||
*
|
||||
* Published under the Creative Commons Share-Alike licence
|
||||
* https://creativecommons.org/licenses/by-sa/2.0/de/
|
||||
*
|
||||
* S. Salewski 2007
|
||||
*
|
||||
* Adapted by
|
||||
* Josef Filzmaier 2017
|
||||
*/
|
||||
|
||||
#ifndef UART_H_
|
||||
#define UART_H_
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
void uart_init(void);
|
||||
int uart_write_char(char c, FILE* stream);
|
||||
void uart_new_line(void);
|
||||
|
||||
#endif /* UART_H_ */
|
Loading…
Reference in New Issue
Block a user