zoukankan      html  css  js  c++  java
  • DECLARE_GLOBAL_DATA_PTR宏定义问题

      最近闲着顺便看了看6410的uboot代码,因为友善的boot对nand部分代码做了隐藏,所以干脆找了光盘里面三星原厂的uboot代码来看,因为友善的boot代码肯定也是基于厂商的代码改的,肯定可以的。

      安全起见,直接编译了三星的uboot代码,放到友善的板子上跑了一下,结果果然可以跑,但是发现起来之后,打印出来的dram size是0。

      今天查了一下,发现是DECLARE_GLOBAL_DATA_PTR这个定义的问题,友善的代码里面加了注释,说gcc4.5.1+版本对这个宏定义的定义已经不支持了!

      

      uboot中原始定义如下:

      #define DECLARE_GLOBAL_DATA_PTR     register volatile gd_t *gd asm ("r8")

      友善给改成了:

      #define DECLARE_GLOBAL_DATA_PTR extern gd_t *gd;

      就是定义了全局变量!

      改了之后,Dram的size就正常了。

      

      查了查8127的uboot代码,发现仍然使用的uboot原始定义,等周一去公司看一下8127的uboot编译器的版本,目前暂时无法验证了。

      继续,在公司验证了8127的uboot代码编译器的确是4.3.3版本的,接下来准备有时间看一下两个编译器编译出来的代码的差别。

  • 相关阅读:
    java数据类型
    如何判断数组
    git 常用命令
    如何配置 ESLint 工作流
    Lambda表达式和函数式接口
    面向对象(多态与内部类)
    面向对象(封装与继承)
    面相对像(基础)
    break;怎么跳出外部循环
    面向对象(类与对象)
  • 原文地址:https://www.cnblogs.com/masky/p/4320811.html
Copyright © 2011-2022 走看看