4875|19

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

eboot的问题 [复制链接]

eboot在startup打开mmu后,操作虚拟地址可以点灯,但是b main 后再main函数点灯就无反应,怎么问题。

最新回复

决定结贴重开,这个问题没有好好的说明  详情 回复 发表于 2009-1-13 09:32
点赞 关注

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
是不是你的main()里对该端口有不同的初始化了
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
引用 1 楼 LinHanLao 的回复:
是不是你的main()里对该端口有不同的初始化了
没有,一样的
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

4
 
拒绝猜谜,贴代码。
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

5
 
在main的什么位置操作的?点LED通过什么?IO口?还是总线?还是一般通用接口?不点LED,系统是否能运行下去?
你怎么确认b main是成功了呢?也许根本就没跳转过去,或者跳转失败。
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

6
 
我觉得你的 b main根本没有成功。
——————————————————————

贴代码看看
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

7
 
估计是自己的低级错误
就LZ提供的这些信息别人也没有办法帮你具体分析问题
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 3 楼 yashi 的回复:
拒绝猜谜,贴代码。


贴点出来才有线索撒
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

9
 
lz把点灯的操作代码贴出来看看,同时确定你执行到了这些代码。
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

10
 
  1.           TEXTAREA

  2.         IMPORT  main
  3.   .
  4.   .
  5.   .
  6.   .
  7.   .
  8.   .
  9.   
  10.    
  11.         ldr     r0, = GPFDAT                                          ;点灯处,硬件上参照没问题。
  12.          mov     r1, #0x30
  13.         str     r1, [r0]

  14.         cmp     r0, #0                  ; make sure no stall on "mov pc,r0" below
  15.         mcr     p15, 0, r1, c1, c0, 0
  16.         mov     pc, r0                  ;  & jump to new virtual address
  17.         nop

  18.         ; MMU & caches now enabled.
  19.         ;   (r10) = physcial address of 1st level page table
  20.         ;

  21. VirtualStart


  22.         
  23.         mov     sp, #0x8C000000
  24.         add     sp, sp, #0x30000        ; arbitrary initial super-page stack pointer
  25.         b       main

  26.         ENTRY_END

  27.         LTORG
  28. .
  29. .
  30.         
复制代码

c代码:
void main(void)
{

    OEMWriteDebugLED(0, 0xF);


}
void OEMWriteDebugLED(UINT16 Index, DWORD Pattern)
{
    volatile S3C2410X_IOPORT_REG *s2410IOP = (S3C2410X_IOPORT_REG *)OALPAtoVA(S3C2410X_BASE_REG_PA_IOPORT, FALSE);


    s2410IOP->GPFDAT=(s2410IOP->GPFDAT & 0xf) | ((Pattern & 0xf)<<4);
}
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

11
 
顶一下
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

12
 
你没发现你的点灯操作把后面要用的R0,R1寄存器内容都改写了吗。你的程序都不知道飞到哪儿去了。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

13
 
引用 11 楼 singlerace 的回复:
你没发现你的点灯操作把后面要用的R0,R1寄存器内容都改写了吗。你的程序都不知道飞到哪儿去了。


我刚才就觉得奇怪
ldr     r0, = GPFDAT                                          ;点灯处,硬件上参照没问题。
         mov     r1, #0x30
        str     r1, [r0]

        cmp     r0, #0                  ; make sure no stall on "mov pc,r0" below
        mcr     p15, 0, r1, c1, c0, 0    --------上面的R1有mov   r1, #0x30
        mov     pc, r0                  ;  & jump to new virtual address
        nop
————————————————————————
        mcr     p15, 0, r1, c1, c0, 0    --------上面的R1有mov   r1, #0x30
看看协处理器指令,ARM的核心指令啊。稍微差池,就挂了。
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(初级)

14
 
; The page tables and exception vectors are setup.
        ; Initialize the MMU and turn it on.
        mov     r1, #1
        mcr     p15, 0, r1, c3, c0, 0   ; setup access to domain 0
        mcr     p15, 0, r10, c2, c0, 0

        mcr     p15, 0, r0, c8, c7, 0   ; flush I+D TLBs
        mov     r1, #0x0071             ; Enable: MMU
        orr     r1, r1, #0x0004         ; Enable the cache

        ldr     r0, =VirtualStart

        cmp     r0, #0                  ; make sure no stall on "mov pc,r0" below
        mcr     p15, 0, r1, c1, c0, 0
        mov     pc, r0                  ;  & jump to new virtual address
        nop
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

15
 
ls正解。lz要慎用R0,R1啊
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

16
 
不是这个问题,这边的点灯在实际的boot中是不存在的,在此只是为了说明代码可以执行到该处而已
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

17
 
引用 15 楼 mengll002 的回复:
不是这个问题,这边的点灯在实际的boot中是不存在的,在此只是为了说明代码可以执行到该处而已



???我们的意思是你搞错了协处理器指令,设置错误,程序肯定不会正确运行了。

上面的代码你看看你的r1.........
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

18
 
引用 12 楼 gooogleman 的回复:
引用 11 楼 singlerace 的回复:
你没发现你的点灯操作把后面要用的R0,R1寄存器内容都改写了吗。你的程序都不知道飞到哪儿去了。


我刚才就觉得奇怪


        cmp    r0, #0                  ; make sure no stall on "mov pc,r0" below
        mcr    p15, 0,…

这点没错,如果代码如此是会产生协处理器的指令不对,但是,我把点灯
  1. ldr    r0, = GPFDAT                                          ;点灯处,硬件上参照没问题。
  2.         mov    r1, #0x30
  3.         str    r1, [r0]
复制代码
这段去掉后
在前面b wincebringup (这个是我的修改的smdk中自带的)处的点灯并没有因为执行的main熄灭
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

19
 
引用 16 楼 gooogleman 的回复:
引用 15 楼 mengll002 的回复:
不是这个问题,这边的点灯在实际的boot中是不存在的,在此只是为了说明代码可以执行到该处而已



???我们的意思是你搞错了协处理器指令,设置错误,程序肯定不会正确运行了。

上面的代码你看看你的r1.........

我明白,点灯的代码吧R1的值改变了,会发生错误,但是就算没有点灯的代码也不会执行执行到main,我只是想表示,代码可以执行到这个地方
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

20
 
决定结贴重开,这个问题没有好好的说明
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表