4696|14

80

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

求教:eboot不能往下执行了 [复制链接]

以前我的eboot都能用的, 我加了一些调试信息后,编译出来的eboot就超出了原来的大小(因为多了一个eboot.nb1),因此我就在boot.bib里面将eboot的大小改大了.但是烧到板子上却总是不行.我在eboot的startup.s中,加了一些向串口输出信息的语句,以跟踪程序的运行,发现程序运行到最后要跳往c文件的main函数时挂了,高手帮忙看看,是不是最后的VirtualStart那部分有问题. 以下是摘出来的代码


;;;;send msg to dnw;;;; ------------------

169          ldr      r0,  =UART_STAT
               ldrb     r1,[r0]
               subs    r1,r1,#2
               bne   %B169

               ldr      r0 , =UART0_TXH0
               mov   r1 , #0x4b      ;;; K     这个K还可以输出到dnw
               str     r1 ,  [r0]
  ;;;;send msg to dnw;;;;------------------


        ; 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

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



VirtualStart


;;;;send msg to dnw;;;; ------------------

176          ldr      r0,  =UART_STAT
               ldrb     r1,[r0]
               subs    r1,r1,#2
               bne   %B176

               ldr      r0 , =UART0_TXH0
               mov   r1 , #0x5a   ; Z   ;这个Z就不能输出了
               str     r1 ,  [r0]
;;;;send msg to dnw;;;; ------------------


        mov     sp, #0x80000000
        add     sp, sp, #0x30000        ; arbitrary initial super-page stack pointer
        b       main

        ENTRY_END


最新回复

有要一起研究的和我联系,我的QQ309881451  详情 回复 发表于 2007-11-16 17:55
点赞 关注

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
boot.bib
   EBOOT    80038000  00020000  RAMIMAGE

config.bib
EDBG                80030000  00020000  RESERVED

这个EDBG在其他地方没有查到有用到,如果用到了是不是会有问题呢?但是以前的eboot可以用的
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
UP!
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

4
 
如果eboot.nbo不大于128k的话
boot.bib
      EBOOT         80038000     00020000     RAMIMAGE
      ……
       ROMSIZE=20000
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

5
 
To: dapli  ,我的RomSize有改成20000了,请问还有其他地方需要修改的吗?  记得以前看到一个贴子,说eboot跑不过去可能是最后的sp的设置有问题. 这个我还在学习中,不是很明白,懂的帮忙看下了.
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

6
 
1.你现在有多生成出eboot.nb1吗?
2.你所说的“烧到板子上却总是不行”是怎么个不行?

此外
176                     ldr     r0,     =UART_STAT
                        ldrb    r1,[r0]
                        subs    r1,r1,#2
                        bne     %B176
                        ldr     r0   ,   =UART0_TXH0
                        mov     r1   ,   #0x5a       ;   Z       ;这个Z就不能输出了
                            str     r1   ,   [r0]

你加的这段是错误的
这段是你在已经启动MMU后的语句,你已经无法直接访问物理地址了,
但UART0_TXH0是你的物理地址,所以再通过
ldr     r0   ,   =UART0_TXH0
mov     r1   ,   #0x5a       ;   Z       ;这个Z就不能输出了
str     r1   ,   [r0]
是无法操作串口输出的,因此Z是不会输出的,你要通过虚拟地址来操作
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

7
 
技术交流群:18592092  该群人才济济,各个方面都有.
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

8
 
To dapli: 在我将eboot的romsize大小改大后,现在只生成一个eboot.nb0了.  mmu使能了,那么这个Z是输不出来了,呵呵.不过程序并没有运行到c代码,因为我在代码入口都有打印调试输出,但是dnw一点动静都没有,只能输出到K
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

9
 
现在我将改动的代码都恢复原状了,重新sysgen了下,系统还是跑不起来. 是在不行,只有重新覆盖bsp,然后再重新研究了......
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

10
 
在问一下大家,nboot的大小是在么确定的呢?我现在eboot的大小对了,nboot的又出错了.我没改什么咚咚,但是在生成的nboot.nb0大小不再是4k了,而是12k.我查了一下,nboot.bib文件里面的romsize 却是是0x3000=12K ,但是以前也是这么设置的,而且都可以跑,为什么现在出问题了?我没改nboot的大小之类的.  附上nboot.bib 和eboot.bib


nboot.bib

MEMORY
;   Name      Start     Size      Type

    NBOOT       00000000  00003000  RAMIMAGE
    STACK     33ff5800  00001000  RESERVED
    RAM       33ff0000  00001000  RAM

CONFIG   
        ROMSTART=00000000
        ROMWIDTH=32
        ROMSIZE=00003000


eboot.bib

MEMORY
;   Name     Start     Size      Type
;   -------  --------  --------  ----
    ARGS     80020800  00000800  RESERVED
    RAM      80026000  00006000  RAM   
    ;STACK    8002c000  00004000  RESERVED
    STACK    8002c000  0000B000  RESERVED
    EBOOT    80038000  00040000  RAMIMAGE
    BINFS    80080000  00021000  RESERVED

CONFIG
        COMPRESSION=OFF
        PROFILE=OFF
        KERNELFIXUPS=ON
;        ROMOFFSET=25FC8000
        SRE=ON
        ROMSTART=80038000
        ROMWIDTH=32       
       ROMSIZE=20000  //由于实际编译出来的eboot的有效数据没有40000,为了提高eboot的烧写速度,将大小改为20000
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

11
 
upup
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

12
 
因为nboot.bib里 ROMSIZE=00003000, 当然nboot.nb0就12k了,这是你自己指定的大小,nboot.nb0里会有很多没用的0来补足大小。
看你生成的nboot.bin大小是多大,有没有超过4k,
下载nboot.bin就可以了,不用管nboot.nb0
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

13
 
To dapli: 我现在将BSP覆盖了一下,恢复正常了. ROMSIZE还是00003000 ,但是生成的nboot.nb0是4k而不是12k. 我前几天不知道是修改了哪一个地方,导致nboot.nb0编译出来一直是12k .  我查了msdn,上面也是说romsize决定了nboot.nb0编译出来的大小, 真不知道我是哪里改出问题了...
  谢谢dapli的回复^_^
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

14
 
你们用的都是什么开发板啊,我用的是优龙的,好象没有用到eboot和nboot,取而代之的是一个ADS1.2的工程编译出来的bin文件,但是我现在还弄不懂他是怎么引导的系统.
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

15
 
有要一起研究的和我联系,我的QQ309881451
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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