• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
主题 : vivi中加入usb下载功能无法启动问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 9254
精华: 0
发帖: 44
金钱: 450 两
威望: 225 点
综合积分: 88 分
注册时间: 2009-09-23
最后登录: 2009-12-12
楼主  发表于: 2009-11-28 10:15

 vivi中加入usb下载功能无法启动问题

在没有加入usb之前,vivi能够正常启动,功能正常,,我参考网上内容,加入USB的支持,因为编译后vivi的文件变大了,我做了如下修改
1,@ copy vivi to RAM
    ldr    r0, =VIVI_RAM_BASE
    mov     r1, #0x0
    #mov    r2, #0x20000
                    改成
                     mov              r2, #0x80000
    bl    nand_read_ll
2将nand_read_ll(unsigned char *buf, unsigned long start_addr, int size)中的形参
Int size改成unsigned long size
烧到板子上,无法启动,然后我在编译时候打开vivi的Debugging message,再烧到板子上
出现以下信息
@000000E8
OK    :将vivi从flash拷到内存中成功
OK     :内存中前4k代码和flash中的前4k相同
STKP
33DEFFFC  :DW_STACK_START
可以判断出:代码执行到
bl    main            @ call main
这句时,没有进入main函数,,不知道怎么回事,请斑竹给些建议。。
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2009-11-29 18:39
AXD + H-Jtag
[ 此帖被kasim在2009-11-29 18:45重新编辑 ]
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 9254
精华: 0
发帖: 44
金钱: 450 两
威望: 225 点
综合积分: 88 分
注册时间: 2009-09-23
最后登录: 2009-12-12
2楼  发表于: 2009-11-30 09:44

 回 1楼(kasim) 的帖子

版主,对于用AXD + H-Jtag这块我有一个疑问啊,就是vivi在linux下是根据Makefile和链接脚本进行编译链接的,如果用ads这块该怎么做啊?请版主在帮忙解释一下,,以前没用过ads仿真过用Makefile来编译的这种程序。
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
3楼  发表于: 2009-11-30 10:46

 回 2楼(stone) 的帖子

AXD + H-Jtag的意思是用AXD通过H-Jtag接口直接debug编译好的ELF文件,不是让你用ADS来编译出ELF执行档
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 9254
精华: 0
发帖: 44
金钱: 450 两
威望: 225 点
综合积分: 88 分
注册时间: 2009-09-23
最后登录: 2009-12-12
4楼  发表于: 2009-11-30 14:58

 回 3楼(kasim) 的帖子

我将vivi-elf用AXD仿真出现的是以下界面:0x00000000]   andeq    r0,r0,r0
[0xffffffff]   dci      0xffffffff ; ? undefined
[0xffffffe0]   dci      0xffffffe0 ; ? undefined
[0x00000000]   andeq    r0,r0,r0
[0x33dfc000]   bicccs   r12,pc,#0
[0x33dfc000]   bicccs   r12,pc,#0
[0xb7ffffdf]   dci      0xb7ffffdf ; ? undefined
[0xffbffffe]   dci      0xffbffffe ; ? undefined
[0xfbffffdf]   blx      0x33efff9e
[0xbdffffff]   ldcltl   p15,c15,0x33f00420
[0xdfffffff]   swile    0xffffff
[0x33f550d4]   mvnccs   r5,#0xd4 ; ? rn = 0x5
[0x00000000]   andeq    r0,r0,r0
[0xffffffff]   dci      0xffffffff ; ? undefined
[0xfffffffe]   dci      0xfffffffe ; ? undefined
[0xffffffe0]   dci      0xffffffe0 ; ? undefined
[0x00000000]   andeq    r0,r0,r0
[0x33dfc000]   bicccs   r12,pc,#0
[0x33dfc000]   bicccs   r12,pc,#0
[0xb7ffffdf]   dci      0xb7ffffdf ; ? undefined
[0xffbffffe]   dci      0xffbffffe ; ? undefined
[0xfbffffdf]   blx      0x33efffd2
[0xbdffffff]   ldcltl   p15,c15,0x33f00454
[0xdfffffff]   swile    0xffffff
[0x33f550d4]   mvnccs   r5,#0xd4 ; ? rn = 0x5
[0x00000000]   andeq    r0,r0,r0
[0xffffffff]   dci      0xffffffff ; ? undefined
[0xfffffffe]   dci      0xfffffffe ; ? undefined
看不到head.s的源码,后来我看网上说axf就是elf格式的。在axd下调试的话,需要在编译时包含dwarf-2格式的调试信息。于是我在vivi的Makefile中的CFLAGS加上-gdwarf-2重新编译,但是load image后还是上面的东西,看不到head.S,我在AXD的files菜单下也找不到head.S,只是一些.c和.h文件,,这是怎么回事呢?请版主帮忙看一下。
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
5楼  发表于: 2009-11-30 15:23
如果你调试的是烧在NAND Flash里的vivi,那你调试的是运行地址(0x0)和链接地址(0x33f00000)不同的程序,不要用AXD直接加载ELF文件。当进入Debugger模式后,把PC设到0x0后单步调试就可以了。这个时候AXD不能自动关联到汇编源代码,但可以输出0x0处的反汇编,这和head.S里汇编代码应该是一致的(NAND Boot模式下NAND Flash中的前4K代码自动复制到SRAM的0x0处)。你可以根据vivi的map文件中的symbol地址减掉0x33f00000得到此时它们对应的地址。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 9254
精华: 0
发帖: 44
金钱: 450 两
威望: 225 点
综合积分: 88 分
注册时间: 2009-09-23
最后登录: 2009-12-12
6楼  发表于: 2009-11-30 16:08
我调试的是烧写到nand中的vivi
引用第5楼kasim于2009-11-30 15:23发表的 :
如果你调试的是烧在NAND Flash里的vivi,那你调试的是运行地址(0x0)和链接地址(0x33f00000)不同的程序,不要用AXD直接加载ELF文件

