Other Parts Discussed in Thread: DM3730
Hello.
For the past few days I've been asking a series of questions concerning peripheral booting of a DM3730 as present on BeagleBoard-xM. I'm using UART3 as the peripheral of choice for my tryout. I've collected enough information to finally put together a setup for testing this booting feature, and here's where things came to a head.
I made a small PC-side CLI-utility for myself to trace events during the booting process. It does everything that host booting software is supposed to:
- it waits for ASIC-ID;
- after recognizing this ID, it sends out a booting message telling the processor to continue with peripheral booting (0xF0030002);
- then it sends four bytes of image size;
- finally, it spits out the image itself
I checked everything multiple times. I've gone through virtually every byte of the outgoing stream with an oscilloscope to make sure that every byte was supplemented with a correct (even) parity bit, and so on. The utility does its job just fine.
As to the image itself, I can't be 100% sure if it's good or not. It's supposed to be doing okay to. I used assembly to create a code placed right at the beginning of the SRAM which should relay the program flow to the c_int00. Because it didn't pan out, I rehashed it into something like that:
init: MRS R0, CPSR
BIC R0, R0, #31
ORR R0, R0, #16
MSR CPSR_cf, R0
NOP
LDR R0, tab0
MVN R12, #0
STR R12, [R0]
NOP
LDR R0, tab1
MVN R12, #0
STR R12, [R0]
NOP
test: LDR R12, tab2
LDR R12, [R12]
TST R12, #10000h
BNE test
NOP
LDR R0, tab3
LDR R12, [R0]
BIC R12, R12, #70000h
STR R12, [R0]
NOP
LDR R0, tab3
LDR R12, [R0]
ORR R12, R12, #40000h
STR R12, [R0]
NOP
LDR R0, tab4
LDR R12, [R0]
BIC R12, R12, #700000h
STR R12, [R0]
NOP
LDR R0, tab5
LDR R12, [R0]
ORR R12, R12, #700000h
STR R12, [R0]
NOP
stay: B stay
B stay
NOP
B _c_int00
NOP
NOP
NOP
tab0: .word 48005000h
tab1: .word 48005010h
tab2: .word 48005020h
tab3: .word 4800217Ch
tab4: .word 49056034h
tab5: .word 4905603Ch
All this code does is enable functional and interface clocks of the entire PER domain, then routes sets the GPI5 pin mode, configures it as output and writes 1 to it, basically lighting up an LED. I generated .HEX output, converted it to .BIN with the "hex2bin.exe", then checked and rechecked it via hex-viewer to make sure that all the opcodes were in the right place. Everyhing checked out.
Yet, when I try to send this image to the processor, nothing happens, and there is no way for me to tell if anything goes wrong. I feel like I'm at my wits' end here. Please help me.
Thank you in advance.