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
Solved! Go to Solution.
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
RossMcLuckie do you have an update from design?
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
hi all
thank you for this information
Br
francois
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.
Dear Francois,
I will look into it.
Regards, Naoum Gitnik.
timesyssupport can you attend this case?
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
naoumgitnik can you comment please?