This project is read-only.

Booting NK.bin from NAND

The goal of this sequence is to flash the Beagle Board so it will boot WinCE without USB or SD.

Write TIEVM3530-nand.raw to NAND Flash
Follow the steps to write TIEVM3530-nand.raw found here

Boot EBOOTNAND.nb0 from SD card
Follow the steps to boot EBOOTSD.nb0 from SD found here, only rename EBOOTNAND.nb0 to EBOOTSD.nb0.

Write EBOOTNAND.bin to target
Write EBOOTNAND.bin to target using the steps listed on the EBOOT page.

Write NK.bin to target using VS2005
  1. Reboot, break into EBOOT menu
  2. Change boot device to USBFn RNDIS, disable KITL via Network menu, and 0,0 to back out and continue.
  3. Via VS2005 load desired NK.bin file as solution.
  4. Attach to Target
  5. If you have done your homework - installed RNDIS driver, and your Connectivity Options are correct NK.bin will be written to Flash NAND.

Output will look something like this (I flashed target with DEBUG build of EBOOTNAND.bin - hence the extra output)

HostMiniInit:: !!
Rndis:: initialization: with addr=480AB000
Rndis:: Address static map to addr=480AB000
Rndis:: initialization!
+USBFN::Device ID = 0x3b7ae02f
+USBFN::Device ID = 0x3b7ae02f
Rndis:: PDDInit Success!
Rndis:: Get MAC address 200,902F,B5D
RndisMdd:: PDD's max RX buffer = [8192] bytes.
Rndis:: initialization: Success
HostMini:: New filter set: [0x0] --> [0x20]
HostMini:: New filter set: [0x20] --> [0x0]
HostMini:: New filter set: [0x0] --> [0x2]
HostMini:: New filter set: [0x2] --> [0x20]
InitDHCP():: Calling ProcessDHCP()
ProcessDHCP()::DHCP_INIT
Got Response from DHCP server, IP address: 192.168.1.231

ProcessDHCP()::DHCP IP Address Resolved as 192.168.1.231, netmask: 255.255.255.0
Lease time: 259200 seconds
Got Response from DHCP server, IP address: 192.168.1.231
No ARP response in 2 seconds, assuming ownership of 192.168.1.231
+EbootSendBootmeAndWaitForTftp
Sent BOOTME to 255.255.255.255
Packet has the following data:
  boot.bin[NULL]octet[NULL]
TFTP packet could have 1 name/value pairs
Locked Down Link 1
Src IP 192.168.1.231 Port 03D4   Dest IP 192.168.1.233 Port 51F8
Default TFTP block size set to: 512 bytes
There were no options detected in the TFTP
EthDown::TFTPD_OPEN::boot.bin
-EbootSendBootmeAndWaitForTftp

BL_IMAGE_TYPE_BIN

 <> Record [ 0 ] dwRecAddr = 0x80001000, dwRecLen = 0x4
 <> Record [ 1 ] dwRecAddr = 0x80001040, dwRecLen = 0x8
 <> Record [ 2 ] dwRecAddr = 0x80001048, dwRecLen = 0x4
 <> Record [ 3 ] dwRecAddr = 0x80002000, dwRecLen = 0x30FD8
 <> Record [ 4 ] dwRecAddr = 0x80033000, dwRecLen = 0x1000
 <> Record [ 5 ] dwRecAddr = 0x80035000, dwRecLen = 0x22FF8
 <> Record [ 6 ] dwRecAddr = 0x80059000, dwRecLen = 0xA1008
 <> Record [ 7 ] dwRecAddr = 0x800FB000, dwRecLen = 0x2FCC
TFTP: Desktop losing ACK, block number = 1970, Ack again
 <> Record [ 8 ] dwRecAddr = 0x800FE000, dwRecLen = 0xA13CC
 <> Record [ 9 ] dwRecAddr = 0x801A0000, dwRecLen = 0x611C
TFTP: Desktop losing ACK, block number = 3283, Ack again
 <> Record [ 10 ] dwRecAddr = 0x801A7000, dwRecLen = 0x1080
 <> Record [ 11 ] dwRecAddr = 0x801A9000, dwRecLen = 0x9F17C
 <> Record [ 12 ] dwRecAddr = 0x80249000, dwRecLen = 0x50E0
