uboot里面可以让nand和spi同时触发吗?
uboot里面可以让nand和spi同时触发吗,启动时从spi启动,但可以用nand命令,求高手?
解决马上结贴,高结贴率!分不够可以另外开贴。
[解决办法]
首先这个问题不是uboot的问题,而是x86(我只熟悉x86,ARM的也许类似)上电后,北桥把CPU发出的0xfffffff0内存地址读取请求通过总线传给南桥,南桥传给nand或者nor控制器.南桥必须明确的知道,是传给nand还是nor.如果你想通过改软件或者跳线把两个bit都使能,那结果不可预知,可能前者设置被后者覆盖,也可能出错.
你要实现的功能可以做,但不是通过同时从nor和nand启动来完成的.你可以从其中一个启动,然后将另一个设备做内存地址映射,并使用驱动(无操作系统的裸驱动,uboot应该有).这样就可以通过访问某个内存地址来读取其内容.当然,这个还不是使用它的命令.
要做到使用命令,你必须把内容读出来,得到一个二进制映像,把这个二进制文件拷贝到一个不用的内存空间.然后,解析二进制文件的源代码,找到硬件初始化命令完成以后,开始做loop接受输入的那部分代码,记录下其物理地址.准备跳转.为什么可以跳转?有个前提,nor和nand的初始化代码一致,或者干脆使用同样的源文件编译.由于这时候已大家都在保护模式,未分页,未使用虚拟内存机制,并且在同一个段选择字里,所以可以很容易的跳转而不会崩溃.
还有个前提,就是你编译最后链接二进制映像的时候,必须使用ld脚本指定装到内存后的基地址,不然那些函数在你拷贝到内存后,访问不到别的函数.
做的更高级一点,你还可以在跳转后再跳回来,因为上下文都是一致的(虽然没有进程和操作系统,还是有上下文的).
类似的东西我做过,所以不用担心完全是想像.只要你对编译器和x86足够熟悉,一天就可以完成.