This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DM3730, peripheral booting, UART3, not booting

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.

  • Forgive me for ever bringing this up.

    As it turns out, I did screw up the host part - I was picking up some loose bytes while reading the image file into a buffer before handing it over to the SerialWrite routine. An incredibly stupid mistake for which I am truly sorry. Everything works fine as of now. The booting process is a success, that piece of assembly code does just what it's supposed to.