阅读:1688回复:5
[讨论]如何下载完新的boot,不烧录,直接跳转到sdram的地址执行
eboot总是重新烧到flash后,重启,运行的。
在平台初期开发过程中,为了防止修改出错,造成无法启动,想下载完新的boot后(保存在SDRAM的一个地址),不烧录,而是跳转到sdram的对应地址,直接执行新的boot。 有点像下载了OS Image后的动作。OEMLaunch里面的,最后有Launch(...),可以实现。不过这个是在MMU开启的情况下。 BOOT下要实现,需要涉及什么呢?有人做过吗? |
|
|
沙发#
发布于:2007-12-17 14:30
我发现我的疑问总是很特殊,没人回答的……
郁闷啊,继续等。 |
|
|
板凳#
发布于:2007-12-17 18:40
先解决在新的地址运行时的堆栈问题
|
|
地板#
发布于:2007-12-17 21:12
和处理OS的情形一样,直接跳到那个SDRAM地址就行.
|
|
|
地下室#
发布于:2007-12-19 10:30
eboot肯定提供了在sdram运行的功能,即使没有相应的菜单项,也可以通过 config.bib设置来实现下在到SDRAM中运行。比如:我的系统,pxa270+mainstoneIII,eboot中没有下载到ram中运行的菜单,通过查看eboot原代码,发现通过读取nk.bin的信息,可以知道下载地址,从而选择下载sdram还是flash
|
|
5楼#
发布于:2007-12-21 17:34
先说明一下: 按照下载完OS后跳转执行的步骤,调用Launch(地址), 后续跳转到汇编执行,是无法实现跳转执行eboot的。
回gerryzhou朋友:NK.bin读到的地址是OS镜像的,这个跳转功能是没问题的。现在希望的是eboot。 本来以为是虚拟、物理地址之间的问题,但是汇编里面又关闭了MMU了。 其实,系统刚启动的时候,在Startup.s里面,将eboot复制到SDRAM之后,再跳到SDRAM里的main()执行,这个过程肯定是可行的。 只是现在eboot已经启动了,肯定有很多环境设置和硬启动不一样了,所以,会比较麻烦,需要各位高手指点! |
|
|