u-boot 移植(二)创建新平台的板级支持

soc:s3c2440

board:jz2440

ubootu-boot-2016.11

toolchaingcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi

如何添加新的板级支持?

因为u-boot-2016.11默认支持smdk2410的平台,但是没有对smdk2440的支持,所以在这里我打算在源码中添加相应的文件;实践之后,总结了一下大概需要修改这几个地方,简单列举如下:

  1. 复制board/samsung/smdk2410路径下的所有文件,保存在board/samsung/smdk2440/中,然后需要对复制的文件做相应的修改;
  2. 修改相应的Kconfig,使得make menuconfig可以支持smdk2440
  3. 复制include/configs/下的smdk2410.h,创建文件smdk2440.h
  4. 修改board/samsung/smdk2440/MAINTAINERS文件;
  5. 修改scripts/config_whitelist.txt文件,添加相应的CONFIG_选项,防止编译报错;

步骤

1.创建板级支持

我们先复制smdk2410的所有文件到smdk2440下;

  1. cd board/samsung/
  2. cp -rf smdk2410 smdk2440

smdk2440路径下的smdk2410.c文件重命名为smdk2440.c

然后修改该路径下的KconfigMakefile

Kconfig内容修改如下:

  1. if TARGET_SMDK2440
  2. config SYS_BOARD
  3. default "smdk2440"
  4. config SYS_VENDOR
  5. default "samsung"
  6. config SYS_SOC
  7. default "s3c24x0"
  8. config SYS_CONFIG_NAME
  9. default "smdk2440"
  10. endif

Makefiel修改后内容如下:

  1. #
  2. # (C) Copyright 2000-2006
  3. # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  4. #
  5. # SPDX-License-Identifier: GPL-2.0+
  6. #
  7. obj-y := smdk2440.o
  8. obj-y += lowlevel_init.o

2.修改Kconfig

修改/arch/arm/Kconfig文件;具体如下所示;

  1. --- a/arch/arm/Kconfig
  2. +++ b/arch/arm/Kconfig
  3. @@ -145,6 +145,10 @@ config TARGET_SMDK2410
  4. bool "Support smdk2410"
  5. select CPU_ARM920T
  6. +config TARGET_SMDK2440
  7. + bool "Support smdk2440"
  8. + select CPU_ARM920T
  9. +
  10. config TARGET_ASPENITE
  11. bool "Support aspenite"
  12. select CPU_ARM926EJS
  13. @@ -992,6 +996,7 @@ source "board/phytec/pcm051/Kconfig"
  14. source "board/phytec/pcm052/Kconfig"
  15. source "board/ppcag/bg0900/Kconfig"
  16. source "board/samsung/smdk2410/Kconfig"
  17. +source "board/samsung/smdk2440/Kconfig"
  18. source "board/sandisk/sansa_fuze_plus/Kconfig"
  19. source "board/schulercontrol/sc_sps_1/Kconfig"
  20. source "board/siemens/draco/Kconfig"

修改完成之后,执行make menuconfig可以在配置界面看到smdk2440的支持选项;具体如下图所示;

3.修改smdk2440.h

复制include/configs/下的smdk2410.h,创建文件smdk2440.h

  1. cd include/configs/
  2. cp smdk2410.h smdk2440.h
  3. vi smdk2440.h

修改smdk2440.h,修改原来几个2410的宏定义为2440,具体内容如下;

  1. #ifndef __CONFIG_H
  2. #define __CONFIG_H
  3. /*
  4. * High Level Configuration Options
  5. * (easy to change)
  6. */
  7. #define CONFIG_S3C24X0 /* This is a SAMSUNG S3C24x0-type SoC */
  8. #define CONFIG_S3C2440 /* specifically a SAMSUNG S3C2440 SoC */
  9. #define CONFIG_SMDK2440 /* on a SAMSUNG SMDK2440 Board */

4.修改MAINTAINERS

再次进入板级路径下board/samsung/smdk2440/,修改MAINTAINERS文件;

  1. SMDK2440 BOARD
  2. M: David Müller <d.mueller@elsoft.ch>
  3. S: Maintained
  4. F: board/samsung/smdk2440/
  5. F: include/configs/smdk2440.h
  6. F: configs/smdk2440_defconfig

以前u-boot版本添加新的板级支持需要在boards.cfg文件中增加新的板级信息,当前版本已经通过修改MAINTAINERS文件来支持这样的操作,在源码根路径一下也可以找到这个文件,会介绍每个语法的含义。

5.修改config_whitelist.txt

最后还需要修改config_whitelist.txt文件,因为在smdk2440.h中添加了CONFIG_SMDK2440,所以,要把这个宏定义添加到config_whitelist.txt文件中,这样最终编译的时候不会报错;

make xxxx_defconfig 都做了哪些事情?

按照原来系统中我们执行了make smdk2440_defconfig之后,会自动生成一个头文件include/config.h,打开看一下会发现,其中包含了头文件configs/smdk2440.h,所以smdk2440.h需要我们手动复制过来;

  1. * Automatically generated - do not edit */
  2. #define CONFIG_BOARDDIR board/samsung/smdk2440
  3. #include <config_defaults.h>
  4. #include <config_uncmd_spl.h>
  5. #include <configs/smdk2440.h>
  6. #include <asm/config.h>
  7. #include <config_fallbacks.h>

最终执行脚本mk.sh,进行编译,具体在上一篇中有提到;

  1. #!/bin/bash
  2. TOOLCHAIN=/opt/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi/bin
  3. export ARCH=arm
  4. export PATH=$TOOLCHAIN:$PATH
  5. export CROSS_COMPILE=arm-linux-gnueabi-
  6. make smdk2440_defconfig
  7. make -j4

