<div>hi,</div>
<div>I am try to port u-boot-1.1.3 on a board with the processor MPC850. And i try to change the board of TQM850. </div>
<div>&nbsp;</div>
<div>It&nbsp;boots from flash on the board. I have successfully initialized clock, serial port (connect to RS232). The program can excute in flash</div>
<div>and relocate to ram. But I got trouble on board/tqm8xx/flash.c &quot;flash_init()&quot;. The problem is finially located&nbsp;get_flash_size(), line&nbsp;340-342.</div>
<div>The 3 lines aim to get flash device ID.</div>
<div>&nbsp;</div>
<div>addr[0x0555] = 0x00AA00AA;<br>addr[0x02AA] = 0x00550055;<br>addr[0x0555] = 0x00900090;</div>
<div>&nbsp;</div>
<div>I change this code to fit my board:</div>
<div>*(volatile unsigned short *) 0x02800aaa = (unsigned short) 0x00aa;</div>
<div>*(volatile unsigned short *) 0x02800554 = (unsigned short) 0x0055;</div>
<div>*(volatile unsigned short *) 0x02800aaa = (unsigned short) 0x0090;</div>
<div>unsigned short ID;</div>
<div>ID = *(unsigned short *) 0x02800000;</div>
<div>(&nbsp;address connect as follows: mpc &nbsp;a[11..30]&nbsp; ==&gt;&gt;flash a[19..0],</div>
<div>flash a19 ----mpc a11, flasha18 -----mpc a12 ,......</div>
<div>notice LSB of mpc is a[30] not a[31], for flash is word mode.</div>
<div>so the flash address &quot;0x555, 0x2aa&quot; are corresponding the system address &quot;0xaaa, 0x554&quot; , left shift by 1 bit.)</div>
<div>&nbsp;</div>
<div>those 3 lines code have been tested on vxworks&#39; bootrom on this board.</div>
<div>&nbsp;</div>
<div>Now , my trouble is : I cannot use &quot;printf&quot; to print number after executing the 3 line codes, like printf(&quot;Device ID is: %x\n&quot;,*(unsigned short *) 0x2800000);</div>
<div>But it can print string , likes printf(&quot;Read Device ID\n&quot;). it seems just the second parameter cause the trouble.</div>
<div>Sadly,this kind of &quot;printf&quot; can be used several times , then it stops.</div>
<div>other kinds of function or instruction can be executed a little more, but stop finilly.</div>
<div>&nbsp;</div>
<div>I simply convert address to string ,then print. The result of ID is 0x0001, which is just the correct number.</div>
<div>&nbsp;</div>
<div>If&nbsp;I ignore the&nbsp;3&nbsp;line code above, the program runs ok except the initialization of flash.</div>
<div>I really cann&#39;t figure out where the problem is. Could anyone&nbsp;help me , or&nbsp;give me some suggest!</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>Below&nbsp;is the configuration on my board:</div>
<div>oscillator 4MHz</div>
<div>DRAM: 8M </div>
<div>flash: AM29LV160DB (16 bit)</div>
<div>IMMR.ISB = 0x0220</div>
<div>BR0 = 0x02800801</div>
<div>OR0 = 0xffe00936</div>
<div>Cross Compiler: GNU&nbsp; gcc 4.0.2</div>
<div>&nbsp;</div>
<div>Result on hyper-terminal:</div>
<div>CPU:&nbsp;&nbsp; XPC850xxZTB at 64 MHz: 2 kB I-Cache 1 kB D-Cache<br>Board: ### No HW ID - assuming TQM8xxL<br>DRAM:&nbsp;&nbsp; 8 MB</div>
<div>Now running in RAM - U-Boot at: 007c1000<br>FLASH: <br>## Get flash bank 0 size @ 0x02800000<br>BR0 : &nbsp;2800801<br>OR0 :&nbsp;ffe00936</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>
<div>Thanks!</div>
<div>&nbsp;Xuguang Li</div></div>