Search the Community

Showing results for tags 'gcc'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • News
    • Announcements
    • Suggestions
    • New users say Hi!
  • Spotlight!
    • Sponsor Spotlight
    • Sponsor Giveaways
  • Energia
    • Energia - MSP
    • Energia - TivaC/CC3XXX
    • Energia - C2000
    • Energia Libraries
  • MSP Technical Forums
    • General
    • Compilers and IDEs
    • Development Kits
    • Programmers and Debuggers
    • Code vault
    • Projects
    • Booster Packs
    • Energia
  • Tiva-C, Hercules, CCXXXX ARM Technical Forums
    • General
    • SensorTag
    • Tiva-C, Hercules, CC3XXX Launchpad Booster Packs
    • Code Vault
    • Projects
    • Compilers and IDEs
    • Development Kits and Custom Boards
  • Beagle ARM Cortex A8 Technical Forums
    • General
    • Code Snippets and Scripts
    • Cases, Capes and Plugin Boards
    • Projects
  • General Electronics Forum
    • General Electronics
    • Other Microcontrollers
  • Connect
    • Embedded Systems/Test Equipment Deals
    • Buy, Trade and Sell
    • The 43oh Store
    • Community Projects
    • Fireside Chat
  • C2000 Technical Forums
    • General
    • Development Kits
    • Code Vault
    • Projects
    • BoosterPacks


There are no results to display.

