在移植 JZ2440 中,include/configs/jz2440.h 中有很多config 项都是已经在 uboot 的主配置中已经存在了的,这些配置造成了重复,需要优化。

  先将原先的 smdk2410.h 拷贝进来:cp include/configs/smdk2410.h ../../uboot/include/configs/jz2440.h

  并把其中的2410 字样全部改为2440

  执行编译

12.1 加入S3C24X0 架构

   修改:

  

  

这里修改之后,可以将 include/configs/jz2440.h 中的几个宏删掉:

  • CONFIG_S3C24X0
  • CONFIG_S3C2440
  • CONFIG_JZ2440

12.2 根据报错修改 u-boot

12.2.1 include/configs/jz2440.h:78:10: fatal error: config_cmd_default.h: No such file or directory

  此文件找不到,config_cmd_default.h 中定义了一系列的命令行命令,查找以下里面的命令是否已经在,若存在,则打开响应的宏,然后删除 config_cmd_default.h 头文件包含

 #ifndef _CONFIG_CMD_DEFAULT_H
#define _CONFIG_CMD_DEFAULT_H /*
* Alphabetical list of all commands that are configured by default.
* This is essentially all commands minus those that are considered
* "non-standard" for some reason (memory hogs, requires special
* hardware, not fully tested, etc.).
*/ #define CONFIG_CMD_BDI /* bdinfo */
#define CONFIG_CMD_BOOTD /* bootd */
#define CONFIG_CMD_CONSOLE /* coninfo */
#define CONFIG_CMD_ECHO /* echo arguments */
#define CONFIG_CMD_EDITENV /* editenv */
#define CONFIG_CMD_FPGA /* FPGA configuration Support */
#define CONFIG_CMD_IMI /* iminfo */
#define CONFIG_CMD_ITEST /* Integer (and string) test */
#ifndef CONFIG_SYS_NO_FLASH
#define CONFIG_CMD_FLASH /* flinfo, erase, protect */
#define CONFIG_CMD_IMLS /* List all found images */
#endif
#define CONFIG_CMD_LOADB /* loadb */
#define CONFIG_CMD_LOADS /* loads */
#define CONFIG_CMD_MEMORY /* md mm nm mw cp cmp crc base loop */
#define CONFIG_CMD_MISC /* Misc functions like sleep etc*/
#define CONFIG_CMD_NET /* bootp, tftpboot, rarpboot */
#define CONFIG_CMD_NFS /* NFS support */
#define CONFIG_CMD_RUN /* run command in env variable */
#define CONFIG_CMD_SAVEENV /* saveenv */
#define CONFIG_CMD_SETGETDCR /* DCR support on 4xx */
#define CONFIG_CMD_SOURCE /* "source" command support */
#define CONFIG_CMD_XIMG /* Load part of Multi Image */ #endif /* _CONFIG_CMD_DEFAULT_H */

  最后发现有两个宏找不到:

  CONFIG_SYS_NO_FLASH:这个宏是用来控制是否使用 flash的 CONFIG_CMD_FLASH 和  CONFIG_CMD_IMLS 命令的,这两个命令我们可以单独开,不需要移植进来

  CONFIG_CMD_SETGETDCR:主要是为了支持 DCR 寄存器。先看看 2015.01 中关于这个宏的定义:

  

  依赖文件为 cmd_dcr.c,我们可以添加进来,保证这条命令可以执行。但是先看看这个宏我们是否要开启

  2015.01 common/Makefile 中

  

  可以看见依赖于 CONFIG_4xx

  

  CONFIG_4xx 在 Powerpc 架构中才使用,我们不需要,不移植

  当前config_cmd_default.h 移植完毕,在 include/configs/jz2440.h 中删掉此头文件。

12.2.2 CONFIG_NAND_S3C2440

  include/configs/jz2440.h:173:0: warning: "CONFIG_NAND_S3C2440" redefined

  此宏在前面已经添加,直接删除掉

12.2.3 CONFIG_LZMA

  include/configs/jz2440.h:127:0: warning: "CONFIG_LZMA" redefined

  CONFIG_LZMA:LZMA 是一种压缩算法,使能能它,必须使能 CONFIG_CMD_LZMADEC,在menuconfig 命令行下。若不项使能压缩命令,只使能算法,可以将CONFIG_CMD_LZMADEC 关掉

  这个在 uboot 中已经默认开启,删除掉 jz2440.h  的相关定义。

12.2.4 CONFIG_DISPLAY_CPUINFO

  include/configs/jz2440.h:117:0: warning: "CONFIG_DISPLAY_CPUINFO" redefined

  前面移植已经做过操作,直接删除文件中的 CONFIG_DISPLAY_CPUINFO 即可。

12.2.5 CONFIG_SYS_PROMPT

  include/configs/jz2440.h:109:0: warning: "CONFIG_SYS_PROMPT" redefined

  前面移植已经做过操作,直接删除文件中的 CONFIG_SYS_PROMPT 即可。  

