singlewolf
驱动牛犊
驱动牛犊
  • 注册日期2004-03-08
  • 最后登录2005-04-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1993回复:12

如何将image下载到nand flash后能正常启动?

楼主#
更多 发布于:2005-04-05 15:51
我刚开始接触wince,用pb4.2定制了自己的平台,eboot和nk.bin都已经生成了,但是将eboot烧到nand flash后,重启开发板,串口却没有任何输出,串口设置是正确的,请问是什么原因?是不是还要NBOOT?但是我现在没有NBOOT,该如何解决阿?我用的是s3c2410开发板?

有哪位大虾能详细介绍一下如何将nk.bin烧到nand flash 能正常启动?要是能提供给我bootloader,本人将不胜感激.邮箱:lgl1st@126.com
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-04-05 19:53
首先,你的处理器如果能直接执行NAND FLASH的代码的话,你可以把EBOOT烧到里面,然后直接执行,再用EBOOT把OS IMAGE装载到RAM里面启动

如果你的处理器不能直接执行NAND FLASH的代码,你需要有一块ROM或NOR FLASH,将EBOOT放入其中,启动起来后再从NAND FLASH里面装载OS IMAGE
根据地的兄弟们,团结就是力量
singlewolf
驱动牛犊
驱动牛犊
  • 注册日期2004-03-08
  • 最后登录2005-04-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-04-06 18:04
我把eboot下载到nand flash的0 block了,但是串口没有任何输出,请问是什么原因呢?

我看有些资料说要先把nboot下载到nand flash上,这是怎么回事呢?
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-04-06 18:38
你确定你的处理器可以直接执行nand里面的代码???

如果可以的话,你需要在串口正常之前采用其他的信息指示系统的工作状况,比如sdram是否初始化成功,clock是否稳定等等。这个可以用发光二极管提示。调试信息正常前有一段“盲区”,调起来可能有点儿费劲,不过一般不长。

还有一个办法是启动仿真器,把你的代码下载到板子上,把pc直接指到你的起始代码,一步一步地调
根据地的兄弟们,团结就是力量
singlewolf
驱动牛犊
驱动牛犊
  • 注册日期2004-03-08
  • 最后登录2005-04-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-04-07 10:06
我通过仿真器的“load memory from files”将eboot下载到了sdram中0x30380000,然后通过setpc 0x30380000,跳转到该地址执行,也是没任何输出。

另外,我直接将eboot下载到nor flash中,也是不能正常运行。
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-04-07 12:57
不要直接run三,一段一段地调,对了,gpio的问题比较普遍,需要设置的地方多,要把uart地tx和rx的脚正确配置好才能工作,你再查查你的芯片的data sheet
根据地的兄弟们,团结就是力量
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-04-07 13:00
还有,你的调试信息是从哪儿出来的,确定一下是不是真从串口,而没有被重定向到pb的IDE里面
根据地的兄弟们,团结就是力量
singlewolf
驱动牛犊
驱动牛犊
  • 注册日期2004-03-08
  • 最后登录2005-04-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-04-08 10:17
我用的就是s3c2410的bsp,没有修改,编译后生成了NK.NB0和eboot.nb0,你说的gpio的问题我不是很懂。
另外,如果eboot正常运行的话,首先应该提示要设置ip吧,但我现在都没办法设目标机的ip,打印信息应该是送到串口的。

另外还有一个问题是三星的dwn程序可以通过usb口把代码下载到sdram里面去执行,但是我在主机上的usb驱动却不能正常安装,提示说没有为设备实例指定一个功能驱动程序,但是u2410mon.bin我已经烧到nor flash中去了啊?
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-04-08 13:00
有点乱,等我想想哈:))

一部分一部分解决哈,不管用什么方式:

1.先把os image下载到目标板sdram中,注意下载到的地址必须是和os image匹配的;

2.在仿真器中用单步执行调试代码,对比源代码(startup)一步一步地走,直到初始化串口完成,然后看看有无信息输出;

注意,由于你直接在sdram里面跑,所以在单步调的时候跳过sdram初始化的那部分代码。如果你可以在nor flash里面调代码就可以不用跳过sdram初始化部分

我没有看过三星片子的data sheet,你要确保uart工作的条件都设置好,特别是gpio和tx,rx共享引脚的时候。

eboot正常运行后设不设ip这个跟开发的boot loader有关,并不是一定的。

根据地的兄弟们,团结就是力量
singlewolf
驱动牛犊
驱动牛犊
  • 注册日期2004-03-08
  • 最后登录2005-04-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-04-08 14:13
首先要谢谢你耐心帮我解决问题。
我现在都不是很确定我把代码直接download到sdram中的步骤是否正确:首先仿真器和开发板连起来,然后打开adx,执行ads2410boot.ini,然后通过file->load memory form files ,选择要下载到sdram中的代码,指定要下载的位置,然后通过setpc跳转到指定的地方一条一条的去执行指令,是这样的吗?

有个测试的程序,我可以通过vivi下载到sdram中去执行,然后用go可以正常运行,但是用上面的办法就不行。
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-04-08 15:27
步骤是对的,不过你下载到的sdram的地址不能任意给哈,由于编译器在使用常量的时候有的使用了绝对寻址,也就是编译的时候给定了地址,所以你必须把image放到指定的起始地址,你看看oal里面buildexe的source文件,里面的exebase是你要放的位置。

在单步调试的时候,请一步一步走!!!耐心点,根据墨菲定律,直接go可能成功的概率会和你希望他正确的程度成反比。:)))
根据地的兄弟们,团结就是力量
singlewolf
驱动牛犊
驱动牛犊
  • 注册日期2004-03-08
  • 最后登录2005-04-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-04-08 19:56
Data Abort -FAR =0x80000000,FSR=0X00000005
DO YOU WISH TO CONTINUE WITH THE CURRENT SESSION?

我查看了sourses,eboot的exebase是0x80000000,但是下载到sdram中的时候,却出现了上面的问题。在bsp带的文档中,说eboot的exebase是0x30038000,但是下载运行后,却不能正常运行。why?
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2005-04-11 16:48
这个这个...这些参数作用的地方不一样。这样,找到你编译出来的平台包含的XXX.NB0,你用ULTRA EDIT打开,然后你找第4行的2进制数,开始是45 43 45 43,然后后面两个4BYTE为一个DWORD(LITTLE ENDIAN),你用第一个减第二个,得到的值就是你下载到SDRAM的地址
根据地的兄弟们,团结就是力量
游客

返回顶部