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.

Creating a new CSS5 project for Beaglebone

Other Parts Discussed in Thread: AM3359

Hello,

I am having some problems creating a new project for my Beaglebone from the CSS5, using starterware.

For the beginning, I compiled the gpio (LED blink) example, put it on SD card and it worked. Then I tried creating a new CSS5 project for the AM3359, put the same gpio LED blink code in, set the include paths, set the post-build instructions... and build fails due-to unresolved symbols. Naturally, the linker does not know where to find the gpio and clock functions. How do I tell the linker, where those functions are? I've looked through the example project for the LED blink, and there are no linking instructions inside, which is kinda weird.

Annother strange thing happened when I've tried to put all driver files into my new project. I've copied in:

- gpio_v2.c

cache.c

clock.c

cp15.asm

cpu.c

exceptionhandler.asm

init.asm

interrupt.c

mmu.c

startup.c

And after that the project did compile and create .bin and _ti.bin. The problem is that the application does not work; the bootloader starts but then the LED does not blink.

I would be very happy for any suggestions on what to do.

Thanks to all.

  • you need to compiler the other lib projects like system, platform, drivers and link it to the main project executable.

    In the existing projects the lib link is configured in cmd file which is under build directory.

    Regards

    Baskaran

  • Thanks! I didn't even think of looking into the .cmd file. Anyways, I've compiled the libraries, put them into the linker and bang, it worked straight away. 

    Thanks again for you time!

  • One more thing I've noticed in the gpioLEDBlink example. The delay is generated with a while loop:

    count = 0x3FFFF;

    While(count--);

    LED blinks about every second, so the CPU is doing 2 * 0x3FFFF = 500.000 iterations of the while loop every second. This seems very very very slow for a processor running at 720MHz. Is there a reason the CPU is running slow in this example?

    Thanks!

  •   Jure, you are further along then me. I can not get my .out file from CCS converted to a bin and load it in the SD memory card. Did you find an application to tell you how to do that? I have it converted to binary, but am not able to get it on the the BeagleBone's SD card. If you what any suggestions i would really appreciate hearing.

    The problem that i found with starterware, is that each one of the test programs has its own lib and they need to be added to CCS project path. I found i could import them just fine, but when i used different test as an example to build my code, the linker could not find the symbols. In my application, i wanted to use code from GPIO, SPI, and COMM. Another issue i had was that there are calls that are not explaned anywhere.

     

    Thanks & Regards

    Larry

  • Hi

    This is my problem too. Why instructions execute very slower than CPU speed. I think we should set and enable some cache and shared memory, but I do not konw how we can do it.

    is there anyone to know?

    Amin

  • For enabling the cache please refer \\StarterWare\examples\evmskAM335x\uart\uartEcho.c  function MMUConfigAndEnable().

    The clock for MPU (A8) is configured to run at 720Mhz. I am not sure if it really runs slow.

    In the calc in earlier post 2 * 0x3FFFF = 500.000, i am not sure how the number 2 is arrived at (2 assembly instructions for loop iteration?)

    regards

    Baskaran

  • Thanks Baskaran!

    I enabled the MMU and Chache, like in the uartEcho.c example and the processor now runs much faster. The number 2 you've asked about comes from the blink rutene. Delay once for the LED ON-time and delay the second time for the LED OFF-time. Hence 2x delay for a cycle.

    Anyways, now I get about 0x6000000 (aprox 100.000.000) iterations of the  "while(delay--)" loop every second.  The program was compiled with O2 settings. At a frequency of 720MHz this comes to about 7 CPU cycles per while(delay--) iteration.This seems to be quite allot. I remember back in the days of AVR assembly programming, a loop like that took only 3 cycles (and AVR is a much inferior processor).  How do I take a look at the dissassembly the compiler is producing? The View-Dissassembly doesn't display anything.

    Thanks again for all your help! I know 700MHz processors aren't ment to be used for blinking LEDs, but I would really like to get to know the A8 and what it is capable of.

  • @Larry: Two things could be possible. 1. You should have installed "Stellaris Cortex ....." thing as one of target architecture to be equipped with tiobj2bin  tool. 2. In the project properties dialog window, select Build then click Steps tab. See if the string in "Command:" has any of '.bat' or '.exe'. If so, remove those strings if you use Linux. (You should not remove it in Windows of course.)

  • @Jure,

    Have you tried 'Release' version instead of 'Debug' version? In my case, it is almost 200MHz if I use 'Release', which is close to 3 cycles per while count.

  • How do you do that exactly? Do you load up the build.cmd of each of the libariese into the project explorer, or double click on it or what? and where are these new libaries created?