TFTP: Desktop losing ACK, block number = 4613, Ack again
 <> Record [ 13 ] dwRecAddr = 0x8024F000, dwRecLen = 0x11C
 <> Record [ 14 ] dwRecAddr = 0x80250000, dwRecLen = 0x1305C
 <> Record [ 15 ] dwRecAddr = 0x80264000, dwRecLen = 0x410
 <> Record [ 16 ] dwRecAddr = 0x80265000, dwRecLen = 0x1305C
 <> Record [ 17 ] dwRecAddr = 0x80279000, dwRecLen = 0x410
 <> Record [ 18 ] dwRecAddr = 0x8027A000, dwRecLen = 0x7E53C
 <> Record [ 19 ] dwRecAddr = 0x802F853C, dwRecLen = 0x680
TFTP: Desktop losing ACK, block number = 5973, Ack again
 <> Record [ 20 ] dwRecAddr = 0x802F9000, dwRecLen = 0x2438
 <> Record [ 21 ] dwRecAddr = 0x802FC000, dwRecLen = 0xA4
 <> Record [ 22 ] dwRecAddr = 0x802FD000, dwRecLen = 0x3208
 <> Record [ 23 ] dwRecAddr = 0x80301000, dwRecLen = 0xFE0
 <> Record [ 24 ] dwRecAddr = 0x80302000, dwRecLen = 0x90
 <> Record [ 25 ] dwRecAddr = 0x80303000, dwRecLen = 0x5FE8
 <> Record [ 26 ] dwRecAddr = 0x80309000, dwRecLen = 0x350
 <> Record [ 27 ] dwRecAddr = 0x8030A000, dwRecLen = 0x250C8
 <> Record [ 28 ] dwRecAddr = 0x80330000, dwRecLen = 0x7330
 <> Record [ 29 ] dwRecAddr = 0x80338000, dwRecLen = 0x113E8
 <> Record [ 30 ] dwRecAddr = 0x8034A000, dwRecLen = 0x361A0
 <> Record [ 31 ] dwRecAddr = 0x80381000, dwRecLen = 0x5F30
 <> Record [ 32 ] dwRecAddr = 0x80387000, dwRecLen = 0x1F0
 <> Record [ 33 ] dwRecAddr = 0x80388000, dwRecLen = 0x18FCC
 <> Record [ 34 ] dwRecAddr = 0x803A1000, dwRecLen = 0x16C18
 <> Record [ 35 ] dwRecAddr = 0x803B8000, dwRecLen = 0x1324
 <> Record [ 36 ] dwRecAddr = 0x803BA000, dwRecLen = 0x16C18
 <> Record [ 37 ] dwRecAddr = 0x803D1000, dwRecLen = 0x1324
 <> Record [ 38 ] dwRecAddr = 0x803D3000, dwRecLen = 0xA030
 <> Record [ 39 ] dwRecAddr = 0x803DE000, dwRecLen = 0x3D8
 <> Record [ 40 ] dwRecAddr = 0x803DF000, dwRecLen = 0x11FEC
 <> Record [ 41 ] dwRecAddr = 0x803F1000, dwRecLen = 0x328
 <> Record [ 42 ] dwRecAddr = 0x803F2000, dwRecLen = 0x5168
 <> Record [ 43 ] dwRecAddr = 0x803F8000, dwRecLen = 0x2128
 <> Record [ 44 ] dwRecAddr = 0x803FB000, dwRecLen = 0x2128
 <> Record [ 45 ] dwRecAddr = 0x803FE000, dwRecLen = 0x3FC3C
 <> Record [ 46 ] dwRecAddr = 0x8043E000, dwRecLen = 0xD208
 <> Record [ 47 ] dwRecAddr = 0x8044C000, dwRecLen = 0x171F8
 <> Record [ 48 ] dwRecAddr = 0x80464000, dwRecLen = 0xCA0
 <> Record [ 49 ] dwRecAddr = 0x80465000, dwRecLen = 0x35FFC
 <> Record [ 50 ] dwRecAddr = 0x8049B000, dwRecLen = 0x15B5C
 <> Record [ 51 ] dwRecAddr = 0x804B1000, dwRecLen = 0xFF0
 <> Record [ 52 ] dwRecAddr = 0x804B2000, dwRecLen = 0x3118
 <> Record [ 53 ] dwRecAddr = 0x804B6000, dwRecLen = 0x23FC
 <> Record [ 54 ] dwRecAddr = 0x804B9000, dwRecLen = 0x118
 <> Record [ 55 ] dwRecAddr = 0x804BA000, dwRecLen = 0x202D0
 <> Record [ 56 ] dwRecAddr = 0x804DB000, dwRecLen = 0x50F0
 <> Record [ 57 ] dwRecAddr = 0x804E1000, dwRecLen = 0x20B8
 <> Record [ 58 ] dwRecAddr = 0x804E4000, dwRecLen = 0x10A8
 <> Record [ 59 ] dwRecAddr = 0x804E6000, dwRecLen = 0xC02C
 <> Record [ 60 ] dwRecAddr = 0x804F3000, dwRecLen = 0xF88
 <> Record [ 61 ] dwRecAddr = 0x804F4000, dwRecLen = 0xC02C
 <> Record [ 62 ] dwRecAddr = 0x80501000, dwRecLen = 0xBA8
 <> Record [ 63 ] dwRecAddr = 0x80502000, dwRecLen = 0x1030
 <> Record [ 64 ] dwRecAddr = 0x80504000, dwRecLen = 0xF0
 <> Record [ 65 ] dwRecAddr = 0x80505000, dwRecLen = 0xC420
 <> Record [ 66 ] dwRecAddr = 0x80512000, dwRecLen = 0xFE0
 <> Record [ 67 ] dwRecAddr = 0x80513000, dwRecLen = 0x7F8C
 <> Record [ 68 ] dwRecAddr = 0x8051B000, dwRecLen = 0x1B0
 <> Record [ 69 ] dwRecAddr = 0x8051C000, dwRecLen = 0x72C8
 <> Record [ 70 ] dwRecAddr = 0x80524000, dwRecLen = 0x298
 <> Record [ 71 ] dwRecAddr = 0x80525000, dwRecLen = 0x5FC8
 <> Record [ 72 ] dwRecAddr = 0x8052B000, dwRecLen = 0x1B0
 <> Record [ 73 ] dwRecAddr = 0x8052C000, dwRecLen = 0x3118
 <> Record [ 74 ] dwRecAddr = 0x80530000, dwRecLen = 0xEA48
 <> Record [ 75 ] dwRecAddr = 0x8053F000, dwRecLen = 0x480
 <> Record [ 76 ] dwRecAddr = 0x8053F480, dwRecLen = 0x54
