using TZASC module

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

using TZASC module

Jump to solution
2,318 Views
francoisjuillet
Contributor III

hi

I would like use the TZASC module linked to OCRAMsys0 & OCRAMsys1

In chapter 66 , we have a register for enable this module (ACTZS TrustZone Enable Register (MSCM_TZENR) )

We must modify the field TZENi

TrustZone Enable (i = 1, 3-7, 9, 11). This field enables/disables each Trust Zone address space controller. Once

asserted, the individual bit remains set.

if TZENi = 0, the TZASC module is disabled and logically bypassed.

if TZENi = 1, the TZASC module is enabled.

The individual TZENi are mapped to the following TZASC modules:

1 = FlexBus

3 = CM4-TCM backdoor port

4 = QuadSPI0

5 = OCRAM0_sys

6 = OCRAM1_sys

7 = OCRAM2_gfx

9 = QuadSPI1

11 = DDR0 | DDR1

and in this chapter , it is written

In addition to the TZENR register bits, there is a single device fuse bit that provides a further level of

qualification. This fuse signal is combined with the individual TZENi bits to form the fully qualified

TZASC enable for each instance:

qualified_TZENi = MSCM_TZENR[i] & tzenb_fuse

where tzenb_fuse serves as a global enable qualifier.

My issue :

When I try to enable ( set bit 6 & 7) TZASC module for OCRAM and just after I read these bist then I read always 0

So When  I read the equation qualified_TZENi = MSCM_TZENR[i] & tzenb_fuse ,, if  tzenb_fuse=0 then I read always 0

But If I search the bit  tzenb_fuse in TRM , I don't find it

Somebody , tell me where can I find this bit ? What is it his default value and how can I modify this field

Somebody , tell me how can I enable the module TZASC for OCRAM ?

Br

francois

1 Solution
1,296 Views
francoisjuillet
Contributor III

hi all

thank you for this information

Br

francois

View solution in original post

0 Kudos
9 Replies
1,296 Views
RossMcLuckie
NXP Employee
NXP Employee

We're checking with the design team to confirm the TZENB_FUSE has been implemented in Vybrid, even the internal documentation we have is not clear on this, however as it would appear you are seeing the TZC permanently disabled it seems very likely it has been and unfortunately we have missed this from all our documentation.

From what I have been able to find I believe this fuse is located at bit 28 of the OCOTP_CFG5 register, currently marked as reserved. Most fuses, including this one, are not blown by default, so will start life as 0, you will need to blow this fuse to change it to 1, after which the ROM code should read these values on power on and make it possible to enable the TZC.

Still waiting on design to confirm this, but I believe this to be correct. If you wish to try this you can use the sample code on our website to provide a basic fuse programming application, please be very careful when programming fuses, once blown you can not restore them.

Ross

1,296 Views
karina_valencia
NXP Apps Support
NXP Apps Support

RossMcLuckie do you  have  an update from design?

0 Kudos
1,296 Views
RossMcLuckie
NXP Employee
NXP Employee

This was one of the threads I mentioned last week as having held a further discussion by email, but those updates not appearing on the thread, as far as I can see the following should have been added to this thread, then waiting on further requests for help if required, don't think we need to confirm anything further with design at this time.

reply from Bill Pringlemeir in Vybrid Processors - View the full discussion

Does the ROM code do a sense or can we use over-ride to temporarily test this so as to not brick a device?

Then a further update from me -

Yet to confirm all this of course, but I don't believe there is any override capability, would defeat the purpose I guess, the fuse values are loaded at boot and fixed.

If you look at the sample code fuse programmer, it's not that hard, just read it again and then read it again and then, you get the idea, before you commit to programming.

You should only target to blow the single fuse at bit 28 of OCOTP_CFG5.

The sample code has a fuse data programming array, broken into bank, word, byte and data, an all zero will stop the program, so you want to use an 8 byte array { 0,6,3,0x10,0,0,0,0 }.

Use the RM and keep reading the sample code until you are sure you agree and understand the array values given.

When you run the code there is a terminal interface that tells you what you are asking to do and waits for you to confirm before programming.

After you think you have programmed the board, power cycle and read the OCOTP_CFG5 register to confirm bit 28 is now 1, this should allow you to use the TZC.

Good luck, if I could make this reply self destruct in 5 seconds I would ;-)

Ross

1,297 Views
francoisjuillet
Contributor III

hi all

thank you for this information

Br

francois

0 Kudos
1,296 Views
billpringlemeir
Contributor V

Well, I agree the documentation is confusing and look forward to an answer.  There are some other issues you should be aware of.  The MSM module has TZASC bypass; MSCM_TZENR @ 0xc00 has a bit map of different TZ slaves.  In order for the TZ modules to run, they must be clocked.  As all of the TZ modules will use the same tzenb_fuse, I think they would all behave the same way if you have an issue with this fuse.  You need the Vybrid Security manual where the per-clocks for the TZ modules are documented in section 4.5 Clock Controller Module (CCM) Registers.  I had an SR ( 1-1180099524) about the Vybrid fuses; they told me there was no Vybrid specific documentation on secure boot/HAB.  Somethings in the general HABv4 manuals/appnotes are helpful, but there are several references that are difficult to put together like the tzenb_fuse; I couldn't find anything on that either.

0 Kudos
1,296 Views
naoumgitnik
Senior Contributor V

Dear Francois,

I will look into it.

Regards, Naoum Gitnik.

0 Kudos
1,296 Views
karina_valencia
NXP Apps Support
NXP Apps Support

timesyssupport can you  attend this case?

0 Kudos
1,296 Views
timesyssupport
Senior Contributor II

Hello,

We have looked at the reference manual, but cannot find any more information about the tzenb_fuse bit. Can the Freescale Vybrid design team comment on how to access this?

Thanks,

Timesys Support

0 Kudos
1,296 Views
karina_valencia
NXP Apps Support
NXP Apps Support

naoumgitnik can you comment please?

0 Kudos