标签 hex_burn 下的文章

按照韦东山的视频中 sdram的裸机代码,写了一份,通过 minitools 下载到 0x30000000,然后烧录到 nand中,接过不能正常运行。 尝试过多种方法后,只有一种解决方法,就是不要用 0x30000000这个地址。 可以把 makefile 中的地址改为0x30008000,minitools 中下载的地址也改为 0x30008000,这样就可以正常的运行了。 可能 0x30000000 前面的一些内存被使用了?

后来换了一个 TQ2440的开发板,不使用 minitools,而是用 DNW配合bootload下载程序到nand,程序链接地址选择 0x30000000 是可以运行的。使用 DNW 驱动使用 韦东山的 zadig程序,安装 libusb-win32 驱动,然后使用 dnw_100ask.exe 来下载程序。

所以初步怀疑,这个现象可能和 minitools 软件相关。

今天在 写了个简单的 led 的汇编程序,下载到 mini2440 的 nand flash 里面可以正常运行,但是下载到 sdram 里面不能运行。

后来发现有几个注意点,

  1. 要在 sdram 中运行,链接脚本的地址不能像 nand 里面一样是0,必须是 sdram 里面的地址,比如说 0x30000000.
  2. 下载到 ram 中的地址必须和 链接脚本的地址一致。
  3. 0x30000000 这个地址不行,0x30008000 这个地址肯定没有问题,0x30000020 超过这个地址,也都可以运行,0x3000001c 这个地址不能运行,但是 minitools 会断掉链接后自动链接上,其他小于 0x30000020 的地址,都是没有运行反应的。

具体是什么原因,还要后续进一步的调试了。

但是也不是每个程序都能在 sdram 中运行,具体情况暂时还不清楚,尽量还是烧录到 nand 中在运行,不容易出问题。