2.6.18 for s3c2410 在skyeye上的问题
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());
郁闷中。。。。。。
到底哪里设置错了啊,需要怎么配置。。。。。。。。 有些进展,之前没有设置好内存容量
这回是到kmem_cache_init();处挂掉,估计还是内存参数没设好
晕死了,在skyeye里设置断点怎么大多数时候不好使啊,已运行c命令就挂
只好一步一步地走 我也遇到了跟你相同的问题,而且我搜索了一下论坛,遇到同样问题的好像还不只我们两个,怎么就没人给个解答呢?那个叫jackzheng2002的版主说:
“Linux 2.6.10以后,Samsung S3C2410已经成为linux的一个标准支持平台,
无需任何patch就可以在S3C2410的目标板上运行得很好。”
可是为啥在SkyEye上就不行呢,看来虚拟机和真实的硬件平台还是有很大区别的嘞!
页:
[1]