Found 15 results

  1. Hi, I needed a way to see how much of my C++ stack was being consumed in my MSP application - the traditional way is to "poison" the stack with a known pattern, and then to see how much of it gets burnt away. So I wrote the following - hope folk find it useful: The following code allows you to simply do this and to check at any point how much of the pre-allocated stack was consumed during peak usage, i.e. how close your app got to the bottom of the stack, or indeed, whether it over-ran. The TI CCS documentation is completely wrong in the names it gives for the global symbols that define the size and start of the stack - needs to be updated, Stick this code (or similar) wherever you want to report on/check stack usage <smallest number of byes left free on the stack since initialisation>/<configured size of the stack>. #if defined(STACK_CHECK) std::printf( "Stack: %d/%d\n", stackMinFreeCount(), stackMaxSize() ); #endif and then, in your main code you need to poison the stack as early as possible and then define the reporting routines: // Define STACK_CHECK to include stack usage diagnostics #define STACK_CHECK #if defined(STACK_CHECK) #define STACK_INIT 0xBEEF // Pattern to use to initially poison the stack extern uint16_t _stack; // Start of stack (low address) uint16_t stackMinFreeCount(void); uint16_t stackMaxSize(void); #endif #if defined(__cplusplus) extern "C" { #endif #if defined(__TI_COMPILER_VERSION__) || \ defined(__GNUC__) int _system_pre_init( void ) #elif defined(__IAR_SYSTEMS_ICC__) int __low_level_init( void ) #endif { //... stuff... #if defined(STACK_CHECK) // // Poison the stack, word by word, with a defined pattern // // Note that _system_pre_init is the earliest that we can // do this and that it may not be possible in TI-RTOS // // When we call the __get_SP_register intrinsic (same on IAR & CCS), it will return the address // of the RET address for the caller of this routine. Make sure that we don't trash it!! // register uint16_t *stack = &_stack; // Address of lowest address in .stack section register uint16_t *stack_top = reinterpret_cast<uint16_t *>(__get_SP_register()); do { *stack++ = STACK_INIT; // Poison stack addresses } while (stack < stack_top); // Stop before top of stack to leave RET address #endif return 1; } #if defined(__cplusplus) } #endif #if defined(STACK_CHECK) /** * Check how deep the stack usage has been * * \return \c uint16_t Minimum number of bytes to bottom of stack */ extern uint16_t __STACK_END; // End of data extern uint16_t __STACK_SIZE; // Linker-set size of stack uint16_t stackMinFreeCount(void) { const uint16_t *stack = &_stack; uint16_t freeCount = 0; while (*stack == STACK_INIT && stack++ <= &__STACK_END) { freeCount++; } return freeCount << 1; } /** * Return size of C++ stack * * Set by the linker --stack_size option * * \return \c uint16_t Configued maximum size of the stack in bytes */ uint16_t stackMaxSize(void) { return static_cast<uint16_t>( _symval(&__STACK_SIZE) ); } #endif int main(void) { ... stuff #if defined(STACK_CHECK) std::printf( "Stack: %d/%d\n", stackMinFreeCount(), stackMaxSize() ); #endif ...stuff }
  2. Hello, I have a problem with strange behavior of gcc compiler, which does not seem to generate interrupt vectors correctly. I tried to search for hints on the forum, but could not find any helpful information. I have the following C code: void __attribute__((interrupt(TIMER0_A0_VECTOR))) timer0_isr(void) { //IMPORTANT !!!!!!! //Clear TAIV by reading it !!!! (void) TAIV; /* ... */ } void __attribute__((interrupt(TIMER0_A1_VECTOR))) timer0_a1_isr(void) { P1OUT ^= PIN0; } volatile int qq; __attribute__((interrupt(USCIAB0TX_VECTOR))) void usci_tx_isr(void) { qq=1; P1OUT ^= PIN6; IFG2 &= ~UCA0TXIFG; } __attribute__((interrupt(USCIAB0RX_VECTOR))) void usci_rx_isr(void) { qq=2; P1OUT ^= PIN6; if(IFG2 & UCA0RXIFG) { (void) UCA0RXBUF; } IFG2 &= ~UCA0RXIFG; } Only the TIMER0_A0_VECTOR ISR contains meaningful code at the moment, and the other 3 procedures are just placeholders. For some strange reason, the only ISRs which are linked in the executable code to the interrupt vector table are TIMER0_A0_VECTOR and TIMER0_A1_VECTOR: Disassembly of section .vectors: 0000ffe0 <__ivtbl_16>: ffe0: 6c c1 bic.b @r1, r12 ffe2: 6c c1 bic.b @r1, r12 ffe4: 6c c1 bic.b @r1, r12 ffe6: 6c c1 bic.b @r1, r12 ffe8: 6c c1 bic.b @r1, r12 ffea: 6c c1 bic.b @r1, r12 ffec: 78 c4 bic.b @r4+, r8 ffee: 8e c4 6e c4 bic r4, -15250(r14);0xc46e(r14) fff2: b8 c3 6c c1 bic #-1, -16020(r8);r3 As==11, 0xc16c(r8) fff6: 6c c1 bic.b @r1, r12 fff8: 6c c1 bic.b @r1, r12 fffa: 6c c1 bic.b @r1, r12 fffc: 6c c1 bic.b @r1, r12 fffe: 00 c0 bic r0, r0 I must be doing something wrong, but I can't find where is the mistake. Target CPU is MSP430G5553, and here is the information about the compiler: $ ~/.platformio/packages/toolchain-timsp430/bin/msp430-g++ -v Using built-in specs. Reading specs from ~/.platformio/packages/toolchain-timsp430/bin/../lib/gcc/msp430/4.6.3/../../../../msp430/lib/msp430mcu.spec COLLECT_GCC=~/.platformio/packages/toolchain-timsp430/bin/msp430-g++ COLLECT_LTO_WRAPPER=~/.platformio/packages/toolchain-timsp430/bin/../libexec/gcc/msp430/4.6.3/lto-wrapper Target: msp430 Configured with: ../../gcc/configure --enable-languages=c,c++ --disable-nls --target=msp430 --prefix=/home/robertinant/opt/mspgcc_energia --with-pkgversion='MSPGCC 20120406 (With patches: sf3540953 sf3559978)' Thread model: single gcc version 4.6.3 20120301 (mspgcc LTS 20120406 unpatched) (MSPGCC 20120406 (With patches: sf3540953 sf3559978)) Has anybody encountered similar problems? EDIT: Moving void before __attribute__ has no effect.
  3. I noticed that if you use the TI arm compiler in CCS 6.x you can easily run code from ram. Unfortunately, it doesn't seem like they have implemented that for the arm-none-eabi-gcc compiler. Attached is a zip file project you can import into CCS. It is configured to run the msp432 at 48MHz using the high frequency crystal. It is also configured to generate small code using the nano.specs newlib configuration. In the default linker script, the data segment uses all the available ram starting at the base address of 0x20000000. The msp432 provides another bus address for SRAM at the base address of 0x01000000. This alias address is used to provide single cycle access to code in ram. I modified the the linker script in this project ( so that the first 512 bytes of ram are reserved for code. /* adjust based address for fixed size of 512 bytes (0x200) for code in ram */ /* NOTE: if you change this size, make sure you adjust .vtable offset also */ SRAM_DATA (RW) : ORIGIN = 0x20000000+0x200, LENGTH = 0x00010000-0x200 Additonally, a new section called .ramfunc is used to collect any code put into the ".ramfunc" section. You do this using the gcc specific _attribute__((section(".ramfunc"))) directive. When the chip resets, code has been added to copy the instruction code from flash to ram. extern uint32_t __ramfunc_load__; extern uint32_t __ramfunc_start__; extern uint32_t __ramfunc_end__; void resetISR(void) { /* Copy .ramfunc code and data segment initializers from flash to SRAM. */ volatile uint32_t *pui32Src, *pui32Dest; pui32Src = &__ramfunc_load__; for(pui32Dest = &__ramfunc_start__; pui32Dest < &__ramfunc_end__; ) { *pui32Dest++ = *pui32Src++; } ... Attachment In CCS, go to Project Menu and select the "Import CCS Projects ..." and select the archive file button. Use the file dialog to select the location where you downloaded the attached file. BTW: This is using the new CMSIS headers. Running in the debugger (note the address 0x10000FC of the code in the disassembly window)
  4. I'm trying to set up an eclipse / gcc / gdb / mspdebug based development environment to work on a custom msp430 based board that the company I work for produce. I have set up eclipse with the tools which come with ubuntu 15.04, and it's almost working apart from a weird bug in the debugger. When you watch a local variable in the main function, eclipse displays an incorrect value. This bug has been around for a while, as I've noticed it before (see this and the following page: The bug has been fixed in the most recent version of mspgcc from the old sourceforge site, but this is 2 years out of date now, and the development has moved to a project hosted by texas instruments: . I would like to use the most recent version from ti if possible; I've tried compiling it and it builds OK, but I can't find a compatible libc and set of device specific header files which will work with it. When I try to use the libc that comes with ubuntu, it says it's incompatible. Also, when I pass the flag '-mmcu=msp430f5510', which used to work before, msp430-gcc throws an error. I've also noticed that the msp430 support appears to have been merged back into the upstream mspgcc (and presumably the other gnu tools), which is another way I've thought of going. So my question is, given all this, what's the best way to go to set up an up to date open source toolchain for the msp430? I could just compile the most recent version from the old sourceforge project, but would rather use something more up to date if that is possible.
  5. I have a program of about 40 KB (I use FAT32 through FatFs, that takes a lot of memory) that I developed using msp430-gcc 4.6.3 for a MSP430F5529 (that has 128 KB Flash). I am trying to move it to msp430-gcc 4.9.1 (downloaded from TI) but am getting the following errors upon linking: /opt/ti/gcc/bin/msp430-elf-gcc -I /opt/ti/gcc/include -mmcu=msp430f5529 -Os -g -c -o main.o main.c /opt/ti/gcc/bin/msp430-elf-gcc -I /opt/ti/gcc/include -mmcu=msp430f5529 -Os -g -c -o ccsbcs.o ccsbcs.c /opt/ti/gcc/bin/msp430-elf-gcc -I /opt/ti/gcc/include -mmcu=msp430f5529 -Os -g -c -o delay.o delay.c /opt/ti/gcc/bin/msp430-elf-gcc -I /opt/ti/gcc/include -mmcu=msp430f5529 -Os -g -c -o fat32.o fat32.c /opt/ti/gcc/bin/msp430-elf-gcc -I /opt/ti/gcc/include -mmcu=msp430f5529 -Os -g -c -o lis3dh.o lis3dh.c /opt/ti/gcc/bin/msp430-elf-gcc -I /opt/ti/gcc/include -mmcu=msp430f5529 -Os -g -c -o mmc.o mmc.c /opt/ti/gcc/bin/msp430-elf-gcc -I /opt/ti/gcc/include -mmcu=msp430f5529 -Os -g -c -o nrf24l01p.o nrf24l01p.c /opt/ti/gcc/bin/msp430-elf-gcc -I /opt/ti/gcc/include -mmcu=msp430f5529 -Os -g -c -o pcf2123.o pcf2123.c /opt/ti/gcc/bin/msp430-elf-gcc -I /opt/ti/gcc/include -mmcu=msp430f5529 -Os -g -c -o port_int.o port_int.c /opt/ti/gcc/bin/msp430-elf-gcc -I /opt/ti/gcc/include -mmcu=msp430f5529 -Os -g -c -o spi.o spi.c /opt/ti/gcc/bin/msp430-elf-gcc -I /opt/ti/gcc/include -mmcu=msp430f5529 -Os -g -c -o spi2_small.o spi2_small.c /opt/ti/gcc/bin/msp430-elf-gcc -I /opt/ti/gcc/include -mmcu=msp430f5529 -Os -g -c -o tools.o tools.c /opt/ti/gcc/bin/msp430-elf-gcc -I /opt/ti/gcc/include -mmcu=msp430f5529 -Os -g -c -o uart.o uart.c /opt/ti/gcc/bin/msp430-elf-gcc -I /opt/ti/gcc/include -mmcu=msp430f5529 -Os -g -c -o ucs.o ucs.c /opt/ti/gcc/bin/msp430-elf-gcc -I /opt/ti/gcc/include -mmcu=msp430f5529 -Os -g -L /opt/ti/gcc/include -T/usr/msp430/lib/ldscripts/msp430.x main.o ccsbcs.o delay.o fat32.o lis3dh.o mmc.o nrf24l01p.o pcf2123.o port_int.o spi.o spi2_small.o tools.o uart.o ucs.o -o main.elf /opt/ti/gcc/bin/../lib/gcc/msp430-elf/4.9.1/../../../../msp430-elf/bin/ld: main.elf section `.text' will not fit in region `rom' /opt/ti/gcc/bin/../lib/gcc/msp430-elf/4.9.1/../../../../msp430-elf/bin/ld: region `rom' overflowed by 25014 bytes /opt/ti/gcc/bin/../lib/gcc/msp430-elf/4.9.1/../../../../msp430-elf/lib/crt0.o: In function `.Loc.113.1': /opt/redhat/msp430-14r1-10/sources/tools/libgloss/msp430/crt0.S:36: undefined reference to `__init_array_start' /opt/ti/gcc/bin/../lib/gcc/msp430-elf/4.9.1/../../../../msp430-elf/lib/crt0.o: In function `.Loc.114.1': /opt/redhat/msp430-14r1-10/sources/tools/libgloss/msp430/crt0.S:36: undefined reference to `__init_array_end' /opt/ti/gcc/bin/../lib/gcc/msp430-elf/4.9.1/../../../../msp430-elf/lib/crt0.o: In function `.Loc.121.1': /opt/redhat/msp430-14r1-10/sources/tools/libgloss/msp430/crt0.S:36: undefined reference to `__preinit_array_start' /opt/ti/gcc/bin/../lib/gcc/msp430-elf/4.9.1/../../../../msp430-elf/lib/crt0.o: In function `.Loc.122.1': /opt/redhat/msp430-14r1-10/sources/tools/libgloss/msp430/crt0.S:36: undefined reference to `__preinit_array_end' /opt/ti/gcc/bin/../lib/gcc/msp430-elf/4.9.1/../../../../msp430-elf/lib/crt0.o: In function `.Loc.129.1': /opt/redhat/msp430-14r1-10/sources/tools/libgloss/msp430/crt0.S:36: undefined reference to `__fini_array_start' /opt/ti/gcc/bin/../lib/gcc/msp430-elf/4.9.1/../../../../msp430-elf/lib/crt0.o: In function `.Loc.130.1': /opt/redhat/msp430-14r1-10/sources/tools/libgloss/msp430/crt0.S:36: undefined reference to `__fini_array_end' /opt/ti/gcc/bin/../lib/gcc/msp430-elf/4.9.1/crtend.o:(.init+0x2): relocation truncated to fit: R_MSP430X_ABS16 against `__do_global_ctors_aux' main.o: In function `sd_card_handler': /mnt/dados/Pegaso/src_5529_newgcc/main.c:36:(.text+0xc): relocation truncated to fit: R_MSP430X_ABS16 against `.rodata' /mnt/dados/Pegaso/src_5529_newgcc/main.c:36:(.text+0x16): relocation truncated to fit: R_MSP430X_ABS16 against `.rodata' /mnt/dados/Pegaso/src_5529_newgcc/main.c:36:(.text+0x3a): relocation truncated to fit: R_MSP430X_ABS16 against `.rodata' /mnt/dados/Pegaso/src_5529_newgcc/main.c:36:(.text+0x4c): relocation truncated to fit: R_MSP430X_ABS16 against `.rodata' /mnt/dados/Pegaso/src_5529_newgcc/main.c:36:(.text+0x64): relocation truncated to fit: R_MSP430X_ABS16 against `.rodata' /mnt/dados/Pegaso/src_5529_newgcc/main.c:36:(.text+0x72): relocation truncated to fit: R_MSP430X_ABS16 against `.rodata' /mnt/dados/Pegaso/src_5529_newgcc/main.c:36:(.text+0x94): relocation truncated to fit: R_MSP430X_ABS16 against `.rodata' /mnt/dados/Pegaso/src_5529_newgcc/main.c:36:(.text+0xa0): relocation truncated to fit: R_MSP430X_ABS16 against `.rodata' /mnt/dados/Pegaso/src_5529_newgcc/main.c:36:(.text+0xa6): relocation truncated to fit: R_MSP430X_ABS16 against `.rodata' /mnt/dados/Pegaso/src_5529_newgcc/main.c:36:(.text+0xb6): additional relocation overflows omitted from the output /opt/ti/gcc/bin/../lib/gcc/msp430-elf/4.9.1/../../../../msp430-elf/lib/libcrt.a(crt_bss.o): In function `.Loc.50.1': /opt/redhat/msp430-14r1-10/sources/tools/libgloss/msp430/crt0.S:50: undefined reference to `__bssstart' /opt/ti/gcc/bin/../lib/gcc/msp430-elf/4.9.1/../../../../msp430-elf/lib/libcrt.a(crt_bss.o): In function `.Loc.52.1': /opt/redhat/msp430-14r1-10/sources/tools/libgloss/msp430/crt0.S:50: undefined reference to `__bsssize' /opt/ti/gcc/bin/../lib/gcc/msp430-elf/4.9.1/../../../../msp430-elf/lib/libcrt.a(crt_movedata.o): In function `.Loc.65.1': /opt/redhat/msp430-14r1-10/sources/tools/libgloss/msp430/crt0.S:65: undefined reference to `__datastart' /opt/ti/gcc/bin/../lib/gcc/msp430-elf/4.9.1/../../../../msp430-elf/lib/libcrt.a(crt_movedata.o): In function `.Loc.66.1': /opt/redhat/msp430-14r1-10/sources/tools/libgloss/msp430/crt0.S:65: undefined reference to `__romdatastart' /opt/ti/gcc/bin/../lib/gcc/msp430-elf/4.9.1/../../../../msp430-elf/lib/libcrt.a(crt_movedata.o): In function `.Loc.72.1': /opt/redhat/msp430-14r1-10/sources/tools/libgloss/msp430/crt0.S:65: undefined reference to `__romdatacopysize' /opt/ti/gcc/bin/../lib/gcc/msp430-elf/4.9.1/../../../../msp430-elf/lib/libnosys.a(sbrk.o).data+0x0): undefined reference to `end' collect2: error: ld returned 1 exit status recipe for target 'all' failed What's wrong here?
  6. I'm port some code over to GCC (GNU_4.6.3:MSPGCC compiler inside CCS6.1) to take advantage of existing driver code for some of my devices. After clearing all basic errors, my build fails with this error: .../energia-0101e0014/hardware/tools/msp430/bin/../lib/gcc/msp430/4.6.3/../../../../msp430/bin/ld.exe: error: no memory region specified for loadable section `.noinit.crt0' gmake: *** [main.o] Error 1 gmake: Target `all' not remade because of errors. How do I fix that? NOTE/CLUE: I tried making a new, blank GNU_4.6.3:MSPGCC project in CCS, and it gets identical compile errors. However, a new "Energia Sketch" does not have this problem. What is the difference between an "Energia Sketch" and a regular project? If the end-functionality is identical, I can just switch project types, but I don't know if a sketch project has any "gotcha"s that I will regret later. In case anything else is useful, here is the full console output of a failed compile: **** Build of configuration Debug for project MyDevicesGCC **** "C:\\TI\\ccsv6\\utils\\bin\\gmake" -k all 'Building file: ../main.cpp' 'Invoking: GNU Compiler' "C:/.../energia-0101E0014/hardware/tools/msp430/bin/msp430-gcc.exe" -c -mcpu=430x -mmcu=msp430f5529 -D__MSP430_HAS_USCI_A0__ -D__MSP430_HAS_USCI_B0__ -D__MSP430_HAS_USCI_B1__ -D__MSP430_HAS_USCI_A1__ -I"C:/.../energia-0101E0014/hardware/tools/msp430/msp430/include" -I"C:/.../energia-0101E0014/hardware/msp430/libraries/Wire" -I"C:/.../energia-0101E0014/hardware/tools/msp430/msp430/include" -I"C:/.../ElectronicsProjects/FlightControlsGCC/MyDevicesGCC/HeadersGCC" -I"C:/.../energia-0101E0014/hardware/msp430/variants/launchpad_f5529" -I"C:/.../energia-0101E0014/hardware/msp430/cores/msp430" -I"C:/TI/ccsv6/ccs_base/msp430/include_gcc" -Os -g -gdwarf-3 -gstrict-dwarf -Wall -MMD -MP -MF"main.d" -MT"main.d" -o"main.o" "../main.cpp" In file included from C:/TI/ccsv6/ccs_base/msp430/include_gcc/msp430f5529.h:63:0, from C:/TI/ccsv6/ccs_base/msp430/include_gcc/msp430.h:760, from C:/.../energia-0101E0014/hardware/msp430/cores/msp430/Energia.h:4, from ../main.cpp:1: C:/TI/ccsv6/ccs_base/msp430/include_gcc/iomacros.h:70:0: warning: "__interrupt" redefined [enabled by default] <built-in>:0:0: note: this is the location of the previous definition In file included from C:/TI/ccsv6/ccs_base/msp430/include_gcc/msp430.h:760:0, from C:/.../energia-0101E0014/hardware/msp430/cores/msp430/Energia.h:4, from ../main.cpp:1: C:/TI/ccsv6/ccs_base/msp430/include_gcc/msp430f5529.h:4806:0: warning: "__MSP430_HAS_USCI_A0__" redefined [enabled by default] <command-line>:0:0: note: this is the location of the previous definition C:/TI/ccsv6/ccs_base/msp430/include_gcc/msp430f5529.h:4851:0: warning: "__MSP430_HAS_USCI_B0__" redefined [enabled by default] <command-line>:0:0: note: this is the location of the previous definition C:/TI/ccsv6/ccs_base/msp430/include_gcc/msp430f5529.h:5123:0: warning: "__MSP430_HAS_USCI_A1__" redefined [enabled by default] <command-line>:0:0: note: this is the location of the previous definition C:/TI/ccsv6/ccs_base/msp430/include_gcc/msp430f5529.h:5168:0: warning: "__MSP430_HAS_USCI_B1__" redefined [enabled by default] <command-line>:0:0: note: this is the location of the previous definition ../main.cpp: In function 'int main()': ../main.cpp:37:20: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] ../main.cpp:49:13: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] ../main.cpp:85:16: warning: unused variable 'repeats' [-Wunused-variable] 'Finished building: ../main.cpp' ' ' 'Building target: MyDevicesGCC.out' 'Invoking: GNU Linker' "C:/.../energia-0101E0014/hardware/tools/msp430/bin/msp430-gcc.exe" -mcpu=430x -mmcu=msp430f5529 -D__MSP430_HAS_USCI_A0__ -D__MSP430_HAS_USCI_B0__ -D__MSP430_HAS_USCI_B1__ -D__MSP430_HAS_USCI_A1__ -Os -g -gdwarf-3 -gstrict-dwarf -Wall -Wl,-Map,"" -o"MyDevicesGCC.out" "./main.o" -T"../msp430f5529.ld" -Wl,--start-group -l"c" -l"gcc" -Wl,--end-group c:/.../energia-0101e0014/hardware/tools/msp430/bin/../lib/gcc/msp430/4.6.3/../../../../msp430/bin/ld.exe: error: no memory region specified for loadable section `.noinit.crt0' collect2: ld returned 1 exit status gmake: *** [MyDevicesGCC.out] Error 1 gmake: Target `all' not remade because of errors. **** Build Finished ****
  7. I know that the first word is the address of the top of the stack. In startup_gcc.c file in the stellarisware projects, the address of the reset_isr subroutine is stored in the second word space in the _text section. In the objdump of the blinky.axf file, a value of 0x2d1 is stored at address 0x04 in _text section. But the reset_isr subroutine is stored at address 0x2d0. This is confusing me. Isn't a value of 0x2d0 supposed to be at address 0x04 in _text section? Please explain me where I am wrong. I have attached the objdump of blinky.axf here. Akhils-MacBook-Pro:blinky akhil$ arm-none-eabi-objdump -d -s -x gcc/blinky.axf gcc/blinky.axf: file format elf32-littlearm gcc/blinky.axf architecture: arm, flags 0x00000112: EXEC_P, HAS_SYMS, D_PAGED start address 0x000002d1 Program Header: LOAD off 0x00008000 vaddr 0x00000000 paddr 0x00000000 align 2**15 filesz 0x00000320 memsz 0x00000320 flags r-x LOAD off 0x00010000 vaddr 0x20000000 paddr 0x20000000 align 2**15 filesz 0x00000000 memsz 0x00000100 flags rw- private flags = 5000002: [Version5 EABI] [has entry point] Sections: Idx Name Size VMA LMA File off Algn 0 .text 00000320 00000000 00000000 00008000 2**2 CONTENTS, ALLOC, LOAD, READONLY, CODE 1 .bss 00000100 20000000 20000000 00010000 2**2 ALLOC 2 .comment 00000070 00000000 00000000 00008320 2**0 CONTENTS, READONLY 3 .ARM.attributes 00000037 00000000 00000000 00008390 2**0 CONTENTS, READONLY SYMBOL TABLE: 00000000 l d .text 00000000 .text 20000000 l d .bss 00000000 .bss 00000000 l d .comment 00000000 .comment 00000000 l d .ARM.attributes 00000000 .ARM.attributes 00000000 l df *ABS* 00000000 startup_gcc.c 000002c8 l F .text 00000002 NmiSR 000002ca l F .text 00000002 FaultISR 000002cc l F .text 00000002 IntDefaultHandler 000002ee l F .text 00000000 zero_loop 20000000 l O .bss 00000100 pulStack 00000000 l df *ABS* 00000000 blinky.c 00000000 l df *ABS* 00000000 00000320 g .text 00000000 _etext 20000100 g .bss 00000000 _ebss 20000000 g .bss 00000000 _bss 00000000 g .text 00000000 _text 0000026c g F .text 0000005c main 20000000 g .text 00000000 _data 20000000 g .text 00000000 _edata 00000000 g O .text 0000026c g_pfnVectors 000002d0 g F .text 00000048 ResetISR Contents of section .text: 0000 00010020 d1020000 c9020000 cb020000 ... ............ 0010 cd020000 cd020000 cd020000 00000000 ................ 0020 00000000 00000000 00000000 cd020000 ................ 0030 cd020000 00000000 cd020000 cd020000 ................ 0040 cd020000 cd020000 cd020000 cd020000 ................ 0050 cd020000 cd020000 cd020000 cd020000 ................ 0060 cd020000 cd020000 cd020000 cd020000 ................ 0070 cd020000 cd020000 cd020000 cd020000 ................ 0080 cd020000 cd020000 cd020000 cd020000 ................ 0090 cd020000 cd020000 cd020000 cd020000 ................ 00a0 cd020000 cd020000 cd020000 cd020000 ................ 00b0 cd020000 cd020000 cd020000 cd020000 ................ 00c0 cd020000 cd020000 cd020000 cd020000 ................ 00d0 cd020000 cd020000 cd020000 cd020000 ................ 00e0 cd020000 cd020000 cd020000 cd020000 ................ 00f0 cd020000 cd020000 cd020000 cd020000 ................ 0100 cd020000 cd020000 cd020000 cd020000 ................ 0110 cd020000 cd020000 cd020000 cd020000 ................ 0120 cd020000 cd020000 cd020000 cd020000 ................ 0130 cd020000 cd020000 cd020000 cd020000 ................ 0140 00000000 00000000 00000000 00000000 ................ 0150 cd020000 cd020000 cd020000 cd020000 ................ 0160 00000000 00000000 00000000 00000000 ................ 0170 00000000 00000000 00000000 00000000 ................ 0180 00000000 00000000 00000000 00000000 ................ 0190 00000000 00000000 00000000 00000000 ................ 01a0 00000000 00000000 00000000 00000000 ................ 01b0 cd020000 cd020000 cd020000 cd020000 ................ 01c0 cd020000 cd020000 cd020000 cd020000 ................ 01d0 cd020000 cd020000 cd020000 cd020000 ................ 01e0 cd020000 cd020000 cd020000 cd020000 ................ 01f0 cd020000 cd020000 cd020000 cd020000 ................ 0200 cd020000 cd020000 cd020000 00000000 ................ 0210 cd020000 cd020000 cd020000 cd020000 ................ 0220 cd020000 cd020000 cd020000 cd020000 ................ 0230 cd020000 cd020000 cd020000 cd020000 ................ 0240 cd020000 cd020000 cd020000 cd020000 ................ 0250 cd020000 cd020000 cd020000 cd020000 ................ 0260 cd020000 cd020000 cd020000 124b2022 .............K " 0270 1a6082b0 1b68114a 01930823 1360c2f8 .`...h.J...#.`.. 0280 1c310f4b 1a6842f0 08021a60 00220192 .1.K.hB....`.".. 0290 01990c4a 914202d8 019a0132 f7e71a68 ...J.B.....2...h 02a0 22f00802 1a600023 0193019a 054b9a42 "....`.#.....K.B 02b0 e7d8019b 0133f7e7 08e10f40 00540240 .....3.....@.T.@ 02c0 fc530240 3f0d0300 fee7fee7 fee70000 .S.@?........... 02d0 00230d4a 0d499818 884204d2 0c495958 .#.J.I...B...IYX 02e0 99500433 f5e70c48 0c494ff0 00028842 .P.3...H.IO....B 02f0 b8bf40f8 042bfff6 faaf064b 1a6842f4 ..@..+.....K.hB. 0300 70021a60 fff7b2bf 00000020 00000020 p..`....... ... 0310 20030000 88ed00e0 00000020 00010020 .......... ... Contents of section .comment: 0000 4743433a 2028474e 5520546f 6f6c7320 GCC: (GNU Tools 0010 666f7220 41524d20 456d6265 64646564 for ARM Embedded 0020 2050726f 63657373 6f727329 20342e38 Processors) 4.8 0030 2e342032 30313430 37323520 2872656c .4 20140725 (rel 0040 65617365 29205b41 524d2f65 6d626564 ease) [ARM/embed 0050 6465642d 345f382d 6272616e 63682072 ded-4_8-branch r 0060 65766973 696f6e20 32313331 34375d00 evision 213147]. Contents of section .ARM.attributes: 0000 41360000 00616561 62690001 2c000000 A6...aeabi..,... 0010 05436f72 7465782d 4d340006 0d074d09 .Cortex-M4....M. 0020 020a0612 04140115 01170318 0119011a ................ 0030 011b031e 042201 .....". Disassembly of section .text: 00000000 <_text>: 0: 20000100 .word 0x20000100 4: 000002d1 .word 0x000002d1 8: 000002c9 .word 0x000002c9 c: 000002cb .word 0x000002cb 10: 000002cd .word 0x000002cd 14: 000002cd .word 0x000002cd 18: 000002cd .word 0x000002cd ... 2c: 000002cd .word 0x000002cd 30: 000002cd .word 0x000002cd 34: 00000000 .word 0x00000000 38: 000002cd .word 0x000002cd 3c: 000002cd .word 0x000002cd 40: 000002cd .word 0x000002cd 44: 000002cd .word 0x000002cd 48: 000002cd .word 0x000002cd 4c: 000002cd .word 0x000002cd 50: 000002cd .word 0x000002cd 54: 000002cd .word 0x000002cd 58: 000002cd .word 0x000002cd 5c: 000002cd .word 0x000002cd 60: 000002cd .word 0x000002cd 64: 000002cd .word 0x000002cd 68: 000002cd .word 0x000002cd 6c: 000002cd .word 0x000002cd 70: 000002cd .word 0x000002cd 74: 000002cd .word 0x000002cd 78: 000002cd .word 0x000002cd 7c: 000002cd .word 0x000002cd 80: 000002cd .word 0x000002cd 84: 000002cd .word 0x000002cd 88: 000002cd .word 0x000002cd 8c: 000002cd .word 0x000002cd 90: 000002cd .word 0x000002cd 94: 000002cd .word 0x000002cd 98: 000002cd .word 0x000002cd 9c: 000002cd .word 0x000002cd a0: 000002cd .word 0x000002cd a4: 000002cd .word 0x000002cd a8: 000002cd .word 0x000002cd ac: 000002cd .word 0x000002cd b0: 000002cd .word 0x000002cd b4: 000002cd .word 0x000002cd b8: 000002cd .word 0x000002cd bc: 000002cd .word 0x000002cd c0: 000002cd .word 0x000002cd c4: 000002cd .word 0x000002cd c8: 000002cd .word 0x000002cd cc: 000002cd .word 0x000002cd d0: 000002cd .word 0x000002cd d4: 000002cd .word 0x000002cd d8: 000002cd .word 0x000002cd dc: 000002cd .word 0x000002cd e0: 000002cd .word 0x000002cd e4: 000002cd .word 0x000002cd e8: 000002cd .word 0x000002cd ec: 000002cd .word 0x000002cd f0: 000002cd .word 0x000002cd f4: 000002cd .word 0x000002cd f8: 000002cd .word 0x000002cd fc: 000002cd .word 0x000002cd 100: 000002cd .word 0x000002cd 104: 000002cd .word 0x000002cd 108: 000002cd .word 0x000002cd 10c: 000002cd .word 0x000002cd 110: 000002cd .word 0x000002cd 114: 000002cd .word 0x000002cd 118: 000002cd .word 0x000002cd 11c: 000002cd .word 0x000002cd 120: 000002cd .word 0x000002cd 124: 000002cd .word 0x000002cd 128: 000002cd .word 0x000002cd 12c: 000002cd .word 0x000002cd 130: 000002cd .word 0x000002cd 134: 000002cd .word 0x000002cd 138: 000002cd .word 0x000002cd 13c: 000002cd .word 0x000002cd ... 150: 000002cd .word 0x000002cd 154: 000002cd .word 0x000002cd 158: 000002cd .word 0x000002cd 15c: 000002cd .word 0x000002cd ... 1b0: 000002cd .word 0x000002cd 1b4: 000002cd .word 0x000002cd 1b8: 000002cd .word 0x000002cd 1bc: 000002cd .word 0x000002cd 1c0: 000002cd .word 0x000002cd 1c4: 000002cd .word 0x000002cd 1c8: 000002cd .word 0x000002cd 1cc: 000002cd .word 0x000002cd 1d0: 000002cd .word 0x000002cd 1d4: 000002cd .word 0x000002cd 1d8: 000002cd .word 0x000002cd 1dc: 000002cd .word 0x000002cd 1e0: 000002cd .word 0x000002cd 1e4: 000002cd .word 0x000002cd 1e8: 000002cd .word 0x000002cd 1ec: 000002cd .word 0x000002cd 1f0: 000002cd .word 0x000002cd 1f4: 000002cd .word 0x000002cd 1f8: 000002cd .word 0x000002cd 1fc: 000002cd .word 0x000002cd 200: 000002cd .word 0x000002cd 204: 000002cd .word 0x000002cd 208: 000002cd .word 0x000002cd 20c: 00000000 .word 0x00000000 210: 000002cd .word 0x000002cd 214: 000002cd .word 0x000002cd 218: 000002cd .word 0x000002cd 21c: 000002cd .word 0x000002cd 220: 000002cd .word 0x000002cd 224: 000002cd .word 0x000002cd 228: 000002cd .word 0x000002cd 22c: 000002cd .word 0x000002cd 230: 000002cd .word 0x000002cd 234: 000002cd .word 0x000002cd 238: 000002cd .word 0x000002cd 23c: 000002cd .word 0x000002cd 240: 000002cd .word 0x000002cd 244: 000002cd .word 0x000002cd 248: 000002cd .word 0x000002cd 24c: 000002cd .word 0x000002cd 250: 000002cd .word 0x000002cd 254: 000002cd .word 0x000002cd 258: 000002cd .word 0x000002cd 25c: 000002cd .word 0x000002cd 260: 000002cd .word 0x000002cd 264: 000002cd .word 0x000002cd 268: 000002cd .word 0x000002cd 0000026c <main>: 26c: 4b12 ldr r3, [pc, #72] ; (2b8 <main+0x4c>) 26e: 2220 movs r2, #32 270: 601a str r2, [r3, #0] 272: b082 sub sp, #8 274: 681b ldr r3, [r3, #0] 276: 4a11 ldr r2, [pc, #68] ; (2bc <main+0x50>) 278: 9301 str r3, [sp, #4] 27a: 2308 movs r3, #8 27c: 6013 str r3, [r2, #0] 27e: f8c2 311c str.w r3, [r2, #284] ; 0x11c 282: 4b0f ldr r3, [pc, #60] ; (2c0 <main+0x54>) 284: 681a ldr r2, [r3, #0] 286: f042 0208 orr.w r2, r2, #8 28a: 601a str r2, [r3, #0] 28c: 2200 movs r2, #0 28e: 9201 str r2, [sp, #4] 290: 9901 ldr r1, [sp, #4] 292: 4a0c ldr r2, [pc, #48] ; (2c4 <main+0x58>) 294: 4291 cmp r1, r2 296: d802 bhi.n 29e <main+0x32> 298: 9a01 ldr r2, [sp, #4] 29a: 3201 adds r2, #1 29c: e7f7 b.n 28e <main+0x22> 29e: 681a ldr r2, [r3, #0] 2a0: f022 0208 bic.w r2, r2, #8 2a4: 601a str r2, [r3, #0] 2a6: 2300 movs r3, #0 2a8: 9301 str r3, [sp, #4] 2aa: 9a01 ldr r2, [sp, #4] 2ac: 4b05 ldr r3, [pc, #20] ; (2c4 <main+0x58>) 2ae: 429a cmp r2, r3 2b0: d8e7 bhi.n 282 <main+0x16> 2b2: 9b01 ldr r3, [sp, #4] 2b4: 3301 adds r3, #1 2b6: e7f7 b.n 2a8 <main+0x3c> 2b8: 400fe108 .word 0x400fe108 2bc: 40025400 .word 0x40025400 2c0: 400253fc .word 0x400253fc 2c4: 00030d3f .word 0x00030d3f 000002c8 <NmiSR>: 2c8: e7fe b.n 2c8 <NmiSR> 000002ca <FaultISR>: 2ca: e7fe b.n 2ca <FaultISR> 000002cc <IntDefaultHandler>: 2cc: e7fe b.n 2cc <IntDefaultHandler> ... 000002d0 <ResetISR>: 2d0: 2300 movs r3, #0 2d2: 4a0d ldr r2, [pc, #52] ; (308 <zero_loop+0x1a>) 2d4: 490d ldr r1, [pc, #52] ; (30c <zero_loop+0x1e>) 2d6: 1898 adds r0, r3, r2 2d8: 4288 cmp r0, r1 2da: d204 bcs.n 2e6 <ResetISR+0x16> 2dc: 490c ldr r1, [pc, #48] ; (310 <zero_loop+0x22>) 2de: 5859 ldr r1, [r3, r1] 2e0: 5099 str r1, [r3, r2] 2e2: 3304 adds r3, #4 2e4: e7f5 b.n 2d2 <ResetISR+0x2> 2e6: 480c ldr r0, [pc, #48] ; (318 <zero_loop+0x2a>) 2e8: 490c ldr r1, [pc, #48] ; (31c <zero_loop+0x2e>) 2ea: f04f 0200 mov.w r2, #0 000002ee <zero_loop>: 2ee: 4288 cmp r0, r1 2f0: bfb8 it lt 2f2: f840 2b04 strlt.w r2, [r0], #4 2f6: f6ff affa blt.w 2ee <zero_loop> 2fa: 4b06 ldr r3, [pc, #24] ; (314 <zero_loop+0x26>) 2fc: 681a ldr r2, [r3, #0] 2fe: f442 0270 orr.w r2, r2, #15728640 ; 0xf00000 302: 601a str r2, [r3, #0] 304: f7ff bfb2 b.w 26c <main> 308: 20000000 .word 0x20000000 30c: 20000000 .word 0x20000000 310: 00000320 .word 0x00000320 314: e000ed88 .word 0xe000ed88 318: 20000000 .word 0x20000000 31c: 20000100 .word 0x20000100 Akhils-MacBook-Pro:blinky akhil$
  8. How can I add a switch to the g++/gcc command line (or do something equivalent) in Energia? I am importing a library (FastLED) which generates a bunch of warnings about needing -std=c++11 Example warning message: FeatureDemo.ino:655:98: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default] I would like to make those warnings go away (both for me, and be able to tell anyone else using the library how to make them go away). I have hunted through the menus, through the customization file and looked at the gcc documentation (for environment variables, etc.) So far haven't found how to either add this to the command line Energia uses to invoke gcc, or how to tell gcc to do the same thing by other means. Thanks.
  9. I'm getting this error: main.c: In function 'Timer_A': main.c:150:28: error: MSP430 builtin functions only work inside interrupt handlers __bic_SR_register_on_exit(CPUOFF); // Clear CPUOFF bit from 0(SR) ^ makefile:23: recipe for target 'main.o' failed With this code: // TimerA interrupt __attribute__((__interrupt__(TIMERA0_VECTOR))) Timer_A (void) { iflag |= BIT0; // Set BIT0 flag __bic_SR_register_on_exit(CPUOFF); // Clear CPUOFF bit from 0(SR) } For some reason msp430-elf-gcc thinks my ISR isn't an ISR Any ideas? I emailed one of the red hat guys who submitted the GCC patch with the function that checks whether a function is an interrupt handler or not.
  10. Greetings, I am currently working on a personal project using Tiva Launchpad together with Eclipse Kepler IDE and GNU ARM Embedded Tools (gcc version 4.8.2). Last week my efforts were focused on making the "usb_dev_serial" example (Tivaware work with that development setup (also i'm using it all on Windows 8). So far, a simple I2C master + button interrupt + LED toggling example I've made with this development configuration is working OK. When the USB module was added ("usb_dev_serial" skeleton added to my project), some compiling issues arised, but got fixed after I put "libusb.a" as resource library for the linking process. Unfortunately, some linking problems appeared (CDT build console exposed below): C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdcdc.o): In function `HandleRequests': usbdcdc.c:(.text.HandleRequests+0x58): undefined reference to `USBDevEndpointDataAck' usbdcdc.c:(.text.HandleRequests+0x64): undefined reference to `USBDevEndpointDataAck' usbdcdc.c:(.text.HandleRequests+0x88): undefined reference to `USBDevEndpointDataAck' usbdcdc.c:(.text.HandleRequests+0xba): undefined reference to `USBDevEndpointDataAck' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdcdc.o): In function `SendSerialState': usbdcdc.c:(.text.SendSerialState+0x42): undefined reference to `USBEndpointDataPut' usbdcdc.c:(.text.SendSerialState+0x52): undefined reference to `USBEndpointDataPut' usbdcdc.c:(.text.SendSerialState+0x66): undefined reference to `USBEndpointDataSend' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdcdc.o): In function `CDCTickHandler': usbdcdc.c:(.text.CDCTickHandler+0x8c): undefined reference to `USBEndpointDataAvail' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdcdc.o): In function `ProcessDataFromHost': usbdcdc.c:(.text.ProcessDataFromHost+0xa): undefined reference to `USBEndpointStatus' usbdcdc.c:(.text.ProcessDataFromHost+0x18): undefined reference to `USBDevEndpointStatusClear' usbdcdc.c:(.text.ProcessDataFromHost+0x40): undefined reference to `USBEndpointDataAvail' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdcdc.o): In function `ProcessNotificationToHost': usbdcdc.c:(.text.ProcessNotificationToHost+0xa): undefined reference to `USBEndpointStatus' usbdcdc.c:(.text.ProcessNotificationToHost+0x16): undefined reference to `USBDevEndpointStatusClear' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdcdc.o): In function `ProcessDataToHost': usbdcdc.c:(.text.ProcessDataToHost+0xa): undefined reference to `USBEndpointStatus' usbdcdc.c:(.text.ProcessDataToHost+0x16): undefined reference to `USBDevEndpointStatusClear' usbdcdc.c:(.text.ProcessDataToHost+0x52): undefined reference to `USBEndpointDataSend' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdcdc.o): In function `USBDCDCPacketWrite': usbdcdc.c:(.text.USBDCDCPacketWrite+0x20): undefined reference to `USBEndpointDataPut' usbdcdc.c:(.text.USBDCDCPacketWrite+0x46): undefined reference to `USBEndpointDataSend' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdcdc.o): In function `USBDCDCPacketRead': usbdcdc.c:(.text.USBDCDCPacketRead+0x10): undefined reference to `USBEndpointStatus' usbdcdc.c:(.text.USBDCDCPacketRead+0x3c): undefined reference to `USBEndpointDataAvail' usbdcdc.c:(.text.USBDCDCPacketRead+0x50): undefined reference to `USBEndpointDataGet' usbdcdc.c:(.text.USBDCDCPacketRead+0x64): undefined reference to `USBDevEndpointStatusClear' usbdcdc.c:(.text.USBDCDCPacketRead+0x70): undefined reference to `USBDevEndpointDataAck' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdcdc.o): In function `USBDCDCRxPacketAvailable': usbdcdc.c:(.text.USBDCDCRxPacketAvailable+0x16): undefined reference to `USBEndpointStatus' usbdcdc.c:(.text.USBDCDCRxPacketAvailable+0x2a): undefined reference to `USBEndpointDataAvail' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdenum.o): In function `USBDEP0StateTx.clone.0': usbdenum.c:(.text.USBDEP0StateTx.clone.0+0x22): undefined reference to `USBEndpointDataPut' usbdenum.c:(.text.USBDEP0StateTx.clone.0+0x46): undefined reference to `USBEndpointDataSend' usbdenum.c:(.text.USBDEP0StateTx.clone.0+0x36): undefined reference to `USBEndpointDataSend' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdenum.o): In function `USBDCDInit': usbdenum.c:(.text.USBDCDInit+0x40): undefined reference to `USBClockEnable' usbdenum.c:(.text.USBDCDInit+0x4a): undefined reference to `USBULPIEnable' usbdenum.c:(.text.USBDCDInit+0x68): undefined reference to `USBULPIDisable' usbdenum.c:(.text.USBDCDInit+0x74): undefined reference to `USBDevMode' usbdenum.c:(.text.USBDCDInit+0x7e): undefined reference to `USBOTGMode' usbdenum.c:(.text.USBDCDInit+0x94): undefined reference to `USBDevLPMConfig' usbdenum.c:(.text.USBDCDInit+0x9c): undefined reference to `USBLPMIntEnable' usbdenum.c:(.text.USBDCDInit+0xa2): undefined reference to `USBDevLPMEnable' usbdenum.c:(.text.USBDCDInit+0xae): undefined reference to `USBDevLPMDisable' usbdenum.c:(.text.USBDCDInit+0xb6): undefined reference to `USBDevLPMConfig' usbdenum.c:(.text.USBDCDInit+0xfe): undefined reference to `USBIntStatusControl' usbdenum.c:(.text.USBDCDInit+0x104): undefined reference to `USBIntStatusEndpoint' usbdenum.c:(.text.USBDCDInit+0x10c): undefined reference to `USBIntEnableControl' usbdenum.c:(.text.USBDCDInit+0x116): undefined reference to `USBIntEnableEndpoint' usbdenum.c:(.text.USBDCDInit+0x11c): undefined reference to `USBDevConnect' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdenum.o): In function `USBDCDStallEP0': usbdenum.c:(.text.USBDCDStallEP0+0x8): undefined reference to `USBDevEndpointStall' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdma.o): In function `iDMAUSBChannelRelease': usbdma.c:(.text.iDMAUSBChannelRelease+0x8): undefined reference to `USBDMAChannelDisable' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdma.o): In function `iDMAUSBChannelAllocate': usbdma.c:(.text.iDMAUSBChannelAllocate+0x1e): undefined reference to `USBDMAChannelDisable' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdma.o): In function `iDMAUSBChannelDisable': usbdma.c:(.text.iDMAUSBChannelDisable+0xa): undefined reference to `USBDMAChannelDisable' usbdma.c:(.text.iDMAUSBChannelDisable+0x12): undefined reference to `USBDMAChannelIntDisable' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdma.o): In function `iDMAUSBChannelIntDisable': usbdma.c:(.text.iDMAUSBChannelIntDisable+0x4): undefined reference to `USBDMAChannelIntDisable' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdma.o): In function `iDMAUSBChannelIntEnable': usbdma.c:(.text.iDMAUSBChannelIntEnable+0x4): undefined reference to `USBDMAChannelIntEnable' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdma.o): In function `iDMAUSBChannelEnable': usbdma.c:(.text.iDMAUSBChannelEnable+0x36): undefined reference to `USBDMAChannelIntEnable' usbdma.c:(.text.iDMAUSBChannelEnable+0x3e): undefined reference to `USBDMAChannelEnable' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdma.o): In function `iDMAUSBTransfer': usbdma.c:(.text.iDMAUSBTransfer+0x40): undefined reference to `USBDMAChannelAddressSet' usbdma.c:(.text.iDMAUSBTransfer+0x4a): undefined reference to `USBDMAChannelCountSet' usbdma.c:(.text.iDMAUSBTransfer+0x6e): undefined reference to `USBEndpointPacketCountSet' usbdma.c:(.text.iDMAUSBTransfer+0x84): undefined reference to `USBEndpointDMAConfigSet' usbdma.c:(.text.iDMAUSBTransfer+0x98): undefined reference to `USBDMAChannelConfigSet' usbdma.c:(.text.iDMAUSBTransfer+0xc2): undefined reference to `USBEndpointDMAConfigSet' usbdma.c:(.text.iDMAUSBTransfer+0xd2): undefined reference to `USBDMAChannelConfigSet' usbdma.c:(.text.iDMAUSBTransfer+0xea): undefined reference to `USBEndpointDMAEnable' usbdma.c:(.text.iDMAUSBTransfer+0xf2): undefined reference to `USBDMAChannelEnable' usbdma.c:(.text.iDMAUSBTransfer+0xfa): undefined reference to `USBEndpointDMADisable' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdma.o): In function `iDMAUSBIntStatus': usbdma.c:(.text.iDMAUSBIntStatus+0x2): undefined reference to `USBDMAChannelIntStatus' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdma.o): In function `iDMAUSBChannelStatus': usbdma.c:(.text.iDMAUSBChannelStatus+0x8): undefined reference to `USBDMAChannelStatus' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdma.o): In function `uDMAUSBUnitSizeSet': usbdma.c:(.text.uDMAUSBUnitSizeSet+0x6e): undefined reference to `uDMAChannelControlSet' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdma.o): In function `uDMAUSBArbSizeSet': usbdma.c:(.text.uDMAUSBArbSizeSet+0x6e): undefined reference to `uDMAChannelControlSet' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdma.o): In function `uDMAUSBIntStatus': usbdma.c:(.text.uDMAUSBIntStatus+0x12): undefined reference to `uDMAChannelModeGet' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdma.o): In function `uDMAUSBChannelRelease': usbdma.c:(.text.uDMAUSBChannelRelease+0xe): undefined reference to `uDMAChannelAttributeDisable' usbdma.c:(.text.uDMAUSBChannelRelease+0x2c): undefined reference to `USBEndpointDMADisable' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdma.o): In function `uDMAUSBChannelEnable': usbdma.c:(.text.uDMAUSBChannelEnable+0x5c): undefined reference to `USBEndpointDMAEnable' usbdma.c:(.text.uDMAUSBChannelEnable+0x62): undefined reference to `uDMAChannelEnable' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdma.o): In function `uDMAUSBTransfer': usbdma.c:(.text.uDMAUSBTransfer+0x4a): undefined reference to `USBFIFOAddrGet' usbdma.c:(.text.uDMAUSBTransfer+0x84): undefined reference to `uDMAChannelTransferSet' usbdma.c:(.text.uDMAUSBTransfer+0xa2): undefined reference to `USBEndpointPacketCountSet' usbdma.c:(.text.uDMAUSBTransfer+0xb6): undefined reference to `USBEndpointDMAConfigSet' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdma.o): In function `uDMAUSBChannelDisable': usbdma.c:(.text.uDMAUSBChannelDisable+0x2e): undefined reference to `USBEndpointDMADisable' usbdma.c:(.text.uDMAUSBChannelDisable+0x34): undefined reference to `uDMAChannelDisable' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdma.o): In function `uDMAUSBChannelAllocate': usbdma.c:(.text.uDMAUSBChannelAllocate+0x86): undefined reference to `USBEndpointDMAChannel' usbdma.c:(.text.uDMAUSBChannelAllocate+0x8e): undefined reference to `uDMAChannelAttributeDisable' usbdma.c:(.text.uDMAUSBChannelAllocate+0x9a): undefined reference to `uDMAChannelControlSet' usbdma.c:(.text.uDMAUSBChannelAllocate+0xb0): undefined reference to `USBEndpointDMADisable' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbdma.o): In function `USBLibDMAInit': usbdma.c:(.text.USBLibDMAInit+0x7c): undefined reference to `USBControllerVersion' C:\ti\TivaWare_C_Series-\usblib\gcc\libusb.a(usbulpi.o): In function `ULPIConfigSet': usbulpi.c:(.text.ULPIConfigSet+0x8): undefined reference to `USBULPIRegRead' usbulpi.c:(.text.ULPIConfigSet+0x18): undefined reference to `USBULPIRegWrite' usbulpi.c:(.text.ULPIConfigSet+0x20): undefined reference to `USBULPIRegRead' usbulpi.c:(.text.ULPIConfigSet+0x32): undefined reference to `USBULPIRegWrite' usbulpi.c:(.text.ULPIConfigSet+0x3a): undefined reference to `USBULPIRegRead' usbulpi.c:(.text.ULPIConfigSet+0x50): undefined reference to `USBULPIRegWrite' collect2.exe: error: ld returned 1 exit status All undefined references point to functions declared in driverlib/usb. Does anybody have a clue where to start to fix this issue?
  11. I have recently received my Stellaris Launchpad and I'm building a toolchain to code for it using GNU+Linux. So far I have the cross compiler+lm4tools+stellarisware running. I can build the stellaris examples and flash them without problems. As I want to do some signal processing with my board, I'd like to build the CMSIS library. At least the DSPLib part (I don't need the RTOS right now). The library zip file has some scripts to build it using Keil, but as I'm a GNU+Linux user, I can't run Keil IDE. Also unfortunately, I'm a total noob when talking about autotools, so... Has anyone been able to build this library using GCC? Does anyone have a Makefile to automate building it? Thanks in advance!
  12. Hi, I've never noticed that the license for the examples of the stellaris launchpad were closed, they say explicitly that: # Texas Instruments (TI) is supplying this software for use solely and # exclusively on TI’s microcontroller products. The software is owned by # TI and/or its suppliers, and is protected under applicable copyright # laws. You may not combine this software with “viral” open-source # software in order to form a larger program. I wasn't very comfortable with this and I finally decided to write the needed linker script, startup file and the useful Makefile from scratch and license them with a BSD license. You can find my impressions here and the code in this github repository. Right now it doesn't support Stellarisware (It's basically the first working version) but I'm planning to add support for libraries in the Makefile as soon as I have time! I don't think it would be so difficult! Of course the sofware it's opened, so: every help, suggestion, bug issue it's welcome! I hope this would be useful in any way!
  13. I didn't see any posts on whether or not cygwin was a usable environment. I figured I would give it the college effort and see if I could build up a toolchain that allows me to compile and flash from within my editor of choice (Vim). The basic groundwork is laid out, and I have to say that I really didn't have to do any original work as it was basically all adapted from linux tutorials. If anyone is interested, I wrote up my experience at
  14. I'm new here so hi. I have a problem compiling stellarisware with a custom build of gcc. I'm using the custom build because I want to learn how to build an arm toolchain on linux. I used buildroot to build everything. The problem I'm having is that on the qs_rgb example there is an error: In function `__aeabi_ldiv0': undefined reference to `raise' I think this has to do with floating point division used in the example. the makedefs file for stellarisware is set up to use software floating point. I'm using gcc 4.7.1 and it is set to use software fpu by default. Has anyone successfully built their own toolchain?
  15. If you are a Linux enthusiasts, you will love this! You can develop for the stellaris launchpad using command-line tools on Linux; check out: http://recursive-lab...etting-started/