748 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			748 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "os_types.h"
							 | 
						||
| 
								 | 
							
								#include "os_task.h"
							 | 
						||
| 
								 | 
							
								#include "os_mem.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "dbg_io.h"
							 | 
						||
| 
								 | 
							
								#include "iot_diag.h"
							 | 
						||
| 
								 | 
							
								#include "iot_io.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//#include <stdlib.h>
							 | 
						||
| 
								 | 
							
								#include "iot_system_api.h"
							 | 
						||
| 
								 | 
							
								#include "iot_config.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//#include "iot_gptmr.h"
							 | 
						||
| 
								 | 
							
								#include "iot_system.h"
							 | 
						||
| 
								 | 
							
								//#include "os_mem.h"
							 | 
						||
| 
								 | 
							
								//#include "cpu.h"
							 | 
						||
| 
								 | 
							
								//#include "os_task.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "platform.h"
							 | 
						||
| 
								 | 
							
								#include "encoding.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//#include "sec_glb.h"
							 | 
						||
| 
								 | 
							
								//#include "ahb.h"
							 | 
						||
| 
								 | 
							
								//#include "intc.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "bits.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "os_utils.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "iot_rtc.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "chip_reg_base.h"
							 | 
						||
| 
								 | 
							
								#include "hw_reg_api.h"
							 | 
						||
| 
								 | 
							
								#include "iot_bitops.h"
							 | 
						||
| 
								 | 
							
								#include "flash.h"
							 | 
						||
| 
								 | 
							
								#include "os_lock.h"
							 | 
						||
| 
								 | 
							
								#include "iot_config.h"
							 | 
						||
| 
								 | 
							
								#include "ahb.h"
							 | 
						||
| 
								 | 
							
								#include "sec_glb.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if HW_PLATFORM > HW_PLATFORM_SIMU
							 | 
						||
| 
								 | 
							
								#include "dbg_io.h"
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								#include "iot_io.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define SFC_API_TEST   1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if SFC_API_TEST == 1
							 | 
						||
| 
								 | 
							
								#include "sfc.h"
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define FLASH_TEST_OFFSET   (0x100000)
							 | 
						||
| 
								 | 
							
								uint8_t rdata[0x1000] = {0};
							 | 
						||
| 
								 | 
							
								uint8_t wdata[0x1000] = {1,2,3,4,5,6,7,8,9,0,255,254,253,252,251,250};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "chip_reg_base.h"
							 | 
						||
| 
								 | 
							
								#include "hw_reg_api.h"
							 | 
						||
| 
								 | 
							
								#include "iot_bitops.h"
							 | 
						||
| 
								 | 
							
								#include "os_lock.h"
							 | 
						||
| 
								 | 
							
								#include "iot_config.h"
							 | 
						||
| 
								 | 
							
								#include "sram.h"
							 | 
						||
| 
								 | 
							
								#include "os_mem.h"
							 | 
						||
| 
								 | 
							
								#include "smc.h"
							 | 
						||
| 
								 | 
							
								#if HW_PLATFORM > HW_PLATFORM_SIMU
							 | 
						||
| 
								 | 
							
								#include "dbg_io.h"
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								#include "iot_io.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "ahb.h"
							 | 
						||
| 
								 | 
							
								#include "sec_glb.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define     CLK                 48  //16 //48
							 | 
						||
| 
								 | 
							
								#define     PSRAM_ACCSEE_WAY    0    //0:cache  1:software
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								extern void sfc_bus_share_en();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								static int32_t iot__platform_init()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    /*platform intialization*/
							 | 
						||
| 
								 | 
							
								    platform_init();
							 | 
						||
| 
								 | 
							
								    dbg_uart_init();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return 0;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void get_id_test()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    uint8_t param[0x100] = {0};
							 | 
						||
| 
								 | 
							
								    iot_printf("[SFDP data]\n");
							 | 
						||
| 
								 | 
							
								    sfc_read_sfdp(param, 0x0, 0x4);
							 | 
						||
| 
								 | 
							
								    iot_printf("0x0: %x %x %x %x\n", param[0], param[1], param[2], param[3]);
							 | 
						||
| 
								 | 
							
								    sfc_read_sfdp(param, 0x10, 0x4);
							 | 
						||
