?? pre_load.c
字號:
//----------------------------------------------------
//Copyright (C), 2004-2009, lst.
//版權(quán)所有 (C), 2004-2009, lst.
//所屬模塊: 內(nèi)核模塊
//作者:lst
//版本:V1.0.0
//文件描述: 預(yù)加載操作系統(tǒng)
//其他說明:
//修訂歷史:
// 2. ...
// 1. 日期:
// 作者:
// 新版本號:
// 修改說明:
//------------------------------------------------------
#include "inc_os.h"
#include <string.h>
void sys_start(void);
extern uint8_t init_start[];
extern uint8_t init_limit[];
extern uint8_t text_preload_load_start[];
extern uint8_t text_preload_run_start[];
extern uint8_t text_preload_run_limit[];
extern uint8_t rodata_preload_load_start[];
extern uint8_t rodata_preload_run_start[];
extern uint8_t rodata_preload_run_limit[];
extern uint8_t rw_preload_load_start[];
extern uint8_t rw_preload_run_start[];
extern uint8_t rw_preload_run_limit[];
extern uint8_t zi_preload_start[];
extern uint8_t zi_preload_limit[];
//----預(yù)加載程序---------------------------------------------------------------
//功能:加載主加載器、中斷管理模塊,緊急代碼
//參數(shù): 無。
//返回: 無。
//----------------------------------------------------------------------------
//備注: 本函數(shù)移植關(guān)鍵,與開發(fā)系統(tǒng)有關(guān),也與目標(biāo)硬件配置有關(guān)
void load_preload(void)
{
uint8_t *src,*des;
void (*volatile pl_1st)(void) = sys_start;
if(text_preload_run_start != text_preload_load_start) //拷貝代碼段
{
for(src=text_preload_load_start,des=text_preload_run_start;
des<text_preload_run_limit;src++,des++)
*des=*src;
}
if(rodata_preload_run_start != rodata_preload_load_start) //拷貝只讀數(shù)據(jù)段
{
for(src=rodata_preload_load_start,des=rodata_preload_run_start;
des<rodata_preload_run_limit;src++,des++)
*des=*src;
}
if(rw_preload_run_start != rw_preload_load_start) //拷貝初始化數(shù)據(jù)段
{
for(src=rw_preload_load_start,des=rw_preload_run_start;
des<rw_preload_run_limit;src++,des++)
*des=*src;
}
for(src=zi_preload_start;src<zi_preload_limit;src++)
*src=0;
pl_1st();
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -