[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] Starting A9 from M3
From: |
Peter Crosthwaite |
Subject: |
Re: [Qemu-devel] Starting A9 from M3 |
Date: |
Mon, 28 Sep 2015 10:00:11 -0700 |
On Mon, Sep 28, 2015 at 8:39 AM, Marcin Krzemiński
<address@hidden> wrote:
> Hello,
>
> I am closer to finish, but still I found some problems this time booting
> from A9 cores from M3.
> Use case is that I M3 core loads firmware to SDRAM then A9 should begin to
> execute this firmware.
> I am starting M3 from elf, I see from debuger (gbd backend) that data are in
> SDRAM memory. Then I want to start A9.
> My reset function for A9 is:
>
> static void arm_a9(void *opaque)
> {
> CPUState *cpu = opaque;
> CPUClass *cc = CPU_GET_CLASS(cpu);
>
> cpu_reset(CPU(cpu));
>
> address_space_stl_notdirty(CPU(cpu)->as, PSS_SRAM_ADDR,
> 0, MEMTXATTRS_UNSPECIFIED, NULL);
>
> cc->set_pc(CPU(cpu),PSS_SRAM_ADDR);
> }
>
> registered in init of a9: qemu_register_reset(arm_reset,
> qemu_get_cpu(n->arm_a9_1_id));
> A9 is started in powered-off state: object_property_set_bool(cpuobj,
> true,"start-powered-off", &err);
>
> I have custom control device that after register write enable A9 in this
> way:
>
> static void release_cpu_from_reset(int cpu_id)
> {
> CPUState *cpu = NULL;
>
> if(cpu_id >= 0 && cpu_exists(cpu_id))
> {
> cpu = qemu_get_cpu(cpu_id);
> cpu_reset_interrupt(cpu, CPU_INTERRUPT_HALT);
> cpu_interrupt(cpu, CPU_INTERRUPT_EXITTB);
> cpu->halted = 0;
> }
> }
>
> I can see in debuger that A9 started in above way try to execute code(part
> of it seem to be successful), but then suddenly jumps to strange memory
> address (where zeroes are).
>
> My questions:
> 1. Is that way of dealing with A9 start is correct or am I still missing
> something?
> 2. Is is possible to somehow trace PC/instruction or something that can help
> with debugging?
>
-d in_asm,exec on command line will help. You may want to patch the
output prints to give the cpu ID # so you can tell difference between
A9 and M3.
Regards,
Peter
> I am suspecting that the firmware for A9 (it is u-boot-spl) has something to
> do with this, but I can't start debugging from the very firs instruction
> executed in A9.
>
> Thanks,
> Marcin
>
>
>