⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setupmain.c

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 C
字号:
/*********************************************** MODULE HEADER *********
* FILE: setupmain.c
* DESC: SETUP工程的入口函数.
* AUTH: huansl
$Log: setupmain.c,v $
Revision 1.3  2008/06/19 04:43:27  Administrator
代码整理!

Revision 1.2  2008/06/13 07:08:55  Administrator
HJ 更新三级 LOAD 工程!

Revision 1.1.1.1  2008/05/07 04:15:08  Administrator
no message

Revision 1.1.1.1  2008/03/06 13:29:10  Lingzhaojun
no message

Revision 1.2  2008/01/07 12:52:19  Huangshilin
no message

Revision 1.1.1.1  2007/12/21 02:35:44  Lingzhaojun
12.21

Revision 1.1  2007/11/23 08:04:12  Huangshilin
增加安装接口.

Revision 1.5  2007/11/03 03:19:56  Lingzhaojun
为发布公版SDK做各项修改

Revision 1.4  2007/10/20 04:46:30  Huangshilin
for RK2700

Revision 1.3  2007/10/11 04:09:17  Huangshilin
System 其他目录。

Revision 1.2  2007/10/08 02:44:34  Lingzhaojun
添加版本自动注释脚本

 1. 2006-03-21,HUANGSL ,CREATE.
***********************************************************************/
#include "include.h"
#include "memo.h"
#include    "lib\loader\loader.h"

#ifdef BOARD
#include "hw_api.h"
#endif
/*********************************************** LOCAL DEFINES ********/
extern void UHInitialiseFirst(void);
// extern void Cache_Disable( void );
extern void SetupUhDarkBlight(void);

extern INT32U  ISetupDispDrawString(INT32U x , INT32U y , char *string , INT32U font);
/*********************************************** LOCAL DEFINES ********/

/*********************************************** GLOBAL FUNCTIONS *****/
/*********************************************** LOCAL FUNCTIONS ******/
#pragma arm section code="RK27_EP"
/*****************************************************************************/
//FIRST JUMP FUNCTION , 参数预留。
void RKEntryPoint(INT32U setUpOffset)
{
    //jump to sdram loader
    // 071106,huangsl,一下语句有问题,因为此时 SRAM的代码还没有加载到/
    //真正的 SRAM地址,会改写代码部分的内容.
    //gSysReboot = Restart;

    RomLoader();

}

/*****************************************************************************/
#pragma arm section

/*****************************************************************************/
/*********************************************************************************
Name        :   __user_initial_stackheap
Desc        :   初始化系统 所有堆栈 .
Param       :   无。

Return      :   无
Global      :   _gpAppHeapHandle,_gpSysHeapHandle
Note        :   两个分别代码 系统堆空间和应用堆空间.
                之所以需要分开管理,是因为 系统堆空间相对 比较稳定,不会频繁 malloc,free造成
                碎片,同时避免应用数据越界造成系统崩溃.其缺点时可能会造成空间浪费.
Author      :     HUANGSL
Log         :
*********************************************************************************/

void __user_initial_stackheap(void)
{

    //init APP HEAP
    _gpAppHeapHandle = init_mempool((void*) & gSysHeapStart , (void*)gSysHeapEnd);

}


/*********************************************** LOCAL DATA ***********/
/* switch */
// char  gSysBssStartAddr;
// char  gSysBssEndAddr;


/*********************************************** GLOBAL FUNCTION *******
*
*  FUNCTION:
*
*     int main (void)
*
*  PARAMETERS:
*
*     none
*
*  RETURN VALUES:
*
*     INT (nothing returned -- function never returns...)
*
*  DESCRIPTION:
*
*     creates IPC objects, installs tasks, inits OS
*
*  ERROR HANDLING:
*
*     various
*
*  NOTES:
*
***********************************************************************/
void ISetupMainReboot(void)
{
    void(*fun)(void);
    DECLARE_CUP_SR;

    ENTER_CRITICAL();

    Cache_Disable();

    Cache_FlushWay(Cache_way0);
    Cache_FlushWay(Cache_way1);

    pSCUReg->SCU_CLKCFG = 0x00;

    WriteReg32(0x1801C014, ReadReg32(0x1801C014) | 0x01);

    delay_nops(100);

    WriteReg32(0x1801C004, 0);  //SCU NOT REMAP.

    fun = (void(*)(void))(0);
    fun();
    EXIT_CRITICAL();
}


void SetupCrashHandler(void)
{
    //ISetupDispDrawString( SETUP_FILEX , SETUP_FILEY, "SETUP CRASHED!!" , 16 );
    SetupDelayMs(2000);
    RkldSetFwRError();  //设置固件错误标志.
    RKLDWriteBdRegister(0X10 | RKLD_LOAD_LDUSB);    //重启,直接引导 USB,重新升级.

    ISetupMainReboot();
}
/*----------------------------------------------------------------------
Name  :  main
Desc  :  系统启动主函数
Params:
Return:  处理结果
Author:  System Author
Date  :  070830
Log     :
*   071112      huangsl     用于安装 部分.
----------------------------------------------------------------------*/
int main(void)
{
    __user_initial_stackheap();

    //中断 文件系统等初始化
    UHInitialiseFirst();

    //进行 安装
    SetupMain(0);

    SetupUhDarkBlight();

    //重新启动.
    ISetupMainReboot();

    return (0);
}

/******************************************************************************/
/*---------------------------------------------------------------*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -