how to boot a L1 from a CORTEX M3

Technical discussions around xCORE processors (e.g. xcore-200 & xcore.ai).
dirk1980
Active Member
Posts: 32
Joined: Fri Oct 07, 2011 3:20 pm

how to boot a L1 from a CORTEX M3

Post by dirk1980 »

Hi,

i need for a new project a cortex M3 (LPC 1769) and of course a L1 for some Hardware parts.

How can i boot the L1 from the M3?

Kind regards,
Dirk


User avatar
Bianco
XCore Expert
Posts: 754
Joined: Thu Dec 10, 2009 6:56 pm

Post by Bianco »

Mimic a flash device or implement an Xlink on the ARM processor or implement JTAG on the ARM controller. Basically every option can be done that the XMOS processor has :).

I would problably go for mimicking a flash device.
User avatar
segher
XCore Expert
Posts: 844
Joined: Sun Jul 11, 2010 1:31 am

Post by segher »

Bianco wrote:Mimic a flash device or implement an Xlink on the ARM processor or implement JTAG on the ARM controller. Basically every option can be done that the XMOS processor has :).

I would problably go for mimicking a flash device.
It depends what you want to do. Emulating a flash device is the least
flexible, and the hardest to get working properly too, in my experience
(timing matters a lot on SPI, and the M3, being the slave side, doesn't
get to stretch clocks etc.)

With the xlink you get a nice communication channel for your M3 code
to talk to your xcore code.

With the JTAG you get much superior debugging.

There of course is a fourth option as well: boot from an actual SPI flash
chip. This is the safest choice if you're on a tight schedule.

Or a combination of any of these. Choices choices :-)
User avatar
Folknology
XCore Legend
Posts: 1274
Joined: Thu Dec 10, 2009 10:20 pm

Post by Folknology »

segher wrote:
Bianco wrote:Mimic a flash device or implement an Xlink on the ARM processor or implement JTAG on the ARM controller. Basically every option can be done that the XMOS processor has :).

I would problably go for mimicking a flash device.
It depends what you want to do. Emulating a flash device is the least
flexible, and the hardest to get working properly too, in my experience
(timing matters a lot on SPI, and the M3, being the slave side, doesn't
get to stretch clocks etc.)

With the xlink you get a nice communication channel for your M3 code
to talk to your xcore code.

With the JTAG you get much superior debugging.

There of course is a fourth option as well: boot from an actual SPI flash
chip. This is the safest choice if you're on a tight schedule.

Or a combination of any of these. Choices choices :-)

The xlink route is preferable for a several reasons if you can make it work:

1) Versus SPI flash emulation means you don't have to tie up 4 of you valuable 1 bit ports on the Xmos side
2) You can also use it to talk to ARM cortex M chips generically to perform other tasks that appear as a simple service on the Xmos dev side, I can think of several cases where this would be useful.
3) It could possibly be faster than SPI depending on chip used,
4) JTAG is an entirely different proposition and there are already solutions out there either FTDI or XS1 based.
5) It would be a useful introduction and a great way to learn about Xmos channels and boot sequencing
6) An ARM xlink implementation would be very cool, if opensourced would definitely be something I and probably others would build on.

Just my $0.02

regards
Al
dirk1980
Active Member
Posts: 32
Joined: Fri Oct 07, 2011 3:20 pm

Post by dirk1980 »

Well the reason why i will boot from the CORTEX M3 is, i have 512K Flash and i can update the System this way very easy. And i can change the Program of the L1 (switch between 2 or more Program's).

To mimic a flash device is hard?! Bad news, this was my favourite way.
To implement a JTAG would be nice, may be the easiest way!
But i need the debug system for debugging my XMOS program. So i can't use it.

If i understand you all right i should use xlink.
Can the XMOS boot over xlink? Or must i write a program on the Xmos so that he can do it?
What about the speed? Xlink is fast, can i make it slow to work with the M3?

But when i must write a boot loader program on the XMOS, than i can write everything i will (SPI / I²C/ ...). But i can't change the bootloader from the M3.

EDIT:
Ok the XMOS can boot over xlink i don't need a program!
But i didn't found how the system is working.

Kind regards,
Dirk
User avatar
Folknology
XCore Legend
Posts: 1274
Joined: Thu Dec 10, 2009 10:20 pm

Post by Folknology »

Checkout the L systems doc, it covers boot procedures etc..

http://www.xmos.com/published/xs1-l-sys ... ion=latest

(2.3 Boot from XMOS Link)

Once you implement Xmos link specification (section 3) on the Arm it should be straight forward by connecting link B to the arm link GPIO pins.

regards
Al
User avatar
Ross
XCore Expert
Posts: 968
Joined: Thu Dec 10, 2009 9:20 pm
Location: Bristol, UK

Post by Ross »

Normally, in my experience, most people go for the SPI option. Either from the other MCU or a shared flash. The MCU typically also takes the XCore out of reset.

(Not saying this is the best/correct answer.. just one that seems the most popular in the field)