Hello!
I am working on C6670. We are planning Ethernet boot as primary boot option for our system. So far I have tried simple application from mcsdk_2_01_02_06\tools\boot_loader\examples\ethernet. As I picked up from the example, the process consists of several steps:
- Build .out executable using CCS.
- Convert .out executable to boot table using hex6x HEX conversion utility.
- As boot table likely to be in little endian format, convert it to big endian using bconvert64x utility.
- Next take boot table in big endian format and slice in packets using bootpacket utility.
- Load packets to DSP using pcsendpkt utility.
Easy to guess, we don't like step 4, which stores packets in text format. We'd rather store binary files on host's filesystem. Please advise,where to read about that.
Peeping at TI's utilities source code, I am trying to make our custom solution and need more information about TI utilities internals. When I look inside pcsendpkt, it just reads packet payloads from text file and sends them to net through the socket. There is a code for skipping Ethernet, IP, and UDP headers. In other words, whole Ethernet fame is available to us after bootpacket, though probably malformed. I'd ilke to know intention behind this. I can guess, we want to write on UDP socket, rather then on RAW Ethernet. However, I already prepared application which catches Ethernet ready frame and extracts DSP's MAC address. So I don't mind sending RAW Ethernet directly to DSP's hardware address.
Next, there is ugly delay code in pcsendpkt. Needless to say that useless loops may get optimized away and produce non-consistent delays on different platforms. I'd like to know, what is requirement for delays between frames in Ethernet boot process in time units.
According to Table 3-10 of SPRUGY5B KeyStone Architecture Bootloader User Guide,
Boot Table Frame Payload (min 4 bytes, max limited by max Ethernet frame - previous headers)
Ethernet frame could be up to 1514 bytes long, deduct 14 for Ethernet, 20 for IP, 8 for UDP headers, 4 for FCS - that would allow at least 1468 bytes of payload. However, I've noticed, that bootpacket utility produces much shorter frames with UDP payload of just 244 bytes. What is a reason for that? Where I could read about that?
Thanks in advance