Page 1 of 1

Putting a code in RAM with SAMBA

Posted: Tue Jan 15, 2008 6:56 pm
by z258_14
Hello All,

I want to test AT91SAM7X256-based boards in production (and so I need minimal user interaction). Each board has several external modules that need to be tested. I want to implement the following scenario but have some problems:

1. There is a PC software, it detects when a non-programmed board (that is running SAMBA) is plugged into USB, it opens the usb port and can send/receive SAMBA commands/replies to/from the board (or similarly I can use the AT91BOOT_DLL.dll, although I prefer the direct approach). This part is almost finished and is working without any problem.

2. I should develop a code for ARM that tests the board, I want to send the image to ARM using SAMBA and put it in RAM, then using the {G}o command in SAMBA run the code. The code tests the board and uppon completion, sends a report over USB and returns control to SAMBA.

3. Upon receiving the success signal from test report in the PC part, it sends the main FW to be put in flash.

Now my problems:

A. Is there a sample IAR code that can be put in RAM and can co-exist with SAMBA ? I assume, that I shouldn't overwrite the SAMBA code but don't know if any other requirement should be met.

B. My scenario, requires sending the report over USB from the code, as I don't have the code for SAMBA, I can assume writing directly to USB will do the job, but I have to test it.

C. After the testing is finished, the control should be returned to SAMBA (as I don't want to loose the USB connection, if the ARM is reset the enumeration should be done again). How can I do that ?

D. I can also do a similar approach as the AT91-ISP, where all the registers are programmed remotely using SAMBA commands, and basically implement my test code using SAMBA commands. It is very time-consuming and I'm not even sure that I can do all that I want using SAMBA commands.

I appreciate your comments about the above scenario. Is it possible ? The objective is that somebody plugs the board into USB, it is automatically detected, tested and programmed (if test was successful), then they can unplug the board and plug another one. How can I achieve that ?

Sorry for the long post, and thank you in advance for your comments,