I have a board which is running a MCIMX6U5EVM10AC - NXP i.MX 6 series 32-bit MPU, Dual ARM Cortex-A9 core, 1GHz CPU with 2GB DDR3 ram.
I currently have it connected via JTAG using an Olimex ARM-USB-OCD-H and openocd using the following command
openocd -f /interface/ftdi/olimex-arm-usb-ocd-h.cfg -f /target/imx6.cfg
This shows the following
Open On-Chip Debugger 0.10.0 Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html Info : auto-selecting first available session transport "jtag". To override use 'transport select <transport>'. Warn : imx6.sdma: nonstandard IR value adapter speed: 1000 kHz Info : clock speed 1000 kHz Info : JTAG tap: imx6.dap tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4) Info : TAP imx6.sdma does not have IDCODE Info : JTAG tap: imx6.sjc tap/device found: 0x1891a01d (mfg: 0x00e (Freescale (Motorola)), part: 0x891a, ver: 0x1) Warn : JTAG tap: imx6.sjc UNEXPECTED: 0x1891a01d (mfg: 0x00e (Freescale (Motorola)), part: 0x891a, ver: 0x1) Error: JTAG tap: imx6.sjc expected 1 of 4: 0x0191c01d (mfg: 0x00e (Freescale (Motorola)), part: 0x191c, ver: 0x0) Error: JTAG tap: imx6.sjc expected 2 of 4: 0x2191c01d (mfg: 0x00e (Freescale (Motorola)), part: 0x191c, ver: 0x2) Error: JTAG tap: imx6.sjc expected 3 of 4: 0x2191e01d (mfg: 0x00e (Freescale (Motorola)), part: 0x191e, ver: 0x2) Error: JTAG tap: imx6.sjc expected 4 of 4: 0x1191c01d (mfg: 0x00e (Freescale (Motorola)), part: 0x191c, ver: 0x1) Error: Trying to use configured scan chain anyway... Warn : Bypassing JTAG setup events due to errors Info : imx6.cpu.0: hardware has 6 breakpoints, 4 watchpoints
Besides the unexpected device it seems to work fine, I can read memory, write to registers etc...
However, I'm attempting to load and run a bare metal app which no matter what I do fails.
Using the bare metal SDK found here https://github.com/flit/imx6_platform_sdk I attempt to load one of the apps. for example
> halt DSCR_DTR_RX_FULL, dscr 0x4b08e003 imx6.cpu.0 rev a, partnum c09, arch f, variant 2, implementor 41 imx6.cpu.0 cluster 0 core 0 multi core target halted in ARM state due to debug-request, current mode: Supervisor cpsr: 0xa00f0193 pc: 0x803dc30c MMU: enabled, D-Cache: enabled, I-Cache: enabled > load_image /home/imx6_sdk/imx6_platform_sdk/output/mx6sdl/ping/evb_rev_a/ping.elf
And I simply get the error "data abort at 0x10000000, dfsr = 0x00000805"
I'm able to load it by specifying the memory offset 0x80000000
> load_image /home/imx6_sdk/imx6_platform_sdk/output/mx6sdl/ping/evb_rev_a/ping.elf 0x80000000 306408 bytes written at address 0x90000000 downloaded 306408 bytes in 24.571947s (12.178 KiB/s)
However the code never seems to run, I've tried both resume 0x90000000 and step 0x90000000
Resume just continues and doesn't appear to do anything? (I've inserted an infinite while loop into the code just to make sure and it never gets reached)
> resume 0x90000000 > halt target halted in ARM state due to debug-request, current mode: Supervisor cpsr: 0x800e0113 pc: 0x8033afc8 MMU: enabled, D-Cache: enabled, I-Cache: enabled
and step throws an abort error (setting breakpoints seems to be completely broken.
> step 0x90000000 target halted in ARM state due to breakpoint, current mode: Abort cpsr: 0x800e0197 pc: 0xffff000c MMU: enabled, D-Cache: enabled, I-Cache: enabled Data fault registers DFSR: 00000817, DFAR: 0088f880 Instruction fault registers IFSR: 0000000d, IFAR: 90000000
I've tried multiple reset configs as well but they appear even more broken than the ones openocd ships with. Any help on this would be greatly appreciated.