📄 setupmain.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 + -