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 のデータシートを見る必要があるのではないか。