2011-8-7 18:06:30

来源:互联网 发布:淘宝女装店名起名大全 编辑:程序博客网 时间:2024/05/16 16:17
 


2011-8-7 18:06:30


#define TERMINAL_SPEED baud_115200

使用这个波特率来初试化串口


static void call_funcs(initlist_t *start, initlist_t *end,
         u32 magic, int level)
{
 initlist_t *item;

 for(item = start; item != end; item++) {
  if(item->magic != magic) {
   deprintf("init magic failed at 0x%08x\n",
     (unsigned int)item);
   printerror(EMAGIC, NULL);

   return;
  }
  
  if(item->level == level) {
   /* call function */
   item->callback();
  }
 }
}

按级别来调用初始化函数

static void call_funcs(initlist_t *start, initlist_t *end,
         u32 magic, int level)
{
 initlist_t *item;

 for(item = start; item != end; item++) {
  if(item->magic != magic) {
   deprintf("init magic failed at 0x%08x\n",
     (unsigned int)item);
   printerror(EMAGIC, NULL);

   return;
  }
  
  if(item->level == level) {
   /* call function */
   item->callback();
  }
 }
}


void init_subsystems(void)
{
 int i;
 
 /* call all subsystem init functions */
 for(i = INIT_LEVEL_MIN; i <= INIT_LEVEL_MAX; i++)
  call_funcs((initlist_t *)&__initlist_start,
      (initlist_t *)&__initlist_end,
      INIT_MAGIC, i);
}

 


#define STATE_WHITESPACE (0)
#define STATE_WORD (1)
static void parse_args(char *cmdline, int *argc, char **argv)
{
 char *c;
 int state = STATE_WHITESPACE;
 int i;

 *argc = 0;

 if(strlen(cmdline) == 0)
  return;

 /* convert all tabs into single spaces */
 c = cmdline;
 while(*c != '\0') {
  if(*c == '\t')
   *c = ' ';

  c++;
 }
 
 c = cmdline;
 i = 0;

 /* now find all words on the command line */
 while(*c != '\0') {
  if(state == STATE_WHITESPACE) {
   if(*c != ' ') {
    argv[i] = c;
    i++;
    state = STATE_WORD;
   }
  } else { /* state == STATE_WORD */
   if(*c == ' ') {
    *c = '\0';
    state = STATE_WHITESPACE;
   }
  }

  c++;
 }
 
 *argc = i;

#ifdef BLOB_DEBUG
 for(i = 0; i < *argc; i++)
  dprintf("argv[%i] = %s\n", i, argv[i]);
#endif
}


看看blob是如何来解析参数的?