Exemplo n.º 1
0
void Schedule_Init(void)
{
    Flash_Init(CLOCK_FREQ_MHZ);

    ScheduleRegistry = (unsigned long *) SCHEDULE_REGISTRY_ADDR;
	  ScheduleRegistrySize = 0;

    // look for current schedule (if one exists!)
    while((ScheduleRegistry[ScheduleRegistrySize] != EMPTY_SCHEDULE_ENTRY) && (ScheduleRegistrySize < 256)) {
        ScheduleRegistrySize++;
    }

    // check if first time loading a schedule
    if((ScheduleRegistrySize % SCHEDULE_REGISTRY_SIZE) == 0) { 
        Flash_Erase(SCHEDULE_REGISTRY_ADDR);
        Flash_Erase(SCHEDULE_BUFFER_A_ADDR);
        Flash_Write(SCHEDULE_REGISTRY_ADDR, SCHEDULE_BUFFER_A_ADDR);
        Schedule = (schedule_entry_t *) SCHEDULE_BUFFER_A_ADDR;
			  TempSchedule = (schedule_entry_t *) SCHEDULE_BUFFER_B_ADDR;
        ScheduleSize = 0;
			  TempScheduleSize = 0;
			  ScheduleRegistrySize = 1;
    } else {
        Schedule = (schedule_entry_t *) ScheduleRegistry[ScheduleRegistrySize-1];
        ScheduleSize = TempScheduleSize;
			  TempScheduleSize = 0;
        if(Schedule == (schedule_entry_t *) SCHEDULE_BUFFER_A_ADDR)  {
            TempSchedule = (schedule_entry_t *) SCHEDULE_BUFFER_B_ADDR;
        } 
        else {  
            TempSchedule = (schedule_entry_t *) SCHEDULE_BUFFER_A_ADDR;
        }
    }
}
Exemplo n.º 2
0
void If_WriteFirmware(void)
{
	Flash_Init();

	if (1) {
		UINT32 ReadAddrOffset, AddrBase, DataSize, i;
		PBYTE pOriginalData;
		UINT32 usLength;

		if (1) {
			// Write data to flash
			AddrBase = WIFI_FW_HELPER_ADDR;
			Flash_Write (AddrBase, (UINT8*)helperimage, sizeof (helperimage));
			// Read back data for checking...
			ReadAddrOffset = 0;
			pOriginalData = (PBYTE)helperimage;
			DataSize = sizeof (helperimage);
			while (ReadAddrOffset < DataSize) {
				if (ReadAddrOffset + FLASH_PAGE_SIZE < DataSize)
					usLength = FLASH_PAGE_SIZE;
				else
					usLength = DataSize - ReadAddrOffset;
				Flash_Read(AddrBase + ReadAddrOffset, ucBuffer, usLength);
				for (i = 0; i < usLength; i ++) {
					if (ucBuffer[i] != pOriginalData[ReadAddrOffset + i])
						break;
				}
				if (i != usLength)
					TRACE("Data Verify failed1!\r\n");
				ReadAddrOffset += usLength;
			}
		}

		if (1) {
			// Write data to flash
			AddrBase = WIFI_FW_FW_ADDR;
			Flash_Write (AddrBase, (UINT8*)fmimage, sizeof (fmimage));
			// Read back data for checking...
			ReadAddrOffset = 0;
			pOriginalData = (PBYTE)fmimage;
			DataSize = sizeof (fmimage);
			while (ReadAddrOffset < DataSize) {
				if (ReadAddrOffset + FLASH_PAGE_SIZE < DataSize)
					usLength = FLASH_PAGE_SIZE;
				else
					usLength = DataSize - ReadAddrOffset;
				Flash_Read(AddrBase + ReadAddrOffset, ucBuffer, usLength);
				for (i = 0; i < usLength; i ++) {
					if (ucBuffer[i] != pOriginalData[ReadAddrOffset + i])
						break;
				}
				if (i != usLength)
					TRACE("Data Verify failed1!2\r\n");
				ReadAddrOffset += usLength;
			}
		}
	}

	while (1);
}
Exemplo n.º 3
0
void Fls_Init(const Fls_ConfigType *ConfigPtr) {
	/** @req SWS_Fls_00014 */
	/** @req SWS_Fls_00086 */
	/** @req SWS_Fls_00015 */
	/** !req SWS_Fls_00048 */
	/** !req SWS_Fls_00325 */
	/** !req SWS_Fls_00326 */

	/** @req SWS_Fls_00268 */
	VALIDATE_NO_RV(Fls_Global.status!=MEMIF_BUSY,FLS_INIT_ID, FLS_E_BUSY );

	VALIDATE_NO_RV((ConfigPtr != NULL), FLS_INIT_ID, FLS_E_PARAM_CONFIG);
	VALIDATE_NO_RV(ConfigPtr->FlsMaxReadFastMode != 0, FLS_INIT_ID, FLS_E_PARAM_CONFIG);
	VALIDATE_NO_RV(ConfigPtr->FlsMaxReadNormalMode != 0, FLS_INIT_ID, FLS_E_PARAM_CONFIG);
	VALIDATE_NO_RV(ConfigPtr->FlsMaxWriteFastMode != 0, FLS_INIT_ID, FLS_E_PARAM_CONFIG);
	VALIDATE_NO_RV(ConfigPtr->FlsMaxWriteNormalMode != 0, FLS_INIT_ID, FLS_E_PARAM_CONFIG);

	Fls_Global.status = MEMIF_UNINIT;
	Fls_Global.jobResultType = MEMIF_JOB_PENDING;

	/** @req SWS_Fls_00191 */
	Fls_Global.config = ConfigPtr;

	Flash_Init();

	/** @req SWS_Fls_00323 */
	/** @req SWS_Fls_00324 */
	Fls_Global.status = MEMIF_IDLE;
	Fls_Global.jobResultType = MEMIF_JOB_OK;
	return;
}
Exemplo n.º 4
0
void Fls_Init(const Fls_ConfigType *ConfigPtr) {
	/** @req FLS249 3.0 */
	/** @req FLS191 3.0 */
	/** @req FLS014 3.0 */
	/** @req FLS086 3.0 */
	/** @req FLS015 3.0 */
	/** !req FLS048 TODO, true?    */
	/** !req FLS271 NO_SUPPORT 3.0 */
	/** !req FLS325 NO_SUPPORT 4.0 */
	/** !req FLS326 NO_SUPPORT 4.0 */

	/** @req FLS268 */
	VALIDATE_NO_RV(Fls_Global.status!=MEMIF_BUSY,FLS_INIT_ID, FLS_E_BUSY );

	VALIDATE_CONFIG(ConfigPtr->FlsMaxReadFastMode != 0 );
	VALIDATE_CONFIG(ConfigPtr->FlsMaxReadNormalMode != 0 );
	VALIDATE_CONFIG(ConfigPtr->FlsMaxWriteFastMode != 0 );
	VALIDATE_CONFIG(ConfigPtr->FlsMaxWriteNormalMode != 0 );

	Fls_Global.status = MEMIF_UNINIT;
	Fls_Global.jobResultType = MEMIF_JOB_PENDING;
	// TODO: FLS_E_PARAM_CONFIG

	/** @req FLS191 */
	Fls_Global.config = ConfigPtr;

	Flash_Init();

	/** @req FLS016 3.0 *//** @req FLS323 4.0 *//** @req FLS324 4.0*/
	Fls_Global.status = MEMIF_IDLE;
	Fls_Global.jobResultType = MEMIF_JOB_OK;
	return;
}
Exemplo n.º 5
0
/**
	* @brief Init function 
	* @param None
	* @retval None
	*/