安静地等待编译结束,至此,已经添加smdk2440的板级支持文件成功;

参考

http://xillybus.com/tutorials/uboot-hacking-howto-1

u-boot 移植(二)创建新平台的板级支持的更多相关文章

  1. Spring Boot 2 - 初识与新工程的创建

    Spring Boot的由来 相信大家都听说过Spring框架. Spring从诞生到现在一直是流行的J2EE开发框架. 随着Spring的发展,它的功能越来越强大,随之而来的缺点也越来越明显,以至于 ...

  2. [转]新型智慧城市总体架构 华为 新ICT 一云二网三平台

    本文转自:http://www.jpsycn.com/hangyexinwen/20160801142354.html “十三五”规划提出,充分运用现代信息技术和大数据,建设一批新型示范性智慧城市.日 ...

  3. Web应用的组件化(二)——管控平台 #7

    Web应用的组件化(二) 管控平台 在上一篇中我们提到了组件化的大致思路,这一篇主要讲述在这么做之后,我们需要哪些外围手段去管控整个开发过程.从各种角度看,面对较大规模前端开发团队,都有必要建立这么一 ...

  4. 标题:u-boot 移植步骤详解

    1 U-Boot简介U-Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目.从FADSROM.8xxROM.PPCBOOT逐步发展演化而来.其源码目录.编译形式与 ...

  5. MySql移植到嵌入式Linux平台

    最近在做考勤机系统,硬件采用的cortex-A8,哈哈,其实是有点浪费的,2410就可以的.所以就要考虑到考勤数据的存储问题,本来是打算用sqlite数据库存储的,可是后来发现,这个数据库只是一个本地 ...

  6. 假防病毒软件从电脑移植到了 Android 平台

    以前有位女研究生点击网络钓鱼的链接.随即出现实时扫毒画面的方式,接着呈现了扫毒结果,跑出十余笔病毒数据,记录了被感染的计算机的具体位置,并提示她必须更新防病毒软件,而她在付费两千元后收到"防 ...

  7. 手把手教您将 libreoffice 移植到函数计算平台

    LibreOffice 是由文档基金会开发的自由及开放源代码的办公室套件.LibreOffice 套件包含文字处理器.电子表格.演示文稿程序.矢量图形编辑器和图表工具.数据库管理程序及创建和编辑数学公 ...

  8. Windows7安装程序无法定位现有系统分区,也无法创建新的系统分区

    解决Windows7.Windows8系统安装时“安装程序无法定位现有系统分区,也无法创建新的系统分区”提示. 方法一 把Windows7镜像发在你电脑的非系统盘的其他硬盘上. 重启机器,通过U盘启动 ...

  9. Storm 系列(二)实时平台介绍

    Storm 系列(二)实时平台介绍 本章中的实时平台是指针对大数据进行实时分析的一整套系统,包括数据的收集.处理.存储等.一般而言,大数据有 4 个特点: Volumn(大量). Velocity(高 ...

随机推荐

  1. Xshell远程连接Linux系统

    一般来说我们连接Linux,会使用到一些远程连接工具 比如:Xshell和Xftp Xshell:远程连接linux系统 Xftp:远程在Linux系统中上传或下载文件 Xshell和Xftp百度云链 ...

  2. Robberies 杭电

    可怜的POIUYTREWQ最近想买下dota2的商品,但是手头缺钱.他想起了之前看过的一部大片,觉得抢银行也许是个不错的选择.他认为,坏人被抓是因为没有预先规划.于是他在之前的几个月对各大银行进行了一 ...

  3. 阿里面试官让我实现一个线程安全并且可以设置过期时间的LRU缓存,我蒙了!

    目录 1. LRU 缓存介绍 2. ConcurrentLinkedQueue简单介绍 3. ReadWriteLock简单介绍 4.ScheduledExecutorService 简单介绍 5. ...

  4. Linux学习笔记(六)压缩和解压缩命令

    压缩和解压缩命令 zip unzip gzip gunzip bzip2 bunzip2 tar zip (.zip格式的压缩文件) 英文原意:package and compress (archiv ...

  5. Go gRPC进阶-proto数据验证(九)

    前言 上篇介绍了go-grpc-middleware的grpc_zap.grpc_auth和grpc_recovery使用,本篇将介绍grpc_validator,它可以对gRPC数据的输入和输出进行 ...

  6. C#开发BIMFACE系列32 服务端API之模型对比3:批量获取模型对比状态

    系列目录     [已更新最新开发文章,点击查看详细] 在<C#开发BIMFACE系列31 服务端API之模型对比2:获取模型对比状态>中介绍了根据对比ID,获取一笔记录的对比状态.由于模 ...

  7. SpringCloud(三)学习笔记之Ribbon

    spring Cloud Ribbon 是一个客户端的负载均衡器,它提供对大量的HTTP和TCP客户端的访问控制. 客户端负载均衡即是当浏览器向后台发出请求的时候,客户端会向 Eureka Serve ...

  8. centos 部署 vue项目

    安装Nodejs 下载安装包,可选择其他版本 node-v10.16.0-linux-x64.tar.xz 将下载文件上传至linux服务器并解压 tar -xvf node-v10.16.0-lin ...

  9. 使用openmp进行并行编程

    预处理指令pragma 在系统中加入预处理器指令一般是用来允许不是基本c语言规范部分的行为.不支持pragma的编译器会忽略pragma指令提示的那些语句,这样就允许使用pragma的程序在不支持它们 ...

  10. tp5--Excel表格导入导出

    来源于:https://www.cnblogs.com/MyIsLu/p/6830579.html PHPExcel 扩展包下载地址:             https://github.com/P ...