This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

am335x norflash驱动



我将同事编译出来的u-boot.bin烧录到nor flash的0x08000000,断电重启,可以正常从norflash上启动u-boot.bin。

但是我自己编译的一个u-boot.bin,烧录到norflash的0x08000000,断电重启,无法从norflash上启动我的u-boot.bin。下面我做了一个实验,我从串口将u-boot-spl.bin和u-boot.img下载到内存并运行起来uboot后,将我的u-boot.bin烧录到norflash的0x08000000,并通过go 0x08000000命令,我的u-boot.bin是可以运行的。而同事编译的u-boot.bin却不能这么运行,不知道这两个u-boot.bin有什么区别,我该如何解决这个问题,能够上电后从norflash上直接运行u-boot.bin。

  • 一般用go命令都是运行在 内存中

    我没看到你更新了u-boot-spl.bin  这个更新了吗

  • 我的u-boot.bin是烧录在norflash上的,烧录顺序是下面这样的:

    1、从串口下载u-boot-spl.bin和u-boot.img,这一步可以正常运行起来,并且,在配置gpmc时,将norflash的基地址配置为0x08000000。

    2、通过tftp,将u-boot.bin下载到内存,然后通过cp.w命令,将内存中的u-boot.bin copy到norflash的开始,也就是在cp.w命令中的目标地址是0x08000000。

    3、运行go 0x08000000,我的u-boot.bin可以正常执行。

    4、断电,将启动方式修改为xip方式,然后上电,串口终端中没有任何输出,应该是我的u-boot.bin没有被执行。

    而我同事编译的u-boot.bin烧录到norflash上,烧录顺序是下面这样的:

    1、从串口下载u-boot-spl.bin和u-boot.img,这一步可以正常运行起来,并且,在配置gpmc时,将norflash的基地址配置为0x08000000。

    2、通过tftp,将u-boot.bin下载到内存,然后通过cp.w命令,将内存中的u-boot.bin copy到norflash的开始,也就是在cp.w命令中的目标地址是0x08000000。

    3、运行go 0x08000000,串口终端中只显示了“starting application at 0x08000000”,应该是没有被执行。

    4、断电,将启动方式修改为xip方式,然后上电,这个u-boot.bin可以正常被执行。

    现在不知道这两个u-boot.bin有什么区别,为什么我编译的u-boot.bin断电重新上电没有执行。

  • 你俩编译的源文件都是一样的吗?

    还有配置文件是不是相同的

  • 是不同的工程,我现在就是疑惑,为什么使用go命令可以运行,而使用xip方式,上电无法启动,是不是对程序的入口点有什么要求,或者程序中的地址需要重定向