wangmiao 发表于 2009-11-23 09:54:08

norflash的实现问题

在skyeye中,关于norflash这一模块,我有一个问题:skyeye中模拟仿真的norflash是否是完全按照硬件的模式来工作的?它和CPU是怎么通信的?这个问题在代码中体现在哪里?请知道的高手帮助菜鸟解答。万分感谢!

ksh 发表于 2009-11-23 11:24:05

1. Nor flash在访问上可以看做ram,直接按照地址读写。
2. 它的内部实现有一个状态机,可以参考flash_intel_write_word[ device/flash/dev_flash_intel.c : 309] 函数,看状态机的变化。在某一个时刻Nor Flash处于某个特定的状态。
更多信息建议你看一下Nor Flash的原理和相关的芯片手册。

SkyEYE的对Nor Flash模拟的实现目前基本上和Nor Flash硬件的模式是一样的。

wangmiao 发表于 2009-11-23 13:58:06

非常感谢你提的建议,对于那三个flash芯片公司的硬件手册我基本上看了下,里面的控制数据基本上都和代码对应上,但是对于CPU是怎么和Flash通信的我还是很模糊,不知道代码中哪里可以对应上。还有你提到的状态机,我不了解,估计还是我没有完全明白flash模块中的代码,下面会去仔细阅读相关方面的文章;再次表示感谢~!

wangmiao 发表于 2009-11-23 14:19:00

我看了下,你说的状态机就是相当于模拟他的时序控制吧?当符合硬件手册里的数据的时候,跳转到下一个状态,比如在flash_sst39lvf160_write_halfword(device/flash/flash_sst39lvf160_write_halfword.c)中,
if (CMD_WORD_PROGRAM(io))这些通过控制bbus[]里的数据来控制具体擦出或者字编程的实现,这里面的时序控制跳转是不是就是你说的状态机的状态转化?但这些是控制它的读写擦出等操作;CPU是怎么和它进行通信的(比如接电后,CPU的第一条指令要去norflash里执行u-boot,完成一些初始化工作和对硬件的检测等工作),这个过程我很模糊,不知道具体在flash模块中体现在哪里?这个问题估计很无知,还望指导,呵呵。谢谢~!

codefish 发表于 2009-11-23 14:38:47

我觉得就是通过PC地址寄存器通过总线直接读取硬件地址内容的。不知道说的是否正确,还请高手指正。

wangmiao 发表于 2009-11-25 09:20:59

那LS的兄弟知道在skyeye的代码中,从SIM_start()开始,哪里是开始调用norflash完成运行加载到它里面的u-boot这一过程呢?我找了半天,只找到把相关的file文件加载在ram中为norflash开辟的空间里面,没有找到从哪里开始运行里面的Uboot,自动运行吗?不是还要把cup得第一条指令指向Norflash的起始端吗?请多指教,谢谢!~8)
页: [1]
查看完整版本: norflash的实现问题