sphinx.addnodesdocument)}( rawsourcechildren](docutils.nodessubstitution_definition)}(h&.. |AArch32| replace:: :term:`AArch32`h]h pending_xref)}(h:term:`AArch32`h]h inline)}(hhh]h TextAArch32}(hhparenthuba attributes}(ids]classes](xrefstdstd-termenames]dupnames]backrefs]utagnamehh!hubah"}(h$]h&]h+]h-]h/]refdoc plat/rpi3 refdomainh)reftypeterm refexplicitrefwarn reftargetAArch32uh1hsource lineKh!h ubah"}(h$]h&]h+]AArch32ah-]h/]uh1h hAhBhCKh!hhhubh )}(h&.. |AArch64| replace:: :term:`AArch64`h]h)}(h:term:`AArch64`h]h)}(hhQh]hAArch64}(hhh!hSubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!hOubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainh]reftypeterm refexplicitrefwarnh?AArch64uh1hhAhBhCKh!hKubah"}(h$]h&]h+]AArch64ah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |AMU| replace:: :term:`AMU`h]h)}(h :term:`AMU`h]h)}(hh|h]hAMU}(hhh!h~ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!hzubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainhreftypeterm refexplicitrefwarnh?AMUuh1hhAhBhCKh!hvubah"}(h$]h&]h+]AMUah-]h/]uh1h hAhBhCKh!hhhubh )}(h&.. |AMUs| replace:: :term:`AMUs `h]h)}(h:term:`AMUs `h]h)}(hhh]hAMUs}(hhh!hubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!hubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainhreftypeterm refexplicitrefwarnh?AMUuh1hhAhBhCKh!hubah"}(h$]h&]h+]AMUsah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |API| replace:: :term:`API`h]h)}(h :term:`API`h]h)}(hhh]hAPI}(hhh!hubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!hubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainhތreftypeterm refexplicitrefwarnh?APIuh1hhAhBhCKh!hubah"}(h$]h&]h+]APIah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |BTI| replace:: :term:`BTI`h]h)}(h :term:`BTI`h]h)}(hhh]hBTI}(hhh!hubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!hubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?BTIuh1hhAhBhCKh!hubah"}(h$]h&]h+]BTIah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |CoT| replace:: :term:`CoT`h]h)}(h :term:`CoT`h]h)}(hj(h]hCoT}(hhh!j*ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j&ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj4reftypeterm refexplicitrefwarnh?CoTuh1hhAhBhCKh!j"ubah"}(h$]h&]h+]CoTah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |COT| replace:: :term:`COT`h]h)}(h :term:`COT`h]h)}(hjSh]hCOT}(hhh!jUubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jQubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj_reftypeterm refexplicitrefwarnh?COTuh1hhAhBhCKh!jMubah"}(h$]h&]h+]COTah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |CSS| replace:: :term:`CSS`h]h)}(h :term:`CSS`h]h)}(hj~h]hCSS}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j|ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?CSSuh1hhAhBhCK h!jxubah"}(h$]h&]h+]CSSah-]h/]uh1h hAhBhCK h!hhhubh )}(h.. |CVE| replace:: :term:`CVE`h]h)}(h :term:`CVE`h]h)}(hjh]hCVE}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?CVEuh1hhAhBhCK h!jubah"}(h$]h&]h+]CVEah-]h/]uh1h hAhBhCK h!hhhubh )}(h.. |DTB| replace:: :term:`DTB`h]h)}(h :term:`DTB`h]h)}(hjh]hDTB}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?DTBuh1hhAhBhCK h!jubah"}(h$]h&]h+]DTBah-]h/]uh1h hAhBhCK h!hhhubh )}(h .. |DS-5| replace:: :term:`DS-5`h]h)}(h :term:`DS-5`h]h)}(hjh]hDS-5}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?DS-5uh1hhAhBhCK h!jubah"}(h$]h&]h+]DS-5ah-]h/]uh1h hAhBhCK h!hhhubh )}(h.. |DSU| replace:: :term:`DSU`h]h)}(h :term:`DSU`h]h)}(hj*h]hDSU}(hhh!j,ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j(ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj6reftypeterm refexplicitrefwarnh?DSUuh1hhAhBhCK h!j$ubah"}(h$]h&]h+]DSUah-]h/]uh1h hAhBhCK h!hhhubh )}(h.. |DT| replace:: :term:`DT`h]h)}(h :term:`DT`h]h)}(hjUh]hDT}(hhh!jWubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jSubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjareftypeterm refexplicitrefwarnh?DTuh1hhAhBhCKh!jOubah"}(h$]h&]h+]DTah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |EL| replace:: :term:`EL`h]h)}(h :term:`EL`h]h)}(hjh]hEL}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j~ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?ELuh1hhAhBhCKh!jzubah"}(h$]h&]h+]ELah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |EHF| replace:: :term:`EHF`h]h)}(h :term:`EHF`h]h)}(hjh]hEHF}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?EHFuh1hhAhBhCKh!jubah"}(h$]h&]h+]EHFah-]h/]uh1h hAhBhCKh!hhhubh )}(h".. |FCONF| replace:: :term:`FCONF`h]h)}(h :term:`FCONF`h]h)}(hjh]hFCONF}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?FCONFuh1hhAhBhCKh!jubah"}(h$]h&]h+]FCONFah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |FDT| replace:: :term:`FDT`h]h)}(h :term:`FDT`h]h)}(hjh]hFDT}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?FDTuh1hhAhBhCKh!jubah"}(h$]h&]h+]FDTah-]h/]uh1h hAhBhCKh!hhhubh )}(h .. |FF-A| replace:: :term:`FF-A`h]h)}(h :term:`FF-A`h]h)}(hj,h]hFF-A}(hhh!j.ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j*ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj8reftypeterm refexplicitrefwarnh?FF-Auh1hhAhBhCKh!j&ubah"}(h$]h&]h+]FF-Aah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |FIP| replace:: :term:`FIP`h]h)}(h :term:`FIP`h]h)}(hjWh]hFIP}(hhh!jYubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jUubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjcreftypeterm refexplicitrefwarnh?FIPuh1hhAhBhCKh!jQubah"}(h$]h&]h+]FIPah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |FVP| replace:: :term:`FVP`h]h)}(h :term:`FVP`h]h)}(hjh]hFVP}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?FVPuh1hhAhBhCKh!j|ubah"}(h$]h&]h+]FVPah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |FWU| replace:: :term:`FWU`h]h)}(h :term:`FWU`h]h)}(hjh]hFWU}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?FWUuh1hhAhBhCKh!jubah"}(h$]h&]h+]FWUah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |GIC| replace:: :term:`GIC`h]h)}(h :term:`GIC`h]h)}(hjh]hGIC}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?GICuh1hhAhBhCKh!jubah"}(h$]h&]h+]GICah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |ISA| replace:: :term:`ISA`h]h)}(h :term:`ISA`h]h)}(hjh]hISA}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?ISAuh1hhAhBhCKh!jubah"}(h$]h&]h+]ISAah-]h/]uh1h hAhBhCKh!hhhubh )}(h$.. |Linaro| replace:: :term:`Linaro`h]h)}(h:term:`Linaro`h]h)}(hj.h]hLinaro}(hhh!j0ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j,ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj:reftypeterm refexplicitrefwarnh?Linarouh1hhAhBhCKh!j(ubah"}(h$]h&]h+]Linaroah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |MMU| replace:: :term:`MMU`h]h)}(h :term:`MMU`h]h)}(hjYh]hMMU}(hhh!j[ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jWubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjereftypeterm refexplicitrefwarnh?MMUuh1hhAhBhCKh!jSubah"}(h$]h&]h+]MMUah-]h/]uh1h hAhBhCKh!hhhubh )}(h .. |MPAM| replace:: :term:`MPAM`h]h)}(h :term:`MPAM`h]h)}(hjh]hMPAM}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?MPAMuh1hhAhBhCKh!j~ubah"}(h$]h&]h+]MPAMah-]h/]uh1h hAhBhCKh!hhhubh )}(h .. |MPMM| replace:: :term:`MPMM`h]h)}(h :term:`MPMM`h]h)}(hjh]hMPMM}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?MPMMuh1hhAhBhCKh!jubah"}(h$]h&]h+]MPMMah-]h/]uh1h hAhBhCKh!hhhubh )}(h".. |MPIDR| replace:: :term:`MPIDR`h]h)}(h :term:`MPIDR`h]h)}(hjh]hMPIDR}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?MPIDRuh1hhAhBhCKh!jubah"}(h$]h&]h+]MPIDRah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |MTE| replace:: :term:`MTE`h]h)}(h :term:`MTE`h]h)}(hjh]hMTE}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?MTEuh1hhAhBhCKh!jubah"}(h$]h&]h+]MTEah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |OEN| replace:: :term:`OEN`h]h)}(h :term:`OEN`h]h)}(hj0h]hOEN}(hhh!j2ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j.ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj<reftypeterm refexplicitrefwarnh?OENuh1hhAhBhCKh!j*ubah"}(h$]h&]h+]OENah-]h/]uh1h hAhBhCKh!hhhubh )}(h$.. |OP-TEE| replace:: :term:`OP-TEE`h]h)}(h:term:`OP-TEE`h]h)}(hj[h]hOP-TEE}(hhh!j]ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jYubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjgreftypeterm refexplicitrefwarnh?OP-TEEuh1hhAhBhCK h!jUubah"}(h$]h&]h+]OP-TEEah-]h/]uh1h hAhBhCK h!hhhubh )}(h.. |OTE| replace:: :term:`OTE`h]h)}(h :term:`OTE`h]h)}(hjh]hOTE}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?OTEuh1hhAhBhCK!h!jubah"}(h$]h&]h+]OTEah-]h/]uh1h hAhBhCK!h!hhhubh )}(h.. |PDD| replace:: :term:`PDD`h]h)}(h :term:`PDD`h]h)}(hjh]hPDD}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?PDDuh1hhAhBhCK"h!jubah"}(h$]h&]h+]PDDah-]h/]uh1h hAhBhCK"h!hhhubh )}(h".. |PAUTH| replace:: :term:`PAUTH`h]h)}(h :term:`PAUTH`h]h)}(hjh]hPAUTH}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?PAUTHuh1hhAhBhCK#h!jubah"}(h$]h&]h+]PAUTHah-]h/]uh1h hAhBhCK#h!hhhubh )}(h.. |PMF| replace:: :term:`PMF`h]h)}(h :term:`PMF`h]h)}(hjh]hPMF}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?PMFuh1hhAhBhCK$h!jubah"}(h$]h&]h+]PMFah-]h/]uh1h hAhBhCK$h!hhhubh )}(h .. |PSCI| replace:: :term:`PSCI`h]h)}(h :term:`PSCI`h]h)}(hj2h]hPSCI}(hhh!j4ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j0ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj>reftypeterm refexplicitrefwarnh?PSCIuh1hhAhBhCK%h!j,ubah"}(h$]h&]h+]PSCIah-]h/]uh1h hAhBhCK%h!hhhubh )}(h.. |RAS| replace:: :term:`RAS`h]h)}(h :term:`RAS`h]h)}(hj]h]hRAS}(hhh!j_ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j[ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjireftypeterm refexplicitrefwarnh?RASuh1hhAhBhCK&h!jWubah"}(h$]h&]h+]RASah-]h/]uh1h hAhBhCK&h!hhhubh )}(h.. |ROT| replace:: :term:`ROT`h]h)}(h :term:`ROT`h]h)}(hjh]hROT}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?ROTuh1hhAhBhCK'h!jubah"}(h$]h&]h+]ROTah-]h/]uh1h hAhBhCK'h!hhhubh )}(h .. |SCMI| replace:: :term:`SCMI`h]h)}(h :term:`SCMI`h]h)}(hjh]hSCMI}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SCMIuh1hhAhBhCK(h!jubah"}(h$]h&]h+]SCMIah-]h/]uh1h hAhBhCK(h!hhhubh )}(h.. |SCP| replace:: :term:`SCP`h]h)}(h :term:`SCP`h]h)}(hjh]hSCP}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SCPuh1hhAhBhCK)h!jubah"}(h$]h&]h+]SCPah-]h/]uh1h hAhBhCK)h!hhhubh )}(h .. |SDEI| replace:: :term:`SDEI`h]h)}(h :term:`SDEI`h]h)}(hj h]hSDEI}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SDEIuh1hhAhBhCK*h!jubah"}(h$]h&]h+]SDEIah-]h/]uh1h hAhBhCK*h!hhhubh )}(h.. |SDS| replace:: :term:`SDS`h]h)}(h :term:`SDS`h]h)}(hj4h]hSDS}(hhh!j6ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j2ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj@reftypeterm refexplicitrefwarnh?SDSuh1hhAhBhCK+h!j.ubah"}(h$]h&]h+]SDSah-]h/]uh1h hAhBhCK+h!hhhubh )}(h.. |SEA| replace:: :term:`SEA`h]h)}(h :term:`SEA`h]h)}(hj_h]hSEA}(hhh!jaubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j]ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjkreftypeterm refexplicitrefwarnh?SEAuh1hhAhBhCK,h!jYubah"}(h$]h&]h+]SEAah-]h/]uh1h hAhBhCK,h!hhhubh )}(h.. |SiP| replace:: :term:`SiP`h]h)}(h :term:`SiP`h]h)}(hjh]hSiP}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SiPuh1hhAhBhCK-h!jubah"}(h$]h&]h+]SiPah-]h/]uh1h hAhBhCK-h!hhhubh )}(h.. |SIP| replace:: :term:`SIP`h]h)}(h :term:`SIP`h]h)}(hjh]hSIP}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SIPuh1hhAhBhCK.h!jubah"}(h$]h&]h+]SIPah-]h/]uh1h hAhBhCK.h!hhhubh )}(h.. |SMC| replace:: :term:`SMC`h]h)}(h :term:`SMC`h]h)}(hjh]hSMC}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SMCuh1hhAhBhCK/h!jubah"}(h$]h&]h+]SMCah-]h/]uh1h hAhBhCK/h!hhhubh )}(h".. |SMCCC| replace:: :term:`SMCCC`h]h)}(h :term:`SMCCC`h]h)}(hj h]hSMCCC}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SMCCCuh1hhAhBhCK0h!jubah"}(h$]h&]h+]SMCCCah-]h/]uh1h hAhBhCK0h!hhhubh )}(h.. |SoC| replace:: :term:`SoC`h]h)}(h :term:`SoC`h]h)}(hj6h]hSoC}(hhh!j8ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j4ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjBreftypeterm refexplicitrefwarnh?SoCuh1hhAhBhCK1h!j0ubah"}(h$]h&]h+]SoCah-]h/]uh1h hAhBhCK1h!hhhubh )}(h.. |SP| replace:: :term:`SP`h]h)}(h :term:`SP`h]h)}(hjah]hSP}(hhh!jcubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j_ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjmreftypeterm refexplicitrefwarnh?SPuh1hhAhBhCK2h!j[ubah"}(h$]h&]h+]SPah-]h/]uh1h hAhBhCK2h!hhhubh )}(h.. |SPD| replace:: :term:`SPD`h]h)}(h :term:`SPD`h]h)}(hjh]hSPD}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SPDuh1hhAhBhCK3h!jubah"}(h$]h&]h+]SPDah-]h/]uh1h hAhBhCK3h!hhhubh )}(h.. |SPM| replace:: :term:`SPM`h]h)}(h :term:`SPM`h]h)}(hjh]hSPM}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SPMuh1hhAhBhCK4h!jubah"}(h$]h&]h+]SPMah-]h/]uh1h hAhBhCK4h!hhhubh )}(h .. |SSBS| replace:: :term:`SSBS`h]h)}(h :term:`SSBS`h]h)}(hjh]hSSBS}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SSBSuh1hhAhBhCK5h!jubah"}(h$]h&]h+]SSBSah-]h/]uh1h hAhBhCK5h!hhhubh )}(h.. |SVE| replace:: :term:`SVE`h]h)}(h :term:`SVE`h]h)}(hj h]hSVE}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?SVEuh1hhAhBhCK6h!j ubah"}(h$]h&]h+]SVEah-]h/]uh1h hAhBhCK6h!hhhubh )}(h.. |TBB| replace:: :term:`TBB`h]h)}(h :term:`TBB`h]h)}(hj8 h]hTBB}(hhh!j: ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j6 ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjD reftypeterm refexplicitrefwarnh?TBBuh1hhAhBhCK7h!j2 ubah"}(h$]h&]h+]TBBah-]h/]uh1h hAhBhCK7h!hhhubh )}(h .. |TBBR| replace:: :term:`TBBR`h]h)}(h :term:`TBBR`h]h)}(hjc h]hTBBR}(hhh!je ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!ja ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjo reftypeterm refexplicitrefwarnh?TBBRuh1hhAhBhCK8h!j] ubah"}(h$]h&]h+]TBBRah-]h/]uh1h hAhBhCK8h!hhhubh )}(h.. |TEE| replace:: :term:`TEE`h]h)}(h :term:`TEE`h]h)}(hj h]hTEE}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?TEEuh1hhAhBhCK9h!j ubah"}(h$]h&]h+]TEEah-]h/]uh1h hAhBhCK9h!hhhubh )}(h .. |TF-A| replace:: :term:`TF-A`h]h)}(h :term:`TF-A`h]h)}(hj h]hTF-A}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?TF-Auh1hhAhBhCK:h!j ubah"}(h$]h&]h+]TF-Aah-]h/]uh1h hAhBhCK:h!hhhubh )}(h .. |TF-M| replace:: :term:`TF-M`h]h)}(h :term:`TF-M`h]h)}(hj h]hTF-M}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?TF-Muh1hhAhBhCK;h!j ubah"}(h$]h&]h+]TF-Mah-]h/]uh1h hAhBhCK;h!hhhubh )}(h.. |TLB| replace:: :term:`TLB`h]h)}(h :term:`TLB`h]h)}(hj h]hTLB}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?TLBuh1hhAhBhCKh!j_ ubah"}(h$]h&]h+]TRNGah-]h/]uh1h hAhBhCK>h!hhhubh )}(h.. |TSP| replace:: :term:`TSP`h]h)}(h :term:`TSP`h]h)}(hj h]hTSP}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?TSPuh1hhAhBhCK?h!j ubah"}(h$]h&]h+]TSPah-]h/]uh1h hAhBhCK?h!hhhubh )}(h.. |TZC| replace:: :term:`TZC`h]h)}(h :term:`TZC`h]h)}(hj h]hTZC}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?TZCuh1hhAhBhCK@h!j ubah"}(h$]h&]h+]TZCah-]h/]uh1h hAhBhCK@h!hhhubh )}(h".. |UBSAN| replace:: :term:`UBSAN`h]h)}(h :term:`UBSAN`h]h)}(hj h]hUBSAN}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?UBSANuh1hhAhBhCKAh!j ubah"}(h$]h&]h+]UBSANah-]h/]uh1h hAhBhCKAh!hhhubh )}(h .. |UEFI| replace:: :term:`UEFI`h]h)}(h :term:`UEFI`h]h)}(hj h]hUEFI}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?UEFIuh1hhAhBhCKBh!j ubah"}(h$]h&]h+]UEFIah-]h/]uh1h hAhBhCKBh!hhhubh )}(h .. |WDOG| replace:: :term:`WDOG`h]h)}(h :term:`WDOG`h]h)}(hj< h]hWDOG}(hhh!j> ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j: ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjH reftypeterm refexplicitrefwarnh?WDOGuh1hhAhBhCKCh!j6 ubah"}(h$]h&]h+]WDOGah-]h/]uh1h hAhBhCKCh!hhhubh )}(h!.. |XLAT| replace:: :term:`XLAT` h]h)}(h :term:`XLAT`h]h)}(hjg h]hXLAT}(hhh!ji ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!je ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjs reftypeterm refexplicitrefwarnh?XLATuh1hhAhBhCKDh!ja ubah"}(h$]h&]h+]XLATah-]h/]uh1h hAhBhCKDh!hhhubh section)}(hhh](h title)}(hRaspberry Pi 3h]hRaspberry Pi 3}(hj h!j hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!j hhhAJ/home/test/workspace/code/optee_3.16/trusted-firmware-a/docs/plat/rpi3.rsthCKubh paragraph)}(hfThe `Raspberry Pi 3`_ is an inexpensive single-board computer that contains four Arm Cortex-A53 cores.h](hThe }(hThe h!j hhhANhCNubh reference)}(h`Raspberry Pi 3`_h]hRaspberry Pi 3}(hRaspberry Pi 3h!j ubah"}(h$]h&]h+]h-]h/]nameRaspberry Pi 3refuri`__. Build the Trusted Firmware with option ``BL32=tee-header_v2.bin BL32_EXTRA1=tee-pager_v2.bin BL32_EXTRA2=tee-pageable_v2.bin`` to put the binaries into the FIP. .. warning:: If OP-TEE is used it may be needed to add the following options to the Linux command line so that the USB driver doesn't use FIQs: ``dwc_otg.fiq_enable=0 dwc_otg.fiq_fsm_enable=0 dwc_otg.nak_holdoff=0``. This will unfortunately reduce the performance of the USB driver. It is needed when using Raspbian, for example. h](j )}(hX4``BL32``: This port can load and run OP-TEE. The OP-TEE image is optional. Please use the code from `here `__. Build the Trusted Firmware with option ``BL32=tee-header_v2.bin BL32_EXTRA1=tee-pager_v2.bin BL32_EXTRA2=tee-pageable_v2.bin`` to put the binaries into the FIP.h](j )}(h``BL32``h]hBL32}(hhh!jSubah"}(h$]h&]h+]h-]h/]uh1j h!jOubh\: This port can load and run OP-TEE. The OP-TEE image is optional. Please use the code from }(h\: This port can load and run OP-TEE. The OP-TEE image is optional. Please use the code from h!jOubj )}(h-`here `__h]hhere}(hhereh!jfubah"}(h$]h&]h+]h-]h/]namejnj "https://github.com/OP-TEE/optee_osuh1j h!jOubh). Build the Trusted Firmware with option }(h). Build the Trusted Firmware with option h!jOubj )}(hX``BL32=tee-header_v2.bin BL32_EXTRA1=tee-pager_v2.bin BL32_EXTRA2=tee-pageable_v2.bin``h]hTBL32=tee-header_v2.bin BL32_EXTRA1=tee-pager_v2.bin BL32_EXTRA2=tee-pageable_v2.bin}(hhh!j|ubah"}(h$]h&]h+]h-]h/]uh1j h!jOubh" to put the binaries into the FIP.}(h" to put the binaries into the FIP.h!jOubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCM h!jKubh warning)}(hX<If OP-TEE is used it may be needed to add the following options to the Linux command line so that the USB driver doesn't use FIQs: ``dwc_otg.fiq_enable=0 dwc_otg.fiq_fsm_enable=0 dwc_otg.nak_holdoff=0``. This will unfortunately reduce the performance of the USB driver. It is needed when using Raspbian, for example.h]j )}(hX<If OP-TEE is used it may be needed to add the following options to the Linux command line so that the USB driver doesn't use FIQs: ``dwc_otg.fiq_enable=0 dwc_otg.fiq_fsm_enable=0 dwc_otg.nak_holdoff=0``. This will unfortunately reduce the performance of the USB driver. It is needed when using Raspbian, for example.h](hIf OP-TEE is used it may be needed to add the following options to the Linux command line so that the USB driver doesn’t use FIQs: }(hIf OP-TEE is used it may be needed to add the following options to the Linux command line so that the USB driver doesn't use FIQs: h!jubj )}(hG``dwc_otg.fiq_enable=0 dwc_otg.fiq_fsm_enable=0 dwc_otg.nak_holdoff=0``h]hCdwc_otg.fiq_enable=0 dwc_otg.fiq_fsm_enable=0 dwc_otg.nak_holdoff=0}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubhr. This will unfortunately reduce the performance of the USB driver. It is needed when using Raspbian, for example.}(hr. This will unfortunately reduce the performance of the USB driver. It is needed when using Raspbian, for example.h!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!jubah"}(h$]h&]h+]h-]h/]uh1jh!jKubeh"}(h$]h&]h+]h-]h/]uh1j h!jHhhhANhCNubj )}(hX ``TRUSTED_BOARD_BOOT``: This port supports TBB. Set this option to 1 to enable it. In order to use TBB, you might want to set ``GENERATE_COT=1`` to let the contents of the FIP automatically signed by the build process. The ROT key will be generated and output to ``rot_key.pem`` in the build directory. It is able to set ROT_KEY to your own key in PEM format. Also in order to build, you need to clone mbed TLS from `here `__. ``MBEDTLS_DIR`` must point at the mbed TLS source directory. h]j )}(hX ``TRUSTED_BOARD_BOOT``: This port supports TBB. Set this option to 1 to enable it. In order to use TBB, you might want to set ``GENERATE_COT=1`` to let the contents of the FIP automatically signed by the build process. The ROT key will be generated and output to ``rot_key.pem`` in the build directory. It is able to set ROT_KEY to your own key in PEM format. Also in order to build, you need to clone mbed TLS from `here `__. ``MBEDTLS_DIR`` must point at the mbed TLS source directory.h](j )}(h``TRUSTED_BOARD_BOOT``h]hTRUSTED_BOARD_BOOT}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubhh: This port supports TBB. Set this option to 1 to enable it. In order to use TBB, you might want to set }(hh: This port supports TBB. Set this option to 1 to enable it. In order to use TBB, you might want to set h!jubj )}(h``GENERATE_COT=1``h]hGENERATE_COT=1}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubhw to let the contents of the FIP automatically signed by the build process. The ROT key will be generated and output to }(hw to let the contents of the FIP automatically signed by the build process. The ROT key will be generated and output to h!jubj )}(h``rot_key.pem``h]h rot_key.pem}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh in the build directory. It is able to set ROT_KEY to your own key in PEM format. Also in order to build, you need to clone mbed TLS from }(h in the build directory. It is able to set ROT_KEY to your own key in PEM format. Also in order to build, you need to clone mbed TLS from h!jubj )}(h-`here `__h]hhere}(hhereh!j ubah"}(h$]h&]h+]h-]h/]namejj "https://github.com/ARMmbed/mbedtlsuh1j h!jubh. }(h. h!jubj )}(h``MBEDTLS_DIR``h]h MBEDTLS_DIR}(hhh!j ubah"}(h$]h&]h+]h-]h/]uh1j h!jubh- must point at the mbed TLS source directory.}(h- must point at the mbed TLS source directory.h!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jHhhhAj hCNubj )}(hX``ENABLE_STACK_PROTECTOR``: Disabled by default. It uses the hardware RNG of the board. h]j )}(hW``ENABLE_STACK_PROTECTOR``: Disabled by default. It uses the hardware RNG of the board.h](j )}(h``ENABLE_STACK_PROTECTOR``h]hENABLE_STACK_PROTECTOR}(hhh!jGubah"}(h$]h&]h+]h-]h/]uh1j h!jCubh=: Disabled by default. It uses the hardware RNG of the board.}(h=: Disabled by default. It uses the hardware RNG of the board.h!jCubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCM h!j?ubah"}(h$]h&]h+]h-]h/]uh1j h!jHhhhAj hCNubeh"}(h$]h&]h+]h-]h/]j] j^ uh1j hAj hCM h!j*hhubj )}(h)The following is not currently supported:h]h)The following is not currently supported:}(hjnh!jlhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCM#h!j*hhubj )}(hhh](j )}(hAArch32 for TF-A itself. h]j )}(hAArch32 for TF-A itself.h]hAArch32 for TF-A itself.}(hjh!jubah"}(h$]h&]h+]h-]h/]uh1j hAj hCM%h!j}ubah"}(h$]h&]h+]h-]h/]uh1j h!jzhhhAj hCNubj )}(h``EL3_PAYLOAD_BASE``: The reason is that you can already load anything to any address by changing the file ``armstub8.bin``, so there's no point in using TF-A in this case. h]j )}(h``EL3_PAYLOAD_BASE``: The reason is that you can already load anything to any address by changing the file ``armstub8.bin``, so there's no point in using TF-A in this case.h](j )}(h``EL3_PAYLOAD_BASE``h]hEL3_PAYLOAD_BASE}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubhW: The reason is that you can already load anything to any address by changing the file }(hW: The reason is that you can already load anything to any address by changing the file h!jubj )}(h``armstub8.bin``h]h armstub8.bin}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh3, so there’s no point in using TF-A in this case.}(h1, so there's no point in using TF-A in this case.h!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCM'h!jubah"}(h$]h&]h+]h-]h/]uh1j h!jzhhhAj hCNubj )}(h``MULTI_CONSOLE_API=0``: The multi console API must be enabled. Note that the crash console uses the internal 16550 driver functions directly in order to be able to print error messages during early crashes before setting up the multi console API. h]j )}(h``MULTI_CONSOLE_API=0``: The multi console API must be enabled. Note that the crash console uses the internal 16550 driver functions directly in order to be able to print error messages during early crashes before setting up the multi console API.h](j )}(h``MULTI_CONSOLE_API=0``h]hMULTI_CONSOLE_API=0}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh: The multi console API must be enabled. Note that the crash console uses the internal 16550 driver functions directly in order to be able to print error messages during early crashes before setting up the multi console API.}(h: The multi console API must be enabled. Note that the crash console uses the internal 16550 driver functions directly in order to be able to print error messages during early crashes before setting up the multi console API.h!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCM+h!jubah"}(h$]h&]h+]h-]h/]uh1j h!jzhhhAj hCNubeh"}(h$]h&]h+]h-]h/]j] j^ uh1j hAj hCM%h!j*hhubj )}(hhh](j )}(h9Building the firmware for kernels that don't support PSCIh]h;Building the firmware for kernels that don’t support PSCI}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCM1ubj )}(hThis is the case for the 32-bit image of Raspbian, for example. 64-bit kernels always support PSCI, but they may not know that the system understands PSCI due to an incorrect DTB file.h]hThis is the case for the 32-bit image of Raspbian, for example. 64-bit kernels always support PSCI, but they may not know that the system understands PSCI due to an incorrect DTB file.}(hjh!j hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCM3h!jhhubj )}(hFirst, clone and compile the 32-bit version of the `Raspberry Pi 3 TF-A bootstrap`_. Choose the one needed for the architecture of your kernel.h](h3First, clone and compile the 32-bit version of the }(h3First, clone and compile the 32-bit version of the h!jhhhANhCNubj )}(h `Raspberry Pi 3 TF-A bootstrap`_h]hRaspberry Pi 3 TF-A bootstrap}(hRaspberry Pi 3 TF-A bootstraph!j$ubah"}(h$]h&]h+]h-]h/]nameRaspberry Pi 3 TF-A bootstrapj 2https://github.com/AntonioND/rpi3-arm-tf-bootstrapuh1j h!jj Kubh<. Choose the one needed for the architecture of your kernel.}(h<. Choose the one needed for the architecture of your kernel.h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCM7h!jhhubj )}(hGThen compile TF-A. For a 32-bit kernel, use the following command line:h]hGThen compile TF-A. For a 32-bit kernel, use the following command line:}(hjCh!jAhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCM:h!jhhubj)}(hCROSS_COMPILE=aarch64-linux-gnu- make PLAT=rpi3 \ RPI3_BL33_IN_AARCH32=1 \ BL33=../rpi3-arm-tf-bootstrap/aarch32/el2-bootstrap.binh]hCROSS_COMPILE=aarch64-linux-gnu- make PLAT=rpi3 \ RPI3_BL33_IN_AARCH32=1 \ BL33=../rpi3-arm-tf-bootstrap/aarch32/el2-bootstrap.bin}(hhh!jOubah"}(h$]h&]h+]h-]h/]forcehighlight_args}jjlanguageshelluh1jhAj hCM<h!jhhubj )}(h1For a 64-bit kernel, use this other command line:h]h1For a 64-bit kernel, use this other command line:}(hjdh!jbhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCMBh!jhhubj)}(huCROSS_COMPILE=aarch64-linux-gnu- make PLAT=rpi3 \ BL33=../rpi3-arm-tf-bootstrap/aarch64/el2-bootstrap.binh]huCROSS_COMPILE=aarch64-linux-gnu- make PLAT=rpi3 \ BL33=../rpi3-arm-tf-bootstrap/aarch64/el2-bootstrap.bin}(hhh!jpubah"}(h$]h&]h+]h-]h/]forcehighlight_args}jjj`shelluh1jhAj hCMDh!jhhubj )}(hXHowever, enabling PSCI support in a 64-bit kernel is really easy. In the repository `Raspberry Pi 3 TF-A bootstrap`_ there is a patch that can be applied to the Linux kernel tree maintained by the Raspberry Pi foundation. It modifes the DTS to tell the kernel to use PSCI. Once this patch is applied, follow the instructions in `AArch64 kernel build instructions`_ to get a working 64-bit kernel image and supporting files.h](hTHowever, enabling PSCI support in a 64-bit kernel is really easy. In the repository }(hTHowever, enabling PSCI support in a 64-bit kernel is really easy. In the repository h!jhhhANhCNubj )}(h `Raspberry Pi 3 TF-A bootstrap`_h]hRaspberry Pi 3 TF-A bootstrap}(hRaspberry Pi 3 TF-A bootstraph!jubah"}(h$]h&]h+]h-]h/]nameRaspberry Pi 3 TF-A bootstrapj j5uh1j h!jj Kubh there is a patch that can be applied to the Linux kernel tree maintained by the Raspberry Pi foundation. It modifes the DTS to tell the kernel to use PSCI. Once this patch is applied, follow the instructions in }(h there is a patch that can be applied to the Linux kernel tree maintained by the Raspberry Pi foundation. It modifes the DTS to tell the kernel to use PSCI. Once this patch is applied, follow the instructions in h!jhhhANhCNubj )}(h$`AArch64 kernel build instructions`_h]h!AArch64 kernel build instructions}(h!AArch64 kernel build instructionsh!jubah"}(h$]h&]h+]h-]h/]name!AArch64 kernel build instructionsj j uh1j h!jj Kubh; to get a working 64-bit kernel image and supporting files.}(h; to get a working 64-bit kernel image and supporting files.h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCMIh!jhhubeh"}(h$]9building-the-firmware-for-kernels-that-don-t-support-psciah&]h+]9building the firmware for kernels that don't support psciah-]h/]uh1j h!j*hhhAj hCM1ubj )}(hhh](j )}(h3Building the firmware for kernels that support PSCIh]h3Building the firmware for kernels that support PSCI}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCMQubj )}(hFor a 64-bit kernel:h]hFor a 64-bit kernel:}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCMSh!jhhubj)}(hCROSS_COMPILE=aarch64-linux-gnu- make PLAT=rpi3 \ PRELOADED_BL33_BASE=0x02000000 \ RPI3_PRELOADED_DTB_BASE=0x01000000 \ RPI3_DIRECT_LINUX_BOOT=1h]hCROSS_COMPILE=aarch64-linux-gnu- make PLAT=rpi3 \ PRELOADED_BL33_BASE=0x02000000 \ RPI3_PRELOADED_DTB_BASE=0x01000000 \ RPI3_DIRECT_LINUX_BOOT=1}(hhh!jubah"}(h$]h&]h+]h-]h/]forcehighlight_args}jjj`shelluh1jhAj hCMUh!jhhubj )}(hFor a 32-bit kernel:h]hFor a 32-bit kernel:}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCM\h!jhhubj)}(hXCROSS_COMPILE=aarch64-linux-gnu- make PLAT=rpi3 \ PRELOADED_BL33_BASE=0x02000000 \ RPI3_PRELOADED_DTB_BASE=0x01000000 \ RPI3_DIRECT_LINUX_BOOT=1 \ RPI3_BL33_IN_AARCH32=1h]hXCROSS_COMPILE=aarch64-linux-gnu- make PLAT=rpi3 \ PRELOADED_BL33_BASE=0x02000000 \ RPI3_PRELOADED_DTB_BASE=0x01000000 \ RPI3_DIRECT_LINUX_BOOT=1 \ RPI3_BL33_IN_AARCH32=1}(hhh!jubah"}(h$]h&]h+]h-]h/]forcehighlight_args}jjj`shelluh1jhAj hCM^h!jhhubeh"}(h$]3building-the-firmware-for-kernels-that-support-psciah&]h+]3building the firmware for kernels that support psciah-]h/]uh1j h!j*hhhAj hCMQubeh"}(h$]build-instructionsah&]h+]build instructionsah-]h/]uh1j h!j hhhAj hCKubj )}(hhh](j )}(h!AArch64 kernel build instructionsh]h!AArch64 kernel build instructions}(hj+h!j)hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!j&hhhAj hCMgubj )}(hThe following instructions show how to install and run a AArch64 kernel by using a SD card with the default `Raspbian`_ install as base. Skip them if you want to use the default 32-bit kernel.h](hlThe following instructions show how to install and run a AArch64 kernel by using a SD card with the default }(hlThe following instructions show how to install and run a AArch64 kernel by using a SD card with the default h!j7hhhANhCNubj )}(h `Raspbian`_h]hRaspbian}(hRaspbianh!j@ubah"}(h$]h&]h+]h-]h/]namejHj j uh1j h!j7j KubhI install as base. Skip them if you want to use the default 32-bit kernel.}(hI install as base. Skip them if you want to use the default 32-bit kernel.h!j7hhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCMih!j&hhubj )}(hNote that this system won't be fully 64-bit because all the tools in the filesystem are 32-bit binaries, but it's a quick way to get it working, and it allows the user to run 64-bit binaries in addition to 32-bit binaries.h]hNote that this system won’t be fully 64-bit because all the tools in the filesystem are 32-bit binaries, but it’s a quick way to get it working, and it allows the user to run 64-bit binaries in addition to 32-bit binaries.}(hj]h!j[hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCMmh!j&hhubh enumerated_list)}(hhh]j )}(hClone the `Linux tree fork`_ maintained by the Raspberry Pi Foundation. To speed things up, do a shallow clone of the desired branch. h]j )}(hClone the `Linux tree fork`_ maintained by the Raspberry Pi Foundation. To speed things up, do a shallow clone of the desired branch.h](h Clone the }(h Clone the h!jrubj )}(h`Linux tree fork`_h]hLinux tree fork}(hLinux tree forkh!j{ubah"}(h$]h&]h+]h-]h/]nameLinux tree forkj j uh1j h!jrj Kubhi maintained by the Raspberry Pi Foundation. To speed things up, do a shallow clone of the desired branch.}(hi maintained by the Raspberry Pi Foundation. To speed things up, do a shallow clone of the desired branch.h!jrubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCMqh!jnubah"}(h$]h&]h+]h-]h/]uh1j h!jkhhhAj hCNubah"}(h$]h&]h+]h-]h/]enumtypearabicprefixhsuffixj uh1jih!j&hhhAj hCMqubj)}(hOgit clone --depth=1 -b rpi-4.18.y https://github.com/raspberrypi/linux cd linuxh]hOgit clone --depth=1 -b rpi-4.18.y https://github.com/raspberrypi/linux cd linux}(hhh!jubah"}(h$]h&]h+]h-]h/]forcehighlight_args}jjj`shelluh1jhAj hCMth!j&hhubjj)}(hhh]j )}(hConfigure and compile the kernel. Adapt the number after ``-j`` so that it is 1.5 times the number of CPUs in your computer. This may take some time to finish. h]j )}(hConfigure and compile the kernel. Adapt the number after ``-j`` so that it is 1.5 times the number of CPUs in your computer. This may take some time to finish.h](h9Configure and compile the kernel. Adapt the number after }(h9Configure and compile the kernel. Adapt the number after h!jubj )}(h``-j``h]h-j}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh` so that it is 1.5 times the number of CPUs in your computer. This may take some time to finish.}(h` so that it is 1.5 times the number of CPUs in your computer. This may take some time to finish.h!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCMyh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCNubah"}(h$]h&]h+]h-]h/]jjjhjj startKuh1jih!j&hhhAj hCMyubj)}(hxmake ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcmrpi3_defconfig make -j 6 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-h]hxmake ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcmrpi3_defconfig make -j 6 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-}(hhh!jubah"}(h$]h&]h+]h-]h/]forcehighlight_args}jjj`shelluh1jhAj hCM}h!j&hhubjj)}(hhh]j )}(hCopy the kernel image and the device tree to the SD card. Replace the path by the corresponding path in your computers to the ``boot`` partition of the SD card. h]j )}(hCopy the kernel image and the device tree to the SD card. Replace the path by the corresponding path in your computers to the ``boot`` partition of the SD card.h](h~Copy the kernel image and the device tree to the SD card. Replace the path by the corresponding path in your computers to the }(h~Copy the kernel image and the device tree to the SD card. Replace the path by the corresponding path in your computers to the h!jubj )}(h``boot``h]hboot}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh partition of the SD card.}(h partition of the SD card.h!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCNubah"}(h$]h&]h+]h-]h/]jjjhjj jKuh1jih!j&hhhAj hCMubj)}(hcp arch/arm64/boot/Image /path/to/boot/kernel8.img cp arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dtb /path/to/boot/ cp arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dtb /path/to/boot/h]hcp arch/arm64/boot/Image /path/to/boot/kernel8.img cp arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dtb /path/to/boot/ cp arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dtb /path/to/boot/}(hhh!j6ubah"}(h$]h&]h+]h-]h/]forcehighlight_args}jjj`shelluh1jhAj hCMh!j&hhubjj)}(hhh]j )}(hInstall the kernel modules. Replace the path by the corresponding path to the filesystem partition of the SD card on your computer. h]j )}(hInstall the kernel modules. Replace the path by the corresponding path to the filesystem partition of the SD card on your computer.h]hInstall the kernel modules. Replace the path by the corresponding path to the filesystem partition of the SD card on your computer.}(hjQh!jOubah"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!jKubah"}(h$]h&]h+]h-]h/]uh1j h!jHhhhAj hCNubah"}(h$]h&]h+]h-]h/]jjjhjj jKuh1jih!j&hhhAj hCMubj)}(hgmake ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- \ INSTALL_MOD_PATH=/path/to/filesystem modules_installh]hgmake ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- \ INSTALL_MOD_PATH=/path/to/filesystem modules_install}(hhh!jiubah"}(h$]h&]h+]h-]h/]forcehighlight_args}jjj`shelluh1jhAj hCMh!j&hhubjj)}(hhh]j )}(hFollow the instructions in `Setup SD card`_ except for the step of renaming the existing ``kernel7.img`` (we have already copied a AArch64 kernel). h]j )}(hFollow the instructions in `Setup SD card`_ except for the step of renaming the existing ``kernel7.img`` (we have already copied a AArch64 kernel).h](hFollow the instructions in }(hFollow the instructions in h!jubj )}(h`Setup SD card`_h]h Setup SD card}(h Setup SD cardh!jubah"}(h$]h&]h+]h-]h/]name Setup SD cardj juh1j h!jj Kubh. except for the step of renaming the existing }(h. except for the step of renaming the existing h!jubj )}(h``kernel7.img``h]h kernel7.img}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh+ (we have already copied a AArch64 kernel).}(h+ (we have already copied a AArch64 kernel).h!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!j~ubah"}(h$]h&]h+]h-]h/]uh1j h!j{hhhAj hCNubah"}(h$]h&]h+]h-]h/]jjjhjj jKuh1jih!j&hhhAj hCMubeh"}(h$]j ah&]h+]!aarch64 kernel build instructionsah-]h/]uh1j h!j hhhAj hCMgj!Kubj )}(hhh](j )}(h Setup SD cardh]h Setup SD card}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCMubj )}(hThe instructions assume that you have an SD card with a fresh install of `Raspbian`_ (or that, at least, the ``boot`` partition is untouched, or nearly untouched). They have been tested with the image available in 2018-03-13.h](hIThe instructions assume that you have an SD card with a fresh install of }(hIThe instructions assume that you have an SD card with a fresh install of h!jhhhANhCNubj )}(h `Raspbian`_h]hRaspbian}(hRaspbianh!jubah"}(h$]h&]h+]h-]h/]namejj j uh1j h!jj Kubh (or that, at least, the }(h (or that, at least, the h!jhhhANhCNubj )}(h``boot``h]hboot}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubhl partition is untouched, or nearly untouched). They have been tested with the image available in 2018-03-13.}(hl partition is untouched, or nearly untouched). They have been tested with the image available in 2018-03-13.h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!jhhubjj)}(hhh](j )}(h4Insert the SD card and open the ``boot`` partition. h]j )}(h3Insert the SD card and open the ``boot`` partition.h](h Insert the SD card and open the }(h Insert the SD card and open the h!jubj )}(h``boot``h]hboot}(hhh!j%ubah"}(h$]h&]h+]h-]h/]uh1j h!jubh partition.}(h partition.h!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCNubj )}(hRename ``kernel7.img`` to ``kernel8.img``. This tricks the VideoCore bootloader into booting the Arm cores in AArch64 mode, like TF-A needs, even though the kernel is not compiled for AArch64. h]j )}(hRename ``kernel7.img`` to ``kernel8.img``. This tricks the VideoCore bootloader into booting the Arm cores in AArch64 mode, like TF-A needs, even though the kernel is not compiled for AArch64.h](hRename }(hRename h!jHubj )}(h``kernel7.img``h]h kernel7.img}(hhh!jQubah"}(h$]h&]h+]h-]h/]uh1j h!jHubh to }(h to h!jHubj )}(h``kernel8.img``h]h kernel8.img}(hhh!jdubah"}(h$]h&]h+]h-]h/]uh1j h!jHubh. This tricks the VideoCore bootloader into booting the Arm cores in AArch64 mode, like TF-A needs, even though the kernel is not compiled for AArch64.}(h. This tricks the VideoCore bootloader into booting the Arm cores in AArch64 mode, like TF-A needs, even though the kernel is not compiled for AArch64.h!jHubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!jDubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCNubj )}(hCopy ``armstub8.bin`` here. When ``kernel8.img`` is available, The VideoCore bootloader will look for a file called ``armstub8.bin`` and load it at address **0x0** instead of a predefined one. h]j )}(hCopy ``armstub8.bin`` here. When ``kernel8.img`` is available, The VideoCore bootloader will look for a file called ``armstub8.bin`` and load it at address **0x0** instead of a predefined one.h](hCopy }(hCopy h!jubj )}(h``armstub8.bin``h]h armstub8.bin}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh here. When }(h here. When h!jubj )}(h``kernel8.img``h]h kernel8.img}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubhD is available, The VideoCore bootloader will look for a file called }(hD is available, The VideoCore bootloader will look for a file called h!jubj )}(h``armstub8.bin``h]h armstub8.bin}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh and load it at address }(h and load it at address h!jubj' )}(h**0x0**h]h0x0}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j& h!jubh instead of a predefined one.}(h instead of a predefined one.h!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCNubj )}(hvTo enable the serial port "Mini UART" in Linux, open ``cmdline.txt`` and add ``console=serial0,115200 console=tty1``. h]j )}(huTo enable the serial port "Mini UART" in Linux, open ``cmdline.txt`` and add ``console=serial0,115200 console=tty1``.h](h9To enable the serial port “Mini UART” in Linux, open }(h5To enable the serial port "Mini UART" in Linux, open h!jubj )}(h``cmdline.txt``h]h cmdline.txt}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh and add }(h and add h!jubj )}(h'``console=serial0,115200 console=tty1``h]h#console=serial0,115200 console=tty1}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh.}(hj h!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCNubj )}(hOpen ``config.txt`` and add the following lines at the end (``enable_uart=1`` is only needed to enable debugging through the Mini UART): h]j )}(hOpen ``config.txt`` and add the following lines at the end (``enable_uart=1`` is only needed to enable debugging through the Mini UART):h](hOpen }(hOpen h!j*ubj )}(h``config.txt``h]h config.txt}(hhh!j3ubah"}(h$]h&]h+]h-]h/]uh1j h!j*ubh) and add the following lines at the end (}(h) and add the following lines at the end (h!j*ubj )}(h``enable_uart=1``h]h enable_uart=1}(hhh!jFubah"}(h$]h&]h+]h-]h/]uh1j h!j*ubh; is only needed to enable debugging through the Mini UART):}(h; is only needed to enable debugging through the Mini UART):h!j*ubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!j&ubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCNubeh"}(h$]h&]h+]h-]h/]jjjhjj uh1jih!jhhhAj hCMubj)}(hFenable_uart=1 kernel_address=0x02000000 device_tree_address=0x01000000h]hFenable_uart=1 kernel_address=0x02000000 device_tree_address=0x01000000}(hhh!jkubah"}(h$]h&]h+]h-]h/]jjuh1jhAj hCMh!jhhubj )}(hIf you connect a serial cable to the Mini UART and your computer, and connect to it (for example, with ``screen /dev/ttyUSB0 115200``) you should see some text. In the case of an AArch32 kernel, you should see something like this:h](hgIf you connect a serial cable to the Mini UART and your computer, and connect to it (for example, with }(hgIf you connect a serial cable to the Mini UART and your computer, and connect to it (for example, with h!jyhhhANhCNubj )}(h``screen /dev/ttyUSB0 115200``h]hscreen /dev/ttyUSB0 115200}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jyubha) you should see some text. In the case of an AArch32 kernel, you should see something like this:}(ha) you should see some text. In the case of an AArch32 kernel, you should see something like this:h!jyhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!jhhubj)}(hXNOTICE: Booting Trusted Firmware NOTICE: BL1: v1.4(release):v1.4-329-g61e94684-dirty NOTICE: BL1: Built : 00:09:25, Nov 6 2017 NOTICE: BL1: Booting BL2 NOTICE: BL2: v1.4(release):v1.4-329-g61e94684-dirty NOTICE: BL2: Built : 00:09:25, Nov 6 2017 NOTICE: BL1: Booting BL31 NOTICE: BL31: v1.4(release):v1.4-329-g61e94684-dirty NOTICE: BL31: Built : 00:09:25, Nov 6 2017 [ 0.266484] bcm2835-aux-uart 3f215040.serial: could not get clk: -517 Raspbian GNU/Linux 9 raspberrypi ttyS0 raspberrypi login:h]hXNOTICE: Booting Trusted Firmware NOTICE: BL1: v1.4(release):v1.4-329-g61e94684-dirty NOTICE: BL1: Built : 00:09:25, Nov 6 2017 NOTICE: BL1: Booting BL2 NOTICE: BL2: v1.4(release):v1.4-329-g61e94684-dirty NOTICE: BL2: Built : 00:09:25, Nov 6 2017 NOTICE: BL1: Booting BL31 NOTICE: BL31: v1.4(release):v1.4-329-g61e94684-dirty NOTICE: BL31: Built : 00:09:25, Nov 6 2017 [ 0.266484] bcm2835-aux-uart 3f215040.serial: could not get clk: -517 Raspbian GNU/Linux 9 raspberrypi ttyS0 raspberrypi login:}(hhh!jubah"}(h$]h&]h+]h-]h/]jjuh1jhAj hCMh!jhhubj )}(h{Just enter your credentials, everything should work as expected. Note that the HDMI output won't show any text during boot.h]h}Just enter your credentials, everything should work as expected. Note that the HDMI output won’t show any text during boot.}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!jhhubh target)}(hZ.. _default Arm stub: https://github.com/raspberrypi/tools/blob/master/armstubs/armstub7.Sh]h"}(h$]default-arm-stubah&]h+]default arm stubah-]h/]j Dhttps://github.com/raspberrypi/tools/blob/master/armstubs/armstub7.Suh1jhCMh!jhhhAj ubj)}(h^.. _default AArch64 stub: https://github.com/raspberrypi/tools/blob/master/armstubs/armstub8.Sh]h"}(h$]default-aarch64-stubah&]h+]default aarch64 stubah-]h/]j j uh1jhCMh!jhhhAj j!Kubj)}(h8.. _Linux kernel tree: https://github.com/torvalds/linuxh]h"}(h$]linux-kernel-treeah&]h+]linux kernel treeah-]h/]j juh1jhCMh!jhhhAj j!Kubj)}(h9.. _Linux tree fork: https://github.com/raspberrypi/linuxh]h"}(h$]linux-tree-forkah&]h+]linux tree forkah-]h/]j j uh1jhCMh!jhhhAj j!Kubj)}(hP.. _Raspberry Pi 3: https://www.raspberrypi.org/products/raspberry-pi-3-model-b/h]h"}(h$]id1ah&]h+]raspberry pi 3ah-]h/]j j uh1jhCMh!jhhhAj j!Kubj)}(hU.. _Raspberry Pi 3 TF-A bootstrap: https://github.com/AntonioND/rpi3-arm-tf-bootstraph]h"}(h$]raspberry-pi-3-tf-a-bootstrapah&]h+]raspberry pi 3 tf-a bootstrapah-]h/]j j5uh1jhCMh!jhhhAj j!Kubj)}(hL.. _Raspberry Pi 3 documentation: https://www.raspberrypi.org/documentation/h]h"}(h$]raspberry-pi-3-documentationah&]h+]raspberry pi 3 documentationah-]h/]j jl uh1jhCMh!jhhhAj j!Kubj)}(h=.. _Raspbian: https://www.raspberrypi.org/downloads/raspbian/h]h"}(h$]raspbianah&]h+]raspbianah-]h/]j j uh1jhCMh!jhhhAj j!Kubeh"}(h$]jah&]h+] setup sd cardah-]h/]uh1j h!j hhhAj hCMj!Kubeh"}(h$]raspberry-pi-3ah&]h+]h-]jah/]uh1j h!hhhhAj hCKj!Kubeh"}(h$]h&]h+]h-]h/]sourcej uh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(j N generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjKerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcej _destinationN _config_files]pep_referencesN pep_base_url https://www.python.org/dev/peps/pep_file_url_templatepep-%04drfc_referencesN rfc_base_urlhttps://tools.ietf.org/html/ tab_widthKtrim_footnote_reference_spacefile_insertion_enabled raw_enabledKsyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xformembed_stylesheetcloak_email_addressesenvNubreporterNindirect_targets]substitution_defs}(hHh hshKhhvhhhhjhjJj"jujMjjxjjjjj!jjLj$jwjOjjzjjjjj#jjNj&jyjQjj|jjjjj%jjPj(j{jSjj~jjjjj'jjRj*j}jUjjjjjjj)jjTj,jjWjjjjjjj+jjVj.jjYjjjjjjj-jjXj0jj[jjjjj jj/ j jZ j2 j j] j j j j j j j1 j j\ j4 j j_ j j j j j j j3 j j^ j6 j ja usubstitution_names}(aarch32hHaarch64hsamuhamushɌapihbtijcotjucssjcvejdtbjds-5j!dsujLdtjweljehfjfconfjfdtj#ff-ajNfipjyfvpjfwujgicjisaj%linarojPmmuj{mpamjmpmmjmpidrjmtej'oenjRop-teej}otejpddjpauthjpmfj)pscijTrasjrotjscmijscpjsdeij+sdsjVseajsipjsmcjsmcccj-socjXspjspdjspmjssbsj svej/ tbbjZ tbbrj teej tf-aj tf-mj tlbj1 tlkj\ trngj tspj tzcj ubsanj uefij3 wdogj^ xlatj urefnames}(raspberry pi 3]j araspbian](j jh jj@jelinux tree fork](j j{e!aarch64 kernel build instructions](j jeraspberry pi 3 documentation]j[ adefault aarch64 stub]j asecondary cores]j alinux kernel tree](jrje setup sd card](jjjeraspberry pi 3 tf-a bootstrap](j$jeurefids}nameids}(raspberry pi 3jj'j$jjjHjEjj j#j jjjjjj jjjjjjjjjjjjj jjju nametypes}(jj'NjNjHNjNj#NjNjNjNjNjjjjjj juh$}(j#j j$jA jj jEjj jKj j*jjjjj j&jjjjjjjjjjjjjjjjjju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}jYKsRparse_messages](h system_message)}(hhh]j )}(h:Enumerated list start value not ordinal-1: "2" (ordinal 2)h]h>Enumerated list start value not ordinal-1: “2” (ordinal 2)}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubah"}(h$]h&]h+]h-]h/]levelKtypeINFOsourcej lineKuh1jh!j&hhhAj hCMyubj)}(hhh]j )}(h:Enumerated list start value not ordinal-1: "3" (ordinal 3)h]h>Enumerated list start value not ordinal-1: “3” (ordinal 3)}(hhh!j ubah"}(h$]h&]h+]h-]h/]uh1j h!jubah"}(h$]h&]h+]h-]h/]levelKtypejsourcej lineKuh1jh!j&hhhAj hCMubj)}(hhh]j )}(h:Enumerated list start value not ordinal-1: "4" (ordinal 4)h]h>Enumerated list start value not ordinal-1: “4” (ordinal 4)}(hhh!j;ubah"}(h$]h&]h+]h-]h/]uh1j h!j8ubah"}(h$]h&]h+]h-]h/]levelKtypejsourcej lineKuh1jh!j&hhhAj hCMubj)}(hhh]j )}(h:Enumerated list start value not ordinal-1: "5" (ordinal 5)h]h>Enumerated list start value not ordinal-1: “5” (ordinal 5)}(hhh!jVubah"}(h$]h&]h+]h-]h/]uh1j h!jSubah"}(h$]h&]h+]h-]h/]levelKtypejsourcej lineKuh1jh!j&hhhAj hCMubj)}(hhh]j )}(h1Duplicate implicit target name: "raspberry pi 3".h]h5Duplicate implicit target name: “raspberry pi 3”.}(hhh!jqubah"}(h$]h&]h+]h-]h/]uh1j h!jnubah"}(h$]h&]h+]h-]h/]jalevelKtypejlineMsourcej uh1jh!jhhhAj hCMubetransform_messages]j)}(hhh]j )}(hhh]h6Hyperlink target "default arm stub" is not referenced.}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubah"}(h$]h&]h+]h-]h/]levelKtypejsourcej lineMuh1juba transformerN decorationNhhub.