How to generate RAM NVM driver based on the SDK FLash driver?

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

How to generate RAM NVM driver based on the SDK FLash driver?

386 次查看
qinxk
Contributor I

I want to call the API which operate the Flash such as erase, init flash from RAM NVM, but S32K1xx SDK Flash driver is stored in the P-flash, so how to re-locate these API into RAM NVM? who can know the detailed process how to generate RAM NVM driver file(s19 file)?

0 项奖励
回复
9 回复数

350 次查看
danielmartynek
NXP TechSupport
NXP TechSupport

Hi @qinxk,

If the operation requires the driver to work from SRAM, the only function that has to be in SRAM is FLASH_DRV_CommandSequence(). This is a blocking function, it blocks the execution while CCIF = 0.

You did not specify the SDK version.

In SDK 4.0.1, the function is in SRAM by default.

danielmartynek_0-1726562262204.png

 

 

Regards,

Daniel

0 项奖励
回复

339 次查看
qinxk
Contributor I

Hi, it's S32SDK_S32K1xx_RTM_3.0.0

0 项奖励
回复

325 次查看
danielmartynek
NXP TechSupport
NXP TechSupport

Same for RTM 3.0.0

 

Regards,

Daniel

0 项奖励
回复

305 次查看
qinxk
Contributor I

Yeah, so what's the solution?

0 项奖励
回复

289 次查看
danielmartynek
NXP TechSupport
NXP TechSupport

Hi @qinxk,

The solution is that the APIs do not have to be in SRAM.

Only the function that clears CCIF and waits while CCIF = 0 has to be in SRAM.

And by default, it is in SRAM.

 

Regards,

Daniel

0 项奖励
回复

285 次查看
qinxk
Contributor I

 

Hi,  thanks for your support!

but I notice that this macro doesn't have value as follow,  how do you know it is in SRAM defautly?

qinxk_0-1726729983942.png

 

0 项奖励
回复

280 次查看
danielmartynek
NXP TechSupport
NXP TechSupport

I'm testing the flash_partitioning_s32k146 example (SDK 4.0.3, gcc 6.2).

Debug_Flash target

The FLASH_DRV_CommandSequence() function is in SRAM (.code_ram).

danielmartynek_0-1726734447986.png

 

 

BR, Daniel

0 项奖励
回复

272 次查看
qinxk
Contributor I

Ok, from the debug info, it's really in SRAM.

Hi buddy, I want to clarify my requirement as follow:

For function secure system. Flash Driver, especially erase API , shouldn't be existent in P-flash. because:

1.  may erase the application if erase API is excuted abnormally, the system will crash.

2. API provided by flash Driver can be used in the case we need to re-program.

3. Our the system architecture would be Flash Driver module should be removed from Application system. It will be loaded in SRAM and then call the related service when bootloader want to upgrade the application.

Please feed back if any isn't clear!

0 项奖励
回复

253 次查看
danielmartynek
NXP TechSupport
NXP TechSupport

This is just a low-level SDK driver where one function is placed in SRAM, if you need the APIs to be in SRAM, you need to place it there yourself, like the FLASH_DRV_CommandSequence() is, for example.

You may use the Autosar MCAL RTD FSL driver, there is this option:

danielmartynek_0-1726742170554.png

Again, if this is not what you mean, you would need to implement it yourself.

 

BR, Daniel

0 项奖励
回复