提交 a966dd3c 编写于 作者: wzyy2's avatar wzyy2

[bsp]add gdb support for BBB

上级 fd6ef4b2
......@@ -16,6 +16,10 @@
#include <rtthread.h>
#include <components.h>
#ifdef RT_USING_GDB
#include <gdb_stub.h>
#endif
int rt_application_init()
{
/* do component initialization */
......@@ -23,6 +27,10 @@ int rt_application_init()
#ifdef RT_USING_NEWLIB
libc_system_init(RT_CONSOLE_DEVICE_NAME);
#endif
#ifdef RT_USING_GDB
gdb_set_device("uart4");
gdb_start();
#endif
return 0;
}
......@@ -338,6 +338,42 @@ static void config_pinmux(void)
#endif
}
static int am33xx_putc_poll(struct rt_serial_device *serial, char c)
{
struct am33xx_uart* uart;
RT_ASSERT(serial != RT_NULL);
uart = (struct am33xx_uart *)serial->parent.user_data;
while (!(UART_LSR_REG(uart->base) & 0x20));
UART_THR_REG(uart->base) = c;
return 1;
}
static int am33xx_getc_poll(struct rt_serial_device *serial)
{
int ch;
struct am33xx_uart* uart;
RT_ASSERT(serial != RT_NULL);
uart = (struct am33xx_uart *)serial->parent.user_data;
ch = -1;
while(!(UART_LSR_REG(uart->base) & 0x01));
ch = UART_RHR_REG(uart->base) & 0xff;
return ch;
}
static const struct rt_uart_ops am33xx_gdb_ops =
{
am33xx_configure,
am33xx_control,
am33xx_putc_poll,
am33xx_getc_poll,
};
int rt_hw_serial_init(void)
{
struct serial_configure config;
......@@ -447,17 +483,17 @@ int rt_hw_serial_init(void)
config.invert = NRZ_NORMAL;
config.bufsz = RT_SERIAL_RB_BUFSZ;
serial4.ops = &am33xx_uart_ops;
serial4.ops = &am33xx_gdb_ops;
serial4.config = config;
/* enable RX interrupt */
UART_IER_REG(uart4.base) = 0x01;
UART_IER_REG(uart4.base) = 0x00;
/* install ISR */
rt_hw_interrupt_install(uart4.irq, am33xx_uart_isr, &serial4, "uart4");
rt_hw_interrupt_control(uart4.irq, 0, 0);
rt_hw_interrupt_mask(uart4.irq);
/* register UART4 device */
rt_hw_serial_register(&serial4, "uart4",
RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX,
RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_STREAM,
&uart4);
#endif
......
......@@ -2,6 +2,12 @@
#ifndef __RTTHREAD_CFG_H__
#define __RTTHREAD_CFG_H__
// <section name="RT_USING_GDB" description="Gdb Stub for rtt" default="true" >
//#define RT_USING_GDB
//#define RT_GDB_DEBUG
#define RT_GDB_ICACHE
// </section>
// <RDTConfigurator URL="http://www.rt-thread.com/eclipse">
// <integer name="RT_NAME_MAX" description="Maximal size of kernel object name length" default="6" />
......
......@@ -23,7 +23,7 @@ elif CROSS_TOOL == 'iar':
if os.getenv('RTT_EXEC_PATH'):
EXEC_PATH = os.getenv('RTT_EXEC_PATH')
BUILD = 'release'
BUILD = 'debug'
if PLATFORM == 'gcc':
# toolchains
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册