knpingan 发表于 2009-11-23 16:01:36

求助:关于skyeye1.2.9初始化的问题!

虽然是初始化的问题,但为了把问题说明清楚,先从配置文件说起。
假如在配置文件中对Norflash的配置如下:
mem_bank: map=F, type=R, addr=0x1FC00000, size=0x00200000
那么在初始化时,在common\ctrl\Sim_ctrl.c的SIM_start函数中mem_reset被第一次调用。
mem_reset中实现了对Norflash存储空间的分配。由于配置文件中没有指定file选项,故mem_reset
中并没有吧指定的file加载到为Norflash分配的存储空间中。
-----------------------------------------------------------
总结这些后仍然存在一些疑问:
1. 如果配置文件中没有指定file选项,在mem_reset中为Norflash分配存储空间后是如何实现对Norflash的模拟的?
2. 如果配置文件中指定了file,并且指定了boot=yes,skyeye_config->start_address 就会在parse_mem中被赋值为
    该Norflash的起始地址;但是在1.2.9中并未看到CPU从该指令地址开始执行来完成Norflash要做的一些初始化
    工作?并且之后 skyeye_conf->start_address 的值在load_elf中被修改了(也就是Norflash的模拟被跳过了),后面
    的工作就是完成OS的加载和运行了。

    初学skyeye,关于初始化过程总结了上述两个问题,望指教,谢谢!!!:roll:

knpingan 发表于 2009-11-25 15:09:19

问题仍然没有解决,望版主来指点一下。

wangmiao 发表于 2009-11-25 17:02:50

顶一个,同求~!望高手指点~!

wangmiao 发表于 2009-11-25 17:12:21

是不是每次启动skyeye的时候,要在配置文件中加上file = ./u-boot.bin ,boot = yes的时候,才算是模拟了Norflash呢?没有这项的时候,skyeye可以运行,但是没有模拟Norflash,那么如果是这样的话,引导操作系统内核怎么办?因为内核是Uboot来引导的;skyeye中是不是没有完全按照固定的方法来呢?可能表达的不是很清楚,请版主前来指正,谢谢~!

ksh 发表于 2009-11-25 21:38:21

回复 1# knpingan 的帖子

1. 和file选项,没有关系。有flash选项就可以了。有了flash选项,会解析flash选项,并对指定的flash芯片进行仿真。file只是指定你要存放在flash的内容,为空也可以。

2. 整个处理器第一条指定的地址是由set_pc这个函数来实现的,代码位置如下:
151         generic_address_t pc = (config->start_address & pref->exec_load_mask)|    pref->exec_load_base;
152         skyeye_log(Info_log, __FUNCTION__, "Set PC to the address 0x%x\n", pc)    ;

设置PC有两个途径,一个是在SkyEye的配置文件中,指定boot=yes,这样SkyEye会把pc指向这个bank的起始位置。或者在命令行用-e指定elf文件,这样SkyEye会把起始的PC指向elf文件的入口地址。

ksh 发表于 2009-11-25 21:43:08

回复 4# wangmiao 的帖子

如我前面所说,模拟Norflash是flash这个选项指定的flash型号,大小和起始地址,和file, boot等选项没有任何关系。

SkyEye可以不需要u-boot来直接运行内核,在于它在内部为Linux内核的执行设置了一些初始环境。例如arm处理器的s3c2410,在启动linux之前需要R1的寄存器为机器类型,这原本是由u-boot做,但是SkyEye做了这个设置,所以linux就可以在没有u-boot的情况下正常运行。相关代码如下:


         state->Reg = 193;    //for SMDK2410

wangmiao 发表于 2009-11-26 09:25:14

非常感谢~!非常有耐心!再次感谢~!
页: [1]
查看完整版本: 求助:关于skyeye1.2.9初始化的问题!