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.

L-138 Ethernet reprogramming for SYS/BIOS apps

Other Parts Discussed in Thread: CCSTUDIO

We developed a board based on the L-138 last year.  We need to develop capability for our customer to replace the ARM, DSP, and PRU programs via ethernet.  We are going to use SYS/BIOS and the NDK (i.e., no Linux).  We currently use the NANDWRITER utility to flash our NAND device, and AISGen, but need advice or tools/articles/examples that can be used to do the NAND write in-system.  We have plenty of NAND so we can just set a flag and run a simple main() on the ARM to determine which block of NAND to execute. 

Help would be appreciated!  New team with limited experience on this board...

  • We're using PSP NAND driver for the C6748, trying to get it up and running on CCStudio 5.2. 

  • Dave,

    Are you currently using the serial flash and boot utilities to write to NAND. If you look at the way, the Serial flashing utilities work, the utility basically loads an runs a target program sft  that reads the image over UART and then writes it to the NAND Flash. This is basically possible because the device supports UART boot mode in which the device can sense a boot image on the UART boot media.

    However to do the same with Ethernet, you will need a control switch which basically gets read in a secondary boot loader, every time the device boots to check if the device is being booted to start the application or to do an update over ethernet. Which means that when you flash the device for the first time, you store 2 images on the flash, one is the application image and the other is the boot image that gets used to update the flash over Ethernet based on the setting read from the switch in the secondary boot loader code. I don`t think there is an example implementation .

    Boot Scenerios with switch to update code.

    Scenerio 1: ROM boot--> Secondary bootloader -->[Read Switch (0)]-----> Application boots

    Scenerio 2: ROM boot--> Secondary bootloader --> [Read Switch (1)]------>Intialize Ethernet and read image over ethernet and flash the NAND

    Hope this helps.

    Regards,

    Rahul

  • Thanks Rahul,

    We were able to build the secondary bootloader, and it works fine, but the loaded programs are intermittent.  Our interface to upload the new programs to NAND is ethernet, and that is working.

    The intermittent behavior is hard to debug.  Once program control is handed off to the new ARM program via its c_int00 address, we lose capability to step through the program.  Prior to the jump and close command of the ARMBoot loader, we shut down the dsp (set to reset).  The new ARM program, as part of initiation steps, restarts the DSP.  Sometimes it works, sometimes it doesn't.  We are pretty certain our NAND read/write routines are working well (by dumping the NAND to a buffer and comparing it to our boot image prior to upload), and stepping through the AIS decoder we wrote.  

    When it fails, the DSP is held in reset, is not woken up, and the new ARM program goes to an abort location.  We are thinking it might be something about the DSP reset or even possibly some memory clobbering 

    I know this is probably not enough information to garner much help; perhaps someone has had a similar issue and could offer a debug tactic.

    Respectfully,

    Dave