Search the Community

Showing results for tags 'flash'.

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


  • Community Calendar

Found 10 results

  1. Does anyone have any code examples, experience, or can point me to the right direction when it comes to reading/writing to the internal flash that comes with these boards in Energia? I'm wanting to store up to a maximum of a days worth of non-volatile 3x32 bit 5 minute samples (3,456 bytes), before sending as packets when the Rx is in range. Thanks in advance!
  2. Hi, I am currently working on a code in Energia that will allow me to upload and send a binary file wirelessly from a client site to the CC3200. So far, the code has successfully accomplished the following: -the board establishes a Wi-Fi network -commands from a laptop can interact with the board (the Energia Simple Wi-Fi Server example (LED ON/OFF) code was tested to ensure this was working) -a 9 byte binary file is sent through Wi-Fi to the board's volatile memory, saved from volatile memory into an on-baord flash memory file, and confirmed by sending it back to the laptop through a serial connection The code is eventually supposed to receive a larger binary file (we hope around 500 KB) that will represent points on a sinusoidal curve. This file will then be sent to the Audio Booster Pack board to play the audio file. I created a flash file which was opened, and written to through a buffer array containing the binary file contents. This method was successful for a 9 byte file, but I learned that a larger 500 KB file cannot be stored in a buffer array so easily. I think this is because of a lack of RAM space on the board. How can I implement a code in Energia in order save this larger binary file to the flash memory? Is the buffer array approach a good method? Latency isn't really an issue, as long as we can fit the whole file on the board, and then play it after. Thanks, any support is greatly appreciated!
  3. Hello! I am using Energia to program TM4C123GXL board. The program performs a primitive data acquisition with low frequency and stores it (together with timestamps) as an array in RAM. I would like to store data in EEPROM or, preferebly in FLASH. Micro-controller has 256kB flash. How can I save data there? There is flash API (flash.h and flash.c) in lm4f/driverlib/ though I am not sure even at which address range I can write/erase data? Can anybody point out to a working example? thanks for help!
  4. Hi there, I'm designing a little embedded system for a Formula SAE project. I'm trying to save "tuning" values from an ADC onto the microcontroller for later reference, if the values need to be reset or retuned later. The values are between 0-255 (ADC scaled down by a factor of 4). I'm using a MSP430G2452, and to my understanding this is possible as demonstrated in the mspflash example file. However, I for the life of me could not get anything coherent to display on the LCD hooked up to the MSP430 (44780). Heads up, I am a pretty terrible programmer. The general gist it I have an array: unsigned int potvalue[4] = {0, 0, 0, 0}; And I'm trying to copy all of these values into the MSP's flash memory: for(int offsat = 0; offsat < 64; offsat += 1){ Flash.write(SEGMENT_D + offsat, (unsigned char*)potvalue + offsat, 1); } And then later reading it, and outputting the value to the LCD (44780): lcd.setCursor(0, 1); for(int offset = 0; offset < 64; offset += + 1){ + offset, &data, 1); lcd.print(data); ...but I seem to just be getting garbage at the LCD. Any help at all would be greatly appreciated, I'm sure I've done goof'd up in there somewhere! Thanks again!
  5. Hi, I'm currently developing a software for the MSP430F5510. It worked fine with my development PCB for months, but as soon as I tried it on another one, I got very strange issues. My software is writing text to a display with a built-in font, and I'd sometimes get missing pixels, or the text "dEbug" or "debuf" instead of "debug". I then simplified my code until I arrived at this: #include <msp430.h> #include <string.h> #include "driverlib/MSP430F5xx_6xx/ucs.h" static const uint16_t flash_data[] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, }; static volatile uint16_t ram_data[] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, }; void main(void) { volatile uint32_t cnt = 0; static const uint32_t mclk = 25000000; WDTCTL = WDTPW | WDTHOLD; UCS_clockSignalInit(UCS_FLLREF, UCS_REFOCLK_SELECT, UCS_CLOCK_DIVIDER_1); UCS_initFLLSettle(mclk/1000, mclk/32768); while (1) { if (memcmp(&flash_data, (void*)&ram_data, sizeof(flash_data)) != 0) { _op_code(0x4343); } cnt++; } } My code sometimes stops on the software breakpoint, so it seems sometimes the flash gets read incorrectly. Most of the times this happens very soon after the program starts (cnt <= 50), but sometimes it takes a lot longer (cnt = some millions). Then after the next reset it immediately happens again. Some observations I made so far: It does not seem to happen when the clock is 24MHz instead of 25MHz It does not seem to happen on 2 of 4 prints I tested When I use single values rather than arrays, it happens more seldom. If I use != instead of memcmp to compare them, it doesn't seem to happen (maybe it gets optimized away though?). Optimisation level doesn't seem to make a difference Inserting an ~1s delay before and after setting the clock doesn't make a difference It seems it's always an 1 bit read as 0, i.e. I can't reproduce it if the data is 0x00 instead of 0xFF CCSv5 project with the above minimal example: 3326.corruption_test.zipThe related parts of the schematics and layout look like this: The supply voltage looks good for both unaffected and affected prints. Good: Bad: I've seen TIs document about the flash corruption issue (slaa471), but they mention the MSP430F5510 is unaffected, and the kind of corruption doesn't seem to be the one I'm seeing. I've also not seen anything related in the errata (slaz301j), except "Corrupted flash read when SVM low-side flag is triggered" which doesn't seem to be my issue. The chip revision is C, for both affected and unaffected prints. Any help would be appreciated, I really have no idea what to try anymore. Thanks!
  6. Can anybody tell me what is importance of EEPROM,Flash,Rom memories in tiva c launchpad ??Other is that we can write EEPROM,Flash in tiva c launchpad so what is use of this means we can write where we can use it?
  7. Hello All, I am trying to write data into flash which i need to copy it to the SRAM later. I am doing this in assembly and this is part of the code i am trying to use. I have provided the addresses of the FMD, FMA and FMC registers needed for flash programming and then I am copying those addresses into the registers r8,r9 and r10. My question is how do i now load data values into the addresses pointed by the registers r8,r9 and r10? As you can see, I am clearly wrong somewhere and need assistance!! FMD EQU 0x000000AB FMA EQU 0x000000DC FMC EQU 0x000000FF . . . . . . LDR R8, =FMD LDR R9, =FMA LDR R10,=FMC MOV32 [R8], #0xF0F0F0F0 MOV32 R9, #0x00000000 poll MOV32 R10,#0xA4420001 BNE poll Thanks!! BR, \ksnf3000
  8. Hi, I'm using the Stellaris Launchpad as part of sequencer/sampler musical instrument that I'm working on right now. I use the internal flash to record and store a couple of short 1-sec clips of audio, sampled at 21kHz - 12 bit. With the FlashProgram() function of the peripheral driver library, I store two words or four samples consecutively, so: record 4 samples - write to flash - record 4 samples - write to flash - etc. The recording happens on a timer interrupt, however the program skips an interrupt every 4 times, exactly when FlashProgram() is doing its thing. So I dove in the FlashProgram() code and adjusted the part where it is waiting, or polling, until the write is complete. This way, I thought, my program could continue running while the flash took its time to get written, 50µs or so. But it still continues skipping while it's writing to flash. Any suggestions to solve this? Or is it just impossible to 'do' anything while flash is being written?
  9. I do have a developer working with me, but he is away for a while, and I have been trying to resolved a flash issue we have been having. I am completely stumped. Any thoughts would be welcomed. All values being stored are integers. Using a 430g2553; I can read flash just fine (we had loaded flash data onto the mcu much much earlier in the development path) - here is an example: int *pflash = ( int *) 0x1000; // pointer into data flash settings.checkPumpTurnedOnDelay = *pflash++; settings.pumpOnTestDelay = *pflash++; settings.longSleepDelay = *pflash++; settings.pressurePumpOn = *pflash++; settings.minimumOperationalPressure = *pflash++; settings.mode_led_sound = *pflash++; // BIT0 = single_mode, BIT1 = led, BIT2 = sound settings.failed = *pflash++; Of course I want to be able to store updated settings into flash...... We had been using a buffer arrangement, but had troubles with that. So I have reverted code back to very basic levels. Firstly: erasing the segment: This should at least work, however it does not erase back to 1's. Each time the program runs it still retrieves the stored values from the load along time ago. void prepareToWrite_Seg (int pointer) { volatile char *Flash_ptr; // Flash pointer FCTL2 = FWKEY + FSSEL0 + FN3+ FN4; // MCLK/16 for Flash Timing Generator Flash_ptr = (char *) pointer; // Initialize Flash pointer FCTL1 = FWKEY + ERASE; // Set Erase bit FCTL3 = FWKEY; // Clear Lock bit *Flash_ptr = 0; // Dummy write to erase Flash segment while((FCTL3 & BUSY)); FCTL3 = FWKEY + LOCK; } Then the operation to write values: #define mFlashWriteEnable {while (FCTL3 & BUSY);FCTL1 = FWKEY;FCTL1 = FWKEY + WRT;} // Set WRT bit for write operation #define mFlashWriteDisable {while (FCTL3 & BUSY);FCTL1 = FWKEY +LOCK;} // disable write operation int *Flash_ptr; prepareToWrite_Seg (0xFC00); Flash_ptr=(int *)0xFC00; mFlashWriteEnable; *Flash_ptr++ = settings.checkPumpTurnedOnDelay; *Flash_ptr++ = settings.pumpOnTestDelay; *Flash_ptr++ = settings.longSleepDelay; *Flash_ptr++ = settings.pressurePumpOn; *Flash_ptr++ = settings.minimumOperationalPressure; *Flash_ptr++ = settings.mode_led_sound; // BIT0 = single_mode, BIT1 = led, BIT2 = sound *Flash_ptr++ = settings.failed; mFlashWriteDisable; .
  10. To know the FLASH and an estimate of the RAM used, find the location of the size utility /Applications/ compile a sketch and find the location of the elf file