skyeye上的mips开发疑问

12 views
Skip to first unread message

valpa

unread,
Dec 8, 2008, 1:34:29 AM12/8/08
to skyeye-simulator

我目前正在skyeye上进行mips的开发,在阅读和改写skyeye源代码的时候有许多疑问


1. mips的LD指令最后都调用的是mem_read,所以只会读取membank里的数据。那么skyeye.conf里设置flash,
nandflash有没有用?


2. 为什么既有mem_bank的map=F,为何又有flash和nandflash?


3. flash和nandflash有什么区别?在代码中似乎两者没有任何区别


4. 一般嵌入式设备的flash用来存储程序和数据,出厂时本来就有内容在上面,为什么flash option里头没有file项?以便映射到一个
flash映像


5. 从mipsmem.c的mips_mem_write_word (UInt32 phys_addr, UInt32 v)函数可以看出
mem_bank中的addr应该是指物理地址。为什么看到testsuite中addr=0xBC000000,这个明显是虚地址。而且如果写了
boot=yes的话,mem_bank的addr直接赋给了start_pc,这个也是虚地址。


6. 如何在conf里指定start_pc?


我将来的2个月可能都需要在skyeye上进行开发了,仔细研究了3天代码后,产生了很多疑问。希望能够得到大牛们的帮助和解答。在此表示感谢。

valpa

shi yang

unread,
Dec 8, 2008, 11:44:37 PM12/8/08
to skyeye-s...@googlegroups.com


2008/12/8 valpa <valpa...@gmail.com>


我目前正在skyeye上进行mips的开发,在阅读和改写skyeye源代码的时候有许多疑问


1.  mips的LD指令最后都调用的是mem_read,所以只会读取membank里的数据。那么skyeye.conf里设置flash,
nandflash有没有用?

对NAND Flash没有用,因为NAND Flash是通过命令来访问某个block,不是通过内存映射的地址直接访问。




2. 为什么既有mem_bank的map=F,为何又有flash和nandflash?

这里的Flash是指NOR Flash。




3. flash和nandflash有什么区别?在代码中似乎两者没有任何区别


4. 一般嵌入式设备的flash用来存储程序和数据,出厂时本来就有内容在上面,为什么flash option里头没有file项?以便映射到一个
flash映像


5. 从mipsmem.c的mips_mem_write_word (UInt32 phys_addr, UInt32 v)函数可以看出
mem_bank中的addr应该是指物理地址。为什么看到testsuite中addr=0xBC000000,这个明显是虚地址。而且如果写了
boot=yes的话,mem_bank的addr直接赋给了start_pc,这个也是虚地址。

对于MIPS来说,从0x80000000 - 0x9FFFFFFFF和0xA0000000-0xBFFFFFFF的地址都是不需要经过MMU的,直接减去0x80000000或者0xA0000000就是物理地址。

valpa

unread,
Dec 9, 2008, 8:44:22 PM12/9/08
to skyeye-simulator
谢谢shiyang

Nand flash和mem type=F的区别我理解了

start_pc理应是VA和mem_bank的初始addr理应是PA,所以我认为
mips_arch_interface.c中mips_parse_mem函数里skyeye_config.start_address = mb
[num].addr; 这个语句是错误的,我把它改写了以后才顺利跑起了flash里的code

还有一个问题我认为也很重要:skyeye中设置big endian没有作用,在读取我bin文件中的instr时解释不了正确的opcode,我在
mips_mem_read和mips_mem_write中分别转换了endian才能正确解释执行。

On 12月9日, 下午12时44分, "shi yang" <shy828...@gmail.com> wrote:
> 2008/12/8 valpa <valpass...@gmail.com>


>
>
>
> > 我目前正在skyeye上进行mips的开发,在阅读和改写skyeye源代码的时候有许多疑问
>
> > 1. mips的LD指令最后都调用的是mem_read,所以只会读取membank里的数据。那么skyeye.conf里设置flash,
> > nandflash有没有用?
>
> 对NAND Flash没有用,因为NAND Flash是通过命令来访问某个block,不是通过内存映射的地址直接访问。
>
>
>
> > 2. 为什么既有mem_bank的map=F,为何又有flash和nandflash?
>
> 这里的Flash是指NOR Flash。
>
>
>
> > 3. flash和nandflash有什么区别?在代码中似乎两者没有任何区别
>
> > 4. 一般嵌入式设备的flash用来存储程序和数据,出厂时本来就有内容在上面,为什么flash option里头没有file项?以便映射到一个
> > flash映像
>
> > 5. 从mipsmem.c的mips_mem_write_word (UInt32 phys_addr, UInt32 v)函数可以看出
> > mem_bank中的addr应该是指物理地址。为什么看到testsuite中addr=0xBC000000,这个明显是虚地址。而且如果写了
> > boot=yes的话,mem_bank的addr直接赋给了start_pc,这个也是虚地址。
>
> 对于MIPS来说,从0x80000000 -

> 0x9FFFFFFFF和0xA0000000-0xBFFFFFFF的地址都是不需要经过MMU的,直接减去0x80000000或者0xA0000000就-是物理地址。

Reply all
Reply to author
Forward
0 new messages