void Init(void)
{
	Blu_Led_Pwm();
	uart_init();
	rtc_init();
	Flash_Init();
	Tem_Rh_Gpio_Init();
	//Flash_Test();
	queue_init();
}
Exemplo n.º 6
0
/******************************************************************************************************
 * 名       称:Write_InfoFlashB()
 * 功       能:将打包好的InfoFlash_Data[]数组,依次写入InfoFlashB段
 * 入口参数:无
 * 出口参数:无
 * 说       明:确保所有CCS工程的Erase Options改为选择“Erase main memory only”,
 * 					只有这样存在InfoFlashB的校验参数才不会因为烧录程序而丢失。
 * 范       例:无
 ******************************************************************************************************/
void Write_InfoFlashB()		//步骤6:将校验数组写入InfoFlahB段
{
	unsigned char i=0;
	//-----写Flash前DCO时钟一定要重新确认一遍-----
    BCSCTL1 = CALBC1_1MHZ;      										/* Set DCO to 8MHz */
    DCOCTL = CALDCO_1MHZ;
    Flash_Init(3,'B');																// 初始化Flash
	Flash_Erase();																	// 擦除Info_B
	//-----把InfoFlash_Data[CAL_NUM]存入InfoFlashB-----
	for(i=0;i<CAL_NUM;i++)
		Flash_Direct_WriteWord(i*2,InfoFlash_Data[i]);		//不擦直接写
}
Exemplo n.º 7
0
/*!
 * @brief Initialisation thread. runs once.
 */
