void set_time(time_t t) { if (_rtc_init != NULL) { _rtc_init(); } if (_rtc_write != NULL) { _rtc_write(t); } }
void set_time(time_t t) { _mutex->lock(); if (_rtc_init != NULL) { _rtc_init(); } if (_rtc_write != NULL) { _rtc_write(t); } _mutex->unlock(); }
void set_time(time_t t) { core_util_critical_section_enter(); if (_rtc_init != NULL) { _rtc_init(); } if (_rtc_write != NULL) { _rtc_write(t); } core_util_critical_section_exit(); }
/*FUNCTION**************************************************************** * * Function Name : _bsp_rtc_io_init * Returned Value : none * Comments : * This function sets up the RTC clk source register and prescaler. * *END*********************************************************************/ void _bsp_rtc_io_init ( void ) { VMCF5227_CCM_STRUCT_PTR ccm = &(((VMCF5227_STRUCT_PTR)_PSP_GET_IPSBAR())->CCM); VMCF52XX_RTC_STRUCT_PTR rtc = _bsp_get_rtc_base_address (); ccm->MISCCR &= (~ MCF5227_CCM_MISCCR_RTCSRC); rtc->RTCGOCU = BSP_RTC_PRESCALER_GOCU; rtc->RTCGOCU = BSP_RTC_PRESCALER_GOCU; // according to RTC register write protocol - 2x rtc->RTCGOCL = BSP_RTC_PRESCALER_GOCL; rtc->RTCGOCL = BSP_RTC_PRESCALER_GOCL; // according to RTC register write protocol - 2x _rtc_init (RTC_INIT_FLAG_ENABLE); }
/*FUNCTION*------------------------------------------------------------------- * * Function Name : _bsp_rtc_io_init * Returned Value : none * Comments : * This function performs BSP-specific initialization related to RTC * *END*----------------------------------------------------------------------*/ void _bsp_rtc_io_init ( void ) { VMCF5225_CLK_STRUCT_PTR clk = &(((VMCF5225_STRUCT_PTR)_PSP_GET_IPSBAR())->CLK); VMCF52XX_RTC_STRUCT_PTR rtc = _bsp_get_rtc_base_address (); clk->RTCCR = MCF5225_CLOCK_RTCCR_EXTALEN | MCF5225_CLOCK_RTCCR_REFS | MCF5225_CLOCK_RTCCR_LPEN | MCF5225_CLOCK_RTCCR_RTCSEL; rtc->RTCGOCU = BSP_RTC_PRESCALER_GOCU; rtc->RTCGOCU = BSP_RTC_PRESCALER_GOCU; // according to RTC register write protocol - 2x rtc->RTCGOCL = BSP_RTC_PRESCALER_GOCL; rtc->RTCGOCL = BSP_RTC_PRESCALER_GOCL; // according to RTC register write protocol - 2x _rtc_init (RTC_INIT_FLAG_ENABLE); }
uint_32 _bsp_enable_card ( void ) { KERNEL_DATA_STRUCT_PTR kernel_data; uint_32 result; _GET_KERNEL_DATA(kernel_data); _mqx_set_cpu_type(MQX_CPU); #if MQX_EXIT_ENABLED /* Set the bsp exit handler, called by _mqx_exit */ _mqx_set_exit_handler(_bsp_exit_handler); #endif /* Memory splitter - prevent accessing both ram banks in one instruction */ _mem_alloc_at(0, (void*)0x20000000); /* === Debugging is not allowed from here === */ /* Initialize the interrupt handling */ result = _psp_int_init(BSP_FIRST_INTERRUPT_VECTOR_USED, BSP_LAST_INTERRUPT_VECTOR_USED); /* === Debugging may now resume === */ if (result != MQX_OK) { return result; } /* set possible new interrupt vector table - if MQX_ROM_VECTORS = 0 switch to ram interrupt table which was initialized in _psp_int_init) */ (void)_int_set_vector_table(BSP_INTERRUPT_VECTOR_TABLE); /* Store timer interrupt vector for debugger */ _time_set_timer_vector(BSP_TIMER_INTERRUPT_VECTOR); /* Install Timer ISR. */ if (_int_install_isr(BSP_TIMER_INTERRUPT_VECTOR, (void (_CODE_PTR_)(pointer))_bsp_systick, NULL) == NULL) { return MQX_TIMER_ISR_INSTALL_FAIL; } /** bsp low level internal initialization. ***/ _bsp_low_level_init(); /* System timer initialization */ systick_init(); /* MCG initialization and internal oscillators trimming */ if (CM_ERR_OK != _bsp_set_clock_configuration(BSP_CLOCK_CONFIGURATION_AUTOTRIM)) { return MQX_TIMER_ISR_INSTALL_FAIL; } if (CM_ERR_OK != _bsp_osc_autotrim()) { return MQX_TIMER_ISR_INSTALL_FAIL; } /* Switch to startup clock configuration */ if (CM_ERR_OK != _bsp_set_clock_configuration(BSP_CLOCK_CONFIGURATION_STARTUP)) { return MQX_TIMER_ISR_INSTALL_FAIL; } /* Initialize the system ticks */ _GET_KERNEL_DATA(kernel_data); kernel_data->TIMER_HW_REFERENCE = (BSP_SYSTEM_CLOCK / BSP_ALARM_FREQUENCY); _time_set_ticks_per_sec(BSP_ALARM_FREQUENCY); _time_set_hwticks_per_tick(kernel_data->TIMER_HW_REFERENCE); _time_set_hwtick_function(_bsp_get_hwticks, (pointer)NULL); #if MQX_ENABLE_USER_MODE _kinetis_mpu_init(); // supervisor full access, user no access for whole memory _kinetis_mpu_add_region(0, ((uchar_ptr)kernel_data->INIT.START_OF_USER_NO_MEMORY) - 1, \ MPU_WORD_M3SM(MPU_SM_RWX) | MPU_WORD_M3UM(MPU_UM_R | MPU_UM_X) | \ MPU_WORD_M2SM(MPU_SM_RWX) | MPU_WORD_M2UM(MPU_UM_R | MPU_UM_X) | \ MPU_WORD_M1SM(MPU_SM_RWX) | MPU_WORD_M1UM(MPU_UM_R | MPU_UM_X) | \ MPU_WORD_M0SM(MPU_SM_RWX) | MPU_WORD_M0UM(MPU_UM_R | MPU_UM_X)); _kinetis_mpu_add_region(((uchar_ptr)kernel_data->INIT.END_OF_USER_NO_MEMORY), (uchar_ptr)0xffffffff, \ MPU_WORD_M3SM(MPU_SM_RWX) | MPU_WORD_M3UM(MPU_UM_R | MPU_UM_X) | \ MPU_WORD_M2SM(MPU_SM_RWX) | MPU_WORD_M2UM(MPU_UM_R | MPU_UM_X) | \ MPU_WORD_M1SM(MPU_SM_RWX) | MPU_WORD_M1UM(MPU_UM_R | MPU_UM_X) | \ MPU_WORD_M0SM(MPU_SM_RWX) | MPU_WORD_M0UM(MPU_UM_R | MPU_UM_X)); // set access for user memory area #if MQX_DEFAULT_USER_ACCESS_RW // user .data RW _kinetis_mpu_add_region(kernel_data->INIT.START_OF_USER_DEFAULT_MEMORY, ((uchar_ptr)kernel_data->INIT.END_OF_USER_DEFAULT_MEMORY) - 1, \ MPU_WORD_M1SM(MPU_SM_RWX) | MPU_WORD_M1UM(MPU_UM_R | MPU_UM_W) | \ MPU_WORD_M0SM(MPU_SM_RWX) | MPU_WORD_M0UM(MPU_UM_R | MPU_UM_W)); #else // user RO - this is by default // user .data RO /*_kinetis_mpu_add_region(kernel_data->INIT.START_OF_KERNEL_AREA, kernel_data->INIT.END_OF_KERNEL_AREA, \ MPU_WORD_M1SM(MPU_SM_RWX) | MPU_WORD_M1UM(MPU_UM_R) | \ MPU_WORD_M0SM(MPU_SM_RWX) | MPU_WORD_M0UM(MPU_UM_R)); */ #endif // MQX_DEFAULT_USER_ACCESS_RW // set access for user memory area if (0 == kernel_data->INIT.END_OF_USER_HEAP) { // create user heap automaticaly, we have specified only size of heap (end of heap is zero, start of heap mean size) LWMEM_POOL_STRUCT_PTR lwmem_pool_ptr; uchar_ptr start; //start = _lwmem_alloc((char*)kernel_data->INIT.END_OF_USER_HEAP - (char*)kernel_data->INIT.START_OF_USER_HEAP + sizeof(LWMEM_POOL_STRUCT)); start = _lwmem_alloc((uint_32)kernel_data->INIT.START_OF_USER_HEAP + sizeof(LWMEM_POOL_STRUCT)); lwmem_pool_ptr = (LWMEM_POOL_STRUCT_PTR)start; start = (pointer)((uchar_ptr)start + sizeof(LWMEM_POOL_STRUCT)); _lwmem_create_pool(lwmem_pool_ptr, start, (uint_32)kernel_data->INIT.START_OF_USER_HEAP); _mem_set_pool_access(lwmem_pool_ptr, POOL_USER_RW_ACCESS); kernel_data->KD_USER_POOL = lwmem_pool_ptr; } else { // manual user heap definition _kinetis_mpu_add_region(kernel_data->INIT.START_OF_USER_HEAP, ((uchar_ptr)kernel_data->INIT.END_OF_USER_HEAP) - 1, \ MPU_WORD_M1SM(MPU_SM_RWX) | MPU_WORD_M1UM(MPU_UM_R | MPU_UM_W) | \ MPU_WORD_M0SM(MPU_SM_RWX) | MPU_WORD_M0UM(MPU_UM_R | MPU_UM_W)); } // set access for user read-write memory area if (kernel_data->INIT.START_OF_USER_RW_MEMORY < kernel_data->INIT.END_OF_USER_RW_MEMORY) { _kinetis_mpu_add_region(kernel_data->INIT.START_OF_USER_RW_MEMORY, ((uchar_ptr)kernel_data->INIT.END_OF_USER_RW_MEMORY) - 1, \ MPU_WORD_M1SM(MPU_SM_RWX) | MPU_WORD_M1UM(MPU_UM_R | MPU_UM_W) | \ MPU_WORD_M0SM(MPU_SM_RWX) | MPU_WORD_M0UM(MPU_UM_R | MPU_UM_W)); } // set access for user read-only memory area if (kernel_data->INIT.START_OF_USER_RO_MEMORY < kernel_data->INIT.END_OF_USER_RO_MEMORY) { _kinetis_mpu_add_region(kernel_data->INIT.START_OF_USER_RO_MEMORY, ((uchar_ptr)kernel_data->INIT.END_OF_USER_RO_MEMORY) - 1, \ MPU_WORD_M1SM(MPU_SM_RWX) | MPU_WORD_M1UM(MPU_UM_R) | \ MPU_WORD_M0SM(MPU_SM_RWX) | MPU_WORD_M0UM(MPU_UM_R)); } // set access for user no access memory area if (kernel_data->INIT.START_OF_USER_NO_MEMORY < kernel_data->INIT.END_OF_USER_NO_MEMORY) { _kinetis_mpu_add_region(kernel_data->INIT.START_OF_USER_NO_MEMORY, ((uchar_ptr)kernel_data->INIT.END_OF_USER_NO_MEMORY) - 1, \ MPU_WORD_M1SM(MPU_SM_RWX) | MPU_WORD_M1UM(0) | \ MPU_WORD_M0SM(MPU_SM_RWX) | MPU_WORD_M0UM(0)); } _kinetis_mpu_enable(); #else _kinetis_mpu_disable(); #endif /* MQX_ENABLE_USER_MODE */ /* Install low power support */ #if MQX_ENABLE_LOW_POWER MC_PMPROT = MC_PMPROT_AVLP_MASK | MC_PMPROT_ALLS_MASK; // allow VLPx, LLS, disallow VLLSx _lpm_install (LPM_CPU_OPERATION_MODES, LPM_OPERATION_MODE_RUN); #endif /* MQX_ENABLE_LOW_POWER */ #if BSPCFG_ENABLE_IO_SUBSYSTEM /*------------------------------------------------------------------------*/ /* ** Initialize the I/O Sub-system */ result = _io_init(); if (result != MQX_OK) { return result; } /* Endif */ /* Initialize RTC and MQX time */ #if BSPCFG_ENABLE_RTCDEV if (MQX_OK == _bsp_rtc_io_init()) { _rtc_init (RTC_INIT_FLAG_ENABLE); _rtc_sync_with_mqx (TRUE); } #endif /* Install device drivers */ #if BSPCFG_ENABLE_TTYA _kuart_polled_install("ttya:", &_bsp_sci0_init, _bsp_sci0_init.QUEUE_SIZE); #endif #if BSPCFG_ENABLE_ITTYA _kuart_int_install("ittya:", &_bsp_sci0_init, _bsp_sci0_init.QUEUE_SIZE); #endif #if BSPCFG_ENABLE_TTYB _kuart_polled_install("ttyb:", &_bsp_sci1_init, _bsp_sci1_init.QUEUE_SIZE); #endif #if BSPCFG_ENABLE_ITTYB _kuart_int_install("ittyb:", &_bsp_sci1_init, _bsp_sci1_init.QUEUE_SIZE); #endif #if BSPCFG_ENABLE_TTYC _kuart_polled_install("ttyc:", &_bsp_sci2_init, _bsp_sci2_init.QUEUE_SIZE); #endif #if BSPCFG_ENABLE_ITTYC _kuart_int_install("ittyc:", &_bsp_sci2_init, _bsp_sci2_init.QUEUE_SIZE); #endif #if BSPCFG_ENABLE_TTYD _kuart_polled_install("ttyd:", &_bsp_sci3_init, _bsp_sci3_init.QUEUE_SIZE); #endif #if BSPCFG_ENABLE_ITTYD _kuart_int_install("ittyd:", &_bsp_sci3_init, _bsp_sci3_init.QUEUE_SIZE); #endif #if BSPCFG_ENABLE_TTYE _kuart_polled_install("ttye:", &_bsp_sci4_init, _bsp_sci4_init.QUEUE_SIZE); #endif #if BSPCFG_ENABLE_ITTYE _kuart_int_install("ittye:", &_bsp_sci4_init, _bsp_sci4_init.QUEUE_SIZE); #endif #if BSPCFG_ENABLE_TTYF _kuart_polled_install("ttyf:", &_bsp_sci5_init, _bsp_sci5_init.QUEUE_SIZE); #endif #if BSPCFG_ENABLE_ITTYF _kuart_int_install("ittyf:", &_bsp_sci5_init, _bsp_sci5_init.QUEUE_SIZE); #endif #if BSPCFG_ENABLE_I2C0 _ki2c_polled_install("i2c0:", &_bsp_i2c0_init); #endif #if BSPCFG_ENABLE_I2C1 _ki2c_polled_install("i2c1:", &_bsp_i2c1_init); #endif #if BSPCFG_ENABLE_II2C0 _ki2c_int_install("ii2c0:", &_bsp_i2c0_init); #endif #if BSPCFG_ENABLE_II2C1 _ki2c_int_install("ii2c1:", &_bsp_i2c1_init); #endif #if BSPCFG_ENABLE_SPI0 _dspi_polled_install("spi0:", &_bsp_dspi0_init); #endif #if BSPCFG_ENABLE_ISPI0 _dspi_dma_install("ispi0:", &_bsp_dspi0_init); #endif #if BSPCFG_ENABLE_SPI1 _dspi_polled_install("spi1:", &_bsp_dspi1_init); #endif #if BSPCFG_ENABLE_ISPI1 _dspi_dma_install("ispi1:", &_bsp_dspi1_init); #endif #if BSPCFG_ENABLE_SPI2 _dspi_polled_install("spi2:", &_bsp_dspi2_init); #endif #if BSPCFG_ENABLE_ISPI2 _dspi_dma_install("ispi2:", &_bsp_dspi2_init); #endif /* Install the GPIO driver */ #if BSPCFG_ENABLE_GPIODEV _io_gpio_install("gpio:"); #endif #if BSPCFG_ENABLE_ADC0 _io_adc_install("adc0:", (pointer) &_bsp_adc0_init); #endif #if BSPCFG_ENABLE_ADC1 _io_adc_install("adc1:", (pointer) &_bsp_adc1_init); #endif #if BSPCFG_ENABLE_ESDHC _esdhc_install ("esdhc:", &_bsp_esdhc0_init); #endif /* Install the PCCard Flash drivers */ #if BSPCFG_ENABLE_PCFLASH _io_pccardflexbus_install("pccarda:", (PCCARDFLEXBUS_INIT_STRUCT _PTR_) &_bsp_cfcard_init); _io_apcflash_install("pcflasha:"); #endif #if BSPCFG_ENABLE_FLASHX _io_flashx_install("flashx:", &_bsp_flashx_init); #endif #if BSPCFG_ENABLE_IODEBUG _io_debug_install("iodebug:", &_bsp_iodebug_init); #endif #if BSPCFG_ENABLE_II2S0 _ki2s_int_install("ii2s0:", &_bsp_i2s0_init); #endif /* Initialize the default serial I/O */ _io_serial_default_init(); #endif // BSPCFG_ENABLE_IO_SUBSYSTEM return MQX_OK; }
/** Initialization - called from init task, usually for io initialization. */ int _bsp_init(void) { uint32_t result; /* fixme */ VMCF5441_STRUCT_PTR reg_ptr = _PSP_GET_IPSBAR(); /* Initialize RTC and MQX time */ #if BSPCFG_ENABLE_RTCDEV _bsp_rtc_io_init(); _rtc_init (NULL); #endif #if BSPCFG_ENABLE_IO_SUBSYSTEM /* Initialize the I/O Sub-system */ result = _io_init(); if (result != MQX_OK) { return result; } #if BSPCFG_ENABLE_TTYA _mcf54xx_uart_serial_polled_install("ttya:", &_bsp_uart0_init, _bsp_uart0_init.QUEUE_SIZE); #endif #if BSPCFG_ENABLE_TTYB _mcf54xx_uart_serial_polled_install("ttyb:", &_bsp_uart2_init, _bsp_uart2_init.QUEUE_SIZE); #endif #if BSPCFG_ENABLE_TTYC _mcf54xx_uart_serial_polled_install("ttyc:", &_bsp_uart4_init, _bsp_uart4_init.QUEUE_SIZE); #endif #if BSPCFG_ENABLE_TTYD _mcf54xx_uart_serial_polled_install("ttyd:", &_bsp_uart5_init, _bsp_uart5_init.QUEUE_SIZE); #endif #if BSPCFG_ENABLE_TTYE _mcf54xx_uart_serial_polled_install("ttye:", &_bsp_uart6_init, _bsp_uart6_init.QUEUE_SIZE); #endif #if BSPCFG_ENABLE_ITTYA _mcf54xx_uart_serial_int_install("ittya:", &_bsp_uart0_init, _bsp_uart0_init.QUEUE_SIZE); #endif #if BSPCFG_ENABLE_ITTYB _mcf54xx_uart_serial_int_install("ittyb:", &_bsp_uart2_init, _bsp_uart2_init.QUEUE_SIZE); #endif #if BSPCFG_ENABLE_ITTYC _mcf54xx_uart_serial_int_install("ittyc:", &_bsp_uart4_init, _bsp_uart4_init.QUEUE_SIZE); #endif #if BSPCFG_ENABLE_ITTYD _mcf54xx_uart_serial_int_install("ittyd:", &_bsp_uart5_init, _bsp_uart5_init.QUEUE_SIZE); #endif #if BSPCFG_ENABLE_ITTYE _mcf54xx_uart_serial_int_install("ittye:", &_bsp_uart6_init, _bsp_uart6_init.QUEUE_SIZE); #endif #if BSPCFG_ENABLE_SPI0 _io_spi_install("spi0:", &_bsp_spi0_init); #endif #if BSPCFG_ENABLE_SPI1 _io_spi_install("spi1:", &_bsp_spi1_init); #endif #if BSPCFG_ENABLE_I2C0 _mcf54xx_i2c_polled_install("i2c0:", &_bsp_i2c0_init); #endif #if BSPCFG_ENABLE_II2C0 _mcf54xx_i2c_int_install("ii2c0:", &_bsp_i2c0_init); #endif #if BSPCFG_ENABLE_I2C5 _mcf54xx_i2c_polled_install("i2c5:", &_bsp_i2c5_init); #endif #if BSPCFG_ENABLE_II2C5 _mcf54xx_i2c_int_install("ii2c5:", &_bsp_i2c5_init); #endif #if BSPCFG_ENABLE_II2S0 _mcf54xx_i2s_int_install("ii2s0:", &_bsp_i2s0_init); #endif #if BSPCFG_ENABLE_II2S1 _mcf54xx_i2s_int_install("ii2s1:", &_bsp_i2s1_init); #endif /* Install the PCCard Flash drivers */ #if BSPCFG_ENABLE_PCFLASH _io_pccardflexbus_install("pccarda:", (PCCARDFLEXBUS_INIT_STRUCT *) &_bsp_cfcard_init); _io_apcflash_install("pcflasha:"); #endif /* install the GPIO driver */ #if BSPCFG_ENABLE_GPIODEV _io_gpio_install("gpio:"); #endif /* install external flash */ #if BSPCFG_ENABLE_NANDFLASH result = _io_nandflash_install(&_bsp_nandflash_init); #endif /* ADC initialization */ #if BSPCFG_ENABLE_ADC _io_adc_install("adc:", NULL); reg_ptr->SCM_PMM.PMM.PPMCR0 = 37; // clk enable ADC #endif #if BSPCFG_ENABLE_ESDHC _esdhc_install ("esdhc:", &_bsp_esdhc0_init); #endif /* Initialize the default serial I/O */ _io_serial_default_init(); #endif /* BSPCFG_ENABLE_IO_SUBSYSTEM */ return 0; }
void main_task ( uint_32 initial_data ) { DATE_STRUCT time_rtc; TIME_STRUCT time_mqx; if (_lwevent_create(&lwevent,0) != MQX_OK) { printf("\nMake event failed"); _task_block(); } printf ("\fStart time (MQX synchronized to RTC time during bsp init):\n\n"); /* initialize time */ time_rtc.YEAR = 2010; time_rtc.MONTH = 10; time_rtc.DAY = 15; time_rtc.HOUR = 10; time_rtc.MINUTE = 8; time_rtc.SECOND = 0; time_rtc.MILLISEC = 0; _time_from_date (&time_rtc, &time_mqx); _time_set( &time_mqx); if( _rtc_sync_with_mqx(FALSE) != MQX_OK ) { printf("\nError synchronize time!\n"); _task_block(); } _time_get (&time_mqx); _time_to_date (&time_mqx, &time_rtc); print_mqx_time(&time_rtc, &time_mqx); print_current_time(); /* except MPC5125 */ #ifndef BSP_TWRMPC5125 install_interrupt(); /* enable stopwatch */ install_stopwatch(); /* enable alarm */ install_alarm(); _lwevent_wait_ticks(&lwevent,LWE_ALARM,FALSE,0); _lwevent_clear(&lwevent,LWE_ALARM); printf ("\nALARM!\n"); print_current_time(); /* end of alarm */ printf ("Continue wasting time (2 minutes max) ...\n"); _lwevent_wait_ticks(&lwevent,LWE_STOPWATCH,FALSE,0); _lwevent_clear(&lwevent,LWE_STOPWATCH); printf ("\nSTOPWATCH!\n"); print_current_time(); printf ("\nClearing RTC:\n"); _rtc_init (RTC_INIT_FLAG_CLEAR | RTC_INIT_FLAG_ENABLE); print_current_time(); install_alarm(); _lwevent_wait_ticks(&lwevent,LWE_ALARM,FALSE,0); _lwevent_clear(&lwevent,LWE_ALARM); printf ("ALARM!\n"); print_current_time(); #else /* BSP_TWRMPC5125 */ printf ("Waste 10 seconds here\n"); _time_delay(10000); _rtc_get_time_mqxd (&time_rtc); print_rtc_time(&time_rtc, &time_mqx); #endif printf ("Synchronize RTC to MQX time again:\n"); _rtc_sync_with_mqx (FALSE); _rtc_get_time_mqxd (&time_rtc); _time_from_date (&time_rtc, &time_mqx); print_rtc_time(&time_rtc, &time_mqx); #if PSP_HAS_IRTC == 1 irtc_test(); #endif /* PSP_HAS_IRTC == 1 */ /* Test tamper event functionality on MCF51EMxx device */ #if PSP_MQX_CPU_IS_MCF51EM test_tamper(); #else printf ("Finish, press/hold reset to repeat.\n"); _task_block() ; #endif }
uint_32 _bsp_enable_card ( void ) { KERNEL_DATA_STRUCT_PTR kernel_data; uint_32 result; _GET_KERNEL_DATA(kernel_data); _mqx_set_cpu_type(PSP_CPU_MPXN20); /* Set the bsp exit handler, called by _mqx_exit */ _mqx_set_exit_handler(_bsp_exit_handler); /* Initialize the MPXNxx MMU support functions */ _mpxnxx_initialize_support(); /* === Debugging is not allowed from here === */ /* Initialize the interrupt handling */ result = _psp_int_init(BSP_FIRST_INTERRUPT_VECTOR_USED, BSP_LAST_INTERRUPT_VECTOR_USED); /* === Debugging may now resume === */ if (result != MQX_OK) { return result; } result = _qintc_install(_bsp_get_qintc_base_address(), PSP_EXCPT_EXTERNAL); if (result != MQX_OK) { return result; } /* enable processor recognition of External/Decrementer/Fit interrupts */ _PSP_SET_SR (_PSP_GET_SR() | PSP_MSR_EE); #if 0 /* Install program exception handler */ if (_int_install_isr(PSP_EXCPT_PROGRAM, _psp_program_isr, NULL) == NULL) { return _task_get_error(); } #endif #if BSPCFG_ENABLE_PIT_TIMER _qpit_timer_install_kernel(BSPCFG_TIMER_PIT_DEVICE, BSPCFG_TIMER_PIT_CHANNEL, BSP_ALARM_FREQUENCY, BSP_SYSTEM_CLOCK, BSPCFG_TIMER_INT_LEVEL); #else _e200_decrementer_timer_install(BSP_ALARM_FREQUENCY, BSP_TIMEBASE_CLOCK); #endif /*------------------------------------------------------------------------*/ /* ** Setup MMU page tables */ if (_mqx_monitor_type == MQX_MONITOR_TYPE_NONE) { _mmu_init(NULL); /* First, mark the three TLBs that the boot code used as 'not-free' */ _mmu_reserve_tlb(BSP_FLASH_TLB); _mmu_reserve_tlb(BSP_INT_SRAM_TLB); /* Periph B Modules */ _mmu_reserve_tlb(BSP_PERIPHERAL_TLB); _mmu_reserve_tlb(BSP_EXT_RAM_TLB); _mmu_reserve_tlb(BSP_PERIPHERAL_A_TLB); /* Next, add regions for RAM. ** Physical Address Virtual Address Size Attributes */ //_mmu_add_virtual_region((BSP_PRIVATE_RAM_START), BSP_PRIVATE_RAM_START, BSP_PRIVATE_RAM_SIZE, BSP_PRIVATE_RAM_ATTR, BSP_PID_MQX); //_mmu_add_virtual_region((BSP_UNCACHED_DATA_START),BSP_UNCACHED_DATA_START, BSP_UNCACHED_DATA_SIZE, BSP_UNCACHED_DATA_ATTR, BSP_PID_MQX); /* switch PID from 1 (boot) to 2 (MQX) */ /*_psp_set_pid(BSP_PID_MQX);*/ /*Reclaim the BOOT RAM TLB*/ /*_mmu_release_tlb(BSP_RAM_TLB);*/ #ifndef BSP_CACHE_INHIBIT _icache_enable(0); _dcache_enable(0); #endif } #if BSPCFG_ENABLE_CPP /* initialize C++ constructors */ #if defined(__DCC__) || defined(__HIGHC__) __init(); #elif defined(__CODEWARRIOR__) __cpp_init(); #endif #endif //BSPCFG_ENABLE_CPP #if BSPCFG_ENABLE_IO_SUBSYSTEM /*------------------------------------------------------------------------*/ /* ** Initialize the I/O Sub-system */ result = _io_init(); if (result != MQX_OK) { return result; } /* Endif */ /* Install device drivers */ #if BSPCFG_ENABLE_TTYA _lin_serial_polled_install("ttya:", &_bsp_lin0_init); #endif #if BSPCFG_ENABLE_ITTYA _lin_serial_int_install("ittya:", &_bsp_lin0_init); #endif #if BSPCFG_ENABLE_TTYB _lin_serial_polled_install("ttyb:", &_bsp_lin1_init); #endif #if BSPCFG_ENABLE_ITTYB _lin_serial_int_install("ittyb:", &_bsp_lin1_init); #endif #if BSPCFG_ENABLE_TTYC _lin_serial_polled_install("ttyc:", &_bsp_lin2_init); #endif #if BSPCFG_ENABLE_ITTYC _lin_serial_int_install("ittyc:", &_bsp_lin2_init); #endif #if BSPCFG_ENABLE_TTYD _lin_serial_polled_install("ttyd:", &_bsp_lin3_init); #endif #if BSPCFG_ENABLE_ITTYD _lin_serial_int_install("ittyd:", &_bsp_lin3_init); #endif #if BSPCFG_ENABLE_TTYE _lin_serial_polled_install("ttye:", &_bsp_lin4_init); #endif #if BSPCFG_ENABLE_ITTYE _lin_serial_int_install("ittye:", &_bsp_lin4_init); #endif #if BSPCFG_ENABLE_TTYF _lin_serial_polled_install("ttyf:", &_bsp_lin5_init); #endif #if BSPCFG_ENABLE_ITTYF _lin_serial_int_install("ittyf:", &_bsp_lin5_init); #endif #if BSPCFG_ENABLE_SPI0 _io_spi_install("spi0:", &_bsp_spi0_init); #endif #if BSPCFG_ENABLE_SPI1 _io_spi_install("spi1:", &_bsp_spi1_init); #endif #if BSPCFG_ENABLE_SPI2 _io_spi_install("spi2:", &_bsp_spi2_init); #endif #if BSPCFG_ENABLE_SPI3 _io_spi_install("spi3:", &_bsp_spi3_init); #endif #if BSPCFG_ENABLE_FLASHX _io_flashx_install("flashx:", &_bsp_flashx_init); #endif #if BSPCFG_ENABLE_I2C0 _qi2c_polled_install("i2c0:", &_bsp_i2c0_init); #endif #if BSPCFG_ENABLE_II2C0 _qi2c_int_install("ii2c0:", &_bsp_i2c0_init); #endif #if BSPCFG_ENABLE_I2C1 _qi2c_polled_install("i2c1:", &_bsp_i2c1_init); #endif #if BSPCFG_ENABLE_II2C1 _qi2c_int_install("ii2c1:", &_bsp_i2c1_init); #endif #if BSPCFG_ENABLE_I2C2 _qi2c_polled_install("i2c2:", &_bsp_i2c2_init); #endif #if BSPCFG_ENABLE_II2C2 _qi2c_int_install("ii2c2:", &_bsp_i2c2_init); #endif #if BSPCFG_ENABLE_I2C3 _qi2c_polled_install("i2c3:", &_bsp_i2c3_init); #endif #if BSPCFG_ENABLE_II2C3 _qi2c_int_install("ii2c3:", &_bsp_i2c3_init); #endif #if BSPCFG_ENABLE_RTCDEV _rtc_init (RTC_INIT_FLAG_CLEAR | RTC_INIT_FLAG_RESET | RTC_INIT_FLAG_ENABLE); #endif #if BSPCFG_ENABLE_LWADC #if BSPCFG_ENABLE_LWADC0 _lwadc_init(&lwadc0_init); #endif #endif /* Initialize the default serial I/O */ _io_serial_default_init(); #endif // BSPCFG_ENABLE_IO_SUBSYSTEM return MQX_OK; }
/*TASK*----------------------------------------------------- * * Task Name : YaDa * Comments : * * *END*-----------------------------------------------------*/ void YaDa ( uint_32 initial_data ) { #ifdef _GUI_DBUG_ printf("\n----------MAIN&GUI_Task----------\n"); printf("\n---------- ----------\n"); printf("\n---------- ----------\n"); printf("\n---------- END ----------\n"); #endif UartLCD_init(); // uart initialization UartTouch_init(); flg_int(); // wk --> 初始化一些标志 ! spi2_dma_int(); // dsp2k60 spi2 初始化 YADA_70(PageStart); //必要的初始化后进入首页 delay_ms(1000); // wk -->test 延时1s delay_ms(4000); // wk -->test 延时4s,等待U盘启动完成 // YADA_E4(); // wk --> 屏幕校正 YADA_70(MenuTop); // 进入菜单首页 RefreshFlg = 0; //页面无刷新 SHELL_CONTEXT_PTR shell_ptr; shell_ptr = _mem_alloc_zero( sizeof( SHELL_CONTEXT )); _mem_set_type(shell_ptr, MEM_TYPE_SHELL_CONTEXT); uint_32 file_size; uchar status; /* wk @130401 --> 在 flash中 新建 sysset 用于系统变量保存 */ shell_ptr->ARGC = 2; shell_ptr->ARGV[0]="cd"; shell_ptr->ARGV[1]="f:\\"; Shell_cd(shell_ptr->ARGC, shell_ptr->ARGV); // shell_ptr->ARGC = 2; // shell_ptr->ARGV[0]="df_s"; shell_ptr->ARGV[1]="SYSSET"; //wk --> 注意:查找的文件名暂时必须要是大写 status=Shell_search_file_r1(shell_ptr->ARGC, shell_ptr->ARGV,&file_size); if(status==0) { // shell_ptr->ARGC = 2; // shell_ptr->ARGV[0]="mkdir"; shell_ptr->ARGV[1]="SYSSET"; Shell_mkdir(shell_ptr->ARGC, shell_ptr->ARGV); } _mem_free(shell_ptr); /* button1 into interrupt for shell or maingui task change */ GPIO_PIN_STRUCT pins_int[] = { BSP_BUTTON1 | GPIO_PIN_IRQ_RISING , GPIO_LIST_END }; MQX_FILE_PTR port_file4; /* 这是按键1 上升沿中断*/ port_file4 = fopen("gpio:read", (char_ptr) &pins_int ); ioctl(port_file4, GPIO_IOCTL_SET_IRQ_FUNCTION, (pointer)int_callback); /* end */ /* wk @130330 -->timer of lpt */ /* wk @130504 --> 调试事件,先关闭 */ _lpt_install (0,3 * 1000000 , LPT_FLAG_CLOCK_SOURCE_LPO, 11, timer_isr, TRUE);//3 * 1000000 --> 3秒 /* wk @130330 -->timer end */ // delay_ms(4000); _rtc_init ( RTC_INIT_FLAG_CLEAR); // wk @130510 --> 在应用程序中再初始化并打开 _rtc_init ( RTC_INIT_FLAG_ENABLE); /* wk@130511-->程序有时可能因为此处影响触摸屏的应用 */ // TimeSet(); while(1) { if(SysFlashData[5]) //背光标志,1为开背光,0为关。 { YADA_5F(0x3f); //背光全开 } else { YADA_5F(0x08); //背光部分开 } MainLoop(); //循环主程序 } }