📄 loadkernel.c
字号:
/* MShowTec - www.mshowtec.com
** msLinux loadkernel.c ver1.0
** 20051221 lmjx create limiao@mshowtec.com
**
*/
#define MSLINUX_LOADKERNEL_C
#include "cpu_reg.h"
void set_cs_cfg(void)
{
}
void set_timer_cfg(void)
{
//timer
*(unsigned long*)ARM7_TDATA = 10;
*(unsigned long*)ARM7_TRELOAD = 10;
*(unsigned long*)ARM7_TCNT = 0;
*(unsigned long*)ARM7_TMOD = 3;
}
void set_uart_cfg(void)
{
}
void set_kbd_cfg(void)
{
}
void set_sys_cfg(void)
{
}
void set_int_cfg(void)
{
//interrupt ctl
*(unsigned long*)ARM7_INTMASK = 0;
//KBD
//kbd enable,use extInt1,subIntNO.=0
*(unsigned long*)ARM7_KBDCON = 3;
//Touch
//touch enable,use extInt1,subIntNO.=1
*(unsigned long*)ARM7_TOUCHCON = 0x103;
}
void init_memorry()
{
unsigned char *psrc,*pdst;
unsigned long sz,i;
/* INITIALISED DATA from ESRAM region */
psrc = (unsigned char*)&Load$$ESRAM$$Base;
pdst = (unsigned char*)&Image$$ESRAM$$Base;
sz = (unsigned long)&Image$$ESRAM$$Length;
for(i=0;i<sz;i++)
*pdst++ =*psrc++;
pdst = (unsigned char*)&Image$$ESRAM$$ZI$$Base;
sz = (unsigned long)&Image$$ESRAM$$ZI$$Length;
for(i=0;i<sz;i++)
*pdst++ = 0;
/* INITIALISED DATA from MEMORY region */
psrc = (unsigned char*)&Load$$MEMORY$$Base;
pdst = (unsigned char*)&Image$$MEMORY$$Base;
sz = (unsigned long)&Image$$MEMORY$$Length;
for(i=0;i<sz;i++)
*pdst++ =*psrc++;
pdst = (unsigned char*)&Image$$MEMORY$$ZI$$Base;
sz = (unsigned long)&Image$$MEMORY$$ZI$$Length;
for(i=0;i<sz;i++)
*pdst++ = 0;
}
void loadkernel()
{
int i,x,y;
unsigned short NandId;
char outbuf[40];
set_cs_cfg();
set_timer_cfg();
set_uart_cfg();
set_kbd_cfg();
set_sys_cfg();
set_int_cfg();
init_memorry();
start_kernel();
printk("can not run to here\r\n");
for(;;);
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -