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.

Development on the Beagleboard-xM

Other Parts Discussed in Thread: DM3730, OMAP3530, CCSTUDIO, DM3725

For development on the DM3730 I had a choice between the expensive DM37x Evaluation Module and the economical BeagleBoard XM (BBXM), I opted for the BBXM.

Later I came across this statement on the BeagleBoard  site that the

"the BeagleBoard-xM is not intended to be a complete development environment, but rather a community-supported platform that can be used as the basis for building more complete development systems and as a target for community software baselines"

1. I was wondering, what could I do on the DM37x Evaluation Module that I can't on a BBxM?

2. Most of the development boards come with an OS pre-installed, Is it necessary to install an OS on these boards to get it to work. For development isn't it possible to just dish out your own "bare metal" system similar to what a person would do on a microcontroller? Doesn't the OS utilize important CPU resources that could have been put into use for other important tasks/processing?

3. The BBXM has 2 cores how do I debug both of these cores, is it possible? What kind of debugger would I need to use here?

Regards,

Ken

 


  • Ken Leigh said:
    1. I was wondering, what could I do on the DM37x Evaluation Module that I can't on a BBxM?

    Touchscreen LCD, A/V inputs, daughtercard interface

    Ken Leigh said:
    2. Most of the development boards come with an OS pre-installed, Is it necessary to install an OS on these boards to get it to work. For development isn't it possible to just dish out your own "bare metal" system similar to what a person would do on a microcontroller? Doesn't the OS utilize important CPU resources that could have been put into use for other important tasks/processing?

    Necessary?  No, but highly recommended.  Here's something to consider.  In order for the processor to perform well you need to "feed it" instructions and data.  In order to do that well you need program and data cache enabled (orders of magnitude performance difference).  The cache is enabled/configured through the MMU entries so you would need the MMU configured as well.  So basically just to get started writing any kind of code you would need to program the MMU and the cache configuration (and the associated context switching).  Nasty.  Want ethernet?  Want USB?  What about file systems?

    I won't pretend that everything is super easy using Linux or WinCE, but it certainly makes these immensely complicated devices easier to use.

    There might be a more lightweight OS offered in the future but for right now Linux, WinCE, and a handful of others are the main players.

    Ken Leigh said:
    3. The BBXM has 2 cores how do I debug both of these cores, is it possible? What kind of debugger would I need to use here?

    If you're "bare metal" you could use CCS for both cores.  Things get a lot more complicated as you add Linux processes, dynamic libraries, etc.  Generally in that case you would use GDB.  For DSP debug you can use CCS.

     

  • Thanks  for the answers Brad,

    Considering that I'm a noob with linux related embedded systems and and am using this processor for the first time:

    1. Do you recommend going the bare metal way or the linux way.

    2. Would I need to buy commercial development tools like compilers, emulators, debuggers etc. for the arm / dsp development of the DM3730 on the BeagleBoard. Are there any open source versions available?

    3. Any references for books or websites that I could go through to get my concepts at this level of embedded development. Prior to this I have worked on embedded but only on the 8/16 bit micro-controller level. So I don't have much info about MMU's, working with os's etc.

    4. I bought the Beagleboard XM to interface to a camera, capture images and do some image processing. Would I need some Linux drivers for this, or do I need to write my own driver for this.

    5. Lastly, does the OS somewhat limit the cpu usage for other processes, I mean If I had a bare metal system would my algorithms run much faster on that system than a system with an OS installed? Won't the OS utilize some cpu cycles for its own internal processes ?

    Ken

     

     

  • Ken Leigh said:
    1. Do you recommend going the bare metal way or the linux way.

    What is it that you ultimately want to do?  Generally speaking I would strongly recommend using Linux or another high-level OS.

    Ken Leigh said:
    2. Would I need to buy commercial development tools like compilers, emulators, debuggers etc. for the arm / dsp development of the DM3730 on the BeagleBoard. Are there any open source versions available?

    No, it's not required.  We use the free codesourcery tools for all the ARM development.  You can use Eclipse as your (free) IDE.  You can download CCS for free if you wish to do DSP development.  Or perhaps better yet you might want to check out a couple new tools for harnessing the DSP: C6accel and C6run.

    Ken Leigh said:
    3. Any references for books or websites that I could go through to get my concepts at this level of embedded development. Prior to this I have worked on embedded but only on the 8/16 bit micro-controller level. So I don't have much info about MMU's, working with os's etc.

    There are a ton of tutorials, primers, books, etc for Linux.  I'm sure you won't have a problem finding info!

    Ken Leigh said:
    4. I bought the Beagleboard XM to interface to a camera, capture images and do some image processing. Would I need some Linux drivers for this, or do I need to write my own driver for this.

    I don't know all the details off the top of my head, but you will definitely want to utilize an existing driver.  So in choosing your camera a major decision factor should be the existence of a driver!  The camera hardware in DM3730 is extremely sophisticated.  That subsystem alone probably takes up more gates than your previous processor! :)

    Ken Leigh said:
    5. Lastly, does the OS somewhat limit the cpu usage for other processes, I mean If I had a bare metal system would my algorithms run much faster on that system than a system with an OS installed? Won't the OS utilize some cpu cycles for its own internal processes ?

    Not at all.  These devices have a TON of horsepower.  If you're doing anything that comes anywhere close to using all of it then I imagine you will need lots of services offered by the OS in any case!

  • Hi Brad,

    <quote>If you're "bare metal" you could use CCS for both cores.  Things get a lot more complicated as you add Linux processes, dynamic libraries, etc.  Generally in that case you would use GDB.  For DSP debug you can use CCS</quote>

    Can you use Linux Aware Debugging simultaneously with debugging two cores (ARM/DSP) in CCSv4 and CCSv5 ?

    To be honest, I haven't tried, but I can't see anything obvious which should stop this from working seen from a pure technical point of view?

    Best regards and thanks
      Søren

  • (Side note: When replying to a post you can highlight specific text in the window and click "quote" and it will only quote that specific text.)

    Søren Steen Christensen said:

    Can you use Linux Aware Debugging simultaneously with debugging two cores (ARM/DSP) in CCSv4 and CCSv5 ?

    To be honest, I haven't tried, but I can't see anything obvious which should stop this from working seen from a pure technical point of view?

    I haven't tried it either and also assume this would work.  I see no reason it wouldn't.  You could post on the CCS forum if you want to pursue it further.

  • Brad Griffis said:

    (Side note: When replying to a post you can highlight specific text in the window and click "quote" and it will only quote that specific text.)

    Smart - I don't know why I missed this - Thanks for updating me. :-)

    I might give the combined DSP/ARM Linux debugging a try and report back if I find a little spare time (most likely not to happen in the near future though). My main reason for putting the question here was that people reading could get the impression from your previous answer that it was either/or and that a combination of ARM Linux-aware- and DSP-debugging simultaneously in CCS wouldn't be possible...

    Best regards and thanks for getting back to me this fast
      Søren

  • Søren Steen Christensen said:
    I might give the combined DSP/ARM Linux debugging a try and report back if I find a little spare time (most likely not to happen in the near future though).

    Please do!  It's been on my list for a while too.  It seems like I never get to it though!  I'll try to find this thread if I beat you to it. :)

    Søren Steen Christensen said:
    My main reason for putting the question here was that people reading could get the impression from your previous answer that it was either/or and that a combination of ARM Linux-aware- and DSP-debugging simultaneously in CCS wouldn't be possible...

    Good point.  Thanks for filling in the cracks, and thanks for your numerous contributions to the community!

    Best regards,
    Brad

  • Hi,

    I got a follow up question. I wanted to connect to our Beagleboard-xM using a SD XDS510USB emulator + Low Voltage Converter and CCS 3.3. However, I could not configure CCS for the DM3730 since there is no configuration available for it. I tried several OMAP3530 configurations, but none worked out. I wonder if this is the same for those guys using a DM3730 evaluation board. I guess any solution to this on the EVM might also work on the xM. Any ideas?

    At the moment I'm running Ubuntu 10.10 Maverick Netbook Release which works quite well. Running an OS per se does not prevent from connecting to the targets via JTAG right?

    Regards

  • Opel Fahrer said:
    I got a follow up question. I wanted to connect to our Beagleboard-xM using a SD XDS510USB emulator + Low Voltage Converter and CCS 3.3.

    Hmmm, that's a bit tricky. Does this adapter also have adaptive clocking support?  If so, you should try turning it off.  Some of our older devices (like DM6446) required the adaptive clocking on the external adapter but more recent devices do not.  In fact, my experience is that the adaptive clocking on the adapter will actually prevent you from connecting!  So to summarize you DO want the voltage translation but you DO NOT want adaptive clocking in that adapter.

    You might want to check out this thread where I was having all kinds of troubles!  :)

    http://e2e.ti.com/support/development_tools/code_composer_studio/f/81/t/47797.aspx

  • I've been collecting appropriate CCS config and GEL files for OMAP and Sitara devices here (still work in progress):  http://processors.wiki.ti.com/index.php/OMAP_and_Sitara_CCS_support

    You should be able to use the 37x files for the Beagle XM board.

    Regards,

    James

  • Hi,

    as suggested from Brad, I disabled the adaptive clocking support (now it's BYPASS). I downloaded the configuration file you pointed me to and imported it. I also downloaded the GEL files and overwrote the other ones in CCStudio_v3.3\cc\gel.

    The connection to the board partially succeeds. There are some things that I'm not quite sure about. Probably you can help me with one or the other. I powered the device without OS. On connecting to the target, the first dialog is


    Error connecting to the target:
    Error 0x80000244/-1178
    Fatal Error during: Register, Initialization, OCS,
    The target does not have a CPU clock.


    I/O Port = 510

    Board Name: Spectrum Digital - DM3730,DM3725
    Cpu Name: C6400PLUS_0

    Abort:        Close Code Composer Studio.
    Retry:        Try to connect to the target again.
    Cancel:        Remain disconnected from the target
    Diagnostic:    Run diagnostic utility.


    On Cancel, a second dialog pops up, which is


    Trouble Halting Target CPU:

    Error 0x00000020/-2011

    Error during: Execution,

    An internal error occured in which an illegal action (0x00000000) was requested while disconnected


    Finally it seems that half of the units is connected, and half is not (DSP for example). I know that everything is still under development, however, is this the expected outcome, or is there something going wrong with my configuration?

    Regards,

     

     

     

     

  • Opel, you should try just connecting to the CortexA_0 first.  After connecting to this, you need to run GEL->IVA2200_Startup->IVA22_GEM_Startup, which brings the DSP out of reset.  Then you can go to C6400PLUS to connect to that. 

    Also, ensure that you have 3.3V with your converter.

    Regards,

    James

  • James,

    thanks a lot for the clarification. I tried to run the startup procedure, and I get


    Warning: Error 0x40000002/-1065 Warning during: Memory,  Invalid memory access at 0x00000000


    multiple times, and finally the message that the C64x+ was released from reset. Although it does something, I still fail to connect to the DSP.

    JJD said:

    Also, ensure that you have 3.3V with your converter.

    Ok, what do you exactly mean? My XDS510USB only speaks 3.3V normally. I tried to connect to another DSP board with and without the converter, and it worked out fine. So I guess, the configuration might be ok and the emulator should work. However, I'm worried about the message I get from the reset procedure...

    Regards...

     

     

     

     

  • Your JTAG pod only works with 3.3V, and Beagle I/O is only 1.8V.  I'm not sure what kind of converter you have.  I just wanted to make sure your converter is really doing a voltage translation of the JTAG signals.  With the converter attached, you should be able to measure 3.3V at pin 5 of the JTAG connector. 

    Regards,

    James

  • well, it I use this one:

    http://www.spectrumdigital.com/product_info.php?cPath=22_49&products_id=172&osCsid=5a9600badd0b2de50693687791661c97

    and the 3.3V are there, so it should work as expected. I just can't figure out why nothing happens to the DSP if I run the GEL->init stuff you mentioned... probably it doesn't wake up the DSP and the message it gives me is really an error... the question is just, what can I do about it?

    Regards..

  • hey Brad,

    we are trying to implement Ethernet functionality on Beagleboard-xM(DM-3730) using bare metal programming...(without any OS, using ccs4).

    Which memory space of OMAP3530/DM-3730 is to be adressed for configuring ethernet.

    regards

    shashank

  • shashank uppoor said:
    we are trying to implement Ethernet functionality on Beagleboard-xM(DM-3730) using bare metal programming...(without any OS, using ccs4).

    You are welcome to try this out yourself, but to be blunt you are going to have great difficulty getting any support from TI in this effort.

    shashank uppoor said:
    Which memory space of OMAP3530/DM-3730 is to be adressed for configuring ethernet.

    Which GPMC space?  You need to look at the schematic to see which chip select is connected to the Ethernet MAC/PHY.