rom_offset=0xFC000000.
 <> Record [ 77 ] dwRecAddr = 0x8053F4D4, dwRecLen = 0x670
 <> Record [ 78 ] dwRecAddr = 0x80540000, dwRecLen = 0x4138
 <> Record [ 79 ] dwRecAddr = 0x80545000, dwRecLen = 0x1D0E8
 <> Record [ 80 ] dwRecAddr = 0x80563000, dwRecLen = 0xFD4
 <> Record [ 81 ] dwRecAddr = 0x80564000, dwRecLen = 0x19250
 <> Record [ 82 ] dwRecAddr = 0x0, dwRecLen = 0x8000BE0C
ImageStart = 0x80001000, ImageLength = 0x57C250, LaunchAddr = 0x8000BE0C
Computing checksum: image start = 0x80001000, len = 0x57C250
Checksum = 0x1EEC817D (0x57C250 bytes)

Completed file(s):
-------------------------------------------------------------------------------
[0]: Address=0x80001000  Length=0x57C250  Name="" Target=FLASH

Writing NK image to OS partition
IsValidMBR: MBR sector = 0x380 (valid MBR)
OpenPartition: Partition Exists=0x1 for part 0x20.
BP_SetDataPointer at 0x57c250
BP_SetDataPointer at 0x0
WriteData: Start = 0x0, Length = 0x57c250.
Log2Phys: Logical 0x1 -> Physical 0x381
NK image written
ROMHDR at Address 80001044h
Got EDBG_CMD_JUMPIMG
Got EDBG_CMD_CONFIG, flags:0x00000000
IsValidMBR: MBR sector = 0x380 (valid MBR)
OpenPartition: Partition Exists=0x1 for part 0x20.
BP_SetDataPointer at 0x0
ReadData: Start = 0x0, Length = 0x1000.
Log2Phys: Logical 0x1 -> Physical 0x381
ReadData: Start = 0x1000, Length = 0x53d4d4.
Log2Phys: Logical 0x3 -> Physical 0x383
ReadData: Start = 0x53e4d4, Length = 0x3dd7c.
Log2Phys: Logical 0xa7d -> Physical 0xdfd
Launch Windows CE image by jumping to 0x80001000...