12.2.6 CONFIG_SYS_LONGHELP

  include/configs/jz2440.h:108:0: warning: "CONFIG_SYS_LONGHELP" redefined

  CONFIG_SYS_LONGHELP:显示长的命令帮助信息

  menuconfig 中可以直接开启,删除掉 jz2440.h 中的定义

12.2.7 CONFIG_CMDLINE_EDITING

  如果有 include/configs/jz2440.h:89:0: warning: "CONFIG_CMDLINE_EDITING" redefined

  CONFIG_CMDLINE_EDITING:为交互式命令行输入操作启用编辑和历史功能,即为我们的 uboot 串口shell 启动交互,已经选中,可以关闭jz2440.h 中的定义,或是在 menuconfig 有这个配置项可取消

12.2.8 CONFIG_RTC_S3C24X0

  这个需要添加进 menuconfig 中,添加方式如下

  搜索其他版本可以看到如下打印信息:

  

  查看当前版本 可知道有 s3c24x0_rtc.c 文件,但 menuconfig 中无法设置,移植到menuconfig 中

  driver/rtc/Kconfig 中修改:

  

  删除掉jz2440.h 中的定义

  

12.2.9 CONFIG_CMD_NAND

  include/configs/jz2440.h:77:0: warning: "CONFIG_CMD_NAND" redefined

  先关闭 nand 命令,在 menuconfig 中已经有定义,删除掉 jz2440.h 中的定义

12.2.10 CONFIG_CMD_ELF

  include/configs/jz2440.h:76:0: warning: "CONFIG_CMD_ELF" redefined

  CONFIG_CMD_ELF:从内存中启动一个 EFI 镜像

  我们不需要此项设置,在 menuconfig 中关闭,并删除掉 jz2440.h 中的重复定义

12.2.11 CONFIG_S3C24X0_SERIAL

  需要先移植进串口驱动,直接拷贝2015中的串口驱动使用:

  cp ./drivers/serial/serial_s3c24x0.c ../uboot/drivers/serial/serial_s3c24x0.c

  修改 drivers/serial/Makefile:

  

  添加 此项定义进 menuconfig 中

  修改下面的 Kconfig 文件:

  

  删除掉jz2440.h 中的定义。

12.2.12 cmd/reginfo.c:10:10: fatal error: asm/ppc.h: No such file or directory

  ppc 架构我们不需要,但是reginfo.c 这个文件我们调用了,可以在将其隔离。

  定义了 CONFIG_CMD_REGINFO 才会编译此文件。

  

  CONFIG_CMD_REGINFO:寄存器 dump,但是只支持 PPC 架构,删除掉。

12.2.13 cmd/ubi.c: In function ‘display_ubi_info’

  没打算在 uboot 支持 ubi 文件系统,去掉两个 UBI 宏

  

  注意也在 menuconfig 中关闭,若是有重复定义的话

12.2.14 cmd/built-in.o: In function `do_fat_fsinfo'

  与 ubi 一样,是  fat 文件系统的支持,此文件系统可以在 menuconfig 中直接配置,删除掉。

  

12.2.15 fdt 的错误

(1)common/built-in.o: In function `bootm_find_images':

  common/bootm.c:247: undefined reference to `set_working_fdt_addr'

(2)common/built-in.o: In function `boot_relocate_fdt':

  common/image-fdt.c:194: undefined reference to `set_working_fdt_addr'

(3)common/built-in.o: In function `cmd_process':

  common/command.c:544: undefined reference to `do_bootd'

  do_bootd 代码走向依赖于宏CONFIG_CMD_BOOTD,此宏在 jz2440.h 中未定义,关闭掉

(4)lib/built-in.o: In function `efi_exit_boot_services':

  lib/efi_loader/efi_boottime.c:1748: undefined reference to `board_quiesce_devices'

  lib/efi_loader/efi_boottime.c:1754: undefined reference to `bootm_disable_interrupts'

  关掉宏:

  • CONFIG_OF_LIBFDT:是嗯那个 FDT 库,S3C2440 并没有支持 设备树,这个宏会关闭 EFI  

