|
skyeye.conf 使用testsuit2中2410的配置
编译内核时使用的是 smdk2410_defconfig这个配置
并将 linux/include/asm-arm/arch-s3c2410/map.h 中的
#define S3C2410_CS6 (0x30000000)
改成 #define S3C2410_CS6 (0xC0000000) 配置中SDRAM的物理地址?
linux/include/asm-arm/arch-s3c2410/memory.h中的
#define PHYS_OFFSET UL(0x30000000)
该成 #define PHYS_OFFSET UL(0xC0000000)
在 linux/arch/arm/mach-s3c2410/mach-smdk2410.c 中
MACHINE_START(SMDK2410, "SMDK2410")
该成 MACHINE_START(SMDK2410TK, "SMDK2410TK")
(为了在skyeye-0.9.8中调试,不改的话在skyeye-1.2中也不行)
编译后无法启动,屏幕无输出
通过跟踪发现是在
Time_Init-> s3c2410_timer_setup 中挂了
按照这个
//////////////////////////////////////////////////////////////////////////////
go on .......
之后用仿真器追踪内核结果发现:
start_kernel函数的time_init()中程序进入死循环~~
我随之进入time_init()
继续进入 system_timer->init();
结果发现,我的fclk,pclk都不能得到正确的值,积存器正确,我拿笔都能算出来,可是他就是总出错,所以我一气之下把他们全部写死.
具体如下:
在\arch\arm\mach_s3c2410\s3c2410.c 中 搜索 fclk ;
fclk = s3c2410_get_pll(MPLLCON, xtal); //这是他原来的,结果不是我们想要的200MHZ
fclk =200*1000*1000 ; // 这是我改的
在\arch\arm\mach_s3c2410\time.c 中搜索 pclk:
pclk = clk_get_rate(clk); //这是原来的
pclk = 50*1000*1000; //这是我改的
当然这都是根据你的开发板的DATASHEET而定的
我现在用的是FCLK : HCLK : PCLK = 1 : 2 : 4 ,所以我分别写死为200M 100M 50M.
之后再运行,这个野蛮的问题终于解决了 , 不过我还有一事不明 ,为什么他用原来的表达式就会取值错误呢 ???
//////////////////////////////////////////////////////////////////////////////
改过后,过去后又在console_init中出了问题
具体位置 console_init-〉con_init-〉acquire_console_sem-〉BUG_ON(in_interrupt());
郁闷中。。。。。。
到底哪里设置错了啊,需要怎么配置。。。。。。。。 |
|