mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-09-26 06:43:58 +08:00
[bsp]add gdb support for BBB
This commit is contained in:
@@ -16,6 +16,10 @@
|
|||||||
#include <rtthread.h>
|
#include <rtthread.h>
|
||||||
#include <components.h>
|
#include <components.h>
|
||||||
|
|
||||||
|
#ifdef RT_USING_GDB
|
||||||
|
#include <gdb_stub.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
int rt_application_init()
|
int rt_application_init()
|
||||||
{
|
{
|
||||||
/* do component initialization */
|
/* do component initialization */
|
||||||
@@ -23,6 +27,10 @@ int rt_application_init()
|
|||||||
#ifdef RT_USING_NEWLIB
|
#ifdef RT_USING_NEWLIB
|
||||||
libc_system_init(RT_CONSOLE_DEVICE_NAME);
|
libc_system_init(RT_CONSOLE_DEVICE_NAME);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef RT_USING_GDB
|
||||||
|
gdb_set_device("uart4");
|
||||||
|
gdb_start();
|
||||||
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -338,6 +338,42 @@ static void config_pinmux(void)
|
|||||||
#endif
|
#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)
|
int rt_hw_serial_init(void)
|
||||||
{
|
{
|
||||||
struct serial_configure config;
|
struct serial_configure config;
|
||||||
@@ -447,17 +483,17 @@ int rt_hw_serial_init(void)
|
|||||||
config.invert = NRZ_NORMAL;
|
config.invert = NRZ_NORMAL;
|
||||||
config.bufsz = RT_SERIAL_RB_BUFSZ;
|
config.bufsz = RT_SERIAL_RB_BUFSZ;
|
||||||
|
|
||||||
serial4.ops = &am33xx_uart_ops;
|
serial4.ops = &am33xx_gdb_ops;
|
||||||
serial4.config = config;
|
serial4.config = config;
|
||||||
/* enable RX interrupt */
|
/* enable RX interrupt */
|
||||||
UART_IER_REG(uart4.base) = 0x01;
|
UART_IER_REG(uart4.base) = 0x00;
|
||||||
/* install ISR */
|
/* install ISR */
|
||||||
rt_hw_interrupt_install(uart4.irq, am33xx_uart_isr, &serial4, "uart4");
|
rt_hw_interrupt_install(uart4.irq, am33xx_uart_isr, &serial4, "uart4");
|
||||||
rt_hw_interrupt_control(uart4.irq, 0, 0);
|
rt_hw_interrupt_control(uart4.irq, 0, 0);
|
||||||
rt_hw_interrupt_mask(uart4.irq);
|
rt_hw_interrupt_mask(uart4.irq);
|
||||||
/* register UART4 device */
|
/* register UART4 device */
|
||||||
rt_hw_serial_register(&serial4, "uart4",
|
rt_hw_serial_register(&serial4, "uart4",
|
||||||
RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX,
|
RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_STREAM,
|
||||||
&uart4);
|
&uart4);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,12 @@
|
|||||||
#ifndef __RTTHREAD_CFG_H__
|
#ifndef __RTTHREAD_CFG_H__
|
||||||
#define __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">
|
// <RDTConfigurator URL="http://www.rt-thread.com/eclipse">
|
||||||
|
|
||||||
// <integer name="RT_NAME_MAX" description="Maximal size of kernel object name length" default="6" />
|
// <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'):
|
if os.getenv('RTT_EXEC_PATH'):
|
||||||
EXEC_PATH = os.getenv('RTT_EXEC_PATH')
|
EXEC_PATH = os.getenv('RTT_EXEC_PATH')
|
||||||
|
|
||||||
BUILD = 'release'
|
BUILD = 'debug'
|
||||||
|
|
||||||
if PLATFORM == 'gcc':
|
if PLATFORM == 'gcc':
|
||||||
# toolchains
|
# toolchains
|
||||||
|
|||||||
Reference in New Issue
Block a user