十一、移植优化---CONFIG 优化进 menuconfig(1)的更多相关文章

  1. 十一、移植优化---CONFIG 优化进 menuconfig(2)

    11.3 jz2440.h 中的剩余宏移植 11.3.1 CONFIG_SYS_TEXT_BASE CONFIG_SYS_TEXT_BASE:设置系统代码段的基地址,设为 0x0:menuconfig ...

  2. spark优化之优化数据结构

    概序: 要减少内存的消耗,除了使用高效的序列化类库以外,还有一个很重要的事情,就是优化数据结构.从而避免Java语法特性中所导致的额外内存的开销,比如基于指针的Java数据结构,以及包装类型. 有一个 ...

  3. c/c++性能优化--- cache优化的一点杂谈

    之前写了一篇关于c/c++优化的一点建议,被各种拍砖和吐槽,有赞成的有反对的,还有中立的,网友对那篇博客的的评论和吐槽,我一个都没有删掉,包括一些具有攻击性的言论.笔者有幸阅读过IBM某个项目的框架代 ...

  4. [原]Android开发优化-Adapter优化

    ListView作为Android开发中使用频率最高的一个控件,保证ListView的流畅运行,对用户体验的提高至关重要.Adapter是ListView和数据源之间的中间人,当每条数据进入可见区时, ...

  5. SqlServer 数据库引擎优化顾问优化数据库

    现在一直在做的项目,数据量相对也不小,开始的时候没有觉得,因为是刚开始,数据量还很小,在程序使用过程中速度还挺快,但是随着数据量的不停的增长,发现程序越来越慢,甚至出现了超时的问题,因此要对程序和数据 ...

  6. Mysql优化之优化工具profiling

    程序员的成长之路 2016-11-23 22:42 Mysql优化之优化工具profiling 前言 mysql优化技术: mysql优化不是做一个操作就可以的优化,它包含很多的细节,需要一点一点的优 ...

  7. QRowTable表格控件(四)-效率优化之-优化数据源

    目录 一.开心一刻 二.问题分析 三.重写数据源 1.自己存储数据 2.重写data接口 四.比较 五.相关文章 原文链接:QRowTable表格控件(四)-效率优化之-优化数据源 一.开心一刻 一程 ...

  8. 知识点整理-mysql怎么查看优化器优化后的sql

    背景 1.新建两张表 CREATE TABLE t1 (m1 )); CREATE TABLE t2 (m2 )); 2.插入些数据 INSERT INTO t1 VALUES(, , , 'c'); ...

  9. Android 性能优化 ---- 启动优化

    Android 性能优化 ---- 启动优化 1.为什么要进行启动优化 一款应用的第一印象很重要,第一印象往往决定了用户的去留.打开一款应用,如果速度很快,很顺畅,那么很容易让人觉得这款应用背后的技术 ...

随机推荐

  1. 【nginx】nginx配置文件结构,内置变量及参数调优

    Nginx的配置文件是一个纯文本文件,它一般位于Nginx安装目录的conf目录下,整个配置文件是以block的形式组织的.每个block一般以一个大括号“{”来表示.block 可以分为几个层次,整 ...

  2. 各种“地”—— 各种“GND”

    GND,指的是电线接地端的简写.代表地线或0线. 电路图上和电路板上的GND(Ground)代表地线或0线.GND就是公共端的意思,也可以说是地,但这个地并不是真正意义上的地.是出于应用而假设的一个地 ...

  3. centos7搭建ELK Cluster集群日志分析平台(三):Kibana

    续  centos7搭建ELK Cluster集群日志分析平台(一) 续  centos7搭建ELK Cluster集群日志分析平台(二) 已经安装好elasticsearch 5.4集群和logst ...

  4. Go实战--golang中使用JWT(JSON Web Token)

    http://blog.csdn.net/wangshubo1989/article/details/74529333 之前写过关于golang中如何使用cookie的博客: 实战–go中使用cook ...

  5. LOJ#2245 魔法森林

    这道题以前zbtrs大佬给我讲过.但是我只知道思想,不知道要lct维护... 这个套路很常见. 题意:给你一个无向图,每条边有a,b两个权值.求1到n号点的一条路径,路径的权值是每条边的最大a与最大b ...

  6. 【洛谷P1226 【模板】快速幂||取余运算】

    题目描述 输入b,p,k的值,求b^p mod k的值.其中b,p,k*k为长整型数. 输入输出格式 输入格式: 三个整数b,p,k. 输出格式: 输出“b^p mod k=s” s为运算结果 作为初 ...

  7. 第十五节,卷积神经网络之AlexNet网络详解(五)

    原文 ImageNet Classification with Deep ConvolutionalNeural Networks 下载地址:http://papers.nips.cc/paper/4 ...

  8. Windows 查看端口占用情况

    今天打算运行一下当年的毕业设计,结果启动ActiveMQ的时候,发现报错 原来是端口占用了.在Windows上怎样看呢? Ctrl+Alt+Del 调出任务管理器 再找到资源监视器 原来是依赖于Erl ...

  9. HDU 1560 DNA sequence (迭代加深搜索)

    The twenty-first century is a biology-technology developing century. We know that a gene is made of ...

  10. 关于shared_ptr与weak_ptr的使用(good)

    shared_ptr是带引用计数的智能指针,可以说大部分的情形选择用shared_ptr不会出问题.那么weak_ptr是什么,应该怎么用呢? weak_ptr也是智能指针,但是比较弱,感觉没什么用. ...