| 
								 | 
							
								    iot_printf("0x0: %x %x %x %x\n", param[0], param[1], param[2], param[3]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    iot_printf("\n[SFC API TEST] start get id test\n");
							 | 
						||
| 
								 | 
							
								    //g_sfc_ctrl->get_dev_id(rdata);
							 | 
						||
| 
								 | 
							
								    iot_printf("Manufacturer ID:%x%x\r\n",rdata[1], rdata[0]);
							 | 
						||
| 
								 | 
							
								    sfc_qspi_get_id_mult(rdata, MOD_SFC_SERIAL);
							 | 
						||
| 
								 | 
							
								    iot_printf("Manufacturer ID:%x%x\r\n",rdata[1], rdata[0]);
							 | 
						||
| 
								 | 
							
								    sfc_qspi_get_id_mult(rdata, MOD_SFC_DUAL);
							 | 
						||
| 
								 | 
							
								    iot_printf("Manufacturer ID dual: %x%x\r\n",rdata[1], rdata[0]);
							 | 
						||
| 
								 | 
							
								    sfc_qspi_get_id_mult(rdata, MOD_SFC_QUAD);
							 | 
						||
| 
								 | 
							
								    iot_printf("Manufacturer ID quad: %x%x\r\n",rdata[1], rdata[0]);
							 | 
						||
| 
								 | 
							
								    iot_printf("[SFC API TEST] end get id test\n");
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void get_sts_reg_test()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    uint8_t data;
							 | 
						||
| 
								 | 
							
								    uint8_t reg = 0;
							 | 
						||
| 
								 | 
							
								    iot_printf("\n[SFC API TEST] start get status reg test\n");
							 | 
						||
| 
								 | 
							
								    g_sfc_ctrl->get_sts_reg(&data, reg);
							 | 
						||
| 
								 | 
							
								    iot_printf("get reg[%d]: %08x\n ", reg, data);
							 | 
						||
| 
								 | 
							
								    reg = 1;
							 | 
						||
| 
								 | 
							
								    g_sfc_ctrl->get_sts_reg(&data, reg);
							 | 
						||
| 
								 | 
							
								    iot_printf("get reg[%d]: %08x\n ", reg, data);
							 | 
						||
| 
								 | 
							
								    iot_printf("[SFC API TEST] end get status reg test\n");
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void erase_test(void)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    uint32_t i = 0, error = 0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    iot_printf("erase sector test\n");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    os_mem_set(rdata,0,sizeof(rdata));
							 | 
						||
| 
								 | 
							
								    g_sfc_ctrl->erase_sector(FLASH_TEST_OFFSET, MOD_SW_MODE_DIS);     //4k
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    for (i=0; i<0x10; i++) {
							 | 
						||
| 
								 | 
							
								        g_sfc_ctrl->read(rdata+0x100*i,(FLASH_TEST_OFFSET+0x100*i),0x100, MOD_SFC_READ_SIG);     //read page 256
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    for (i=0;i<sizeof(rdata);i++) {
							 | 
						||
| 
								 | 
							
								        if (rdata[i] != 0xff) {
							 | 
						||
| 
								 | 
							
								            error++;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (error != 0) {
							 | 
						||
| 
								 | 
							
								            iot_printf("ERROR erase sector failed\n");
							 | 
						||
| 
								 | 
							
								        } else {
							 | 
						||
| 
								 | 
							
								             iot_printf("erase sector success\n");
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void write_test()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    uint32_t i = 0,error = 0;
							 | 
						||
| 
								 | 
							
								    iot_printf("\n[SFC API TEST] start write test\n");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    for (i=0; i<sizeof(wdata); i++){
							 | 
						||
| 
								 | 
							
								        wdata[i] = i;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    //////////////////////////////////////////
							 | 
						||
| 
								 | 
							
								    iot_printf("qspi write test\n");
							 | 
						||
| 
								 | 
							
								    error = 0;
							 | 
						||
| 
								 | 
							
								    os_mem_set(rdata,0,sizeof(rdata));
							 | 
						||
| 
								 | 
							
								    //g_sfc_ctrl->erase_sector(FLASH_TEST_OFFSET, MOD_SW_MODE_DIS);       //4k
							 | 
						||
| 
								 | 
							
								    erase_test();
							 | 
						||
| 
								 | 
							
								    for (i=0; i<0x10; i++) {
							 | 
						||
| 
								 | 
							
								        g_sfc_ctrl->write((wdata+0x100*i),(FLASH_TEST_OFFSET+0x100*i), 0x100,
							 | 
						||
| 
								 | 
							
								            MOD_SFC_PROG_STAND, MOD_SW_MODE_DIS);                       //write page 256
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    for (i=0; i<0x10; i++) {
							 | 
						||
| 
								 | 
							
								        g_sfc_ctrl->read(rdata+0x100*i,(FLASH_TEST_OFFSET+0x100*i),0x100, MOD_SFC_READ_SIG);     //read page 256
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    for (i=0; i<sizeof(rdata); i++){
							 | 
						||
| 
								 | 
							
								        if (rdata[i] != i%256) {
							 | 
						||
| 
								 | 
							
								            error++;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (error != 0) {
							 | 
						||
| 
								 | 
							
								        iot_printf("ERROR qspi write, qspi read error\n");
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								        iot_printf("qspi write, qspi read success\n");
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    os_delay(5);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    //////////////////////////////////////////
							 | 
						||
| 
								 | 
							
								    iot_printf("\n\rquad write test\n");
							 | 
						||
| 
								 | 
							
								    error = 0;
							 | 
						||
| 
								 | 
							
								    os_mem_set(rdata,0,sizeof(rdata));
							 | 
						||
| 
								 | 
							
								   // g_sfc_ctrl->erase_sector(FLASH_TEST_OFFSET, MOD_SW_MODE_DIS);   //4k
							 | 
						||
| 
								 | 
							
								    erase_test();
							 | 
						||
| 
								 | 
							
								    for (i=0; i<0x10; i++) {
							 | 
						||
| 
								 | 
							
								        g_sfc_ctrl->write((wdata+0x100*i),(FLASH_TEST_OFFSET+0x100*i),0x100,
							 | 
						||
| 
								 | 
							
								                      MOD_SFC_PROG_QUAD, MOD_SW_MODE_DIS);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    for (i=0; i<0x10; i++) {
							 | 
						||
| 
								 | 
							
								        g_sfc_ctrl->read(rdata+0x100*i,(FLASH_TEST_OFFSET+0x100*i),0x100, MOD_SFC_READ_SIG);     //read page 256
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    for (i=0; i<sizeof(rdata); i++){
							 | 
						||
| 
								 | 
							
								        if (rdata[i] != i%256) {
							 | 
						||
| 
								 | 
							
								            error++;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (error != 0) {
							 | 
						||
| 
								 | 
							
								        iot_printf("ERROR quad write, quad read error\n");
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								        iot_printf("quad write, quad read success\n");
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    os_delay(5);
							 | 
						||
| 
								 | 
							
								    iot_printf("[SFC API TEST] end write test\n");
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void read_test()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    uint32_t i = 0,error = 0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    iot_printf("\n[SFC API TEST] start read test\n");
							 | 
						||
| 
								 | 
							
								    iot_printf("read test\n");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    os_mem_set(rdata,0,sizeof(rdata));
							 | 
						||
| 
								 | 
							
								    for (i=0; i<0x10; i++) {
							 | 
						||
| 
								 | 
							
								        g_sfc_ctrl->read(rdata+0x100*i,(FLASH_TEST_OFFSET+0x100*i),0x100, MOD_SFC_READ_SIG);     //read page 256
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    for (i=0; i<sizeof(rdata); i++){
							 | 
						||
| 
								 | 
							
								        if (rdata[i] != i%256) {
							 | 
						||
| 
								 | 
							
								            error++;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (error != 0) {
							 | 
						||
| 
								 | 
							
								        iot_printf("ERROR sig read error\n");
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								        iot_printf("sig read success\n");
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    os_delay(5);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    ///////////////
							 | 
						||
| 
								 | 
							
								    error = 0;
							 | 
						||
| 
								 | 
							
								    os_mem_set(rdata,0,sizeof(rdata));
							 | 
						||
| 
								 | 
							
								    for (i=0; i<0x10; i++) {
							 | 
						||
| 
								 | 
							
								        g_sfc_ctrl->read(rdata+0x100*i,(FLASH_TEST_OFFSET+0x100*i),0x100, MOD_SFC_READ_HIGH_SPD);     //read page 256
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    for (i=0; i<sizeof(rdata); i++){
							 | 
						||
| 
								 | 
							
								        if (rdata[i] != i%256) {
							 | 
						||
| 
								 | 
							
								            error++;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (error != 0) {
							 | 
						||
| 
								 | 
							
								        iot_printf("ERROR high speed read error\n");
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								        iot_printf("high speed read success\n");
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    os_delay(5);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    //////////////
							 | 
						||
| 
								 | 
							
								    error = 0;
							 | 
						||
| 
								 | 
							
								    os_mem_set(rdata,0,sizeof(rdata));
							 | 
						||
| 
								 | 
							
								    for (i=0; i<0x10; i++) {
							 | 
						||
| 
								 | 
							
								        g_sfc_ctrl->read(rdata+0x100*i,(FLASH_TEST_OFFSET+0x100*i),0x100, MOD_SFC_READ_DUAL_FAST);     //read page 256
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    for (i=0; i<sizeof(rdata); i++){
							 | 
						||
| 
								 | 
							
								        if (rdata[i] != i%256) {
							 | 
						||
| 
								 | 
							
								            error++;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (error != 0) {
							 | 
						||
| 
								 | 
							
								        iot_printf("ERROR dual fast read error\n");
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								        iot_printf("dual fast read success\n");
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    os_delay(5);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    ///////////////
							 | 
						||
| 
								 | 
							
								    error = 0;
							 | 
						||
| 
								 | 
							
								    os_mem_set(rdata,0,sizeof(rdata));
							 | 
						||
| 
								 | 
							
								    for (i=0; i<0x10; i++) {
							 | 
						||
| 
								 | 
							
								        g_sfc_ctrl->read(rdata+0x100*i,(FLASH_TEST_OFFSET+0x100*i),0x100, MOD_SFC_READ_QUAD_FAST);     //read page 256
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    for (i=0; i<sizeof(rdata); i++){
							 | 
						||
| 
								 | 
							
								        if (rdata[i] != i%256) {
							 | 
						||
| 
								 | 
							
								            error++;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (error != 0) {
							 | 
						||
| 
								 | 
							
								        iot_printf("ERROR quad fast read error\n");
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								        iot_printf("quad fast read success\n");
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    os_delay(5);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    ///////////////
							 | 
						||
| 
								 | 
							
								    error = 0;
							 | 
						||
| 
								 | 
							
								    os_mem_set(rdata,0,sizeof(rdata));
							 | 
						||
| 
								 | 
							
								    for (i=0; i<0x10; i++) {
							 | 
						||
| 
								 | 
							
								        g_sfc_ctrl->read(rdata+0x100*i,(FLASH_TEST_OFFSET+0x100*i),0x100, MOD_SFC_READ_DUAL_IO_FAST);     //read page 256
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    for (i=0; i<sizeof(rdata); i++){
							 | 
						||
| 
								 | 
							
								        if (rdata[i] != i%256) {
							 | 
						||
| 
								 | 
							
								            error++;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (error != 0) {
							 | 
						||
| 
								 | 
							
								        iot_printf("ERROR dual io fast read error\n");
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								        iot_printf("dual io fast read success\n");
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    os_delay(5);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    ///////////////
							 | 
						||
| 
								 | 
							
								    error = 0;
							 | 
						||
| 
								 | 
							
								    os_mem_set(rdata,0,sizeof(rdata));
							 | 
						||
| 
								 | 
							
								    for (i=0; i<0x10; i++) {
							 | 
						||
| 
								 | 
							
								        g_sfc_ctrl->read(rdata+0x100*i,(FLASH_TEST_OFFSET+0x100*i),0x100, MOD_SFC_READ_QUAD_IO_FAST);     //read page 256
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    for (i=0; i<sizeof(rdata); i++){
							 | 
						||
| 
								 | 
							
								        if (rdata[i] != i%256) {
							 | 
						||
| 
								 | 
							
								            error++;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (error != 0) {
							 | 
						||
| 
								 | 
							
								        iot_printf("ERROR quad io fast read error\n");
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								        iot_printf("quad io fast read success\n");
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    os_delay(5);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    ///////////////
							 | 
						||
| 
								 | 
							
								    error = 0;
							 | 
						||
| 
								 | 
							
								    os_mem_set(rdata,0,sizeof(rdata));
							 | 
						||
| 
								 | 
							
								    for (i=0; i<0x10; i++) {
							 | 
						||
| 
								 | 
							
								        g_sfc_ctrl->read(rdata+0x100*i,(FLASH_TEST_OFFSET+0x100*i),0x100, MOD_SFC_READ_QUAD_IO_WORD_FAST);     //read page 256
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    for (i=0; i<sizeof(rdata); i++){
							 | 
						||
| 
								 | 
							
								        if (rdata[i] != i%256) {
							 | 
						||
| 
								 | 
							
								            error++;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (error != 0) {
							 | 
						||
| 
								 | 
							
								        iot_printf("ERROR quad io word fast read error\n");
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								        iot_printf("quad io word fast read success\n");
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    os_delay(5);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    iot_printf("[SFC API TEST] end read test\n");
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void sfc_cache_read_test()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    uint32_t i = 0,rdata = 0, error = 0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    iot_printf("\n[SFC API TEST] start cache read test\n");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    iot_printf(" read flash by cache0\n");
							 | 
						||
| 
								 | 
							
								    for (i=0;i<sizeof(wdata);i++) {
							 | 
						||
| 
								 | 
							
								        rdata = *(volatile uint8_t *)(0x14000000+FLASH_TEST_OFFSET+i);
							 | 
						||
| 
								 | 
							
								        if (rdata != i%256) {
							 | 
						||
| 
								 | 
							
								            iot_printf("ERROR cache flash read: rdata[%d] = %02x\n",i, rdata);
							 | 
						||
| 
								 | 
							
								            error++;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    os_delay(5);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    iot_printf("read flash by cache1\n");
							 | 
						||
| 
								 | 
							
								    for (i=0;i<sizeof(wdata);i++) {
							 | 
						||
| 
								 | 
							
								        rdata = *(volatile uint8_t *)(0x1c000000+FLASH_TEST_OFFSET+i);
							 | 
						||
| 
								 | 
							
								        if (rdata != i%256) {
							 | 
						||
| 
								 | 
							
								            iot_printf("ERROR cache flash read: rdata[%d] = %02x\n",i, rdata);
							 | 
						||
| 
								 | 
							
								            error++;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    os_delay(5);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    iot_printf("read flash by cache2\n");
							 | 
						||
| 
								 | 
							
								    for (i=0;i<sizeof(wdata);i++) {
							 | 
						||
| 
								 | 
							
								        rdata = *(volatile uint8_t *)(0x24000000+FLASH_TEST_OFFSET+i);
							 | 
						||
| 
								 | 
							
								        if (rdata != i%256) {
							 | 
						||
| 
								 | 
							
								            iot_printf("ERROR cache flash read: rdata[%d] = %02x\n",i, rdata);
							 | 
						||
| 
								 | 
							
								            error++;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    os_delay(5);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    iot_printf("read flash by cache3\n");
							 | 
						||
| 
								 | 
							
								    for (i=0;i<sizeof(wdata);i++) {
							 | 
						||
| 
								 | 
							
								        rdata = *(volatile uint8_t *)(0x2c000000+FLASH_TEST_OFFSET+i);
							 | 
						||
| 
								 | 
							
								        if (rdata != i%256) {
							 | 
						||
| 
								 | 
							
								            iot_printf("ERROR cache flash read: rdata[%d] = %02x\n",i, rdata);
							 | 
						||
| 
								 | 
							
								            error++;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (0 == error) {
							 | 
						||
| 
								 | 
							
								        iot_printf("flash cache0~4 read test success\r\n");
							 | 
						||
| 
								 | 
							
								    }else {
							 | 
						||
| 
								 | 
							
								        iot_printf("flash cache0~4 read test failed\r\n");
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void sfc_main() {
							 | 
						||
| 
								 | 
							
								    uint8_t wip_sts;
							 | 
						||
| 
								 | 
							
								    uint32_t loop = 0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    iot_printf("\r\n>>>>>>>>>>>>>>>>>>>>>>>>flash read && write test begin<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\r\n");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /* init sfc and flash */
							 | 
						||
| 
								 | 
							
								    flash_init(1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    do {
							 | 
						||
| 
								 | 
							
								        iot_printf("quad: %d\n", g_sfc_ctrl->is_quad);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        get_id_test();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        get_sts_reg_test();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        g_sfc_ctrl->query_wip_sts(&wip_sts);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if(wip_sts == 1) {
							 | 
						||
| 
								 | 
							
								            iot_printf("FLASH is WORK IN STATUS\r\n");
							 | 
						||
| 
								 | 
							
								        } else{
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            erase_test();
							 | 
						||
| 
								 | 
							
								            write_test();
							 | 
						||
| 
								 | 
							
								            read_test();
							 | 
						||
| 
								 | 
							
								            sfc_cache_read_test();
							 | 
						||
| 
								 | 
							
								            erase_test();
							 | 
						||
| 
								 | 
							
								            os_delay(5);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        loop++;
							 | 
						||
| 
								 | 
							
								        iot_printf("\r\n>>>>>>>>>>>>>>>>>>>>>>>>>>>flash read && write test cnt : %d<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\r\n",loop);
							 | 
						||
| 
								 | 
							
								    } while (1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								     while(1)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        iot_printf("user_task_test_1 \n");
							 | 
						||
| 
								 | 
							
								        os_delay(1000);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void smc_main() {
							 | 
						||
| 
								 | 
							
								    uint32_t loop = 0;
							 | 
						||
| 
								 | 
							
								    uint8_t rdata[0x40] = {0};
							 | 
						||
| 
								 | 
							
								    uint8_t wdata[0x40] = {1,2,3,4,5,6,7,8,9,0x11,0x22,0x33,0x44};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    int i = 0, j = 0, k = 0;
							 | 
						||
| 
								 | 
							
								    int offset = 0;
							 | 
						||
| 
								 | 
							
								    int len = sizeof(wdata);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    for(i = 0; i < len; i++) {
							 | 
						||
| 
								 | 
							
								        wdata[i] = 0x5a;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    iot_printf("\r\n-------------------------------psram read && write test begin-------------------------------\r\n");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if(PSRAM_ACCSEE_WAY == 0)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        while(1) {
							 | 
						||
| 
								 | 
							
								           int i,j,error = 0;
							 | 
						||
| 
								 | 
							
								           uint32_t rdat;
							 | 
						||
| 
								 | 
							
								           for (j=0;j<100;j++)
							 | 
						||
| 
								 | 
							
								           {
							 | 
						||
| 
								 | 
							
								               for (i=0;i<1000;i++)
							 | 
						||
| 
								 | 
							
								               {
							 | 
						||
| 
								 | 
							
								                   *((volatile uint32_t*)(0x18300000+i*4+1000*4*j)) = 0x12345678+i+j;
							 | 
						||
| 
								 | 
							
								               }
							 | 
						||
| 
								 | 
							
								               ahb_cachex_flush(1,0x18300000+1000*4*j, 0x400*4);
							 | 
						||
| 
								 | 
							
								               ahb_cachex_flush(0,0x10100000,1024*1024);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								               for (i=0;i<1000;i++)
							 | 
						||
| 
								 | 
							
								               {
							 | 
						||
| 
								 | 
							
								                   rdat=((volatile uint32_t)*((volatile uint32_t*)(0x10300000+i*4+1000*4*j)));
							 | 
						||
| 
								 | 
							
								                   if(((0x12345678+i+j) != rdat))
							 | 
						||
| 
								 | 
							
								                   {
							 | 
						||
| 
								 | 
							
								                       iot_printf("ERROR addr 0x%x, WR:0x%x, RD 0x%X\r\n",(0x10300000+i*4+1000*4*j), (0x12345678+i+j),rdat);
							 | 
						||
| 
								 | 
							
								                       error++;
							 | 
						||
| 
								 | 
							
								                   }
							 | 
						||
| 
								 | 
							
								               }
							 | 
						||
| 
								 | 
							
								               os_delay(1);
							 | 
						||
| 
								 | 
							
								           }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								           for (j=0;j<100;j++)
							 | 
						||
| 
								 | 
							
								           {
							 | 
						||
| 
								 | 
							
								               for (i=0;i<1000;i++)
							 | 
						||
| 
								 | 
							
								               {
							 | 
						||
| 
								 | 
							
								                   *((volatile uint32_t*)(0x28300000+i*4+1000*4*j)) = 0x12345678+i+j;
							 | 
						||
| 
								 | 
							
								               }
							 | 
						||
| 
								 | 
							
								               ahb_cachex_flush(3,0x28300000+1000*4*j, 0x400*4);
							 | 
						||
| 
								 | 
							
								               ahb_cachex_clear(2);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								               for (i=0;i<1000;i++)
							 | 
						||
| 
								 | 
							
								               {
							 | 
						||
| 
								 | 
							
								                   rdat=((volatile uint32_t)*((volatile uint32_t*)(0x20300000+i*4+1000*4*j)));
							 | 
						||
| 
								 | 
							
								                   if(((0x12345678+i+j) != rdat))
							 | 
						||
| 
								 | 
							
								                   {
							 | 
						||
| 
								 | 
							
								                       iot_printf("ERROR addr 0x%x, WR:0x%x, RD 0x%X\r\n",(0x20300000+i*4+1000*4*j), (0x12345678+i+j),rdat);
							 | 
						||
| 
								 | 
							
								                       error++;
							 | 
						||
| 
								 | 
							
								                   }
							 | 
						||
| 
								 | 
							
								               }
							 | 
						||
| 
								 | 
							
								               os_delay(1);
							 | 
						||
| 
								 | 
							
								           }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								           if (0 == error) {
							 | 
						||
| 
								 | 
							
								                iot_printf("*********************psram cache0~4 flush and read test success***********************\r\n");
							 | 
						||
| 
								 | 
							
								           }else {
							 | 
						||
| 
								 | 
							
								                iot_printf("*********************psram cache0~4 flush and read test failed************************\r\n");
							 | 
						||
| 
								 | 
							
								           }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								           loop++;
							 | 
						||
| 
								 | 
							
								           iot_printf("\r\n------------------------------- psram read && write test cnt : %d -------------------------------\n\r",loop);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }else{
							 | 
						||
| 
								 | 
							
								    /* init sfc and sram */
							 | 
						||
| 
								 | 
							
								    sfc_bus_share_en();
							 | 
						||
| 
								 | 
							
								    sram_qspi_init();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    hal_smc_spi_cfg(CLK);
							 | 
						||
| 
								 | 
							
								    do {
							 | 
						||
| 
								 | 
							
								           if(sram_qspi_is_busy() != HAL_SRAM_OK){
							 | 
						||
| 
								 | 
							
								              iot_printf("SRAM IS Busy Now!\r\n");
							 | 
						||
| 
								 | 
							
								           }else{
							 | 
						||
| 
								 | 
							
								            /* spi mode */
							 | 
						||
| 
								 | 
							
								     //       sram_qspi_exit();
							 | 
						||
| 
								 | 
							
								              iot_printf("spi write & read \n");
							 | 
						||
| 
								 | 
							
								              wdata[10] = 0xaa;
							 | 
						||
| 
								 | 
							
								              sram_qspi_write(wdata,0x1000,sizeof(wdata));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              while(sram_qspi_is_busy());
							 | 
						||
| 
								 | 
							
								              os_mem_set(rdata,0,sizeof(rdata));
							 | 
						||
| 
								 | 
							
								              sram_qspi_read(rdata,0x1000,sizeof(rdata));
							 | 
						||
| 
								 | 
							
								              iot_printf("wdata[10]:%x, rdata[10]:%x\n", wdata[10], rdata[10]);
							 | 
						||
| 
								 | 
							
								              if (wdata[10] != rdata[10]) {
							 | 
						||
| 
								 | 
							
								                   iot_printf("ERROR!! qspi write, qspi read not match\n");
							 | 
						||
| 
								 | 
							
								                //return;
							 | 
						||
| 
								 | 
							
								           }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								           /* qpi mode */
							 | 
						||
| 
								 | 
							
								           iot_printf("qpi write & read \n");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								           sram_qspi_enter();
							 | 
						||
| 
								 | 
							
								           hal_smc_qspi_quad_cfg(CLK);
							 | 
						||
| 
								 | 
							
								           wdata[10] = 0xbb;
							 | 
						||
| 
								 | 
							
								           sram_qspi_quad_write(wdata,0x2000,sizeof(wdata));
							 | 
						||
| 
								 | 
							
								           while(sram_qspi_is_busy());
							 | 
						||
| 
								 | 
							
								           os_mem_set(rdata,0,sizeof(rdata));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								           sram_qspi_quad_read(rdata,0x2000,sizeof(rdata));
							 | 
						||
| 
								 | 
							
								           iot_printf("wdata[10]:%x, rdata[10]:%x\n", wdata[10], rdata[10]);
							 | 
						||
| 
								 | 
							
								           if (wdata[10] != rdata[10]) {
							 | 
						||
| 
								 | 
							
								               iot_printf(" quad write, quad read not match\n");
							 | 
						||
| 
								 | 
							
								               return;
							 | 
						||
| 
								 | 
							
								           }
							 | 
						||
| 
								 | 
							
								           /* write read test */
							 | 
						||
| 
								 | 
							
								           iot_printf(" write read loop test \n");
							 | 
						||
| 
								 | 
							
								           offset = 0;
							 | 
						||
| 
								 | 
							
								           j = 0;
							 | 
						||
| 
								 | 
							
								           for (j = 0; j < 10; j++) {
							 | 
						||
| 
								 | 
							
								               iot_printf("\r\n------loop %d offset %x------\r\n", j, offset);
							 | 
						||
| 
								 | 
							
								               sram_qspi_quad_write(wdata, 0x1000+offset,sizeof(wdata));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								               while(sram_qspi_is_busy());
							 | 
						||
| 
								 | 
							
								               os_mem_set(rdata,0,sizeof(rdata));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								               sram_qspi_quad_read(rdata, 0x1000 +offset, sizeof(rdata));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								               for(i=0; i<len; i++) {
							 | 
						||
| 
								 | 
							
								                   if (i % 4 == 0 ) {
							 | 
						||
| 
								 | 
							
								                       iot_printf("\r\naddr: %08x: ", offset+i);
							 | 
						||
| 
								 | 
							
								                   }
							 | 
						||
| 
								 | 
							
								                   iot_printf("%02x ", rdata[i]);
							 | 
						||
| 
								 | 
							
								               }
							 | 
						||
| 
								 | 
							
								               k = 0;
							 | 
						||
| 
								 | 
							
								               for(k=0;k<1000;k++);
							 | 
						||
| 
								 | 
							
								               offset += 0x40;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            sram_qspi_exit();
							 | 
						||
| 
								 | 
							
								            return;
							 | 
						||
| 
								 | 
							
								       }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								       while(sram_qspi_is_busy());
							 | 
						||
| 
								 | 
							
								    } while (false);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								     while(1)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        iot_printf("user_task_test_2 \n");
							 | 
						||
| 
								 | 
							
								        os_delay(1000);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void user_task_1()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    sfc_main();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void user_task_2()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    smc_main();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void user_task_test_1()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    iot_time_tm_t curr_tm;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    *((volatile uint32_t*)(0x05c0f808)) = 0xffffffff;
							 | 
						||
| 
								 | 
							
								    curr_tm.tm_year=2012;
							 | 
						||
| 
								 | 
							
								    curr_tm.tm_mon=1;
							 | 
						||
| 
								 | 
							
								    curr_tm.tm_mday=11;
							 | 
						||
| 
								 | 
							
								    curr_tm.tm_hour=4;
							 | 
						||
| 
								 | 
							
								    curr_tm.tm_min=55;
							 | 
						||
| 
								 | 
							
								    curr_tm.tm_sec=0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    iot_rtc_set(&curr_tm);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    while(1)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        iot_rtc_get(&curr_tm);
							 | 
						||
| 
								 | 
							
								        iot_printf("user_task_test_1 %d-%d-%d %d:%d:%d\n",curr_tm.tm_year,curr_tm.tm_mon,curr_tm.tm_mday,curr_tm.tm_hour,curr_tm.tm_min,curr_tm.tm_sec);
							 | 
						||
| 
								 | 
							
								        os_delay(500);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void user_task_test_2()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    iot_time_tm_t curr_tm;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    *((volatile uint32_t*)(0x05c0f808)) = 0xffffffff;
							 | 
						||
| 
								 | 
							
								    curr_tm.tm_year=2012;
							 | 
						||
| 
								 | 
							
								    curr_tm.tm_mon=1;
							 | 
						||
| 
								 | 
							
								    curr_tm.tm_mday=11;
							 | 
						||
| 
								 | 
							
								    curr_tm.tm_hour=4;
							 | 
						||
| 
								 | 
							
								    curr_tm.tm_min=55;
							 | 
						||
| 
								 | 
							
								    curr_tm.tm_sec=0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    iot_rtc_set(&curr_tm);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    while(1)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        iot_rtc_get(&curr_tm);
							 | 
						||
| 
								 | 
							
								        iot_printf("user_task_test_2 %d-%d-%d %d:%d:%d\n",curr_tm.tm_year,curr_tm.tm_mon,curr_tm.tm_mday,curr_tm.tm_hour,curr_tm.tm_min,curr_tm.tm_sec);
							 | 
						||
| 
								 | 
							
								        os_delay(500);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int32_t iot__task_init()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    os_task_h handle;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    //create the tasks;
							 | 
						||
| 
								 | 
							
								#if 1
							 | 
						||
| 
								 | 
							
								    handle = os_create_task(user_task_1, NULL, 6);
							 | 
						||
| 
								 | 
							
								    //handle = os_create_task(user_task_test_1, NULL, 9);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if(handle != NULL) {
							 | 
						||
| 
								 | 
							
								        iot_printf("task 1 init successfully...\n");
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								#if 1
							 | 
						||
| 
								 | 
							
								    handle = NULL;
							 | 
						||
| 
								 | 
							
								    handle = os_create_task(user_task_2, NULL, 6);
							 | 
						||
| 
								 | 
							
								    //handle = os_create_task(user_task_test_2, NULL, 9);
							 | 
						||
| 
								 | 
							
								    if(handle != NULL) {
							 | 
						||
| 
								 | 
							
								        iot_printf("task 2 init successfully...\n");
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								    return 0;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int32_t iot__module_init(void)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    //platform intialization;
							 | 
						||
| 
								 | 
							
								    iot__platform_init();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    //create all the tasks;
							 | 
						||
| 
								 | 
							
								    iot__task_init();
							 | 
						||
| 
								 | 
							
								    iot_rtc_init();
							 | 
						||
| 
								 | 
							
								    iot_printf("starting...\n");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return 0;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int32_t iot__task_start()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    //start the tasks;
							 | 
						||
| 
								 | 
							
								    os_start_kernel();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return 0;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int32_t iot__module_start(void)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    int32_t res = 0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    res = iot__task_start();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return res;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int main(void)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    //module init;
							 | 
						||
| 
								 | 
							
								    iot__module_init();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    //module start;
							 | 
						||
| 
								 | 
							
								    iot__module_start();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return 0;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 |