Jump to content

pimmel

Members
  • Content Count

    26
  • Joined

  • Last visited


Reputation Activity

  1. Like
    pimmel got a reaction from LariSan in Simple FPGA project using an MSP430   
    At my job, we had a training class on FPGAs; the project I choose to do was a take on a digital theremin, which ended up using a Launchpad with Energia. If you're suffering from insomnia, feel free to check out the build notes and links to code here: http://underwaterwhistler.blogspot.com/2013/04/fun-with-msp430-launchpad-and-digilent.html
  2. Like
    pimmel reacted to Rickta59 in LPC810 fun, anyone?   
    Interesting web based tool config tool for the lpc8xx
     
    http://www.lpcware.com/tools/lpcconfig
     
    -rick
  3. Like
    pimmel got a reaction from f4dtr in Change Frequency to SI570 DXO on I2C. (not fully fonctionnal).   
    Hi Jean-Yves,
     
    Looking over your code in the ino file, I think you might be writing to the wrong register to freeze the DCO; around line 167 you use register 135 instead of 137. Likewise for unfreezing the DCO. While some sample code I was playing around with didn't seem to matter for the register values I was playing with (jumping from 10 MHz to 14.2 MHz), the way I read the data sheet for the SI570 indicates that for large frequency change you should freeze 0b00010000 (0x10).
     
    So maybe use this instead? (untested - I was playing outside of energia):
    //Freeze DCO err |= SI570_WriteRegister(137, 16); Wire.beginTransmission(SI570); // ... // Unfreeze DCO err |= SI570_WriteRegister(137, 0);
  4. Like
    pimmel reacted to f4dtr in Change Frequency to SI570 DXO on I2C. (not fully fonctionnal).   
    Hi all !

    On another thread (cheat sheet thread), I have explain I use  launchpad for driving a SI570.
    some of you have need I share my work. it's ok... ;-) look attachment file.
     
    For understand my work, i preconise to read the datasheet.
    The SI570 have 2 mode for change frequency, i use the "long" mode. I recalc all parameters in every change frequency.
    But i simplify the calcul by the systematic use of initial frequency in place of read all registers for determinize actual ferquency to recalc new freq. (I think attiny/softrock already uses this trick.)
    but, I have 2 problems (in Fxtal_init) , and 1 function not implemented (in SetFrequency). I do not have time to look for now.
    but this is a good example of driving SI570, all logic is present.
     
    this code is divide in function. the principal is :
    void Init_FXTAL( void ) => read and calcul your Fxtal. this frequency is different for every SI570... (98% finish, but not fonctionnal) void setFrequency(float FOUT_NEW) => Change to your frequency in parameters (Mhz) (80% finish but not fonctionnal) void Set10(void) => Set SI570 to 10Mhz. fonctionnal with my SI570. void Set20m(void) => loop frequency 20m band (13.5Mhz to 14.5 Mhz by 100Khz). fonctional with my SI570. first problem :   uint64_t RFREQ_INIT = 0x0;   RFREQ_INIT = ((i2cInitBuf[2] & 0x3F) << 32);   RFREQ_INIT = RFREQ_INIT | (i2cReadBuf[3] << 24);   RFREQ_INIT = RFREQ_INIT | (i2cReadBuf[4] << 16);   RFREQ_INIT = RFREQ_INIT | (i2cReadBuf[5] << 8);   RFREQ_INIT = RFREQ_INIT | i2cReadBuf[6]; this result is not good. i think i have a problem with "unsigned".... bug ?
     
         2. Second problem :
    (float) RFREQ_MHZ_INIT = (uint64_t) RFREQ_INIT / 268435456;  // 268435456 = 2^28 if RFREQ is ok but the result is wrong... lack precision ? rounded ?
     
    Fonction not implemented :
     
    for change frequency to all value, the N1_DIV and HS_DIV must be calculed before change registers.
    i not program this part, i expect my correction (or your ;-) ) of my precedents problems for think it. ;-)
     
     
    in clonclusion :
     
    this code is not finished, but I do not have time now.
    This version provides all the elements of SI570 register read/write register comprehension.
    I think many things can be improved, it is only a draft of a future library maybe. but for now, it allowed me to test my trap and filter. time spent / results and so far positive report.

    I probably would end one day, when I need more function, or more accurately.
    I hope that this code you'll help to understand the Si570. good luck! and if you made ??a full library, think warn me! ;-)
     
    more explain/comment in code, good read ! ;-)
     
    Jean-Yves
    F4DTR.
     
    ps: sorry for my bad english. if you don't understand mail me, or if you want to correct me (english or code), youre welcome !
     
    si570.ino
  5. Like
    pimmel reacted to V0JT4 in Universal Ripple Control Receiver   
    I'm using I2C in my project with USCI. Here is code for write and read with repeated start, 8 or 16 bit EEPROM data address is possible. It was inspired by Anderson's code. May be useful for someone else.
     
    i2c.h

    #ifndef I2C_H_ #define I2C_H_ typedef unsigned char u8; typedef signed char s8; typedef unsigned int u16; typedef signed int s16; typedef struct { u8 count; u8 state; u16 address; u8 *buffer; } i2c_data_t; #define size_tr(size, addr16) ((size-1)<<1)|(addr16 & 0x01) // number of bytes to transfer(1 to 128, 2+ for RX), device ID, buffer pointer, is 16bit addressing, memory address #define i2c_tx(size, id, buffer, addr16, address) i2c_trans(size_tr(size,addr16), id, buffer, address) #define i2c_rx(size, id, buffer, addr16, address) i2c_trans(size_tr(size,addr16), id|0x01, buffer, address) // number of bytes to transfer|16 bit addressing, device ID|dirrection, buffer pointer, memory address void i2c_trans(u8 size, u8 id, u8 buffer[], u16 address); void i2c_init(void); // setup u8 i2c_int(void); // data transfer interrupt u8 i2c_eint(void); // NACK interrupt #endif /*I2C_H_*/
     
    i2c.c

    #include "msp430g2553.h" #include "i2c.h" // i2c states #define WRITE 0x00 #define READ 0x01 #define ADDR16 0x02 #define ADDRTR 0x04 #define REPSTT 0x08 i2c_data_t i2c_data = {0, 0, 0, 0}; void i2c_init(void) { P1SEL |= BIT6 + BIT7; //Set I2C pins P1SEL2 |= BIT6 + BIT7; UCB0CTL1 |= UCSWRST; //Enable SW reset UCB0CTL0 = UCMST + UCMODE_3 + UCSYNC; //I2C Master, synchronous mode UCB0CTL1 = UCSSEL_2 + UCSWRST; //Use SMCLK, keep SW reset UCB0BR0 = 12; //fSCL = SMCLK/12 = ~100kHz UCB0BR1 = 0; UCB0CTL1 &= ~UCSWRST; //Clear SW reset, resume operation IE2 |= UCB0TXIE | UCB0RXIE; //Enable TX, RX interrupt UCB0I2CIE = UCNACKIE; // NACK interrups } void i2c_trans(u8 size, u8 id, u8 *buffer, u16 address) { i2c_data.state = (id & READ) | ADDRTR; // byte counter if (size & 0x01) i2c_data.state |= ADDR16; i2c_data.count = (size >> 1) + 1; // byte counter i2c_data.address = address; // byte counter i2c_data.buffer = buffer; // byte counter UCB0I2CSA = id >> 1; // Slave Address 01101000 0x68 RTC //Slave Address 01010000 0x50 EEPROM UCB0CTL1 |= UCTR + UCTXSTT; // I2C TX, start condition __bis_SR_register(CPUOFF + GIE); // Enter LPM0 w/ interrupts // Remain in LPM0 until all data is transferred } u8 i2c_int(void) { if (i2c_data.state == WRITE) { if (i2c_data.count > 0) { //Check TX byte counter UCB0TXBUF = *i2c_data.buffer++; // Load TX buffer i2c_data.count--; //Decrement TX byte counter } else if (i2c_data.count == 0) { //last byte transferred UCB0CTL1 |= UCTXSTP; //I2C stop condition while (UCB0CTL1 & UCTXSTP); //Ensure stop condition got sent IFG2 &= ~UCB0TXIFG; //Clear USCI_B0 TX int flag return 1; //Exit LPM0 } } else if (i2c_data.state == READ) { *i2c_data.buffer++ = UCB0RXBUF; i2c_data.count--; //Decrement RX byte counter if (i2c_data.count == 1) { //Check RX byte counter, 1 byte remaining UCB0CTL1 |= UCTXSTP; // I2C stop condition } if (i2c_data.count == 0) { //Check RX byte counter, last byte received while (UCB0CTL1 & UCTXSTP); // Ensure stop condition got sent return 1; // Exit LPM0 } } else if (i2c_data.state & ADDR16) { // high byte address transmit UCB0TXBUF = _swap_bytes(i2c_data.address); i2c_data.state &= ~ADDR16; } else if (i2c_data.state & ADDRTR) { // low byte address transmit UCB0TXBUF = i2c_data.address; i2c_data.state &= ~ADDRTR; if (i2c_data.state) { // repeated Start for RX i2c_data.state |= REPSTT; } } else if (i2c_data.state & REPSTT) { // repeated start required i2c_data.state &= ~REPSTT; UCB0CTL1 &= ~UCTR; // I2C RX UCB0CTL1 |= UCTXSTT; // I2C repeated Start condition for RX IFG2 &= ~UCB0TXIFG; //Clear USCI_B0 TX int flag } return 0; } u8 i2c_eint(void) { if (UCB0STAT & UCNACKIFG) { // send STOP if slave sends NACK UCB0CTL1 |= UCTXSTP; UCB0STAT &= ~UCNACKIFG; return 1; } return 0; }
     
    example main.c

    #include "msp430g2553.h" #include "i2c.h" u8 txdata[] = {'H', 'E', 'L', 'L', 'O', ' ', 'W', 'O', 'R', 'L', 'D'}; u8 rxdata[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; void main(void) { WDTCTL = WDTPW + WDTHOLD; //Stop WDT BCSCTL1 = CALBC1_1MHZ; //Set DCO to 1MHz DCOCTL = CALDCO_1MHZ; // UART setup P1SEL = BIT1 + BIT2; //Set RXD and TXD P1SEL2 = BIT1 + BIT2; UCA0CTL1 |= UCSSEL_2 | UCSWRST; //Have USCI use SMCLK AKA 1MHz main CLK UCA0BR0 = 104; //Baud = 9600 UCA0BR1 = 0; UCA0MCTL = UCBRS_1; //Modulation UCA0CTL1 &= ~UCSWRST; //Start USCI i2c_init(); // init I2C __delay_cycles(20000); //Just a start up delay i2c_rx(11, 0xA0, rxdata, 0, 0); //i2c RX data u8 i = 0; while (i < 11) { while (!(IFG2 & UCA0TXIFG)); UCA0TXBUF = rxdata[i]; //UART TX data i++; } i2c_tx(11, 0xA0, txdata, 0, 0); //i2c TX 11 bytes("HELLO WORLD") __delay_cycles(20000); //Allow EEPROM to write data i2c_rx(11, 0xA0, rxdata, 0, 0); //i2c RX data i = 0; while (i < 11) { while (!(IFG2 & UCA0TXIFG)); UCA0TXBUF = rxdata[i]; //UART TX data i++; } __bis_SR_register(CPUOFF + GIE); //Wait for a reset } // I2C data transfer vector #pragma vector = USCIAB0TX_VECTOR __interrupt void USCIAB0TX_ISR(void) { if (i2c_int()) __bic_SR_register_on_exit(CPUOFF); //Exit LPM0; } // I2C status vector #pragma vector = USCIAB0RX_VECTOR __interrupt void USCIAB0RX_ISR(void) { if (i2c_eint()) { while (!(IFG2 & UCA0TXIFG)); // send error via UART UCA0TXBUF = '#'; } }
  6. Like
    pimmel reacted to Rickta59 in LPC810 fun, anyone?   
    So if you are willing to solder some tssop20 pin chips, you can get the lpc812 now at mouser.
     
    These tssop to dip adapter boards should work with them:
     
    http://www.ebay.com/itm/20-PCS-MSOP-TSSOP-SOIC20-to-DIP20-Adapter-PCB-Board-Converter-Double-Sides-B09-/281135726601?pt=LH_DefaultDomain_0&hash=item4174fec009
     
    -rick
     
    [Edit: added some pictures]
     
    I used a dollar store 3 led disassembled flash light taped under a hole cut in the box Mouser shipped me the chips and made a ghetto soldering lightbox:

     
    The resulting soldered chip on the adapter:

  7. Like
    pimmel got a reaction from jbkim in LPC810 fun, anyone?   
    Hey gang, 
     
    In addition to trying to adapt some code into an Energia library for the SI570 I2C-controlled oscillator, I also have managed to get ahold of the Adafruit LPC810 mini-kit/programmer [1], with the intent to play around and learn something about working with ARM processors. Sick of using a breadboard, I soldered up on protoboard my own version [2] of NXP's LPC800 mini-board [3] and ran through the tutorials provided by Adafruit [4]. I've also installed the Launchpad generic ARM compiler [5] so that I am not tied to an IDE like LPCXpresso [6] and have a little more insight under the hood of what is going on in the compilation/build/linking process. I found a nifty little simple blinky example that included an easy-to-modify makefile [7] and I was able to build and flash that on to the chip.
     
    So my question is, where do I go from here in the world of ARM? I don't really have a good understanding of the linker script, how/if you need to modify it, and I also really want to try and understand how to access the libraries that are included in the ROM on the die. Does anyone have any insight into that? All the LPC8xx examples I have found some to rely heavily on third party libraries that I can't follow or find, or (like in the example of the midibel stuff) are so arcane that I have a hard time trying to understand the code.
     
    I do have the data sheet and the programming manual, but they really seem to be geared for someone who has a bit of experience working with ARMs already, if not specific experience with LPC parts. All I seem to read on the googletubes is how easy it is to work with the NXP parts, not where you learn to use them
     
    So my embedded masters, do you have any hints or pointers?
     
    Thanks,
    Keith
     
    [1] http://www.adafruit.com/products/1336
    [2] http://underwaterwhistler.blogspot.com/2013/08/lpc810-arm-processor-board.html
    [3] http://lpcware.com/lpc800-mini-kit
    [4] http://learn.adafruit.com/getting-started-with-the-lpc810/introduction
    [5] https://launchpad.net/gcc-arm-embedded
    [6] http://lpcxpresso.code-red-tech.com/LPCXpresso/
    [7] http://www.midibel.com/
     
  8. Like
    pimmel reacted to Rickta59 in LPC810 fun, anyone?   
    These lpc810's are great little chips. I'm just using the opensource arm compiler from linaro on launchpad.net. I've coded up a thin veneer using C++ templates that abstract the GPIO pins. I've got the serial stuff working and of course written some code to drive the ws2812 chips using ARM asm. Although there is a much better approach you can find on the lpcware website using the state configurable timer peripheral.
     
    Once you have a working linker script you can forget about it. It is unlikely you will mess with it. If you want to use C++ you have to make sure your ldscript includes the c++ constructor and destructor sections and that your startup code does something with those sections. For straight 'C' you don't have to worry about that stuff. You are going to spend more time overriding the interrupt isr routines. I think that the adafruit sample code is a good place to start. You can also just give in and use the lpcexpresso environment and then use all of the LPCOpenWare code. Though it seems to be kind of bloated and maybe not 100% correct.
     
    I really like these lpc8xx chips. They are fast, (30MHz using an internal oscillator with no wait states on the flash), the internal clock is fairly accurate and can easily run uart code without an external xtal. The cortex-m0+ uses a 2 cycle pipeline (meaning that it takes less time to do stuff) and it can do single instruction cycle gpio (on the cortex-m0 lpc1114fn28 it is 3 cycles to read. modify and write back) The chip packaging make them accessible to someone with a soldering iron and cheap protoboards. The SCT adds a whole new set of capabilities that aren't normally available to such a small chip. Check out the WS2812 SCT driven code on the lpc800 forum at lpcware.com. It is a great example of how to make the most of the lpc8xx chip. The only down sides to the them seem to be the availability of the chips, the lack of ADC (although it does have a comparator ) and the lack of community surrounding them.
     
    Make sure you check out all the app notes on lpcware.com. You will find ones that discuss how to access the rom routines, make sure you grab the SCT cookbook and the wizard apps that let you configure the pin switch matrix. That reminds me, the SCT wizard built into LPCXpresso will let you create state machines to load onto the chip that will run on the SCT independent of the cortex-m0+. It is almost like have two processors for the price of one.
     
    Good luck!
     
    BTW: just noticed tonight that you can actually order the lpc812 now in tssop20 (I've been checking every day for the last couple of month and they are finally available in qty now for purchase )
  9. Like
    pimmel reacted to jpnorair in LPC810 fun, anyone?   
    Linker scripts for ARM are not really different than linker scripts for GNU POSIX C toolchains.  The same rules apply.  For linker scripting, I remember simply grok-ing linker scripting.  Then I copied a generic script and made necessary modifications.  The really critical areas are the "memory mapping" area and the "sections" area.  Also, make sure you know how to use the KEEP directive.  
     
    Here's one of my linker scripts for STM32L: https://github.com/jpnorair/OpenTag/blob/experimental/apps/app_7lan/proj_ride7/stm32l1xx_64_10.ld
     
    Anyway, the other critical differences of ARM Cortex-M vs MSP are the clock distribution network, the NVIC, and ... and ... well, those are the big two.  There's no good shortcut to learning this stuff, you just need to grok, RTM, and test.  If you want to look at OpenTag source for STM32L, go for it.  I DO NOT use abstracted libraries when interfacing with CM3.  You might also want to look at the CMSIS code.  The file is core_cm3.c (and .h).  I bet there's a cm0 version somewhere, too.
     
    Finally, the bible here is the ARM Cortex Mx TRM.  Here's the one for CM0: http://infocenter.arm.com/help/topic/com.arm.doc.ddi0432c/DDI0432C_cortex_m0_r0p0_trm.pdf
  10. Like
    pimmel got a reaction from jpnorair in LPC810 fun, anyone?   
    Hey gang, 
     
    In addition to trying to adapt some code into an Energia library for the SI570 I2C-controlled oscillator, I also have managed to get ahold of the Adafruit LPC810 mini-kit/programmer [1], with the intent to play around and learn something about working with ARM processors. Sick of using a breadboard, I soldered up on protoboard my own version [2] of NXP's LPC800 mini-board [3] and ran through the tutorials provided by Adafruit [4]. I've also installed the Launchpad generic ARM compiler [5] so that I am not tied to an IDE like LPCXpresso [6] and have a little more insight under the hood of what is going on in the compilation/build/linking process. I found a nifty little simple blinky example that included an easy-to-modify makefile [7] and I was able to build and flash that on to the chip.
     
    So my question is, where do I go from here in the world of ARM? I don't really have a good understanding of the linker script, how/if you need to modify it, and I also really want to try and understand how to access the libraries that are included in the ROM on the die. Does anyone have any insight into that? All the LPC8xx examples I have found some to rely heavily on third party libraries that I can't follow or find, or (like in the example of the midibel stuff) are so arcane that I have a hard time trying to understand the code.
     
    I do have the data sheet and the programming manual, but they really seem to be geared for someone who has a bit of experience working with ARMs already, if not specific experience with LPC parts. All I seem to read on the googletubes is how easy it is to work with the NXP parts, not where you learn to use them
     
    So my embedded masters, do you have any hints or pointers?
     
    Thanks,
    Keith
     
    [1] http://www.adafruit.com/products/1336
    [2] http://underwaterwhistler.blogspot.com/2013/08/lpc810-arm-processor-board.html
    [3] http://lpcware.com/lpc800-mini-kit
    [4] http://learn.adafruit.com/getting-started-with-the-lpc810/introduction
    [5] https://launchpad.net/gcc-arm-embedded
    [6] http://lpcxpresso.code-red-tech.com/LPCXpresso/
    [7] http://www.midibel.com/
     
  11. Like
    pimmel reacted to f4dtr in Energia Cheat Sheet   
    Hello All !
     
    for program to SI570, my code is "simple, fast and ugly" ! but the code is ok for initialisation and slow loop between 2 frequency.
    I don't have my program's pc this week, but, i share my code this weekend (after clean :shh: ;-) , add comments and translate variable name).
     
     
    @Keith : I already had the similar problem with my Softrock on oscillator building step.
    The startup or powerup frequency are programmed in to the NVM at the factory, obtain an oscillation to is normal if power is ok.
    But, if (like me) your SI570 have bad solder on SDA or SCL pin, you can not change frequency ! and solder this pin is complicated because is small and difficult to acces. i resoldering, and it's ok. good luck !
     
    bye, 73,
    Jean-Yves.
    F4DTR.

     
  12. Like
    pimmel reacted to RobG in Kester 44 0.020" solder   
    @@cubeberg, here's more
    http://www.ebay.com/sch/datawireguy/m.html?item=231006894508
  13. Like
    pimmel reacted to RobG in Kester 44 0.020" solder   
    This looks like a steal, a pound of Kester 44 0.020" for $16 with free priority shipping. And he has more than one.
    UPDATE: link to seller's items
    http://www.ebay.com/sch/datawireguy/m.html?item=231006894508
  14. Like
    pimmel reacted to rockets4kids in A few notes about TI's command line compilers   
    I have have finally gotten around to putting together an updated makefile that will build for both gcc and ccs/cl430
     
    The root Makefile is kept simple like this:
    PROG = blink CHIP = msp430g2553 COPTS = -O2 -Wall -g include default.mk And all the complicated bits are in defaut.mk:
     
    The options for CCS are essentially those generated with the "Debug" option.  I am not entirely sure these are optimal, but they seem to work.
     
    The makefile essentially invokes itself under Wine to build using TI's ccs/cl430 copiler.
     
    This still needs to be cleaned up, but it works.
    ### ### Generic makefile for MSP430 (gcc + cl430) ### # make sure a PROG is specified ifndef PROG $(error No PROG specified.) endif # make sure a chip is specified ifndef CHIP $(error No CHIP specified.) endif # make uppercase and lowercase versions of chip # (these get passed in when called via WINE) ifndef MCU_LC MCU_LC := $(shell echo $(CHIP) | tr A-Z a-z) endif ifndef MCU_UC MCU_UC := $(shell echo $(CHIP) | tr a-z A-Z) endif # output dir config O_GCC = gcc O_CCS = ccs # gcc config CC = msp430-gcc CXX = msp430-g++ OBJDUMP = msp430-objdump SIZE = msp430-size CFLAGS = $(COPTS) -mmcu=$(MCU_LC) # mspdebug config MSPDEBUG = mspdebug FET = rf2500 GDB = msp430-gdb GDBTUI = $(GDB)tui # ccs via wine config WINE = wine GMAKE = /Users/peter/.wine/drive_c/ti/utils/bin/gmake.exe CL430 = "C:/ti/compiler/bin/cl430" CL430_OPTS = -vmsp --abi=eabi -g --define=__$(MCU_UC)__ \ --display_error_number --diag_wrap=off \ --diag_warning=225 --diag_suppress=10374 \ --printf_support=minimal CL430_COPTS = --include_path="C:/ti/include" --include_path="C:/ti/compiler/include" CL430_LOPTS = -z --stack_size=80 --heap_size=80 \ -i"C:/ti/include" -i"C:/ti/compiler/lib" -i"C:/ti/compiler/include" \ --reread_libs --warn_sections --rom_model CL430_LNK = "C:/ti/include/lnk_$(MCU_LC).cmd" # gcc target files GCC_OBJS=$(O_GCC)/$(PROG).o GCC_ELF=$(O_GCC)/$(PROG).elf GCC_LST=$(O_GCC)/$(PROG).lst # ccs target files CCS_OBJS=$(O_CCS)/$(PROG).obj CCS_OUT=$(O_CCS)/$(PROG).out # specify non-file targets .PHONY: all gcc ccs lst clean install mspdebug debug gdb tui # what to make by default all: gcc ccs # make using "gcc" - make elf and display size gcc: $(GCC_ELF) $(SIZE) $(GCC_ELF) # make using "ccs" # - make sure dir exists and call gnu-make with wine # doze can't 'tr' so pass MCU vars in ccs: mkdir -p $(O_CCS) $(WINE) $(GMAKE) $(CCS_OUT) MCU_UC=$(MCU_UC) MCU_LC=$(MCU_LC) # # begin gcc-specific block # lst: $(GCC_LST) $(GCC_ELF): $(GCC_OBJS) $(CC) $(CFLAGS) -o $(GCC_ELF) $(GCC_OBJS) $(O_GCC)/%.o: %.c @mkdir -p $(@D) $(CC) $(CFLAGS) -c $< -o $@ $(GCC_LST): $(GCC_ELF) $(OBJDUMP) -DS $< >$@ clean: rm -fr $(O_GCC) $(O_CCS) install: $(GCC_ELF) $(MSPDEBUG) $(FET) "prog $(GCC_ELF)" mspdebug: $(GCC_ELF) $(MSPDEBUG) $(FET) debug: $(GCC_ELF) $(MSPDEBUG) $(FET) gdb gdb: $(GCC_ELF) $(GDB) $(GCC_ELF) tui: $(GCC_ELF) $(GDBTUI) $(GCC_ELF) # # begin CCS-specific block # $(CCS_OUT): $(CCS_OBJS) $(CL430) $(CL430_OPTS) $(CL430_LOPTS) -m$(O_CCS)/$(PROG).map -o $(CCS_OUT) \ $(CCS_OBJS) -l"libc.a" $(CL430_LNK) $(O_CCS)/%.obj: %.c $(CL430) $(CL430_OPTS) $(CL430_COPTS) --obj_directory $(O_CCS) $< install-ccs: $(CCS_OUT) $(MSPDEBUG) $(FET) "prog $(CCS_OUT)"
  15. Like
    pimmel got a reaction from yyrkoon in Simple FPGA project using an MSP430   
    At my job, we had a training class on FPGAs; the project I choose to do was a take on a digital theremin, which ended up using a Launchpad with Energia. If you're suffering from insomnia, feel free to check out the build notes and links to code here: http://underwaterwhistler.blogspot.com/2013/04/fun-with-msp430-launchpad-and-digilent.html
  16. Like
    pimmel got a reaction from zborgerd in GCC and Cygwin   
    Okay, part two of working within cygwin. I now have a post on building up and using a debugging environment with OpenOCD and gdb. If anyone is interested, the write-up can be found at http://underwaterwhistler.blogspot.com/2013/02/stellaris-cygwin-and-openocd-for.html. Again, this is mostly work of others, based heavily off of support from Spen and Mauro. Enjoy!
  17. Like
    pimmel got a reaction from zborgerd in GCC and Cygwin   
    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 http://underwaterwhistler.blogspot.com/2013/01/getting-started-with-stellaris-launchpad.html
  18. Like
    pimmel got a reaction from bluehash in GCC and Cygwin   
    Okay, part two of working within cygwin. I now have a post on building up and using a debugging environment with OpenOCD and gdb. If anyone is interested, the write-up can be found at http://underwaterwhistler.blogspot.com/2013/02/stellaris-cygwin-and-openocd-for.html. Again, this is mostly work of others, based heavily off of support from Spen and Mauro. Enjoy!
  19. Like
    pimmel reacted to ntfreak in OpenOCD and cygwin causing stackdump   
    Following on to build native mingw in cygwin i use the following configure line:
     

    # bootstrap only needed on first checkout./bootstrap# build line for native 32bit windows./configure --enable-maintainer-mode --build=i686-pc-cygwin --host=i686-w64-mingw32 --disable-shared --disable-werror --enable-stlink# to build for 64bit we would use./configure --enable-maintainer-mode --build=i686-pc-cygwin --host=x86_64-w64-mingw32 --disable-shared --disable-werror --enable-stlink
     
    You will need to have the windows native cross compiler installed
    mingw64-i686-gcc-core etc for 32bit or
    mingw64-x86_64-gcc-core etc for 64bit build
     
    and also libusbx - http://sourceforge.net/projects/libusbx/files/releases/1.0.14/Windows/libusbx-1.0.14-win.7z/download
    You will need to put the add the header and lib files to the compilers
    create /usr/i686-w64-mingw32/sys-root/mingw/include/libusb-1.0/ and place libusb.h into it (note call it libusb-1.0 not libusbx-1.0
    /usr/x86_64-w64-mingw32/sys-root/mingw/include/libusb-1.0/ for 64bit compiler.
     
    next add the correct lib (from above archive) to either below. i use the static one.
    /usr/i686-w64-mingw32/sys-root/mingw/lib/
    /usr/x86_64-w64-mingw32/sys-root/mingw/lib/
     
    As a note I use enable-stlink as it builds for the ti-icdi as well, they use the same driver backend so are built together.
     
    Cheers
    Spen
  20. Like
    pimmel reacted to ntfreak in OpenOCD and cygwin causing stackdump   
    Firstly i would try using OpenOCD master as support for the ICDI has been merged for a while.
    I have built ICDI support using cygwin, however i use it to cross compile for native windows (mingw).
     
    Infact i have just fixed a bug with this adapter that was causing random issues:
    https://forum.sparkfun.com/viewtopic.php?f=18&t=34636
     
    Cheers
    Spen
  21. Like
    pimmel reacted to scompo in Stellaris launchpad gcc makefile, startup file and linker script BSD   
    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!
  22. Like
    pimmel got a reaction from Xtagon in GCC and Cygwin   
    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 http://underwaterwhistler.blogspot.com/2013/01/getting-started-with-stellaris-launchpad.html
  23. Like
    pimmel got a reaction from bluehash in GCC and Cygwin   
    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 http://underwaterwhistler.blogspot.com/2013/01/getting-started-with-stellaris-launchpad.html
  24. Like
    pimmel got a reaction from abecedarian in GCC and Cygwin   
    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 http://underwaterwhistler.blogspot.com/2013/01/getting-started-with-stellaris-launchpad.html
  25. Like
    pimmel got a reaction from Nuaskessekiny in GCC and Cygwin   
    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 http://underwaterwhistler.blogspot.com/2013/01/getting-started-with-stellaris-launchpad.html
×
×
  • Create New...