Пример #1
0
/*
 *  CPU例外ハンドラの設定
 */
void
define_exc(EXCNO excno, FP exchdr)
{
#ifndef VECTOR_IN_ROM
    arm_install_handler(excno,exchdr);
#endif /* VECTOR_IN_ROM */
}
Пример #2
0
/*
 *  ターゲットシステム依存の初期化
 */
void
sys_initialize()
{
    int i;

    init_vector();			/* SRAMのリマップ。LPC2388共通 */

    init_clock();			/* PLLの設定。システム固有 */

    init_uart0();			/* UART0の初期化。システム固有 */

    init_IRQ();				/* VICを初期化する。LPC2388共通 */

    		/* 必要なペリフェラルの電源を入れる(システム固有) */
			/* なお、UART0とTIMER3はLPC2388共通で必要 */
	PCONP |= 0x00800008;	/* bit3:UART0, bit23:TIMER3 */

			/* UART0のピンを設定 (LPC2388共通) */
	PINSEL0 &= ~0xF0;			/* bit 4-7だけをクリア */
	PINSEL0 |= 0x50;			/* UART入出力を割り当て */

    /*
     *  ARMのベクタテーブルへ割込みハンドラを登録(どのARMv4システムでも要求される)
     */
    arm_install_handler(IRQ_Number,IRQ_Handler);

    /*
     * Memory Acceleration Moduleの設定 ( NXP社 UM10211 chapter 7 )
     * Flashメモリのプリフェッチを使ってプログラム実行を高速化する
     */
    MAMCR = 0;		/* 念のためMAMをオフにする */
    MAMTIM = 4;		/* UM10211によれば、60MHz以上で動作するときは4に設定する */
    MAMCR = 2;		/* MAM機能をオンにする */

}
Пример #3
0
void dmx_init(void) {
	h3_gpio_fsel(dmx_data_direction_gpio_pin, GPIO_FSEL_OUTPUT);
	h3_gpio_clr(dmx_data_direction_gpio_pin);	// 0 = input, 1 = output

#ifdef LOCIG_ANALYZER
	h3_gpio_fsel(12, GPIO_FSEL_OUTPUT);
	h3_gpio_clr(12); // FIQ
	h3_gpio_fsel(11, GPIO_FSEL_OUTPUT);
	h3_gpio_clr(11); // BREAK
	h3_gpio_fsel(6, GPIO_FSEL_OUTPUT);
	h3_gpio_clr(6);  // DR
	h3_gpio_fsel(14, GPIO_FSEL_OUTPUT);
	h3_gpio_clr(14); // SC
	h3_gpio_fsel(16, GPIO_FSEL_OUTPUT);
	h3_gpio_clr(16); // DATA
#endif

	dmx_clear_data();

	dmx_data_buffer_index_head = 0;
	dmx_data_buffer_index_tail = 0;

	rdm_data_buffer_index_head = 0;
	rdm_data_buffer_index_tail = 0;

	dmx_receive_state = IDLE;

	dmx_send_state = IDLE;
	dmx_send_always = false;

	irq_timer_init();

	irq_timer_set(IRQ_TIMER_1, irq_timer1_dmx_receive);
	H3_TIMER->TMR1_INTV = 0xB71B00; // 1 second
	H3_TIMER->TMR1_CTRL &= ~(TIMER_CTRL_SINGLE_MODE);
	H3_TIMER->TMR1_CTRL |= (TIMER_CTRL_EN_START | TIMER_CTRL_RELOAD); // 0x3;

#if (EXT_UART_NUMBER == 1)
	gic_fiq_config(H3_UART1_IRQn, 1);
#elif (EXT_UART_NUMBER == 3)
	gic_fiq_config(H3_UART3_IRQn, 1);
#else
 #error Unsupported UART device configured
#endif

	uart_init();

	__disable_fiq();
	arm_install_handler((unsigned) fiq_dmx, ARM_VECTOR(ARM_VECTOR_FIQ));
}