Пример #1
0
//---------------------------------------------------------------------------
bool val_in_region(const region_t &r, int value)
{
  for(unsigned i = 0; i < r.size(); i++)
  {
    if(value >= r[i].from && value <= r[i].to)
      return true;
  }
  return false;
}
Пример #2
0
namespace map {

constexpr region_t local_sram_0		{ 0x10000000,  96_KiB };
constexpr region_t local_sram_1		{ 0x10080000,  40_KiB };

constexpr region_t ahb_ram_0		{ 0x20000000,  32_KiB };
constexpr region_t ahb_ram_1		{ 0x20008000,  16_KiB };
constexpr region_t ahb_ram_2		{ 0x2000c000,  16_KiB };

constexpr region_t spifi_uncached	{ LPC_SPIFI_DATA_BASE,        1_MiB };
constexpr region_t spifi_cached		{ LPC_SPIFI_DATA_CACHED_BASE, spifi_uncached.size() };

/////////////////////////////////

constexpr region_t m4_code			{ local_sram_1.base(), 32_KiB };
constexpr region_t shared_memory	{ m4_code.end(),        8_KiB };

constexpr region_t m4_code_hackrf	= local_sram_0;

} /* namespace map */
Пример #3
0
//---------------------------------------------------------------------------
bool parse_int_region(const std::string &src, region_t &dst)
{
  REGION_ELEM elem;
  int *cur = NULL;
  unsigned i;

  for(i = 0; i < src.size(); i++)
  {
    if(src[i] >= '0' && src[i] <= '9')
    {
      if(cur == NULL)
      {
        cur = &elem.from;
        elem.from = 0;
        elem.to = 0;
      }
      else
      if(cur == &elem.to && elem.to == -1)
        elem.to = 0;

      (*cur) *= 10;
      (*cur) += src[i] - '0';
      if(cur == &elem.from)
        elem.to = *cur;
    }
    else
    if(src[i] == ',')
    {
      if(cur != NULL)
      {
        if(elem.to == -1)
          elem.to = 0x7fffffff;
        dst.push_back(elem);
        cur = NULL;
      }
    }
    else
    if(src[i] == '-')
    {
      if(cur == NULL)
      {
        elem.from = 0;
        elem.to = -1;
        cur = &elem.to;
      }
      else
      if(cur == &elem.to)
        return false; //Error
      else
      {
        elem.to = -1;
        cur = &elem.to;
      }
    }
    else
    if(src[i] == ' ' || src[i] == '\t')
      continue;
    else
      return false; //Error
  }

  if(cur != NULL)
  {
    if(elem.to == -1)
      elem.to = 0x7fffffff;
    dst.push_back(elem);
  }

  return true;
}