Example #1
0
File: start.c Project: bengras/umon
/* init2():
 */
void
init2(void)
{
#if INCLUDE_FLASH | INCLUDE_TFS
    int rc = 0;
#endif

#if INCLUDE_FBI
    if(StateOfMonitor == INITIALIZE) {
        fbdev_init();    /* Initialize the frame-buffer device */
    }
#endif

#if INCLUDE_FLASH
    if(StateOfMonitor == INITIALIZE) {
        rc = FlashInit();    /* Init flashop data structures and (possibly) */
    }
    /* the relocatable functions.  This MUST be */
#endif                      /* done prior to turning on cache!!! */

    cacheInit();        /* Initialize cache. */

#if INCLUDE_ETHERNET
    enreset();          /* Clear the ethernet interface. */
#endif

#if INCLUDE_TFS
    if(rc != -1) {      /* Start up TFS as long as flash */
        tfsstartup();    /* initialization didn't fail. */
    }
#endif
}
Example #2
0
void setup()
{
	setupSystemClock();
	setup_system_tick(SYSTEM_TICK_FREQ);
	setupUART();
#ifdef GPS
	setupGPS();
#endif
	I2C_Init();
	FlashInit();
	UpdateBoardVersion(false);
#ifdef OPTION_RC
	RC_Init();
	if(IsSSVConnected())
		Battery_Init();
	LED_Init();
	TIMER_Init();
	stabilizerInit();
#endif
#ifdef ABROBOT
  ABRobotMotorInit();
#endif
	nvtAHRSInit();
	SensorsInit();
	ChronographSet(ChronMain);
}
Example #3
0
void Fl2FlashInitEntry()
{
#if USE_ARGC_ARGV
  theFlashParams.count = FlashInit((CODE_REF)theFlashParams.base_ptr,
                                   theFlashParams.block_size,       // Image size
                                   theFlashParams.offset_into_block,// link adr
                                   theFlashParams.count,            // flags
                                   __argc,
                                   __argv);
#else
  theFlashParams.count = FlashInit((CODE_REF)theFlashParams.base_ptr,
                                   theFlashParams.block_size,       // Image size
                                   theFlashParams.offset_into_block,// link adr
                                   theFlashParams.count);           // flags
#endif
}
Example #4
0
void LogInit( void ){

  if ( bInit == TRUE ){
    return;
  }

  FlashInit( );

  bInit = TRUE;

  e2prom_read( (BYTE*)&logPtrSta, LOG_PTR_STA_ADDR, sizeof( DWORD ));
  e2prom_read( (BYTE*)&logPtrEnd, LOG_PTR_END_ADDR, sizeof( DWORD ));

  ScaleLogPtr(LOG_SAVE_PTR_NONE);

  e2prom_read( (BYTE*)&wLogStamp, LOG_STAMP_ADDR, sizeof( WORD ));
  e2prom_read( (BYTE*)&bLogLevel, LOG_LEVEL_ADDR, sizeof( BYTE ));

  if ( bLogLevel > LOG_ALL ){
    bLogLevel = LOG_ALL;
    e2prom_write( (BYTE*)&bLogLevel, LOG_LEVEL_ADDR, sizeof( BYTE  ));
  }

  if ( bLogLevel > LOG_HW ) {
    bLogLevel = LOG_ALL;
  }
  return;
}
Example #5
0
uint8 InitDevice()//TODO:异常处理
{
	uint8 r=0,t=0;
	//GPIO
	PinInit();
	IO0DIR=1<<29|1<<30;//P0.29,P0.30必须同为输出才能输出(SSP0的片选).
	//GpioSpeedHigh();//全局高速模式,因为P0.29问题无法使用。

	//指示系统启动
	LED1ON();

	//UART0-GCS
	r+=UARTInit(FCUARTPORT,FCUARTBPS);//UART0-PC
	UARTSendChar(FCUARTPORT,0x40);
	UARTSendChar(FCUARTPORT,0x40);

	//UART2-INS
	r+=UARTInit(INSUARTPORT,INSUARTBPS);
	//UARTSendChar(2,0x40);
	//UARTSendChar(2,0x40);

	//SSP0-FPGA
	r+=SSP0FPGAMode();
	//r+=SPIInit();
	//while(1)
	//{
	t=FPGACheck();
	//}
	if(t==TRUE)
	{
		FCEventSend(OKFPGA);
	}
	else
	{
		FCEventSend(ErrFPGA);
	}
	r+=t;

	//SSP1-FLASH
	r+=FlashInit(FlashQueueSize);

	//Timer0-MainLoop
	r+=TimerInit(0,1000/MainLoopHz);
	TimerDisable(0);
	//TimerEnable(0);

	//Timer1-Time+LED1
	r+=TimerInit(1,1000);
	TimerEnable(1);
	
	//Timer2-Working-LED2
	r+=TimerInit(2,100);
	TimerDisable(2);

	//启动中断
	IRQEnable();
	
	return r;
}
Example #6
0
File: nvm.c Project: x893/OpenBLT
/************************************************************************************//**
** \brief     Initializes the NVM driver.
** \return    none.
**
****************************************************************************************/
void NvmInit(void)
{
#if (BOOT_NVM_HOOKS_ENABLE > 0)
  /* give the application a chance to initialize a driver for operating on NVM
   * that is not by default supported by this driver.
   */
  NvmInitHook();
#endif

  /* init the internal driver */
  FlashInit();
} /*** end of NvmInit ***/
Example #7
0
void SysInit(void)
{
 
/*****************************电源控制*******************************/
  PowerIoInit();        //电源控制IO引脚初始化
  POWER_MAIN_ON;        //主电源开关(是否进行降压)
  POWER_MCU_ON;         //MCU电源开关
  POWER_ZIGBEE_ON;      //ZIGBEE电源开关
  POWER_ADC_ON;         //LTC2402以及其基准源电源开关
  DRIVER_EN_OFF;        //振弦电路的发射部分的开关
/*****************************串口输出******************************/
  UART_Init(UART_0,UART_SouceClk_SMCLK,UART_SMCLKBaud_9600);
  FlashInit();
}
Example #8
0
void setup()
{
    int i;
	
	setupSystemClock();
	setupUART();
	setup_system_tick(SYSTEM_TICK_FREQ);
	ID_Init();  // MO: Is it also system init?
	GetID();

	/* Init AHRS I2C */
	/* ----Initialize I2C slave mode--- */
	if(devNum == 0)
		I2C_MS_Master_Init();
	else
		I2C_MS_Slave_Init();

	//I2CWakeUpInit();

	TIDMstFirstInitFIN = 0;
	TIDMstInitFIN = 0;
	TIDMstStage = 0;
	TIDMstInitDevState = 1;
	FlashInit();

    // Setup function pointers for default sensor boards.
	for(i=0; i<MAX_TID_DEV; i++)
	{
		if (pTidList[i])
		SetDeviceFunction(pTidList[i], &(pfnDevFunc[i]));
	}


    // Call board init function
    if (pTidList[devNum]->func.pfnSetup)
        pTidList[devNum]->func.pfnSetup();
    
    // Load TID feature from flash
    GetFlashTID(&(pTidList[devNum]->Feature), devNum);
    
    // Set Timer1 to (1000/value) in (Hz)
    Timer1Init(1000 / (pTidList[devNum]->Feature.data1.value)); 
    
    /* TID initialize */
	SlvDataInit();
	MstDataInit();
}
Example #9
0
PUBLIC void FlashWrite(Object object)
{
    uint8 data[CONFIG_OBJECT_SIZE];

// init
    FlashInit(data);

    data[0] = FLASH_HAS_DATA;
    ConverterUint32ToUint8(object.valControl, &data[1]);
    ConverterUint32ToUint8(object.sendDval, &data[5]);
    ConverterUint16ToUint8(object.readTime, &data[9]);
    ConverterUint16ToUint8(object.sendTime, &data[11]);
    ConverterUint32ToUint8(object.config, &data[13]);

    bAHI_FullFlashProgram(m_FlashStartAddress + DEVISEDESCRIPTOR_SIZE + object.objectID * CONFIG_OBJECT_SIZE, CONFIG_OBJECT_SIZE, data);
    vAHI_FlashPowerDown();
}
Example #10
0
PUBLIC void FlashRead(Object* object)
{
    uint8 data[CONFIG_OBJECT_SIZE];

    FlashInit(data);

    bAHI_FullFlashRead(m_FlashStartAddress + DEVISEDESCRIPTOR_SIZE + object->objectID * CONFIG_OBJECT_SIZE, CONFIG_OBJECT_SIZE, data);
    if (data[0] == FLASH_HAS_DATA)
    {
        ConverterUint8ToUint32(&data[1], (uint32*) &object->valControl);
        ConverterUint8ToUint32(&data[5], (uint32*) &object->sendDval);
        ConverterUint8ToUint16(&data[9], &object->readTime);
        ConverterUint8ToUint16(&data[11], &object->sendTime);
        ConverterUint8ToUint32(&data[13], (uint32*) &object->config);
    }

    vAHI_FlashPowerDown();
}
Example #11
0
PUBLIC void FlashWriteDeviceDescriptor(DeviceDescriptor deviceDescriptor)
{
    uint8 data[DEVISEDESCRIPTOR_SIZE];

// init
    FlashInit(data);
    bAHI_FlashEraseSector(3);

    data[0] = FLASH_HAS_DATA;
    ConverterStringToUint8(deviceDescriptor.name, &data[1]);
    data[33] = deviceDescriptor.netID;
    data[34] = deviceDescriptor.demoMode;
    data[35] = deviceDescriptor.testMode;
    ConverterStringToUint8(deviceDescriptor.descriptor, &data[36]);
    ConverterStringToUint8(deviceDescriptor.xdata, &data[49]); // запись даты поверки в датчиках и цифровой подписи в координаторах
    data[50] = deviceDescriptor.router; // 1-режим работы только с роутерами
//bAHI_FullFlashProgram(m_FlashStartAddress+deviceDescriptor.objectID*CONFIG_OBJECT_SIZE, DEVISEDESCRIPTOR_SIZE, data);
    bAHI_FullFlashProgram(m_FlashStartAddress, DEVISEDESCRIPTOR_SIZE, data);
    vAHI_FlashPowerDown();
}
Example #12
0
static DWORD*
AllocXIPLoc(void)
{
	DWORD *pMem;
	DWORD dwBlockStart;
	DWORD dwBlockLen;
	
	FlashInit(TRUE);
	FlashGetBlockInfo((LPVOID)pdwXIPLoc, &dwBlockStart, &dwBlockLen);

	pMem = (DWORD *) malloc(dwBlockLen * sizeof(BYTE));
	if (NULL == pMem)
	{
		return 0;
	}

	FlashRead((LPVOID)pdwXIPLoc, (LPVOID)pMem, dwBlockLen);

	return pMem;
}
Example #13
0
void InitAll()
{
  __disable_irq();
  TimInit();
  PWMStart();
  InputDecoder();
  UartInit();
  
  FlashInit();
  SDFatFSInit();
  
  printf("mpu6050 id:0x%x\r\n",MPU6050_Init());
  IMU_Init();
  
  UIInit();
  sys.status = READY;
  HAL_ADC_Start(&hadc1);
  printf("init finish!\r\n");
  __enable_irq();
}
Example #14
0
PUBLIC void FlashReadDeviceDescriptor(DeviceDescriptor* deviceDescriptor)
{
    uint8 data[DEVISEDESCRIPTOR_SIZE];

    FlashInit(data);
    //bAHI_FullFlashRead(m_FlashStartAddress+deviceDescriptor->objectID*CONFIG_OBJECT_SIZE, DEVISEDESCRIPTOR_SIZE, data);
    bAHI_FullFlashRead(m_FlashStartAddress, DEVISEDESCRIPTOR_SIZE, data);

    if (data[0] == FLASH_HAS_DATA)
    {
        ConverterUint8ToString(&data[1], deviceDescriptor->name);
        deviceDescriptor->netID = data[33];
        deviceDescriptor->demoMode = data[34];
        deviceDescriptor->testMode = data[35];
        ConverterUint8ToString(&data[36], deviceDescriptor->descriptor);
        ConverterUint8ToString(&data[49], deviceDescriptor->xdata); // чтение даты поверки в датчиках и цифровой подписи в координаторах
        deviceDescriptor->router = data[50]; // 1-режим работы только с роутерами
    }

    vAHI_FlashPowerDown();
}
Example #15
0
/* configure for arrangement of flash */
FlashError_t
BDMFlashConfigSet( int fd,
                   unsigned int Base,
                   unsigned int Chips,
                   unsigned int Bytes )
{
    FlashError_t Error;

    PRINTD( "Base = %u, Chips = %u, Bytes = %u\n", Base, Chips, Bytes );
    BDMFlash.Device = fd;
    BDMFlash.Base = Base;

    Error = FlashInit( &Flash,
                       &BDMFlash,
                       BDMFlashElementRead,
                       BDMFlashElementWrite,
                       Bytes,
                       1, /* BDM in Big-Endian */
                       Chips );
    return (Error);
}
Example #16
0
/////////////////////////////////////////////////////////////////////////////
// Function: InitializeBoard()
// Input: none
// Output: none
// Overview: Initializes the hardware components including the PIC device
//           used.
/////////////////////////////////////////////////////////////////////////////
void InitializeBoard(void)
{    
     CLKDIVbits.RCDIV = 0;
     CLKDIVbits.DOZE = 0;
     CLKDIVbits.PLLEN = 1;
     CLKDIVbits.CPDIV = 0;
     OSCCONbits.COSC = 0b001;
     
     ANSA = 0x0000;
     ANSB = 0x0000;
     ANSC = 0x0010;		// RC4 as touch screen X+
     ANSD = 0x0000;
     ANSE = 0x0200;		// RE9 used as Y+
     ANSF = 0x0000;
     ANSG = 0x0000;
	
	LED_TRIS = 0;
	
    // Initialize graphics library and create default style scheme for GOL
    GOLInit();
	_DPTEST = 0b00;
	
	i2cInit();
	SPI1CON1 = 0b0000000100111110;
    SPI1STAT = 0x8000;
    
    RFIF = 0;
    if( RF_INT_PIN == 0 )
    {
        RFIF = 1;
    }

    //The following are PIC device specific settings for the SPI channel
    //used. 
    //Set IOs directions for SST25 SPI
        SST25_CS_LAT = 1;
        Nop();
        SST25_CS_TRIS = 0;

        SST25_SCK_TRIS = 0;
        Nop();
        SST25_SDO_TRIS = 0;
        Nop();
        SST25_SDI_TRIS = 1;

		//radio pins
		_RP11R = 8; // assign RP11 for SCK1
     	_RP2R = 7; // assign RP2 for SDO1
     	_SDI1R = 36; // assign RP36 for SDI1
     	_INT1R = 37;
    // set the peripheral pin select for the PSI channel used
        __builtin_write_OSCCONL(OSCCON & 0xbf); // unlock PPS
    	#if (SST25_SPI_CHANNEL == 1)
    	    RPOR3bits.RP6R = 8;                 // assign RP6 for SCK1
    	    RPOR9bits.RP18R = 7;                 // assign RP18 for SDO1
    	    RPINR20bits.SDI1R = 32;              // assign RP18 for SDI1
        #elif (SST25_SPI_CHANNEL == 2)
            _RP6R = 11;                // assign RP11 for SCK2
    	    _RP18R = 10;                // assign RP2 for SDO2
    	    _SDI2R = 32;              // assign RP36 for SDI2
    	#endif
		

     	
        __builtin_write_OSCCONL(OSCCON | 0x40); // lock   PPS
	
	//radio
	PHY_CS_TRIS = 0;
    Nop();
    PHY_CS = 1;
    Nop();
    PHY_RESETn_TRIS = 0;
    PHY_RESETn = 1;
    RF_INT_TRIS = 1;
    SDI_TRIS = 1;
    SDO_TRIS = 0;
    SCK_TRIS = 0;
    SPI_SDO = 0;        
    SPI_SCK = 0; 
    PHY_WAKE_TRIS = 0;
    PHY_WAKE = 1;
    
	LED = 1;
	TRISAbits.TRISA1 = 0;
	Nop();
	PORTAbits.RA1 = 1;
	
	// initialize the Flash Memory driver
    FlashInit(&SPI_Init_Data);
    LED = 0;
    // initialize the timer that manages the tick counter
    TickInit(); 
                     
    // initialize the components for Resistive Touch Screen
    TouchInit(NVMWrite, NVMRead, NVMSectorErase, TOUCH_INIT_VALUES);
    LED = 0;
}    
Example #17
0
void setup()
{
	uint8_t i=0;
	//初始化系统时钟
	setupSystemClock();
	
	//初始化串口
	setupUART();
	UART_NVIC_INIT();

	//初始化System_tick
	setup_system_tick(SYSTEM_TICK_FREQ);
	
	//初始化IIC
	I2C_Init();
	
	//初始化FLASH
	FlashInit();
	LoadParamsFromFlash();
	
	//初始化低电压检测
	BatteryCheckInit();
	
	//初始化遥控
	Comm_Init();
	
	//初始化LED
	LED_Init();
	
	//初始化SENSOR
	#ifdef IMU_SW											//软件姿态解算
	//	MPU6050_initialize();
	//	DelayMsec(1000);			//必须加延迟,否则读取陀螺仪数据出错
	#else
		MPU6050_initialize();
		DelayMsec(1000);			//必须加延迟,否则读取陀螺仪数据出错
		MPU6050_DMP_Initialize();     //初始化DMP引擎
	#endif
	
	//初始化自稳定
	
//	LED_ON();
//	//测试用,延迟启动时间
//	for(i=0;i<6;i++)
//	{
//		DelayMsec(1000);
//		LED_OFF();
//	}
		
	
	//初始化电机
	Motor_Init();
	
	//printf("Motor_Init(); \n");
	
	//IMU_Init();			// sample rate and cutoff freq.  sample rate is too low now due to using dmp.
	
//	printf("\n\nCPU @ %dHz\n", SystemCoreClock);
	//MotorPwmOutput(100,100,0,0);

}
Example #18
0
/**
  * @brief  Main program.
  * @param  None
  * @retval None
  */
