EngineerN
EngineerN

Reputation: 133

Boot Linux in Normal World

I am exploring the TrustZone (the ARM security extension) on an i.MX53 Quick Starting Board. I succeeded to make a bare-metal system : A secure world image and a normal world image. I load the two images in my ram with u-boot and I boot the secure world who initializes the monitor system and gives the hand to the normal world image.

I want to use the same system. But this time instead of using a normal world basic image, I would like to use a Linux Kernel Image. I did some configurations that I found in the i.MX53 Reference Manual and the i.MX53 Security Reference Manual when I am in the secure world. The configurations are :

When I give the hand to the linux kernel, the boot process starts, here is a part of the output :

regulator: core version 0.5

NET: Registered protocol family 16

i.MX IRAM pool: 128 KB@0xec840000

FAILED TO RELEASE IRAM PARTITION

CPU is i.MX0 Revision 0.0

Unhandled fault: external abort on non-linefetch (0x1008) at 0xec82c00c

Internal error: : 1008 [#1] PREEMPT

last sysfs file:

Modules linked in:

CPU: 0 Not tainted (2.6.35.3 #1)

PC is at mxc_cpu_lp_set+0x1c/0x16c

LR is at arch_idle+0x60/0x294

pc : [<8003a958>] lr : [<8003ab08>] psr: 60000093

sp : 80835f78 ip : 00000003 fp : 8088fb68

....

As you can notice in the output, there is a problem with the IRAM (because normally it diplays IRAM READY) and there is a data abort. After so displays related to these errors, the Linux kernel boot process stops.

Any ideas of how to solve that ? Am I missing any configuration ? Thank you

Upvotes: 1

Views: 539

Answers (1)

cid
cid

Reputation: 716

Have you seen this post on the Freescale forum?

It seems to be the exact same problem you're having. Basically, it is probably trying to access a register, at 0xec82c00c virtual address, which is configured by default to be non-accessible from the Normal world.

Upvotes: 0

Related Questions