QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

热搜: eclipse ecos stm32 ecos源码 如何获取ecos ecos源代码 code goAhead redboot
搜索
发新帖
楼主: scottyuhb
查看: 6285| 回复: 51

21

主题

3

听众

572

积分

高级工程师

Rank: 4Rank: 4

  • TA的每日心情
    奋斗
    2013-5-3 10:11
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    最后登录
    2014-7-6
    威望
    0
    金钱
    497
    贡献
    0
    注册时间
    2013-3-12
    积分
    572
    帖子
    70
    主题
    21
    精华
    1
    UID
    206
    发表于 2013-4-23 23:55:54 |显示全部楼层
    更多
    reille 发表于 2013-4-23 20:54
    这条指令,不能用-b选项,而应该用-r选项。

    我再看了下fis create这条指令的选项说明(摘自《嵌入式可配 ...
    reille 发表于 2013-4-23 20:54
    这条指令,不能用-b选项,而应该用-r选项。

    我再看了下fis create这条指令的选项说明(摘自《嵌入式可配 ...

    我看了下代码,发现可能与SDRAM的访问权限有关系。在用“fis load eCos”时打印的信息如下:
    1. RedBoot> fis load eCos
    2. Not a loadable image - try using -b ADDRESS option
    复制代码
    在代码里找到的打印信息的代码,如下:
    1. if (!valid_address((void *)mem_addr)) {
    2.         diag_printf("Not a loadable image - try using -b ADDRESS option\n");
    3.         return;
    4.     }
    复制代码
    1. //
    2. // Validate an address to see if it is within any known RAM area
    3. //
    4. bool
    5. valid_address(unsigned char *addr)
    6. {
    7.     int seg;

    8.     for (seg = 0;  seg < CYGBLD_REDBOOT_MAX_MEM_SEGMENTS;  seg++) {
    9.         if (mem_segments[seg].start != NO_MEMORY) {
    10.             if ((addr >= mem_segments[seg].start) && (addr < mem_segments[seg].end)) {
    11.                 return true;
    12.             }
    13.         }
    14.     }
    15.     return false;
    16. }
    复制代码
    这样的话要怎么修改才能让SDRAM的0x30000000获得读写的权限。
    回复

    使用道具 举报

    84

    主题

    16

    听众

    2901

    积分

    超级版主

    Rank: 8Rank: 8Rank: 8Rank: 8

    该用户从未签到

    最后登录
    2015-5-31
    威望
    0
    金钱
    2389
    贡献
    0
    注册时间
    2012-5-1
    积分
    2901
    帖子
    492
    主题
    84
    精华
    4
    UID
    2
    发表于 2013-4-24 09:04:32 |显示全部楼层
    scottyuhb 发表于 2013-4-23 21:46
    该书中:   -b   映像在RAM中的位置,该选项是必需的。我尝试了'-b'和'-r'指令都加情况下,也是不行。
    lo ...

    书中有误,有-r的时候,就不需要-b,它们两个的意思都是指定映像在内存的位置。两个一起使用,那以谁为准。

    你可以在redboot下用fis create -h看下就知道了,至少我在我们的项目中就不需要这个-b选项。
    1. fis create -r 0x30000000 -e 0x30000000 -l 0x4000 -f 0x80034000 eCos
    复制代码
    回复

    使用道具 举报

    84

    主题

    16

    听众

    2901

    积分

    超级版主

    Rank: 8Rank: 8Rank: 8Rank: 8

    该用户从未签到

    最后登录
    2015-5-31
    威望
    0
    金钱
    2389
    贡献
    0
    注册时间
    2012-5-1
    积分
    2901
    帖子
    492
    主题
    84
    精华
    4
    UID
    2
    发表于 2013-4-24 09:10:27 |显示全部楼层
    scottyuhb 发表于 2013-4-23 23:55
    我看了下代码,发现可能与SDRAM的访问权限有关系。在用“fis load eCos”时打印的信息如下:在代码里找 ...

    我不认为是SDRAM的0x3000 0000的读写权限问题。
    至少,如果这个redboot的load命令有问题的话,那它也太不具备可移植性了。

    另外,可否用objdump -h elf文件,看下编译生成的elf文件的信息?
    回复

    使用道具 举报

    21

    主题

    3

    听众

    572

    积分

    高级工程师

    Rank: 4Rank: 4

  • TA的每日心情
    奋斗
    2013-5-3 10:11
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    最后登录
    2014-7-6
    威望
    0
    金钱
    497
    贡献
    0
    注册时间
    2013-3-12
    积分
    572
    帖子
    70
    主题
    21
    精华
    1
    UID
    206
    发表于 2013-4-24 10:26:01 |显示全部楼层
    reille 发表于 2013-4-24 09:10
    我不认为是SDRAM的0x3000 0000的读写权限问题。
    至少,如果这个redboot的load命令有问题的话,那它也太不 ...

    请问是看RedBoot的elf文件信息还是eCos的呢?
    回复

    使用道具 举报

    84

    主题

    16

    听众

    2901

    积分

    超级版主

    Rank: 8Rank: 8Rank: 8Rank: 8

    该用户从未签到

    最后登录
    2015-5-31
    威望
    0
    金钱
    2389
    贡献
    0
    注册时间
    2012-5-1
    积分
    2901
    帖子
    492
    主题
    84
    精华
    4
    UID
    2
    发表于 2013-4-24 10:37:27 |显示全部楼层
    scottyuhb 发表于 2013-4-24 10:26
    请问是看RedBoot的elf文件信息还是eCos的呢?

    eCos应用程序的
    回复

    使用道具 举报

    21

    主题

    3

    听众

    572

    积分

    高级工程师

    Rank: 4Rank: 4

  • TA的每日心情
    奋斗
    2013-5-3 10:11
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    最后登录
    2014-7-6
    威望
    0
    金钱
    497
    贡献
    0
    注册时间
    2013-3-12
    积分
    572
    帖子
    70
    主题
    21
    精华
    1
    UID
    206
    发表于 2013-4-24 10:37:53 |显示全部楼层
    reille 发表于 2013-4-24 09:10
    我不认为是SDRAM的0x3000 0000的读写权限问题。
    至少,如果这个redboot的load命令有问题的话,那它也太不 ...

    编译RedBoot生成的elf文件信息如下:

    1. redboot.elf:     file format elf32-littlearm

    2. Sections:
    3. Idx Name          Size      VMA       LMA       File off  Algn
    4.   0 .debug_aranges 00001608  00000000  00000000  000248b8  2**3
    5.                   CONTENTS, READONLY, DEBUGGING
    6.   1 .debug_pubnames 00002c1d  00000000  00000000  00025ec0  2**0
    7.                   CONTENTS, READONLY, DEBUGGING
    8.   2 .debug_info   0001f0c1  00000000  00000000  00028add  2**0
    9.                   CONTENTS, READONLY, DEBUGGING
    10.   3 .debug_abbrev 000087cf  00000000  00000000  00047b9e  2**0
    11.                   CONTENTS, READONLY, DEBUGGING
    12.   4 .debug_line   0000ad92  00000000  00000000  0005036d  2**0
    13.                   CONTENTS, READONLY, DEBUGGING
    14.   5 .debug_frame  00003690  00000000  00000000  0005b100  2**2
    15.                   CONTENTS, READONLY, DEBUGGING
    16.   6 .debug_str    00006822  00000000  00000000  0005e790  2**0
    17.                   CONTENTS, READONLY, DEBUGGING
    18.   7 .debug_loc    00013217  00000000  00000000  00064fb2  2**0
    19.                   CONTENTS, READONLY, DEBUGGING
    20.   8 .rom_vectors  00000040  33f80000  33f80000  00008000  2**0
    21.                   CONTENTS, ALLOC, LOAD, READONLY, CODE
    22.   9 .fixed_vectors 00000140  33f80020  33f80020  000781e0  2**5
    23.                   CONTENTS, READONLY
    24. 10 .text         00017900  33f80160  33f80160  00008160  2**2
    25.                   CONTENTS, ALLOC, LOAD, READONLY, CODE
    26. 11 .rodata       000044d0  33f97a60  33f97a60  0001fa60  2**3
    27.                   CONTENTS, ALLOC, LOAD, READONLY, DATA
    28. 12 .data         00000984  33f9bf30  33f9bf30  00023f30  2**2
    29.                   CONTENTS, ALLOC, LOAD, DATA
    30. 13 .bss          0000abc8  33f9c8b4  33f9c8b4  000248b4  2**4
    31.                   ALLOC
    32. 14 .ARM.attributes 00000028  00000000  00000000  00078320  2**0
    33.                   CONTENTS, READONLY
    34. 15 .debug_ranges 000047a0  00000000  00000000  00078348  2**3
    35.                   CONTENTS, READONLY, DEBUGGING
    36. 16 .comment      00000d2f  00000000  00000000  0007cae8  2**0
    37.                   CONTENTS, READONLY
    复制代码
    eCos的example编译出来的没有elf文件,我看下能不能生成或您指导下怎么生成。
    回复

    使用道具 举报

    84

    主题

    16

    听众

    2901

    积分

    超级版主

    Rank: 8Rank: 8Rank: 8Rank: 8

    该用户从未签到

    最后登录
    2015-5-31
    威望
    0
    金钱
    2389
    贡献
    0
    注册时间
    2012-5-1
    积分
    2901
    帖子
    492
    主题
    84
    精华
    4
    UID
    2
    发表于 2013-4-24 12:26:27 |显示全部楼层
    scottyuhb 发表于 2013-4-24 10:37
    编译RedBoot生成的elf文件信息如下:eCos的example编译出来的没有elf文件,我看下能不能生成或您指导下怎 ...

    eCos应用程序不像redboot的elf文件带有.elf后缀。
    如果没错的话,eCos的example,make后,直接生成的就是elf文件,只是没有带elf后缀。
    如,hello示例,make后,生成的hello就是elf格式文件
    回复

    使用道具 举报

    84

    主题

    16

    听众

    2901

    积分

    超级版主

    Rank: 8Rank: 8Rank: 8Rank: 8

    该用户从未签到

    最后登录
    2015-5-31
    威望
    0
    金钱
    2389
    贡献
    0
    注册时间
    2012-5-1
    积分
    2901
    帖子
    492
    主题
    84
    精华
    4
    UID
    2
    发表于 2013-4-24 12:26:28 |显示全部楼层
    scottyuhb 发表于 2013-4-24 10:37
    编译RedBoot生成的elf文件信息如下:eCos的example编译出来的没有elf文件,我看下能不能生成或您指导下怎 ...

    eCos应用程序不像redboot的elf文件带有.elf后缀。
    如果没错的话,eCos的example,make后,直接生成的就是elf文件,只是没有带elf后缀。
    如,hello示例,make后,生成的hello就是elf格式文件
    回复

    使用道具 举报

    21

    主题

    3

    听众

    572

    积分

    高级工程师

    Rank: 4Rank: 4

  • TA的每日心情
    奋斗
    2013-5-3 10:11
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    最后登录
    2014-7-6
    威望
    0
    金钱
    497
    贡献
    0
    注册时间
    2013-3-12
    积分
    572
    帖子
    70
    主题
    21
    精华
    1
    UID
    206
    发表于 2013-4-24 12:40:31 |显示全部楼层
    reille 发表于 2013-4-24 12:26
    eCos应用程序不像redboot的elf文件带有.elf后缀。
    如果没错的话,eCos的example,make后,直接生成的就是 ...

    /works/ecos-2440/examples# arm-eabi-objdump -h serial

    serial:     file format elf32-littlearm

    Sections:
    Idx Name          Size      VMA       LMA       File off  Algn
      0 .debug_aranges 00001778  00000000  00000000  0000ff68  2**3
                      CONTENTS, READONLY, DEBUGGING
      1 .debug_pubnames 00003a08  00000000  00000000  000116e0  2**0
                      CONTENTS, READONLY, DEBUGGING
      2 .debug_info   0005de40  00000000  00000000  000150e8  2**0
                      CONTENTS, READONLY, DEBUGGING
      3 .debug_abbrev 0000dd29  00000000  00000000  00072f28  2**0
                      CONTENTS, READONLY, DEBUGGING
      4 .debug_line   0000dd82  00000000  00000000  00080c51  2**0
                      CONTENTS, READONLY, DEBUGGING
      5 .debug_frame  00003338  00000000  00000000  0008e9d4  2**2
                      CONTENTS, READONLY, DEBUGGING
      6 .debug_str    00009003  00000000  00000000  00091d0c  2**0
                      CONTENTS, READONLY, DEBUGGING
      7 .debug_loc    00011578  00000000  00000000  0009ad0f  2**0
                      CONTENTS, READONLY, DEBUGGING
      8 .rom_vectors  00000040  30000000  30000000  00008000  2**0
                      CONTENTS, ALLOC, LOAD, READONLY, CODE
      9 .fixed_vectors 00000140  30000020  30000020  000ac2a0  2**5
                      CONTENTS, READONLY
    10 .text         00007798  30000160  30000160  00008160  2**2
                      CONTENTS, ALLOC, LOAD, READONLY, CODE
    11 .rodata       00000370  300078f8  300078f8  0000f8f8  2**3
                      CONTENTS, ALLOC, LOAD, READONLY, DATA
    12 .data         00000300  30007c68  30007c68  0000fc68  2**2
                      CONTENTS, ALLOC, LOAD, DATA
    13 .bss          00005d84  30007f68  30007f68  0000ff68  2**4
                      ALLOC
    14 .ARM.attributes 00000028  00000000  00000000  000ac3e0  2**0
                      CONTENTS, READONLY
    15 .debug_ranges 000053f0  00000000  00000000  000ac408  2**3
                      CONTENTS, READONLY, DEBUGGING
    16 .comment      00000d89  00000000  00000000  000b17f8  2**0
                      CONTENTS, READONLY
    回复

    使用道具 举报

    21

    主题

    3

    听众

    572

    积分

    高级工程师

    Rank: 4Rank: 4

  • TA的每日心情
    奋斗
    2013-5-3 10:11
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    最后登录
    2014-7-6
    威望
    0
    金钱
    497
    贡献
    0
    注册时间
    2013-3-12
    积分
    572
    帖子
    70
    主题
    21
    精华
    1
    UID
    206
    发表于 2013-4-24 13:42:42 |显示全部楼层
    reille 发表于 2013-4-24 12:26
    eCos应用程序不像redboot的elf文件带有.elf后缀。
    如果没错的话,eCos的example,make后,直接生成的就是 ...
    1. serial:     file format elf32-littlearm


    2. Disassembly of section .rom_vectors:

    3. 30000000 <__exception_handlers>:
    4. 30000000:        e59ff018         ldr        pc, [pc, #24]        ; 30000020 <vectors>
    5. 30000004:        e59ff018         ldr        pc, [pc, #24]        ; 30000024 <.undefined_instruction>
    6. 30000008:        e59ff018         ldr        pc, [pc, #24]        ; 30000028 <.software_interrupt>
    7. 3000000c:        e59ff018         ldr        pc, [pc, #24]        ; 3000002c <.abort_prefetch>
    8. 30000010:        e59ff018         ldr        pc, [pc, #24]        ; 30000030 <.abort_data>
    9. 30000014:        00000000         .word        0x00000000
    10. 30000018:        e59ff018         ldr        pc, [pc, #24]        ; 30000038 <.IRQ>
    11. 3000001c:        e59ff018         ldr        pc, [pc, #24]        ; 3000003c <.FIQ>

    12. 30000020 <vectors>:
    13. 30000020:        30000160         .word        0x30000160

    14. 30000024 <.undefined_instruction>:
    15. 30000024:        30000274         .word        0x30000274

    16. 30000028 <.software_interrupt>:
    17. 30000028:        30000298         .word        0x30000298

    18. 3000002c <.abort_prefetch>:
    19. 3000002c:        300002c4         .word        0x300002c4

    20. 30000030 <.abort_data>:
    21. 30000030:        300002e0         .word        0x300002e0
    22. 30000034:        00000000         .word        0x00000000

    23. 30000038 <.IRQ>:
    24. 30000038:        300003e0         .word        0x300003e0

    25. 3000003c <.FIQ>:
    26. 3000003c:        300003a8         .word        0x300003a8

    27. Disassembly of section .text:
    复制代码
    从elf反汇编的文件可以看出,serial的目标地址从0x30000000开始应该是没错。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册会员 新浪微博账号登陆

    无觅相关文章插件

    申请友链|手机版|关于本站|站点帮助|eCos技术网 ( 粤ICP备12094833号-1 )   

    GMT+8, 2016-8-26 13:55 , Processed in 0.223986 second(s), 29 queries .

    Powered by Discuz!2.5 X2.5

    © 2001-2012 Comsenz Inc.

    回顶部