关于移植u_boot添加nandflash时 env_flash.c文件的错误更改

      本次移植u_boot基于的开发板是FL2440,FL2440不支持Norflash,但开发板上有一块Nandflash芯片,所以在移植u_boot时,我们要基于原u_boot文档将其Norflash改为Nandflash。移植过程中出现了一下问题:

     根据红色方框里的内容可以看出错误是:在env_flash,c文件中没有定义"flash_sect_protect","flash_sect_erase","flash_write","flash_perror"这四个函数。

     根据文档开始我们已经知道,在移植u_boot的时候我们要将Norflash改为Nandflash,那么env_flash.c是不应该被编译的,所以我们要找到Makefile里有关此文件的操作。

     我们打开common下的Makefile发现,可以看出env_flash.c受到CONFIG_ENV_IS_IN_FLASH这个宏的控制,那么我们去掉这个宏,则env_flash.c就不会被编译,也就不会出现上面的问题。

    我们打开fl2440.h,可以发现CONFIG_ENV_IS_IN_FLASH在里面被定义:

   

      所以我们要对其进行修改,修改如下:


       CONFIG_ENV_IS_IN_FLASH无效之后,则Makefile文件中有关env_flash.c的操作就会失效,那么在编译的时候env_flash.c就不会被编译,也就会避免以上错误。

补充:

      还有一种情况也会出现以上错误:如果在修改fl2440.h之前就对其进行过编译的话,系统就会生成一个可以被编译的文件(A),那么在你修改之后,再进行编译的时候,系统还会对A文件进行编译,因为修改fl2440.h并不能改变A文件,所以当修改完fl2440.h文件之后,要对整个u_boot进行 make dietclean 操作,make distclean会把之前make过的临时文件都删掉,然后再执行make fl2440_config 对fl2440.h重新编译,编译后生成的文件就会引导Makefile哪些文件需要编译,哪些文件不需要编译。

     完成以上步骤之后,我们再对整个u_boot进行编译,则可生成相对应的".bin"文件,这个文件就是我们最终所需的文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值