sanrenxing 发布于 2007-7-31 13:54:26 我刚写了个简单的循环点灯程序,可是不管我把ro base设置成0x0c000000还是0x00000000,程序下载到flash后都可以正常运行。这是为什么呢?
reply007 发布于 2007-7-31 13:56:01 不会是直接在启动代码里写的吧?没有C? reply007 发布于 2007-7-31 14:00:54
你的设置起作用了吗? sanrenxing 发布于 2007-7-31 14:02:04
c 程序有啊 而且编译完后code 986 ro 0 rw 0 我不明白ro rw怎么会是0的呢? 请问怎么才能知道设置有没有起作用呢? reply007 发布于 2007-7-31 14:06:33 如果0x0c000000地址和0x00000000地址都有实际的存储空间的话,那么应该是可以的。 可以这样假设。。 在0地址空间处有实际的存储空间,那么代码固化到以0地址开始处的一段空间处 如果RO设置为0 那么 代码就是直接执行,不用进行拷贝。 如果RO设置为0x0c000000 那么代码就要进行拷贝。
reply007 发布于 2007-7-31 14:11:10
要是没有猜错的话,楼主用的应该是SUMSUNG的ARM,0X0C000000是不是挂的SDRAM,很多的网上的资料都是这么做的,要是RO设置成0X0C000000,程序的开始地址不会是0X00000000,那又怎么可能被正确执行呢 sanrenxing 发布于 2007-7-31 14:13:11
我用的是s3c44b0 flash是2M的在bank0,地址从0x00000000开始 sdram是8M的在bank6,地址从0x0c000000开始 我是直接下载的.elf文件 我是这样理解的,程序下载到flash中不管ro base设置的是多少它都是从0x0开始的。我这样理解不知道对不对,还望高手指点!! reply007 发布于 2007-7-31 14:15:47
这样理解是对的。。。。。 但是 RO设置成0x0c000000的话,你就要进行代码拷贝了,要把FLASH里的代码拷贝到sdram中去。。这样程序才可以正常运行。而程序就在SDRAM中运行。 reply007 发布于 2007-7-31 14:16:22
你程序里没有绝对跳转,就没啥影响 sanrenxing 发布于 2007-7-31 14:17:16 好的,谢谢关注!!! |