Dear NXP team,
we use the MM9Z1I638 instead of the earlier used MM9Z1J638 in an application and now facing some trouble to make the application work again.
The header files have been replaced by mm9z1j638.h, the linker file has also been replaced by mm9z1i638.prm and correct flash configuration file seems to be used. From that stand point, it should work as expected.
With the new device MM9Z1I638 the application creates an isrMachineException(void), after which the application stays in a while loop. We assume this expection has been created by some 'illegal' memory access.
Is there anything else to be considered? Do I miss anything?
Is there any document of the two different memory mappings available? (EEPROM is used to store application specific data).
During the programming with both targets, I receive the following warnings:
Device MM9Z1J638_EEPROM
Programming ....
Programming warning. Can't program 8 bytes to address 0xffff00 because this range isn't included in the selected modules!
Programming warning. Can't program 8 bytes to address 0xffff50 because this range isn't included in the selected modules!
Programming warning. Can't program 8 bytes to address 0xffff58 because this range isn't included in the selected modules!
Programming warning. Can't program 8 bytes to address 0xffff60 because this range isn't included in the selected modules!
Programming warning. Can't program 8 bytes to address 0xffff70 because this range isn't included in the selected modules!
Programming warning. Can't program 8 bytes to address 0xffff78 because this range isn't included in the selected modules!
Programming warning. Can't program 8 bytes to address 0xffff80 because this range isn't included in the selected modules!
Programming warning. Can't program 8 bytes to address 0xffffd0 because this range isn't included in the selected modules!
Programming warning. Can't program 8 bytes to address 0xffffd8 because this range isn't included in the selected modules!
Programming warning. Can't program 8 bytes to address 0xffffe8 because this range isn't included in the selected modules!
Programming warning. Can't program 8 bytes to address 0xfffff0 because this range isn't included in the selected modules!
Programming warning. Can't program 8 bytes to address 0xfffff8 because this range isn't included in the selected modules!
Device MM9Z1J638_EEPROM
Program Command Succeeded
Flash Operation. done
Kind regards
Michael
Hi,
The Flash size is the only difference, as per documentation.
You can read MMC registers, it will give you, among others, the error type [MMCECL[ERR]] and the program counter value [MMCPC] at the time the access violation occurred.
Regards,
Daniel
Hi, thank you for your response.
I guess I have narrowed down the problem in the meanwhile. There is a definition in the nvm.h which is for the MM9Z1J638:
// --------------------------------------------------------------------
#define FTM_REG_BASE 0x000380
//#define BUS_CLOCK 50
#define BUS_CLOCK (CLOCK_BUS/1000000UL) // from main.h
#define PFLASH_BLOCK_BASE 0xFE0000
//#define PFLASH_BLOCK_SIZE 0x20000 // 128kByte
#define PFLASH_BLOCK_SIZE 0x18000 // 96 kByte
#define EE_BLOCK_BASE 0x100000 //!< EEPROM start adress
#define EE_BLOCK_SIZE 0x1000 //4kByte F
#define IGNORE_SINGLE_FAULT TRUE
#define BDM_ENABLE FALSE
#define SECURITY_LOCATION 0xFFFE08
#define SECURITY_SIZE 0x8
#define BUFFER_SIZE_BYTE 0x10
Based on the datasheet information, I was not able to find out which value PFLASH_BLOCK_BASE (for the MM9Z1I638) needs to have. Could you please help me?
Kind regards
Michael
Hi,
The base address is 0xFE8000 = 0xFFFFFF - (96 * 0x400).
Regards,
Daniel