MPC577XX uses Rappid BL Tool software to upgrade the APP, and it indicates that the upgrade is successful, but the program still runs in the bootloader. Want to know what the problem is, and the app's interrupt vector needs to be mapped again
Hello @曹培亮,
What board are you using for your development?
Here is a table of the supported communications and memory areas for MPC5777C device:
Device |
Communication supported |
Device tested |
RBF file |
Boot-loader areas |
||
CAN (500Kb/s) |
UART (115200b/s) |
rchw |
m_text |
|||
MPC5777C |
CAN0 (PB0-PB1) |
UART0 (PC8-PC9) |
MPC5777CTMME3 – 1N45H MPC5777CTMME3 – 0N45H |
MPC5777C.rbf |
0x00800000- 0x008003FF |
0x00800400- 0x0083FFFF |
There is a document which details the steps to implement bootloader with your application. It is for MPC5744P device, but the concept is the same as they both use an RBF file. (some other devices contain BAM module and use an RBA file)
HOWTO: Use RAppID BL tool with MPC5744P EVB
Some additional details:
Before starting the application, the boot-loader will search for RCHW and KEY value in the application. If found, the boot-loader will consider the application suitable and run it. Otherwise, the boot-loader will not run the application and stay in waiting mode.
For example: In linker file, RCHW = 0x005A0000, KEY = 0x55AA55AA, the user application section start at 0x2400, then
Size |
Address |
Value |
Description |
4 bytes |
0x2400 |
0x005A0000 |
RCHW value |
4 bytes |
0x2404 |
Calculated by Compiler |
Address of start executable code |
4 bytes |
0x2408 |
0x00500000 |
Delay value for boot-loader before jump to app |
4 bytes |
0x240C |
Calculated by Compiler |
Address of application key |
Hope it helps,
Mike
I used MPC57XXMB-REVA development version, the following is the APP application generated. Srec opening file format ,I will download this file into the development version using the Rappid BL Tool tool. Unable to run APP program after reset. After more than 3S, it can still be loaded again (guess it stops in the bootloader)
1. The RBF file address on the official website is not from 0x20000 to 0x2FFFF
2. The Flash. id setting of my app is shown in the following picture. It cannot be downloaded through the Rappid BL Tool.
3. Does the interrupt vector in my app need to be mapped again? How to map
Hello @曹培亮,
Here is an example of the modifications required. It is for MPC5748G device, but concept is the same:
Figure 6.2.1
#if defined(START_FROM_FLASH)
#include "typedefs.h"
#define MPC57xx_ID 0x005A0000 /* RCHW boot ID for MPC57xx devices */
#define VLE_ENABLE 0x01000000 /* VLE is enabled */
#define CPU2_ENABLED 0x00000001
#define CPU0_ENABLED 0x00000002
#define CPU1_ENABLED 0x00000008
extern void _start(void);
extern void _startcore1(void);
extern void _startcore2(void);
#define TARGET_CORES (CPU0_ENABLED | CPU1_ENABLED | CPU2_ENABLED)
//#define RCHW_VAL (MPC57xx_ID | TARGET_CORES)
#define RCHW_VAL 0x005A0000
const volatile uint32_t APPKEY __attribute__ ((section(".appkey"))) = 0x55AA55AA;
const uint32_t __attribute__ ((section(".rchw"))) RCHW [] = {
RCHW_VAL,
/* cpu0_reset_vector */ (uint32_t)_start,
/* delay */ 0x2DC6C0, // 3 sec
/* application key */ (uint32_t)&APPKEY,
/* cpu2_reset_vector */ (uint32_t)_startcore2,
/* cpu1_reset_vector */ (uint32_t)_startcore1};
#endif /* defined(START_FROM_FLASH) */
Figure 6.2.2
Figure 6.2.3
Figure 6.2.4
Thank you for your help. I'm busy with other things. Do you have an application for the official website bootloader (MPC5777C_s32ds_uart0_can0.rbf)? Give me a copy of the application I wrote that should be incorrectly configured in flash.id. It just doesn't work. I want to compare