From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Hornung Date: Thu, 2 Aug 2012 11:00:48 +0200 Subject: [U-Boot] i.MX35PDK: Starting U-Boot from serial NOR-Flash In-Reply-To: References: <334319B2EBE0B144BAE1402B79D82DC5D31358D5@srvpegasus> <334319B2EBE0B144BAE1402B79D82DC5D31358DF@srvpegasus> <334319B2EBE0B144BAE1402B79D82DC5D31E1CB9@srvpegasus> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Fabio, >> >> Have you had any progress on this? > I had some progress on my issue, here a summary of what I did: - I configured a SD-Card as described in doc/README.imximage - I did the following changes to the U-Boot sources: +++ b/board/freescale/mx35pdk/imximage.cfg +BOOT_FROM sd +#WEIM config-CS5 init +DATA 4 0xB8002050 0x0000d843 +DATA 4 0xB8002054 0x22252521 +DATA 4 0xB8002058 0x22220a00 + +# DDR2 init +DATA 4 0xB8001010 0x00000304 +DATA 4 0xB8001010 0x0000030C +DATA 4 0xB8001004 0x007ffc3f +DATA 4 0xB8001000 0x92220000 +DATA 4 0x80000400 0x12345678 +DATA 4 0xB8001000 0xA2220000 +DATA 4 0x80000000 0x87654321 +DATA 4 0x80000000 0x87654321 +DATA 4 0xB8001000 0xB2220000 +DATA 1 0x80000233 0xda +DATA 1 0x82000780 0xda +DATA 1 0x82000400 0xda +DATA 4 0xB8001000 0x82226080 +DATA 4 0xB8001004 0x007ffc3f +DATA 4 0xB800100C 0x007ffc3f +DATA 4 0xB8001010 0x00000304 +DATA 4 0xB8001008 0x00002000 +++ b/boards.cfg -mx35pdk arm arm1136 - freescale mx35 +mx35pdk arm arm1136 - freescale mx35 mx35pdk:IMX_CONFIG=board/freescale/mx35pdk/imximage.cfg +++ b/include/configs/mx35pdk.h -#define CONFIG_SYS_TEXT_BASE 0xA0000000 +#define CONFIG_SYS_TEXT_BASE 0x87800000 +++ b/config.mk -DBGFLAGS= -g # -DDEBUG +DBGFLAGS= -g -DDEBUG This ended up as described earlier, with an U-Boot promp stoppping with the following output: > CPU: Freescale i.MX35 rev 2.1 at 532 MHz. > Reset cause: POR > I2C: ready Then I did the following change: +++ b/board/freescale/mx35pdk/mx35pdk.c size1 = get_ram_size((void *)PHYS_SDRAM_1, PHYS_SDRAM_1_SIZE); - size2 = get_ram_size((void *)PHYS_SDRAM_2, PHYS_SDRAM_2_SIZE); + size2 = 0; + /*size2 = get_ram_size((void *)PHYS_SDRAM_2, PHYS_SDRAM_2_SIZE);*/ gd->ram_size = size1 + size2; And here the result: U-Boot 2012.07-00024-g181e4a3 (Aug 02 2012 - 09:49:35) U-Boot code: 87800000 -> 8783ACC8 BSS: -> 87841704 CPU: Freescale i.MX35 rev 2.1 at 532 MHz. Reset cause: POR I2C: ready monitor len: 00041704 ramsize: 08000000 TLB table at: 87ff0000 Top of RAM usable for U-Boot at: 87ff0000 Reserving 261k for U-Boot at: 87fae000 Reserving 1280k for malloc() at: 87e6e000 Reserving 40 Bytes for Board Info at: 87e6dfd8 Reserving 120 Bytes for Global Data at: 87e6df60 New Stack Pointer is: 87e6df50 RAM Configuration: Bank #0: 80000000 128 MiB Bank #1: 90000000 128 MiB relocation Offset is: 007ae000 dram_bank_mmu_setup: bank: 0 dram_bank_mmu_setup: bank: 1 monitor flash len: 00041508 Now running in RAM - U-Boot at: 87fae000 Flash: flash detect cfi fwc addr a0000000 cmd f0 f0 8bit x 8 bit fwc addr a0000000 cmd ff ff 8bit x 8 bit fwc addr a0000055 cmd 98 98 8bit x 8 bit is= cmd 51(Q) addr a0000010 is= 14 51 fwc addr a0000555 cmd 98 98 8bit x 8 bit is= cmd 51(Q) addr a0000010 is= 14 51 fwc addr a0000000 cmd f0 f0f0 16bit x 8 bit fwc addr a0000000 cmd ff ffff 16bit x 8 bit fwc addr a00000aa cmd 98 9898 16bit x 8 bit is= cmd 51(Q) addr a0000020 is= 0051 5151 fwc addr a0000aaa cmd 98 9898 16bit x 8 bit is= cmd 51(Q) addr a0000020 is= 0051 5151 fwc addr a0000000 cmd f0 00f0 16bit x 16 bit fwc addr a0000000 cmd ff 00ff 16bit x 16 bit fwc addr a00000aa cmd 98 0098 16bit x 16 bit is= cmd 51(Q) addr a0000020 is= 0051 0051 is= cmd 52(R) addr a0000022 is= 0052 0052 is= cmd 59(Y) addr a0000024 is= 0059 0059 device interface is 2 found port 2 chip 2 port 16 bits chip 16 bits 00 : 51 52 59 02 00 40 00 00 00 00 00 27 36 00 00 06 QRY.. at .....'6... 10 : 06 09 13 03 05 03 02 1a 02 00 06 00 01 ff 01 00 ................ 20 : 02 00 00 00 00 00 00 00 00 00 00 00 00 8b fb 87 ................ fwc addr a0000000 cmd f0 00f0 16bit x 16 bit fwc addr a0000aaa cmd aa 00aa 16bit x 16 bit fwc addr a0000554 cmd 55 0055 16bit x 16 bit fwc addr a0000aaa cmd 90 0090 16bit x 16 bit fwc addr a0000000 cmd f0 00f0 16bit x 16 bit fwc addr a00000aa cmd 98 0098 16bit x 16 bit manufacturer is 2 manufacturer id is 0x1 device id is 0x227e device id2 is 0x2301 cfi version is 0x3133 size_ratio 1 port 16 bits chip 16 bits found 1 erase regions erase region 0: 0x020001ff erase_region_count = 512 erase_region_size = 131072 fwc addr a0000000 cmd f0 00f0 16bit x 16 bit flash_protect ON: from 0xA0000000 to 0xA0041507 fwc addr a0000000 cmd 70 0070 16bit x 16 bit flash_is_busy: 0 protect on 0 fwc addr a0020000 cmd 70 0070 16bit x 16 bit flash_is_busy: 0 protect on 1 fwc addr a0040000 cmd 70 0070 16bit x 16 bit flash_is_busy: 0 protect on 2 flash_protect ON: from 0xA0080000 to 0xA009FFFF fwc addr a0080000 cmd 70 0070 16bit x 16 bit flash_is_busy: 0 protect on 4 flash_protect ON: from 0xA00A0000 to 0xA00BFFFF fwc addr a00a0000 cmd 70 0070 16bit x 16 bit flash_is_busy: 0 protect on 5 64 MiB NAND: 4096 MiB Destroy Hash Table: 87fe94c4 table = (null) Create Hash Table: N=512 INSERT: table 87fe94c4, filled 1/521 rv 87e90f44 ==> name="addip" value="if test -n ${ipdyn};then run addip_dyn;else run addip_sta;fi" INSERT: table 87fe94c4, filled 2/521 rv 87e90a34 ==> name="addip_dyn" value="setenv bootargs ${bootargs} ip=dhcp" INSERT: table 87fe94c4, filled 3/521 rv 87e91028 ==> name="addip_sta" value="setenv bootargs ${bootargs} ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}:${netdev}:off panic=1" INSERT: table 87fe94c4, filled 4/521 rv 87e90a70 ==> name="addmisc" value="setenv bootargs ${bootargs} ${misc}" INSERT: table 87fe94c4, filled 5/521 rv 87e91898 ==> name="addmtd" value="setenv bootargs ${bootargs} ${mtdparts}" INSERT: table 87fe94c4, filled 6/521 rv 87e91ad8 ==> name="addtty" value="setenv bootargs ${bootargs} console=ttymxc0,${baudrate}" INSERT: table 87fe94c4, filled 7/521 rv 87e90e60 ==> name="baudrate" value="115200" INSERT: table 87fe94c4, filled 8/521 rv 87e91eec ==> name="bootargs_nfs" value="setenv bootargs console=ttymxc0,${baudrate} root=/dev/nfs ip=${ipaddr} rw nfsroot=${serverip}:${rootpath}" INSERT: table 87fe94c4, filled 9/521 rv 87e910dc ==> name="bootcmd" value="run net_nfs" INSERT: table 87fe94c4, filled 10/521 rv 87e915e0 ==> name="bootdelay" value="3" INSERT: table 87fe94c4, filled 11/521 rv 87e912bc ==> name="bootfile" value="/3stack/uImage" INSERT: table 87fe94c4, filled 12/521 rv 87e91058 ==> name="ethact" value="smc911x-0" INSERT: table 87fe94c4, filled 13/521 rv 87e90cec ==> name="ethaddr" value="00:04:9f:01:2f:9a" INSERT: table 87fe94c4, filled 14/521 rv 87e90b24 ==> name="ethprime" value="smc911x" INSERT: table 87fe94c4, filled 15/521 rv 87e909d4 ==> name="flash_nfs" value="run bootargs_nfs; nand read ${loadaddr} 0x300000 0x200000; bootm" INSERT: table 87fe94c4, filled 16/521 rv 87e9173c ==> name="flash_self" value="run ramargs addip addtty addmtd addmisc;bootm ${kernel_addr} ${ramdisk_addr}" INSERT: table 87fe94c4, filled 17/521 rv 87e91928 ==> name="hostname" value=""mx35pdk"" INSERT: table 87fe94c4, filled 18/521 rv 87e91e68 ==> name="ipaddr" value="192.168.1.10" INSERT: table 87fe94c4, filled 19/521 rv 87e91118 ==> name="kernel_addr_r" value="80800000" INSERT: table 87fe94c4, filled 20/521 rv 87e915d4 ==> name="load" value="tftp ${loadaddr} ${u-boot}" INSERT: table 87fe94c4, filled 21/521 rv 87e914fc ==> name="loadaddr" value="0x80800000" INSERT: table 87fe94c4, filled 22/521 rv 87e90854 ==> name="net_nfs" value="tftp ${load_addr} ${bootfile}; run bootargs_nfs; bootm ${load_addr}" INSERT: table 87fe94c4, filled 23/521 rv 87e913d0 ==> name="net_self_load" value="tftp ${kernel_addr_r} ${bootfile};tftp ${ramdisk_addr_r} ${ramdisk_file};" INSERT: table 87fe94c4, filled 24/521 rv 87e91f34 ==> name="netdev" value="eth0" INSERT: table 87fe94c4, filled 25/521 rv 87e90950 ==> name="nfsargs" value="setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath}" INSERT: table 87fe94c4, filled 26/521 rv 87e90704 ==> name="ramargs" value="setenv bootargs root=/dev/ram rw" INSERT: table 87fe94c4, filled 27/521 rv 87e918f8 ==> name="ramdisk_file" value=""mx35pdk"/uRamdisk" INSERT: table 87fe94c4, filled 28/521 rv 87e91664 ==> name="rootpath" value="/opt/eldk-5.2.1/armv6/rootfs-qte-sdk" INSERT: table 87fe94c4, filled 29/521 rv 87e90fa4 ==> name="serverip" value="192.168.1.1" INSERT: table 87fe94c4, filled 30/521 rv 87e91340 ==> name="stderr" value="serial" INSERT: table 87fe94c4, filled 31/521 rv 87e90e00 ==> name="stdin" value="serial" INSERT: table 87fe94c4, filled 32/521 rv 87e91850 ==> name="stdout" value="serial" INSERT: table 87fe94c4, filled 33/521 rv 87e91af0 ==> name="u-boot" value=""mx35pdk"/u-boot.bin" INSERT: table 87fe94c4, filled 34/521 rv 87e91ef8 ==> name="uboot_addr" value="0xa0000000" INSERT: table 87fe94c4, filled 35/521 rv 87e91040 ==> name="upd" value="if run load;then echo Updating u-boot;if run update;then echo U-Boot updated;else echo Error updating u-boot !;echo Board without bootloader !!;fi;else echo U-Boot not downloaded..exiting;fi" INSERT: table 87fe94c4, filled 36/521 rv 87e910f4 ==> name="update" value="protect off ${uboot_addr} +40000;erase ${uboot_addr} +40000;cp.b ${loadaddr} ${uboot_addr} ${filesize}" INSERT: free(data = 87e706d0) INSERT: done In: serial Out: serial Err: serial Board: MX35 PDK 2.0 Net: eth_init: fec_probe(bd) fec_mii_setspeed: mii_speed 0000001a smc911x-0, FEC ### main_loop entered: bootdelay=3 ### main_loop: bootcmd="run net_nfs" Hit any key to stop autoboot: 0 MX35 U-Boot > U-Boot is running now (any idea why?), but unfortunately it does not run the kernel: MX35 U-Boot > run net_nfs Trying smc911x-0 smc911x: detected LAN9217 controller smc911x: phy initialized smc911x: MAC 00:04:9f:01:2f:9a TFTP blocksize = 1468, timeout = 5000 ms Using smc911x-0 device TFTP from server 192.168.1.1; our IP address is 192.168.1.10 Filename '/3stack/uImage'. Load address: 0x80800000 Loading: send option "timeout 5" Got OACK: timeout 5 Blocksize ack: 1468, 1468 ################################################################# ################################################################# ######### done Bytes transferred = 2036440 (1f12d8 hex) CACHE: Misaligned operation at range [80800000, 809f12d8] ## Current stack ends at 0x87e6dbf8 * kernel: default image load address = 0x80800000 ## Booting kernel from Legacy Image at 80800000 ... Image Name: Linux-2.6.31-00203-g63769bf Created: 2012-05-15 10:06:22 UTC Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 2036376 Bytes = 1.9 MiB Load Address: 80008000 Entry Point: 80008000 Verifying Checksum ... OK kernel data at 0x80800040, len = 0x001f1298 (2036376) ## No init Ramdisk ramdisk start = 0x00000000, ramdisk end = 0x00000000 Loading Kernel Image ... OK OK kernel loaded at 0x80008000, end = 0x801f9298 using: ATAGS ## Transferring control to Linux (at address 80008000)... Starting kernel ... Uncompressing Linux...................................................................................................................................... done, booting the kernel. And that's it, no more kernel output. Here my environment addip=if test -n ${ipdyn};then run addip_dyn;else run addip_sta;fi addip_dyn=setenv bootargs ${bootargs} ip=dhcp addip_sta=setenv bootargs ${bootargs} ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}:${netdev}:off panic=1 addmisc=setenv bootargs ${bootargs} ${misc} addmtd=setenv bootargs ${bootargs} ${mtdparts} addtty=setenv bootargs ${bootargs} console=ttymxc0,${baudrate} baudrate=115200 bootargs_nfs=setenv bootargs console=ttymxc0,${baudrate} root=/dev/nfs ip=${ipaddr} rw nfsroot=${serverip}:${rootpath} bootcmd=run net_nfs bootdelay=3 bootfile=/3stack/uImage ethact=smc911x-0 ethaddr=00:04:9f:01:2f:9a ethprime=smc911x flash_nfs=run bootargs_nfs; nand read ${loadaddr} 0x300000 0x200000; bootm flash_self=run ramargs addip addtty addmtd addmisc;bootm ${kernel_addr} ${ramdisk_addr} hostname="mx35pdk" ipaddr=192.168.1.10 kernel_addr_r=80800000 load=tftp ${loadaddr} ${u-boot} loadaddr=0x80800000 net_nfs=tftp ${load_addr} ${bootfile}; run bootargs_nfs; bootm ${load_addr} net_self_load=tftp ${kernel_addr_r} ${bootfile};tftp ${ramdisk_addr_r} ${ramdisk_file}; netdev=eth0 nfsargs=setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} ramargs=setenv bootargs root=/dev/ram rw ramdisk_file="mx35pdk"/uRamdisk rootpath=/opt/eldk-5.2.1/armv6/rootfs-qte-sdk serverip=192.168.1.1 stderr=serial stdin=serial stdout=serial u-boot="mx35pdk"/u-boot.bin uboot_addr=0xa0000000 upd=if run load;then echo Updating u-boot;if run update;then echo U-Boot updated;else echo Error updating u-boot !;echo Board without bootloader !!;fi;else echo U-Boot not downloaded..exiting;fi update=protect off ${uboot_addr} +40000;erase ${uboot_addr} +40000;cp.b ${loadaddr} ${uboot_addr} ${filesize} Doing changes to the environment is not possible, the command "saveenv" ends up with an endless loop of the following message: MX35 U-Boot > saveenv Saving Environment to Flash... Protect off A00A0000 ... A00BFFFF Un-Protecting sectors 5..5 in bank 1 fwc addr a00a0000 cmd 70 0070 16bit x 16 bit flash_is_busy: 0 . done Un-Protected 1 sectors Protect off A0080000 ... A009FFFF Un-Protecting sectors 4..4 in bank 1 fwc addr a0080000 cmd 70 0070 16bit x 16 bit flash_is_busy: 0 . done Un-Protected 1 sectors EXPORT table = 87fe94c4, htab.size = 521, htab.filled = 36, size = 131067 Unsorted: n=36 0: 87e90704 ==> ramargs => setenv bootargs root=/dev/ram rw 1: 87e90854 ==> net_nfs => tftp ${load_addr} ${bootfile}; run bootargs_nfs; bootm ${load_addr} 2: 87e90950 ==> nfsargs => setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} 3: 87e909d4 ==> flash_nfs => run bootargs_nfs; nand read ${loadaddr} 0x300000 0x200000; bootm 4: 87e90a34 ==> addip_dyn => setenv bootargs ${bootargs} ip=dhcp 5: 87e90a70 ==> addmisc => setenv bootargs ${bootargs} ${misc} 6: 87e90b24 ==> ethprime => smc911x 7: 87e90cec ==> ethaddr => 00:04:9f:01:2f:9a 8: 87e90e00 ==> stdin => serial 9: 87e90e60 ==> baudrate => 115200 10: 87e90f44 ==> addip => if test -n ${ipdyn};then run addip_dyn;else run addip_sta;fi 11: 87e90fa4 ==> serverip => 192.168.1.1 12: 87e91028 ==> addip_sta => setenv bootargs ${bootargs} ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}:${netdev}:off panic=1 13: 87e91040 ==> upd => if run load;then echo Updating u-boot;if run update;then echo U-Boot updated;else echo Error updating u-boot !;echo Board without bootloader !!;fi;else echo U-Boot not downloaded..exiting;fi 14: 87e91058 ==> ethact => smc911x-0 15: 87e910dc ==> bootcmd => run net_nfs 16: 87e910f4 ==> update => protect off ${uboot_addr} +40000;erase ${uboot_addr} +40000;cp.b ${loadaddr} ${uboot_addr} ${filesize} 17: 87e91118 ==> kernel_addr_r => 80800000 18: 87e912bc ==> bootfile => /3stack/uImage 19: 87e91340 ==> stderr => serial 20: 87e913d0 ==> net_self_load => tftp ${kernel_addr_r} ${bootfile};tftp ${ramdisk_addr_r} ${ramdisk_file}; 21: 87e914fc ==> loadaddr => 0x80800000 22: 87e915d4 ==> load => tftp ${loadaddr} ${u-boot} 23: 87e915e0 ==> bootdelay => 3 24: 87e91664 ==> rootpath => /opt/eldk-5.2.1/armv6/rootfs-qte-sdk 25: 87e9173c ==> flash_self => run ramargs addip addtty addmtd addmisc;bootm ${kernel_addr} ${ramdisk_addr} 26: 87e91850 ==> stdout => serial 27: 87e91898 ==> addmtd => setenv bootargs ${bootargs} ${mtdparts} 28: 87e918f8 ==> ramdisk_file => "mx35pdk"/uRamdisk 29: 87e91928 ==> hostname => "mx35pdk" 30: 87e91ad8 ==> addtty => setenv bootargs ${bootargs} console=ttymxc0,${baudrate} 31: 87e91af0 ==> u-boot => "mx35pdk"/u-boot.bin 32: 87e91e68 ==> ipaddr => 192.168.1.10 33: 87e91eec ==> bootargs_nfs => setenv bootargs console=ttymxc0,${baudrate} root=/dev/nfs ip=${ipaddr} rw nfsroot=${serverip}:${rootpath} 34: 87e91ef8 ==> uboot_addr => 0xa0000000 35: 87e91f34 ==> netdev => eth0 Erasing Flash... A0080000 ... A009FFFF ...Erase Flash from 0xa0080000 to 0xa009ffff in Bank # 1 fwc addr a0080aaa cmd aa 00aa 16bit x 16 bit fwc addr a0080554 cmd 55 0055 16bit x 16 bit fwc addr a0080aaa cmd 80 0080 16bit x 16 bit fwc addr a0080aaa cmd aa 00aa 16bit x 16 bit fwc addr a0080554 cmd 55 0055 16bit x 16 bit fwc addr a0080000 cmd 30 0030 16bit x 16 bit flash_is_busy: 1 flash_is_busy: 1 flash_is_busy: 1 ... Could you please give me some hits what to do next? With best regards Michael Hornung