micro:bit用にnuttxをビルドできるか調査 その 005

シリアルドライバを調べる

各ボード毎(各チップ毎?)にシリアルドライバが用意されている。
ファイル名は [チップ名]_serial.cとなっている。
例として、nrf52_serial.c を見てみる。

/* This describes the state of the NRF52 UART0 port. */

#ifdef HAVE_UART0
static struct nrf52_dev_s g_uart0priv =
{
 .uartbase       = NRF52_UART0_BASE,
 .irq            = NRF52_IRQ_UART0,
 .rx_available   = false,
 .config         =
 {
   .baud         = CONFIG_UART0_BAUD,
   .parity       = CONFIG_UART0_PARITY,
   .bits         = CONFIG_UART0_BITS,
   .stopbits2    = CONFIG_UART0_2STOP,
#ifdef CONFIG_UART0_IFLOWCONTROL
   .iflow        = true,
#endif
#ifdef CONFIG_UART0_OFLOWCONTROL
   .oflow        = true,
#endif
 }
};

上記の、 NRF52_IRQ_UART0 は arch\arm\include\nrf52\nrf52_irq.h で定義されている。

#define NRF52_IRQ_UART0         (NRF52_IRQ_EXTINT+2)   /* UART/UARTE 0 */

NRF52_IRQ_EXTINTは arch\arm\include\nrf52\irq.h で定義されている。

#define NRF52_IRQ_EXTINT          (16) /* Vector 16: Vector number of the first external interrupt */

ということで、 NRF52_IRQ_UART0 は 18となる。
この数字はどこから来ているかって話。

上この中の、mdk\arm_startup_nrf52.s を見ると以下のようになっている。

__Vectors       DCD     __initial_sp              ; Top of Stack
               DCD     Reset_Handler
               DCD     NMI_Handler
               DCD     HardFault_Handler
               DCD     MemoryManagement_Handler
               DCD     BusFault_Handler
               DCD     UsageFault_Handler
               DCD     0                         ; Reserved
               DCD     0                         ; Reserved
               DCD     0                         ; Reserved
               DCD     0                         ; Reserved
               DCD     SVC_Handler
               DCD     DebugMon_Handler
               DCD     0                         ; Reserved
               DCD     PendSV_Handler
               DCD     SysTick_Handler

               ; External Interrupts
               DCD     POWER_CLOCK_IRQHandler
               DCD     RADIO_IRQHandler
               DCD     UARTE0_UART0_IRQHandler

この UARTE0_UART0_IRQHandler が 18行目になっているから
NRF52_IRQ_UART0 が 18となっているのだと思う。勘。

まとめ

Cortex-M4 のデータシートを見る必要があるのではないか。

いいなと思ったら応援しよう!