uboot代码运行问题 --- 留给自己的做---提醒
1、 今天才发现的问题,关于uboot源码的运行问题。今天在分析UBOOT源码的start_armboot 函数中的源码时,遇到了下面这几行代码,如下所示: ----------------------------------------------------------------------------------------------- ? ?#if defined(CONFIG_NAND) ---------------------------------------------------------------------------------------------- 于是我就追踪nand_init()这个函数的源码,在两个地方出现了: -------------------------------------------------------------------------- 1、Smdk6410.c (boardsamsungsmdk6410) ? ? ? ? ?void nand_init(void) 2、Nand.c (driversnand) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?void nand_init(void) -------------------------------------------------------------------------- 于是我就很想当然的认为应该运行 上面 ? ? ?1 ? ? 中的nand_init(void)函数(因为我关注的是smdk6410平台,当时还有点疑惑,为什么运行第一个而不是第二个?)结果证明我是错误的。 2、错误的发现。 我打开开发板运行时停在uboot下,通过 串口看到一个现象,如下所示: -------------------------------------------------------------------------------------------------- 很明显上面打印信息中的NAND是通过下面打印的,那s3c_nand_oob_mlc_128是在那里打印的呢? ------------------------------------------------------------------------- ? ?#if defined(CONFIG_NAND) ------------------------------------------------------------------------- 于是我就追踪s3c_nand_oob_mlc_128,结果发现,按在上面第 1 种方式调用函数根本就无法输出这样的信息,只有按第2中方式调用,才能打印出上面的信息,虽然证实了是第2中调用方式,但不太明白为什么? 3、 原来我忽略了一个很重要的问题--------------条件编译,直接看代码: --------------------------------------------------------------- 1、Smdk6410.c (boardsamsungsmdk6410) ? ??void nand_init(void)中的代码: #if (CONFIG_COMMANDS & CFG_CMD_NAND) && defined(CFG_NAND_LEGACY) --------------------------------------------------------------- 2、Nand.c (driversnand) ? ? ? ? ? ??void nand_init(void)中的代码: #if (CONFIG_COMMANDS & CFG_CMD_NAND) && !defined(CFG_NAND_LEGACY) ----------------------------------------------------------------------------- 看到上面的两端代码就应该明白了吧! 也意识到uboot的条件编译是多么的重要! ----------------------------------------------------------------------------- (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ajax,jquery,$.post/$.get异步刷新div,局部刷新
- React.js -- 优化你的表单
- ruby-on-rails – 添加自定义HTTP状态代码符号
- 记录oracle session达到默认最大值后的调整过程
- cocos2dx3.2 自定义精灵让精灵能够回调接收Event
- oracle数据文档之生成chm
- [20190306]共享服务模式与SDU.txt
- ruby-on-rails – Delayed_job:NoMethodError:
- Client found response content type of 'mu
- C++ unordered_set插入元素(insert插入元素)详