主题 : 子程序不回返的问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 77980
精华: 0
发帖: 11
金钱: 55 两
威望: 11 点
综合积分: 22 分
注册时间: 2012-09-14
最后登录: 2017-09-13
楼主  发表于: 2012-09-23 02:28

 子程序不回返的问题

一个简单的裸机点亮一个LED灯的程序
    AREA   init, CODE, READONLY
    ENTRY
    mov sp, #0x33000000
    ldr r0, =0x56000010
    ldr r1, =0x56000014
    mov r2, #0x00000001
    mov r3, r2, lsl#10
    str r3, [r0]                    ;以上初始化数据

    mov r3, #0x00000020
    str r3, [r1]                   ;LED灯息灭
    bl  delay                     ;一个不能返回的子程序
loop
    mov r3, #0x00000000
    str r3, [r1]                   ;LED灯点亮
    b   loop
delay
    stmfd sp!, {lr}
    ldmfd sp!, {pc}
    end

delay用stmfd把lr的返回地址放入栈,再用ldmfd把地址弹回PC,但不能返回到主程序
把程序用a烧入nand区,关机重启,LED1不亮
但用d载到内存运行,LED1却能点亮

不知道这是为什么
自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8838
金钱: 46490 两
威望: 9298 点
综合积分: 18216 分
注册时间: 2010-01-09
最后登录: 2019-07-16
1楼  发表于: 2012-09-23 09:20
内存运行和NAND Flash运行是不同的,NOR Flash和内存运行效果基本一致,仔细研读cp数据手册看看了
新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.
级别: 新手上路
UID: 77980
精华: 0
发帖: 11
金钱: 55 两
威望: 11 点
综合积分: 22 分
注册时间: 2012-09-14
最后登录: 2017-09-13
2楼  发表于: 2012-09-23 10:00
这个也笼统了吧,这段代只有几百Byte的大小,按理说,NAND前4K的代码都会自动载入RAM,这不就是和内存运行一样的么
自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8838
金钱: 46490 两
威望: 9298 点
综合积分: 18216 分
注册时间: 2010-01-09
最后登录: 2019-07-16
3楼  发表于: 2012-09-23 15:20
我们不对用户自己的程序提供支持和调试,几乎每天都有各种各样的用户程序问题,各种平台,各种应用;开发板利润本来就很低,这种调试支持已经超出了我们的支持范围,请谅解
新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.