查看: 3008|回复: 1

[已解决] Ethernet Bootloader for MK64FX512 in Keil MDK5.21

[复制链接]

该用户从未签到

1

主题

1

帖子

0

新手上路

Rank: 1

积分
5
最后登录
2017-11-8
发表于 2017-11-8 10:31:28 | 显示全部楼层 |阅读模式
1、官方给的以太网加载程序,是 IAR 开发环境下的,已在我的 MK64FX512  板子上跑通;
2、但是公司规定必须在 Keil MDK development,在移植过程中碰到一个问题:
  我想把  Fapp_params.c 放到 ROM 地址 0x7f000 处,我在 scatter file 中增加
ER_m_fnet_app FappParams_start FappParams_size{
  fapp_params.o (+RO)
  }

编译后的 map file 显示
    Execution Region ER_m_fnet_app (Base: 0x0007f000, Size: 0x00000244, Max: 0x00000fff, ABSOLUTE)
    Base Addr    Size         Type   Attr      Idx    E Section Name        Object
    0x0007f000   0x0000008c   Code   RO         6026    i.fapp_params_from_flash  fapp_params.o
    0x0007f08c   0x000000dc   Code   RO         6027    i.fapp_params_to_flash  fapp_params.o
    0x0007f168   0x000000dc   Data   RO         6029    .fapp_params        fapp_params.o
看着好像是对的,但是
当我用 J-Link 进行在线仿真的时候,程序直接进入 hardfault



下面是我的 Scatter File
;#if (defined(__ram_vector_table__))
  #define __ram_vector_table_size__    0x00000400
;#else
  ;#define __ram_vector_table_size__    0x00000000
;#endif
#define m_interrupts_start             0x00000000
#define m_interrupts_size              0x00000400
#define m_flash_config_start           0x00000400
#define m_flash_config_size            0x00000010
#define m_text_start                   0x00000410
#define m_text_size                    0x0007EBF0
#define m_interrupts_ram_start         0x1FFF0000
#define m_interrupts_ram_size          __ram_vector_table_size__
#define m_data_start                   (m_interrupts_ram_start + m_interrupts_ram_size)
#define m_data_size                    (0x00010000 - m_interrupts_ram_size)
#define m_data_2_start                 0x20000000
#define m_data_2_size                  0x00020000
/* FNET application parameters (optional).*/
#define FappParams_start (0x0007FFFF + 1 - (4*0x400))
#define FappParams_end   0x0007FFFF
#define FappParams_size  0xFFF
/* Sizes */
#if (defined(__stack_size__))
  #define Stack_Size                   __stack_size__
#else
  #define Stack_Size                   0x01000
#endif
#if (defined(__heap_size__))
  #define Heap_Size                    __heap_size__
#else
  #define Heap_Size                    0x0400
#endif
LR_m_text m_interrupts_start m_text_start+m_text_size-m_interrupts_start { ; load region size_region
  VECTOR_ROM m_interrupts_start m_interrupts_size { ; load address = execution address
    * (RESET,+FIRST)
  }
  ER_m_flash_config m_flash_config_start FIXED m_flash_config_size { ; load address = execution address
    * (FlashConfig)
  }
  ER_m_text m_text_start m_text_size { ; load address = execution address
    * (InRoot$$Sections)
    .ANY (+RO)
  }
  ER_m_fnet_app FappParams_start FappParams_size{
  fapp_params.o (+RO)
  }
;#if (defined(__ram_vector_table__))
  VECTOR_RAM m_interrupts_ram_start EMPTY m_interrupts_ram_size {
  }
;#else
  ;VECTOR_RAM m_interrupts_start EMPTY 0 {
  ;}
;#endif
  RW_m_data m_data_start m_data_size { ; RW data
    .ANY (+RW +ZI)
  }
  RW_m_data_2 m_data_2_start m_data_2_size-Stack_Size-Heap_Size { ; RW data
    .ANY (+RW +ZI)
  }
  ARM_LIB_HEAP ((ImageLimit(RW_m_data_2) == m_data_2_start) ? m_data_2_start : +0) EMPTY Heap_Size { ; Heap region growing up
  }
  ARM_LIB_STACK m_data_2_start+m_data_2_size EMPTY -Stack_Size { ; Stack region growing down
  }
}

在线求助

最佳答案

我建议你可以将特定的函数或者变量放到Flash指定地点后,再试一下
回复

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24877
最后登录
2025-7-18
发表于 2017-11-9 16:29:55 | 显示全部楼层
我建议你可以将特定的函数或者变量放到Flash指定地点后,再试一下
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-20 12:31 , Processed in 0.157237 second(s), 23 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表