韦东山Linux嵌入式课程社区
直播中

王帅

7年用户 227经验值
私信 关注

mini2440烧写运行mmu裸机程序led不亮

    我使用的开发板是mini2440,交叉编译器版本为友善官方提供的ARM-linux-gcc-4.4.3,主机环境是物理机上的ubuntu12.04,使用jlink-V8和SEGGER官网提供的linux版JlinkExe软件来烧写程序。在GPIO和SDRAM相关裸机程序烧写时都是正常的,以下是我烧写的步骤:
①用韦老师提供的mini2440源代码make生成*.bin文件;
②开发板从nand flash启动,jlink连开发板jtag口,运行JlinkExe,先用h来halt一下,再用loadbin *.bin 0x00000000下载程序到SRAM(个人理解是这样),最后用g来运行程序,结果实现都现象正常;

    在学习MMU部分时,同样使用以上的步骤方法,结果是led都不亮。
    反复查看mmu.dis都没发现问题。于是用nor flash中的superviv下载mmu.bin到nand flash的vivi分区,这样从nand flash启动时就会执行mmu.bin程序。经过验证结果也是正确的。
    那么问题就出在jlink烧写程序了,通过网上查阅资料,尝试了一下这样烧写:先halt,再setpc 0,然后loadbin,最后g,结果程序居然执行了!
    我的问题就在这里,为什么需要用setpc 0 程序才能正常运行呢?

回帖(2)

李天竹

2019-6-28 08:10:20
nandflash里有程序 你h的时候 你看下pc指针应该不是0 你loadbin以后 需要setpc 0 意思就是把pc指针指向0开始运行
举报

张梅

2019-6-28 08:25:08
我烧写裸机程序的时候已经通过nor flash中的supervivi把nand flash整个都擦除了;谢谢你提醒我h之后查看PC指针的值,这一点我的确没想到。昨晚想了想,问题应该是PC值的问题,我把mmu的程序下载进去后PC指针不是0,所以没法运行程序。但是前面gpio的例程不用设PC就能运行我就真的想不通了。
感谢你的回复。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分