void InitThread(void *data)
{
	for (;;)
	{
		OS_SemaphoreWait(InitSemaphore, 0);

		Random_Init();
		//Switches mate
		Switch_Init(S1Callback, (void *) 0, S2Callback, (void *) 0);

		Toggle_Init(ToggleModeFinished);
		Game_Init(GameModeFinished);

		Touch_Init();

//Initialize all the modules
		LEDs_Init();

		I2C_Init(100000, MODULE_CLOCK);
		Accel_Init(&AccelSetup);

		PIT_Init(MODULE_CLOCK, &PitCallback, (void *) 0);
		PIT_Set(500000000, bFALSE);
		PIT_Enable(bTRUE);

		Packet_Init(BAUD_RATE, MODULE_CLOCK);
		Flash_Init();
		CMD_Init();

		//Best to do this one last
		//TODO: disabled for yellow
    RTC_Init((void (*)(void*))OS_SemaphoreSignal, (void *) RtcSemaphore);

		Timer_Init();
		Timer_Set(&PacketTimer);
		Timer_Set(&AccTimer);

		CMD_SpecialGetStartupValues();

		LEDs_On(LED_ORANGE);
	}
}
Exemplo n.º 8
0
uint_8 erase_flash(void)
{ 
    /* Body */
    uint_8 error = FALSE;
    uint_8 i;
    Flash_Init(59);
    DisableInterrupts;                      
    for (i=0;i<(MAX_FLASH1_ADDRESS -(uint_32) IMAGE_ADDR)/ERASE_SECTOR_SIZE;i++)
    {
#if (!defined __MK_xxx_H__)    
        error = Flash_SectorErase((uint_32*)((uint_32) IMAGE_ADDR + ERASE_SECTOR_SIZE*i)) ; /* ERASE 4k flash memory */
#else
        error = Flash_SectorErase((uint_32) IMAGE_ADDR + ERASE_SECTOR_SIZE*i) ; /* ERASE 4k flash memory */
#endif
        if(error != Flash_OK)
        {
            break;
        } /* Endif */
    } /* Endfor */
    EnableInterrupts;
    return error;
} /* EndBody */
Exemplo n.º 9
0
void main(void)
{
	static char code[6];

	CPU_Init();
	Flash_Init();
	GPRS_Init();
	LCD_Init();
	Clr_LCDRam();
	LCD_LIGHT_ON;
	Dis_Logo();

	//#define FLASH_DEBUG
#ifdef FLASH_DEBUG
	while (1) {
		char checknum[32];
		INT16U cnt, offset;
		RECORD_HEAD_T head;
		RECORD_ITEM_T item;

		Format_AllHistoryRecord();

		for (cnt = 0; cnt < MAX_ALARM_NUM; cnt++) {
			FlashMemoryToBufferTransfer(cnt, FLASHBUFFER1);
			memset(&head, 0, sizeof(RECORD_HEAD_T));
			offset = OFFSET_OF(RECORD_T, info);
			FlashReadBuffer(offset, &head, sizeof(RECORD_HEAD_T), FLASHBUFFER1);
		}

		memset(&head, 0, sizeof(RECORD_HEAD_T));
		sprintf(head.mn, "98765432101234");
		Format_HistoryRecord(0, &head);

		FlashMemoryToBufferTransfer(0, FLASHBUFFER1);
		memset(&head, 0, sizeof(RECORD_HEAD_T));
		offset = OFFSET_OF(RECORD_T, info);
		FlashReadBuffer(offset, &head, sizeof(RECORD_HEAD_T), FLASHBUFFER1);

		memset(&item, 0, sizeof(RECORD_ITEM_T));
		sprintf(item.datetime, "12345678901234");
		item.inuse = 1;
		item.status = 'O';
		Add_HisRecordItem(&item, 0);

		FlashMemoryToBufferTransfer(0, FLASHBUFFER1);
		memset(&head, 0, sizeof(RECORD_HEAD_T));
		offset = OFFSET_OF(RECORD_T, info);
		FlashReadBuffer(offset, &head, sizeof(RECORD_HEAD_T), FLASHBUFFER1);

		Fetch_HisRecord(0);
		memset(&item, 0, sizeof(RECORD_ITEM_T));
		Get_HisRecordItemsBackward(&item, 1);

		FlashWriteBuffer(0, "asdfghjklqwertyuiop", 32, FLASHBUFFER1);
		memset(checknum, 0, sizeof(checknum));
		FlashReadBuffer(0, checknum, 32, FLASHBUFFER1);

		FlashBufferToMemoryWithErase(0, FLASHBUFFER1);
		memset(checknum, 0, sizeof(checknum));
		FlashReadBuffer(0, checknum, 32, FLASHBUFFER1);

		FlashMemoryToBufferTransfer(0, FLASHBUFFER1);
		memset(checknum, 0, sizeof(checknum));
		FlashReadBuffer(0, checknum, 32, FLASHBUFFER1);

		FlashReadMemoryContinus(0, 0, checknum, 32);
		memset(checknum, 0, sizeof(checknum));
		FlashReadBuffer(0, checknum, 32, FLASHBUFFER1);

		//FlashMemoryErasePage(0, 1);
		FlashClearMemory(0, 0, 32);
		memset(checknum, 0, sizeof(checknum));
		FlashReadBuffer(0, checknum, 8, FLASHBUFFER1);

		FlashWriteMemoryThroughBuffer(0, 0, "ABCDEFGHIJKLMNOP", 8, FLASHBUFFER1);
		memset(checknum, 0, sizeof(checknum));
		FlashReadBuffer(0, checknum, 8, FLASHBUFFER1);
	}
#endif

	Read_VersionCode(code);
	if (memcmp(code, VersionCode, 6) == 0) {
		Read_SysParam(&Sys_Param);
		Read_ADParam(Ad_Param);
		Read_ComParam(&Com_Param);
		Read_AlarmParam(Alarm_Param);
	} else {
		Default_SysParam(&Sys_Param);
		Default_ADParam(Ad_Param);
		Default_ComParam(&Com_Param);
		Default_AlarmParam(Alarm_Param);
		Save_SysParam(&Sys_Param);
		Save_ADParam(Ad_Param);
		Save_ComParam(&Com_Param);
		Save_AlarmParam(Alarm_Param);
		Save_VersionCode((char *) VersionCode);
		Format_AllHistoryRecord();
	}
	Read_ADCalibParam(&Ad_CalibParam);
	Fix_ADCalibParam(&Ad_CalibParam);
	ADParam_Calculate();

	v_Get1302(System_TimeStr, &Current_Tm);
	strcpy((char *) System_StartTimeStr, (char *) System_TimeStr);
	Dis_Welcome(1);

	IS752_Init(9600, COM2);
	IS752_Init(9600, COM3);
	IS752_Init(9600, COM4);
	IS752_Init(9600, COM5);
	Modbus_Init();
	ModbusIO_Init();
	InitHjt212();
	ENABLEINT();

	while (1) {
		SoftWDT_Flag = 0;
		ProcRunLED();
		ProcAlarm();
		ProcRTC();
		ProcDIO();
		//ProcADC();
		ProcessModbusSlave();
		//ProcessModbus();
		//ProcessModbusIO();
		//ProcData();
		ProcDisplay();
		ProcessHjt212();
	}
}
Exemplo n.º 10
0
_Bool Flash_Read(uint8_t addr, uint32_t* dist)
{
	if (addr < USED_SIZE / 4)
	{
		if (ReadRequed)
		{
			uint8_t i;
			uint32_t CRC = USED_SIZE;
			Block_Read(NEW_BLOCK_ADDR);
			for (i = 0; i < USED_SIZE / 4; i++)
			{
				CRC ^= Using_Values[i];
			}
			if (CRC == FMC_Read(NEW_BLOCK_ADDR + USED_SIZE))
			{
				*dist = FMC_Read(NEW_BLOCK_ADDR + addr * 4);
				/*if (*dist == 0xffff)
				 {
				 return FALSE;
				 }*/
				ReadRequed = FALSE;
				return TRUE;
			}
			else
			{
				FMC_Erase(NEW_BLOCK_ADDR);
				Flash_Init();

				DPRINTF(("Area 1 error! \n"));

			}
			Block_Read(BAK_BLOCK_ADDR);
			for (i = 0; i < USED_SIZE / 4; i++)
			{
				CRC ^= Using_Values[i];
			}
			if (CRC == FMC_Read(BAK_BLOCK_ADDR + USED_SIZE))
			{
				Block_Clear(NEW_BLOCK_ADDR);
				for (i = 0; i < USED_SIZE / 4; i++)
				{
					FMC_Write(NEW_BLOCK_ADDR + i * 4, Using_Values[i]);
				}
				FMC_Write(NEW_BLOCK_ADDR + USED_SIZE, CRC);
				*dist = FMC_Read(BAK_BLOCK_ADDR + addr * 4);
				/*if (*dist == 0xffff)
				 {
				 return FALSE;
				 }*/
				ReadRequed = FALSE;
				return TRUE;
			}
			else
			{
				FMC_Erase(BAK_BLOCK_ADDR);
				Flash_Init();
				DPRINTF(("Area 2 CRC error! \n"));
			}
		}
		else
		{
			*dist = Using_Values[addr];
			return TRUE;
		}
	}
	else
	{
		DPRINTF(("Err: Addr: %d  overrange!\n", addr));
	}
	return FALSE;
}
Exemplo n.º 11
0
int main(void){

	uint8_t sample[10] = "sneeches!";
	uint8_t *familytype;
	uint8_t *identification;
	uint8_t *read_bytes;
	const uint8_t str_size = strlen(sample);
	uint8_t mod_value = str_size % 4;
	uint8_t buf[8] = {0};
	uint8_t addrs, index, byte1, byte2, byte3, byte4;
	uint8_t rfid_address = 3;
	uint8_t flash_start_addr = 0x0b;
	int count;

	/* INITs & SET UP CALCULATIONS */	
	if(!(UART1_Init())){
		UART1_Print("\nUART 1 Initialized\n");
		UART1_Print(itoa(str_size, buf, 10));
		UART1_Print(" ");
		UART1_Print(itoa(mod_value, buf, 10));
		UART1_Print(" ");
		UART1_Print(itoa(str_size/4, buf, 10));
		UART1_Print(" ");
	}
	if(!(UART2_Init())){
		UART1_Print("\nUART 2 Initialized\n");
	}
	if(!(Flash_Init())){
		UART1_Print("\nFlash Memory Inititalized");
		UART1_Print("Flash memory ID: ");
		UART1_Print(itoa(Flashmem_ID(), buf, 16));
		UART1_Print("\r\n");
	}else{
		UART1_Print("\nProblem initializing flash...");
	}
	
	if(str_size % 4 != 0){
		addrs = ((str_size/4) + 1);
		UART1_Print("Addrs:");
		UART1_Print(itoa(addrs, buf, 10));
		UART1_Print("\n");
	}
	else{
		addrs = str_size/4;
		UART1_Print("Addrs:");
		UART1_Print(itoa(addrs, buf, 10));
		UART1_Print("\n");
	}

	rfid_address = 9;
	while(1){
		UART1_Print("\r\n#### START ####");
		
		/* GET FAMILY TYPE */
		UART1_Print("\r\nRFID Tag Family Is Type:");
		familytype = Read_Family_RFID();
		//for(index = 0; index < strlen(familytype); index++){
		for(index = 0; index < 3; index++){
			UART1_Print(itoa(*(familytype+index), buf, 16));
		}
		UART1_Flush();
		
		/* GET SERIAL NUMBER */
		UART1_Print("\r\nRFID Tag Serial #:");
		identification = Read_Serial_RFID();
		for(index = 0; index < strlen(identification); index++){
			UART1_Print(itoa(*(identification+index), buf, 16));
		}
		UART1_Flush();

		/* WRITE STRING */
		Write_RFID(rfid_address, sample[0], sample[1], sample[2], sample[3]);
		_delay_ms(5);
		
		/* READ ADDRESS */
		UART1_Print("\r\nReading RFID address ");
		UART1_Print(itoa(rfid_address, buf, 10));
		UART1_Print("...");
		read_bytes = Read_RFID(rfid_address);
		for(index = 0; index < strlen(read_bytes); index++){
			UART1_Print(itoa(*(read_bytes+index), buf, 16));
		}
		read_bytes = Read_RFID(rfid_address);
		//for(index = 0; index < strlen(read_bytes); index++){
		//	UART1_Print(itoa(*(read_bytes+index), buf, 16));
		//}
		UART1_Flush();
		
		/* STORING IDENTIFICATION */
		UART1_Print("\r\nWriting to flash... ");
		UART1_Flush();
		_delay_ms(1);
		//Flash_Test_Write();
		Flash_Byte_Write(&identification[0], flash_start_addr);
		UART1_Flush();
		UART1_Print("\r\nReading flash...: ");
		UART1_Flush();
		_delay_ms(1);
		Flash_Read_Bytes(10, flash_start_addr,0x00,0x00);
		_delay_ms(1);
		UART1_Print("\r\n#### DONE ####\r\n");

		/* CLEAN UP */
		Reset_Tag();
		_delay_ms(5);
		UART1_Flush();
		free(read_bytes);
		free(familytype);
		free(identification);
	}
	return 0;


}