Windows CE Kernel for ARM (Thumb Enabled) Built on Sep 25 2009 at 11:06:11
ProcessorType=0c08  Revision=3
OEMAddressTable = 8400beac
CPU CP15 Control Register = 0xc5387f
CPU CP15 Auxiliary Control Register = 0xe3
--- High Performance Frequecy is 32768 khz---



Make NAND NK.bin image the default boot device
  1. Reboot and break into EBOOT
  2. Select Boot Device to be NK from NAND
  3. Disable KITL via Network Settings Menu
  4. Back out to main menu
  5. Save Settings
  6. Reboot

Subsequent reboots will look like this

Texas Instruments Windows CE NAND X-Loader for EVM 3530
Built Nov 16 2009 at 21:58:22
Version 6.12.03
..
Jumping to bootloader

Microsoft Windows CE Bootloader Common Library Version 1.4 Built Nov 16 2009 22:
11:24

Texas Instruments Windows CE EBOOT for Mistral OMAP EVM, Built Nov 16 2009 at 22
:14:17
EBOOT Version 1.1, BSP 6.12.03

TI OMAP3530 Version 0x3b7ae02f (ES3.0)
TPS659XX Version 0x50 (ES3.1)
System ready!
Preparing for download...
INFO: Predownload....
Checking bootloader blocks are marked as reserved (Num = 14)

INFO: Boot configuration found
IsValidMBR: MBR sector = 0x380 (valid MBR)
OpenPartition: Partition Exists=0x1 for part 0x20.

>>> Forcing cold boot (non-persistent registry and other data will be wiped) <<<

Hit space to enter configuration menu 5...
Hit space to enter configuration menu 4...
Hit space to enter configuration menu 3...
Hit space to enter configuration menu 2...
Hit space to enter configuration menu 1...
IsValidMBR: MBR sector = 0x380 (valid MBR)
OpenPartition: Partition Exists=0x1 for part 0x20.
BP_SetDataPointer at 0x0
ReadData: Start = 0x0, Length = 0x1000.
Log2Phys: Logical 0x1 -> Physical 0x381
ReadData: Start = 0x1000, Length = 0x53d4d4.
Log2Phys: Logical 0x3 -> Physical 0x383
ReadData: Start = 0x53e4d4, Length = 0x3dd7c.
Log2Phys: Logical 0xa7d -> Physical 0xdfd
Launch Windows CE image by jumping to 0x80001000...

Windows CE Kernel for ARM (Thumb Enabled) Built on Sep 25 2009 at 11:06:11
ProcessorType=0c08  Revision=3
OEMAddressTable = 8400beac
CPU CP15 Control Register = 0xc5387f
CPU CP15 Auxiliary Control Register = 0xe3
--- High Performance Frequecy is 32768 khz---
Changed KITL zone mask to 0x00008001
WARN: OALKitlInit: KITL Disabled


Last edited Nov 18, 2009 at 4:14 AM by joelw, version 7

Comments

nathasion Sep 27, 2010 at 10:47 AM 
hi Joel,

thanks for tutorial, it is very helping.

Still, I have a question about what you wrote above I quote:"If you have done your homework [...], and your Connectivity Options are correct [...]". ?
It seems to me that my connectivity options are not correctly set, and I have no idea about how to set them in the right way.
As I do "attach the device", I see the yellow triangle on the little computer icon near the clock, and a message is saying, "limited or no connectivity".
Could you please explain how to configure network settings?

Thank you very much for helping.

Nathaniel