init.c 5.55 KB
Newer Older
hu's avatar
hu committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
/**************************************************************************//**
  * \file     Init.c
  * \brief    Initializations during work state switching
  * \details
  * \author   Zhang Xuan
  * \version  V1.0.0
  * \date     18-Jan-2019
  * \par      History:
  *           V1.0.0 Initial release
  * \par      Copyright:
  *           (c) Heilongjiang TYW Electronics co., LTD
******************************************************************************/

/* Includes ------------------------------------------------------------------*/
#include "debugger.h"
#include "r_typedefs.h"
#include "Init.h"
#include "r_dev_clk_types.h"
#include "r_ddb_api.h"

#include "Analog_Signals.h"
#include "Clock.h"
#include "Emulated_EEPROM.h"
#include "GPIO.h"
#include "Internal_Flash.h"
#include "RTC.h"
#include "BU98R10.h"
#include "Watchdog.h"


#include "r_dev_api.h"
#include "r_wm_api.h"
#include "r_tick_api.h"


#include "rh850_macros.h"
#include "cpu.h"
#include "Graphic.h"
#include "Sys_Tick.h"
#include "RSCAN.h"
#include "SDRAM.h"
#include "sflash.h"

#include "sys_scheduler.h"

#include "RTE_ADC.h"
#include "COM_CAN.h"
#include "UDS_Common.h"
49
#include "r_fdl_types.h"
hu's avatar
hu committed
50
#include "Seg_Ref.h"
51

hu's avatar
hu committed
52
#define WITHOUT_BOOT 1
hu's avatar
hu committed
53 54 55 56 57 58 59
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/

hu's avatar
hu committed
60 61 62 63 64 65 66 67 68
void DelayUs(uint32_t time)
{
    uint32_t i;
    for (i = 0; i < (time * 2); i++)
    {
        R_DEV_Nop();
        WDT_Clear();
    }
}
hu's avatar
hu committed
69 70 71 72 73 74 75
/**************************************************************************//**
  * \brief      Initializations during work state switching
  * \attention
  * \retval     None
******************************************************************************/
void Sys_Startup_Pre_Init(void)
{
hu's avatar
hu committed
76 77 78 79
    //R_DEV_WRITE_REG(32, LOC_XCRAMCFG0, 0x100100U);
    // *((volatile uint32_t*)(0xFFC06050u)) = (0x100100U);
    SET_EBASE(0x00200400); //set Ebase to 0x10000, set RINT to 1
    SET_PSW_EBV();
hu's avatar
hu committed
80 81 82 83 84
    /* Release all Modules (except SDRAM controller) */
    Sys_Peripheral_Reset(SYS_PERI_RESETTABLE & (~SYS_PERI_SDRB0));

    /* Prepare device (clear all internal config, prepare interrupts) */
    R_DEV_Prepare();
hu's avatar
hu committed
85 86 87 88 89 90
#if (WITHOUT_BOOT)
    {
        Clock_Pre_Init();
    }
#endif

hu's avatar
hu committed
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
    GPIO_Init(0);



    Mem_SDRAM_Init(MEM_SDRAM_2x_W9812G6KH_120MHz, Mem_SDRAM_DRV_25Ohm);
    //Mem_SDRAM_Init(MEM_SDRAM_2x_IS45S16800F_120MHz, Mem_SDRAM_DRV_25Ohm);

    Sys_Enable_Preload_Buffer();
}

/**************************************************************************//**
  * \brief      Initializations during system power up
  * \attention
  * \retval     None
******************************************************************************/
106
uint8_t u8ResetFlag = 0;
hu's avatar
hu committed
107 108
uint32_t u32FDLDataFlag[4] = {0, 0, 0, 0};
uint32_t u32FDLBlank = 0;
109 110 111 112

extern uint32_t u32ResetFlag;
extern uint32_t TestBackupRam;

hu's avatar
hu committed
113 114 115 116 117 118 119 120 121 122 123
void Sys_Startup_Init(void)
{
    Clock_Init();
    /* Enable interrupts globally */
    enable_interrupt();

    WDT_Init();

    /* init graphic tick driver */
    R_TICK_Init(0);

hu's avatar
hu committed
124
    Gfx_Init(GFX_VO_SINGLE_RGB888 | GFX_VI_ITU656);
hu's avatar
hu committed
125 126 127

    CPU_Init();

128
    //RTC_Init();
hu's avatar
hu committed
129
    Sys_Tick_Timer_Start();
hu's avatar
hu committed
130
    /*COM_CAN_Init(); Ô­CAN³õʼ»¯Î»ÖÃ*/
hu's avatar
hu committed
131 132 133


    RTE_ADC_Init();
hu's avatar
hu committed
134

hu's avatar
hu committed
135 136
    DelayUs(50000);
    DelayUs(50001);
hu's avatar
hu committed
137 138

    Int_Flash_Init();
hu's avatar
hu committed
139
    SEG_BUFF_Init();
hu's avatar
hu committed
140
    BU98R10_Init();
hu's avatar
hu committed
141

hu's avatar
hu committed
142
    d_printf("Init complete!\n");
hu's avatar
hu committed
143
    InitSeriFlashExternReadMode();
144
    u8ResetFlag = Clock_Get_Startup_Mode();
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
    if (u8ResetFlag == CLOCK_STARTUP_PWR_ON)
    {
        TYW_FDL_Init();

        TYW_FDL_Flash_Read(0xFF20FF00 , u32FDLDataFlag, 4 );

        if ((u32FDLDataFlag[0] == 0x66666666) && (u32FDLDataFlag[1] == 0x55555555) && (u32FDLDataFlag[2] == 0xA555A55A) && (u32FDLDataFlag[3] == 0X12345678))
        {

        }
        else
        {
            u32FDLDataFlag[0] = 0x66666666;
            u32FDLDataFlag[1] = 0x55555555;
            u32FDLDataFlag[2] = 0xA555A55A;
            u32FDLDataFlag[3] = 0X12345678;

            TYW_FDL_Erase(0XFF200000, 0XFF20FFFF);

            TYW_FDL_Write(0xFF20FF00 ,  u32FDLDataFlag,  4);
        }
    }

    EEPROM_Init();

hu's avatar
hu committed
170 171 172 173 174 175 176 177 178 179 180 181 182
    if (u32ResetFlag != 0xA55AA55AUL)
    {
        u8ResetFlag = 0;
    }
    else
    {
        if ((u8ResetFlag == 0) && (TestBackupRam == 0xaabbccddu))
        {
            u8ResetFlag = 1;
            Rtc_Restore_Time();
        }
    }

183 184 185 186 187 188
    /*EOL诊断 配置数据读取 DFLASH*/
    ReadAllDFlashData();

    /*读取K-LINE*/
    ReadDTCEOLValue_Meter_K_LINE();

hu's avatar
hu committed
189 190 191
    /*30电初始化*/
    APP_Startup_Init(u8ResetFlag);
    TestBackupRam = 0x11223344UL;
hu's avatar
hu committed
192

hu's avatar
hu committed
193
    /*外发要用到EEP数据,位置移动*/
hu's avatar
hu committed
194
    COM_CAN_Init();
hu's avatar
hu committed
195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217
    Gfx_Sys_Start();
}

/**************************************************************************//**
  * \brief      Initializations during work state switch to system sleep
  * \attention
  * \retval     None
******************************************************************************/
void Sys_Sleep_Init(void)
{
    Sys_Tick_Timer_Stop();
}

/**************************************************************************//**
  * \brief      Initializations during work state switch to system run
  * \attention
  * \retval     None
******************************************************************************/
void Sys_Wakeup_Init(void)
{

}