那该怎样加载文件?
[quote]引用第5楼kasim于2009-11-30 15:23发表的  :
当进入Debugger模式后,把PC设到0x0后单步调试就可以了。这个时候AXD不能自动关联到汇编源代码,但可以输出0x0处的反汇编,这和head.S里汇编代码应该是一致的(NAND Boot模式下NAND Flash中的前4K代码自动复制到SRAM的0x0处)。quote]
怎样进入Debugger模式?我只能看到反汇编代码吗?如果这样的话,那还是不能确定程序的运行状况
[ 此帖被stone在2009-11-30 16:17重新编辑 ]
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
7楼  发表于: 2009-11-30 16:29

 回 6楼(stone) 的帖子

1. 不需要加载程序,事实上,程序已经在SRAM中了(从NAND Flash的前4K复制而来)。
2. 反汇编也是汇编源代码, 而且和head.S是一样的,为什么不能确定程序的运行状况?你所要做的只是转换一下地址而已,把head.S中的0x33f0XXXX转换为当前运行的0xXXXX上。
3. 用AXD的默认设置,打开AXD后,如果进不了Debugger模式,即CPU无法接受Debug请求而停下来,AXD会报错的。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 9254
精华: 0
发帖: 44
金钱: 450 两
威望: 225 点
综合积分: 88 分
注册时间: 2009-09-23
最后登录: 2009-12-12
8楼  发表于: 2009-11-30 17:00

 回 7楼(kasim) 的帖子

版主,现在vivi烧到了nand,然后我直接打开AXD,什么都不加载,点击step出现下面的东西
  dci      0xffffffe0 ; ? undefined
[0x00000000]   andeq    r0,r0,r0
[0x33dfc000]   bicccs   r12,pc,#0
[0x33dfc000]   bicccs   r12,pc,#0
[0xffffffdf]   dci      0xffffffdf ; ? undefined
[0xffbffffe]   dci      0xffbffffe ; ? undefined
[0xfbffffdf]   blx      0xffffff9e
[0xbfffffff]   swilt    0xffffff
[0xdfffffff]   swile    0xffffff
[0x33f550d4]   mvnccs   r5,#0xd4 ; ? rn = 0x5
。。。
然后我设置PC=0x0,出现下面的东西
00000000    [0xffffffe0]   dci      0xffffffe0 ; ? undefined
00000004    [0x00000000]   andeq    r0,r0,r0
00000008    [0x33dfc000]   bicccs   r12,pc,#0
0000000c    [0x33dfc000]   bicccs   r12,pc,#0
00000010    [0xffffffdf]   dci      0xffffffdf ; ? undefined
00000014    [0xffbffffe]   dci      0xffbffffe ; ? undefined
00000018    [0xfbffffdf]   blx      0xffffff9e
0000001c    [0xbfffffff]   swilt    0xffffff
00000020    [0xdfffffff]   swile    0xffffff
00000024    [0x33f550d4]   mvnccs   r5,#0xd4 ; ? rn = 0x5
。。看到的只是这些代码,你说的反汇编代码是指这些吗?然后我step,出现的也是这些代码。。看不到类似于head.s的代码。。
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
9楼  发表于: 2009-11-30 17:07

 回 8楼(stone) 的帖子

这个恐怕不光是你,是人都分析不了。这不是正确的0x0处的反汇编。
我不可能手把手教你用AXD, 这个只能靠你自己了。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go