6880|22

70

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

eboot启动之烦恼! [复制链接]

各位朋友!小弟经过几天努力eboot问题终于有成绩了!我现在想把我bsp升级成三星官方的?我的nboot是ads编译的。现在  FMD_ReadSector(dwSector,(LPBYTE)dwRAM,NULL, 1);函数读取nand中数据,调试信息如下:

WinCE NAND Boot v1.00
Nov 05 2009 10:14:53
dwSector:0x00000040
dwLength:0x00000100
dwRAM:0x30038000

这段下面都是读取的数据:
0x000000fe
0x00000003
0x00000000
0x000000ea
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000

我比较了下这个数据和我的eboot.nb0竟然是一样的?那么问题出来了?为什么我的eboot还起不来呢??我在eboot中点灯了没发应。我把点灯也给大家看看。因为是汇编我不敢确信自己是对的。
        ; Hanson Test LED ++
        ; Led_Display                     
        ldr r0,=GPFCON
        ldr r1,=0x5500
        str r1,[r0]
        ldr r0,=GPFDAT
        ldr r1,=0x0
        str r1,[r0]  

        b       .
        ; Hanson Test LED --  我的小灯是GPIOF4-GPIOF7.请各位帮俺分析下。不胜感激!

最新回复

b main之前的开启是mmu开启之后的!  详情 回复 发表于 2009-11-9 08:35
点赞 关注

回复
举报

62

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
失败!没人顶!自己顶下吧!现在点灯可以了!但是eboot还是起不来??我用的是三星官方的eboot??
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
晕,你说起不来

别人还要反问你为什么起不来,这个太多原因了。
不好说啊。

所以很多人就不敢回答了。
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

4
 
gooogleman讲的有道理!这个问题就是我在starup中点灯!已经有效果了 但是eboot调试信息没出来!不知道eboot的main函数有没有执行!
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

5
 
那就在main之前点灯。

还有看看你的MMU初始化部分,

开了MMU就不能再用物理地址,和开始的部分不同的。
 
 
 

回复

96

帖子

0

TA的资源

一粒金砂(初级)

6
 
最有效的办法就是通过ADS连接之后,通过查看反汇编与源代码比较,我当时这么做的,分析问题很有效
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

7
 
问题是eboot烧进去后。ads就没办法用了?不知道你当时是怎么弄的?
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

8
 
ADS可以用的,在你eboot的startup.s中认为确定能通过的地方加一句b .  这样执行过程中就会停在那里,直接启动AXD,查看当前PC值,再通过setpc跳到 b .的下一句,然后单步执行就可以了。
另外,在这种情况下不需要加HJTAG等软件的初始化脚本,如果开了MMU,再加脚本会出错。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

9
 
好的!谢谢!现在eboot已经能跑到配置PLL后面了!继续调试。不知道这个工作能坚持多久。发现进去eboot到系统起来后还有很多工作要做.努力!
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用 7 楼 veabol 的回复:
ADS可以用的,在你eboot的startup.s中认为确定能通过的地方加一句b .? 这样执行过程中就会停在那里,直接启动AXD,查看当前PC值,再通过setpc跳到 b .的下一句,然后单步执行就可以了。
另外,在这种情况下不需要加HJTAG等软件的初始化脚本,如果开了MMU,再加脚本会出错。


这个要顶!嘿嘿。学习了!以前我一直不懂如何调试eboot,veabol 老大,有空写个好的博客吧,
让后辈们学习啊!
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

11
 
大家好!最新进展程序死在这个里面了
;   Copy boot loader to memory

        ands    r9, pc, #0xFF000000     ; see if we are in flash or in ram
        bne     %f20                    ; go ahead if we are already in ram

        ; This is the loop that perform copying.
        ldr     r0, = 0x38000           ; offset into the RAM
        add     r0, r0, #PHYBASE        ; add physical base
        mov     r1, r0                  ; (r1) copy destination
        ldr     r2, =0x0                ; (r2) flash started at physical address 0
        ldr     r3, =0x10000            ; counter (0x40000/4)
10      ldr     r4, [r2], #4
        str     r4, [r1], #4
        subs    r3, r3, #1
        bne     %b10

不知道什么原因??难道这不要cpoy??
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

12
 
请教下eboot中还要做这个工作吗?nboot不是以前copy到ram中了为什么三星的代码还要做copy呢??不懂等到高人指点!韦伯大哥?帮我讲讲!
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

13
 
ands    r9, pc, #0xFF000000    ; see if we are in flash or in ram
        bne    %f20   
这两句是判断要不要复制,正常情况下会直接向下跳转到标号20处的,你的没跳吗?
看下执行ands    r9, pc, #0xFF000000    时候的PC值是多少
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

14
 
大侠们!我的eboot停在这个最好的地方时为什么呀?
        
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

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

VirtualStart
         ldr     r0, = GPFDAT(可是这里的灯缺不亮)
         mov     r1, #0xC0
        str     r1, [r0]
               
        mov     sp, #0x80000000
        add     sp, sp, #0x30000        ; arbitrary initial super-page stack pointer
        b       main

这最后几句是什么作用呀?我困惑了!??
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

15
 
ldr    r0, = GPFDAT(可是这里的灯缺不亮)
        mov    r1, #0xC0
        str    r1, [r0]

你用的是物理地址吧?
上边已经开了MMU,要访问虚拟地址才行,没看到下边是用的0x80000000开始的地址吗?
你在这个地方用物理地址点灯肯定会出错的
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

16
 
韦伯大哥,讲的有道理!真糊涂!那看样子已经跳到main那了?我在看看怎么回事??
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

17
 
为什么在main函数中点灯没反应呢??

            volatile S3C2440A_IOPORT_REG *s2440IOP = (S3C2440A_IOPORT_REG *)OALPAtoVA(S3C2440A_BASE_REG_PA_IOPORT, FALSE);
        s2440IOP->GPFCON &=0x5500;
        s2440IOP->GPFDAT &=  0x0;
点灯程序。大家看看这会出什么问题?感觉是不是没跳转过来??还是什么原因?想问下OALPAtoVA这个函数要实现吗?好像这个函数只有一个定义??
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

18
 
s2440IOP->GPFCON &=0x5500; 设置输出不要用与
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

19
 
我查出来了。好像是mmu出问题了?我在b main之前点灯
        mov r0, #0x91000000
        orr r0, r0, #0x600000
        orr r0, r0, #0x54
        ldr r1, =0x91600054

        mov     r0, #0x60
       str     r0, [r1]
小灯亮了?但是在main中还是不行?
        volatile S3C2440A_IOPORT_REG *s2440IOP = (S3C2440A_IOPORT_REG *)OALPAtoVA(S3C2440A_BASE_REG_PA_IOPORT, FALSE);
        s2440IOP->GPFCON  = (0x1 << 8) |(0x1 <<10) | (0x1 << 12) | (0x1 <<14);
        s2440IOP->GPFDAT =((s2440IOP->GPFDAT) & 0xF) | ((0x0 & 0xF) << 4);
各位帮我看看是怎么回事??头都大了??韦伯大哥?gooogleman??
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

20
 
1、确定一下OALPAtoVA函数是否正确
2、跳的main是否有问题
第一条看源代码,第二条用AXD查看
 
 
 

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

查找数据手册?

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
快速回复 返回顶部 返回列表