当前位置: 代码迷 >> 驱动开发 >> u-boot-1.1.6链接脚本的变量取址是什么含义?该怎么解决
  详细解决方案

u-boot-1.1.6链接脚本的变量取址是什么含义?该怎么解决

热度:244   发布时间:2016-04-28 10:14:16.0
u-boot-1.1.6链接脚本的变量取址是什么含义?
uboot.lds中有一段脚本: 
  
  ... 
  
  .u_boot_cmd : { 
  
     __u_boot_cmd_start = .; 
  
            
  
     *(.u_boot_cmd) 
  
            
  
     __u_boot_cmd_end = .; 
  
  } 
  
.... 
  
该段的作用是将uboot的所有与命令相关的struct都放在一起? 
  
.h中定义: 
struct cmd_tbl_s {.... 
}; 
  
typedef struct cmd_tbl_s cmd_tbl_t;      
  
extern cmd_tbl_t  __u_boot_cmd_start;    
extern cmd_tbl_t  __u_boot_cmd_end;      
  
  
  
然后在board.c中有代码: 
  
for (cmdtp = &__u_boot_cmd_start; cmdtp !=  &__u_boot_cmd_end; cmdtp++) { 
  
... 
  

  
  
cmdtp即为结构体指针,为什么是 &__u_boot_cmd_start 而不是  __u_boot_cmd_start 
?  
望大神们指教,感激不尽!!!
------解决方案--------------------
这个加不加&号是给c编译器使用的,没有这个&不能表示地址。你前面提到的你的培训班中的小技巧,我估计是使用的那个cmd_tbl_t的定义有差别,会不会是 typedef xxx *cmd_tbl_t的形式,这样一来你定义一个新的变量那么就是指针了。
  相关解决方案