關於移植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"文件,這個文件就是我們最終所需的文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章