32 bit MB91F467 Flash programming

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
user_2266521
Level 1
Level 1
5 replies posted First reply posted First question asked

Hello everyone, 

   

what is the correct forum for asking about MB91F467 microcontrollers?

   

Thanks!

0 Likes
1 Solution
lock attach
Attachments are accessible only for community members.
HongyanW_86
Moderator
Moderator
Moderator
100 solutions authored 100 replies posted 50 solutions authored

Hello Max,

   

If you are using our Softune IDE for FR, you can configure customized C/C++ compiler setting (like use -Xalign) for one source file only. It is possible to combine common option and custom option for dedicated source files. Please check attached picture for reference.

   

For detailed description of -align and -Xalign options, please kindly check FR Family SOFTUNETM C/C++ Compiler Manual for V6.

   

--http://www.cypress.com/file/251946/download

   

Best regards,

   

Amy Wang

View solution in original post

0 Likes
8 Replies
HolgerW_56
Employee
Employee
25 sign-ins 25 solutions authored 10 sign-ins

Please let us know your real question!

0 Likes

When I try to write a reply I get:

   

Access Denied

   

You don't have permission to access "http://www.cypress.com/comment/reply/568581" on this server.

   

Reference #18.5f72655f.1496758674.424d4f4

   

This happens if:

   

1) I try to format test

   

2) I try to upload an image

   

3) I try to upload a file

0 Likes

Hello Holger,

   

I'm working on programming the internal flash memory of the microcontroller, an MB91F467DA.

   

I found different informations in hardware manual (table 54.7-1 in http://www.cypress.com/file/250861/download) and in application note AN300034 (see http://www.cypress.com/file/244151/download) about how to write data.

   

 

   

Application note:

   

#define wseq_1 ((volatile unsigned int *)0x00041557)

   

#define wseq_2 ((volatile unsigned int *)0x00040AAF)

   

.....

   

unsigned char FLASH_WriteWord(unsigned int adr, unsigned int data)

   

.....

   

/* Start FLASH Write Sequence */

   

*wseq_1 = 0x00AA;

   

*wseq_2 = 0x0055;

   

*wseq_1 = 0x00A0;

   

*((volatile unsigned int *)adr) = data;

   

 

   

Hardware manual (Table 54.7-1):

   

Write AAAAh at address (adr & FFFC000h) + 1553h

   

​Write 5555h at address (adr & FFFF000h) + AABh

   

Write A0A0h at address (adr & FFFC000h) + 1553h​

   

Write data at destination address

   

​“adr” is the target address or an address within the target sector

   

 

   

In the first case I write 0x00AA at address 0x00041557, in the latter I write 0xAAAA at offset 1553 in the destination sector.

   

What are the right commands?

   

I have to write block of data, could I use Continuous mode set - Continuous writing - Continuous mode
reset?
What is the right command sequence?

   

 

   

Thanks a lot

0 Likes
lock attach
Attachments are accessible only for community members.
HolgerW_56
Employee
Employee
25 sign-ins 25 solutions authored 10 sign-ins

Hi,
have you tested the code of the Application note? Did it fail?

   

I think both examples are okay.
As described by the hardware manual (54.7.1  Command Sequences)

   

" ...Writing the command sequences is possible in byte, halfword or word mode. The table (!) shows halfword data (“F0F0H”) because it simplifies the calculation of the addresses.
The data width used for the 4th bus write cycle of the write command (program address and program data)
determines the write mode of the Flash (byte, halfword or word). ...
"

   

I have attached another example for you. Please check it. 

   

Regards,
Holger

0 Likes

Hi Holger,

   

The code I tested works and comes from application note http://www.cypress.com/documentation/application-notes/an205210-fr-family-mb91460-series-flash-write....

   

The attached sourcecode contains the folder

   

    91460_flash_programming_demo_mb91467d-v14

   

The example You attached contains the folder 

   

    91460_flash_programming_demo_mb91467d-v16

   

Thus is more updated, moreover is aligned with the datasheet.

   

I'll try it.

   

Regards

   

Max

0 Likes
HolgerW_56
Employee
Employee
25 sign-ins 25 solutions authored 10 sign-ins

Hi Max,

   

working code sounds good 🙂
Just let me know in case you need additional support.

   

regards,

   

Holger

0 Likes
user_2266521
Level 1
Level 1
5 replies posted First reply posted First question asked

Hi Holger,

   

the code must be in the RAM, for this purpose a pragma is used in the source file:

   

    #pragma section CODE=IDRAM,attr=CODE

   

the IDRAM section then is copied from flash to RAM by the Start91460.asm setting 

   

    #set    ID_RAM           ON

   

If I set speed optimization (-K SPEED) the generated section is not IDRAM but IDRAM_4 as the label are aligned to 4 byte boundaries, but is not copied from FLASH to RAM.

   

To avoid this problem the sample code set the option -Xalign for the entire project.

   

I'd like to set this option just where I need, i.e. in the Flash.C source file.

   

Is there a way to specify -Xalign in the source file with a pragma directive?

   

Thank You and Best Regards

   

Massimiliano

0 Likes
lock attach
Attachments are accessible only for community members.
HongyanW_86
Moderator
Moderator
Moderator
100 solutions authored 100 replies posted 50 solutions authored

Hello Max,

   

If you are using our Softune IDE for FR, you can configure customized C/C++ compiler setting (like use -Xalign) for one source file only. It is possible to combine common option and custom option for dedicated source files. Please check attached picture for reference.

   

For detailed description of -align and -Xalign options, please kindly check FR Family SOFTUNETM C/C++ Compiler Manual for V6.

   

--http://www.cypress.com/file/251946/download

   

Best regards,

   

Amy Wang

0 Likes