void main(void)
{
	CLK_Config();
	FlashInit();

	sim();									// disable interrupts

	GPIO_Init(GPIOA, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Fast);
	GPIO_Init(GPIOB, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Fast);
	GPIO_Init(GPIOC, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Fast);
	GPIO_Init(GPIOD, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Fast);
	GPIO_Init(GPIOE, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Fast);
	GPIO_Init(GPIOF, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Fast);
	GPIO_Init(GPIOG, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Fast);

	delay1s(5);

	#ifdef DEBUG
		AppTrace_Init();
    	printf("\r\nSTM8L152 Start ...\r\n");
	#endif
	
	LED_Init();
    LED1_ON();
	scheduler_init();

	// Build count init event 
	count_event.eCount_event = COUNT_INIT;
	app_sched_event_put(&count_event,sizeof(count_event),count_event_handler);
	
	// Build key init event 
	key_event.eKey_event = KEY_INIT;
	app_sched_event_put(&key_event,sizeof(key_event),key_event_handler);
	
	// Build the valve standby event 
	valve_event.eValve_event = VALVE_STANDBY_EVENT;
	app_sched_event_put(&valve_event,sizeof(valve_event),valve_event_handler);
    
    // Build the LCD init event 
	lcd_event.eLcd_event = LCD_INIT;
	app_sched_event_put(&lcd_event,sizeof(lcd_event),lcd_event_handler);

	// Build the beeper init event 
	beeper_event.eBeeper_event = BEEPER_INIT;
	app_sched_event_put(&beeper_event,sizeof(beeper_event),beeper_event_handler);

	// Build the cc1120 Init event 
	cc112x_event.eCC112x_event = CC112X_INIT_EVENT;
	app_sched_event_put(&cc112x_event,sizeof(cc112x_event),cc112x_event_handler);

	// Build the IC card Init event 
	ic_card_event.eIC_event = IC_CARD_INIT;
	app_sched_event_put(&ic_card_event,sizeof(ic_card_event),ic_event_handler);

	// Build the IC card Init event 
	battery_event.eBattery_event = INT_BATTERY_EVENT;
	app_sched_event_put(&battery_event,sizeof(battery_event),battery_event_handler);

    // enable interrupts 
	rim();
    LED1_OFF();
	 
	// Infinite loop 
  	while (1)
  	{
		app_sched_execute();
		app_evt_wait();
  	}
}