.bss不适合区域ram

时间:2013-08-21 19:06:41

标签: arduino ram

我一直在研究LED墙,并遇到了RAM问题。基本上我使用teensy 3.0并尝试加载以下脚本,但是,.bss的脚本错误将不适合区域'RAM' 请帮忙!任何信息将不胜感激!谢谢!

/*  
Nike NFL draft LED wall program

OctoWS2811 BasicTest.ino - Basic RGB LED Test
http://www.pjrc.com/teensy/td_libs_OctoWS2811.html
Copyright (c) 2013 Paul Stoffregen, PJRC.COM, LLC

*/

#include <OctoWS2811.h>

const int ledsPerStrip = 290;

DMAMEM int displayMemory[ledsPerStrip*6];
int drawingMemory[ledsPerStrip*6];

const int config = WS2811_GRB | WS2811_800kHz;

OctoWS2811 leds(ledsPerStrip, displayMemory, drawingMemory, config);

#define ORANGE 0xE05800
#define WHITE  0xFFFFFF
#define BLACK 0x000000
#define BLACK2 0x1E1E1E

void setup() {
  leds.begin();
  leds.show();
}

static int widths[] = { 30, 30, 50, 90, 40, 60 };
static int speeds[] = { 5, 5, 10, 16, 11, 13 };
static int locations[] = { 0, 0, 0, 0, 0, 0 };
static int counter = 0;
//static int location = 0;
static boolean reverse = false;

int blend(int source      , float alpha) {
  int source_r = (source >> 16);
  int source_g = ((source >> 8) & 0x00FF);
  int source_b = (source & 0x0000FF);

  source_r = source_r * alpha;
  source_g = source_g * alpha;
  source_b = source_b * alpha;

  return source_b | (source_g << 8) | (source_r << 16);
}

void loop() {
  int microsec = 2000000 / leds.numPixels();  // change them all in 2 seconds

  int location;
  int offset;
  int width;
  int current;
  int min;
  int color;
  float alpha = 0.95; // Set brightness of head
  int head_width = 3; // Set width of head

  delay(20);

  int i;
  for(i = 0; i < 6; ++i) {
    location = locations[i];
    width = widths[i];
    color = 0xFFFFFF;
    offset = i*ledsPerStrip;

    location = location + speeds[i];

    if(location > ledsPerStrip + width) {
      location = 0;
    }

    locations[i] = location;

    if(location < width) {
      current = location;
      min = 0;
    } else if(location >= width) {
      current = location;
      min = location - width + 1;
    }

    for(current; current >= 0; --current) {
      if(current >= min) {
        if(current < ledsPerStrip) {
          if(!reverse) {
            leds.setPixel(current + offset, color);
          } else {
            leds.setPixel((ledsPerStrip - current) + offset, color);
          }
        }
        if(current < (location - head_width)) {
          color = blend(color, alpha);
        }
      } else {
        if(!reverse) {
          leds.setPixel(current + offset, BLACK);
        } else {
          leds.setPixel((ledsPerStrip - current) + offset, BLACK);
        }
      }
    }
  }

  leds.show();

  counter++;
}

并返回错误:   该报告将提供更多信息   “在编译期间显示详细输出”   在文件&gt;中启用喜好。 Arduino:1.0.5(Windows 7),主板:“Teensy 3.0” c:/ program files / arduino / hardware / tools / arm-none-eabi / bin /../ lib / gcc / arm-none-eabi / 4.7.2 /../../../../ arm -none-eabi / bin / ld.exe:Nike_NFL_Program.cpp.elf section .bss' will not fit in region RAM' c:/ program files / arduino / hardware / tools / arm-none-eabi / bin /../ lib / gcc / arm-none-eabi / 4.7.2 /../../../../ arm -none-eabi / bin / ld.exe:区域“RAM”溢出1028个字节 collect2.exe:错误:ld返回1退出状态

谢谢!

1 个答案:

答案 0 :(得分:0)

你的内存耗尽。从6到5个编译它的大小。请注意,3.0具有16384个SRAM。每个倍数消耗了有限的16384个SRAM中的大部分。