NXP MCU 技术论坛
直播中

刘慧

8年用户 1868经验值
私信 关注
[问答]

MPC5775E如何更新链接器以正确闪存到自定义闪存地址?

大家好,
我正在从 MPC5744P 移植 MPC5775E 的启动应用程序,所以首先我创建了一个使用 S32DS 闪烁 LED 的项目,我将 linker_flash.ld 中的默认闪存地址从 00800000 更改为 0,如下所示
/* 定义闪存 */
/*FLASH_BASE_ADDR = DEFINED(__flash_base_addr__) ? __flash_base_addr__ : 0x00800008;*/
FLASH_BASE_ADDR = DEFINED(__flash_base_addr__) ? __flash_base_addr__ : 0x00000008;
/*FLASH_SIZE = DEFINED(__flash_size__) ? __flash_size__ : 2048K - 0x08;*/
FLASH_SIZE = DEFINED(__flash_size__) ? __flash_size__ : 128K - 0x08;

内存
{
flash_rchw:org = 0x00000000,len = 0x4
cpu0_reset_vec:org = 0x00000000+0x04,len = 0x4

但是当我尝试使用 OpenSda 进行闪存时,我在闪存编程消息中收到如下错误


日志如下所示

通过 127.0.0.1 从“127.0.0.1”连接。从端口“63368”到 7224 的连接
版权所有 2018 P&E Microcomputer Systems, Inc.
命令行:C:NXPS32DS_Power_v2.1eclipsepluginscom.pemicro.debug.gdbjtag.ppc_1.8.7.201906071634win32pegdbserver_power_console -device=MPC5775E -startserver -singlesession -serverport=7224 -gdbmiport=6224 -接口=OPENSDA -speed=5000 -port=USB1¤

命令>RE

正在初始化。

设备 IDCODE 是 $00000377
设备 ID 修订版为 $00000001
检测到 MPC5777C 设备。
目标已重置并处于活动状态。
CMD>CM C:NXPS32DS_Power_v2.1eclipsepluginscom.pemicro.debug.gdbjtag.ppc_1.8.7.201906071634win32gdiP&E
xp_mpc5775e_1x32x1024k_cflash_highspeed.pcp

正在初始化。

设备 IDCODE 是 $00000377
设备 ID 修订版为 $00000001
检测到 MPC5777C 设备。
初始化。

;版本 1.00,07/13/2018,版权所有 P&E Microcomputer Systems,www.pemicro.com [5775EB_4meg_highspeed]

;设备 NXP,MPC5775E,1x32x1024k,desc=CFlash_highspeed

;begin_cs 设备=$00800000,长度=$00400000,ram=$00300000

加载编程算法...
完毕。
编程顺序为:擦除、空白检查、编程和验证{默认}
命令>VC
正在将目标文件 CRC-16 验证到设备范围 ...
错误 - 模块范围内没有有效数据。
闪存的当前内容与要编程的应用程序不匹配
命令>EM

擦除。
模块已被删除。
命令>下午

编程。
处理目标文件数据 ...
                              
没有要编程的数据。
                              
.
编程时出错。
设备闪存编程错误
闪存编程期间发生错误。

设备 IDCODE 是 $00000377
设备 ID 修订版为 $00000001

启动重置脚本 (C:NXPS32DS_Power_v2.1eclipsepluginscom.pemicro.debug.gdbjtag.ppc_1.8.7.201906071634win32gdiP&Es32e200_mpc5777c.mac) ...
REM 该脚本与 MPC5777C 器件兼容。                                                                                                                                                     
REM Clean GPRs 在使用算法后去除残留数据                                                                                                                                             
REM 设置 MMU 用于外围 B 模块                                                                                                                                                                  
REM 基址 = $FFE0_0000                                                                                                                                                                           
REM TLB0, 2 MByte 内存空间, Guarded, Don't Cache, All Access                                                                                                                                       
一旦状态注册结果 = $0209
REM 设置 MMU 将内部 Flash 置为 0...                                                                                                                                                            
REM 虚拟地址 0x0 -> 物理地址 = $0000_0000                                                                                                                                                
REM TLB1,16 MByte 内存空间,不受保护,可高速缓存,所有访问                                                                                                                                      
一旦状态注册结果 = $0209
REM 为外部存储器设置 MMU                                                                                                                                                                       
REM 基址 = $2000_0000                                                                                                                                                                           
REM TLB2,16 MByte 内存空间,不受保护,可高速缓存,所有访问                                                                                                                                       
一旦状态注册结果 = $0209
REM 为内部 SRAM 设置 MMU                                                                                                                                                                        
REM 基址 = $4000_0000                                                                                                                                                                           
REM TLB3,512 KByte 内存空间,不受保护,不缓存,所有访问                                                                                                                                 
一旦状态注册结果 = $0209
REM 为 Periph A 模块设置 MMU                                                                                                                                                                     
REM 基址 = $C3E0_0000                                                                                                                                                                           
REM TLB4, 2 MByte 内存空间, Guarded, Don't Cache, All Access                                                                                                                                         
一旦状态注册结果 = $0209
REM 初始化所有主 SRAM - 512KB                                                                                                                                                            
将 RAM 从 $40000000 初始化为 $4007FFFF。

重置脚本(C:NXPS32DS_Power_v2.1eclipsepluginscom.pemicro.debug.gdbjtag.ppc_1.8.7.201906071634win32gdiP&Es32e200_mpc5777c.mac)完成。

检测到 MPC5777C 设备。
PE-ERROR:下载到设备时出错。
通过 127.0.0.1 与“127.0.0.1”断开连接。通过端口“63368”与 7224 断开连接
目标断开连接。

请让我知道如何更新链接器以正确闪存到自定义闪存地址?


                                       

更多回帖

发帖
×
20
完善资料,
赚取积分