u-boot 移植(二)创建新平台的板级支持
u-boot 移植(二)创建新平台的板级支持
soc:s3c2440
board:jz2440
uboot:u-boot-2016.11
toolchain:gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi
文章目录
如何添加新的板级支持?
因为u-boot-2016.11默认支持smdk2410的平台,但是没有对smdk2440的支持,所以在这里我打算在源码中添加相应的文件;实践之后,总结了一下大概需要修改这几个地方,简单列举如下:
- 复制
board/samsung/smdk2410路径下的所有文件,保存在board/samsung/smdk2440/中,然后需要对复制的文件做相应的修改; - 修改相应的
Kconfig,使得make menuconfig可以支持smdk2440; - 复制
include/configs/下的smdk2410.h,创建文件smdk2440.h; - 修改
board/samsung/smdk2440/的MAINTAINERS文件; - 修改
scripts/config_whitelist.txt文件,添加相应的CONFIG_选项,防止编译报错;
步骤
1.创建板级支持
我们先复制smdk2410的所有文件到smdk2440下;
cd board/samsung/
cp -rf smdk2410 smdk2440
将smdk2440路径下的smdk2410.c文件重命名为smdk2440.c;
然后修改该路径下的Kconfig和Makefile;
Kconfig内容修改如下:
if TARGET_SMDK2440
config SYS_BOARD
default "smdk2440"
config SYS_VENDOR
default "samsung"
config SYS_SOC
default "s3c24x0"
config SYS_CONFIG_NAME
default "smdk2440"
endif
Makefiel修改后内容如下:
#
# (C) Copyright 2000-2006
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
#
# SPDX-License-Identifier: GPL-2.0+
#
obj-y := smdk2440.o
obj-y += lowlevel_init.o
2.修改Kconfig
修改/arch/arm/Kconfig文件;具体如下所示;
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -145,6 +145,10 @@ config TARGET_SMDK2410
bool "Support smdk2410"
select CPU_ARM920T
+config TARGET_SMDK2440
+ bool "Support smdk2440"
+ select CPU_ARM920T
+
config TARGET_ASPENITE
bool "Support aspenite"
select CPU_ARM926EJS
@@ -992,6 +996,7 @@ source "board/phytec/pcm051/Kconfig"
source "board/phytec/pcm052/Kconfig"
source "board/ppcag/bg0900/Kconfig"
source "board/samsung/smdk2410/Kconfig"
+source "board/samsung/smdk2440/Kconfig"
source "board/sandisk/sansa_fuze_plus/Kconfig"
source "board/schulercontrol/sc_sps_1/Kconfig"
source "board/siemens/draco/Kconfig"
修改完成之后,执行make menuconfig可以在配置界面看到smdk2440的支持选项;具体如下图所示;

3.修改smdk2440.h
复制include/configs/下的smdk2410.h,创建文件smdk2440.h;
cd include/configs/
cp smdk2410.h smdk2440.h
vi smdk2440.h
修改smdk2440.h,修改原来几个2410的宏定义为2440,具体内容如下;
#ifndef __CONFIG_H
#define __CONFIG_H
/*
* High Level Configuration Options
* (easy to change)
*/
#define CONFIG_S3C24X0 /* This is a SAMSUNG S3C24x0-type SoC */
#define CONFIG_S3C2440 /* specifically a SAMSUNG S3C2440 SoC */
#define CONFIG_SMDK2440 /* on a SAMSUNG SMDK2440 Board */
4.修改MAINTAINERS
再次进入板级路径下board/samsung/smdk2440/,修改MAINTAINERS文件;
SMDK2440 BOARD
M: David Müller <d.mueller@elsoft.ch>
S: Maintained
F: board/samsung/smdk2440/
F: include/configs/smdk2440.h
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需要我们手动复制过来;
* Automatically generated - do not edit */
#define CONFIG_BOARDDIR board/samsung/smdk2440
#include <config_defaults.h>
#include <config_uncmd_spl.h>
#include <configs/smdk2440.h>
#include <asm/config.h>
#include <config_fallbacks.h>
最终执行脚本mk.sh,进行编译,具体在上一篇中有提到;
#!/bin/bash
TOOLCHAIN=/opt/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi/bin
export ARCH=arm
export PATH=$TOOLCHAIN:$PATH
export CROSS_COMPILE=arm-linux-gnueabi-
make smdk2440_defconfig
make -j4
安静地等待编译结束,至此,已经添加smdk2440的板级支持文件成功;
参考
http://xillybus.com/tutorials/uboot-hacking-howto-1
u-boot 移植(二)创建新平台的板级支持的更多相关文章
- Spring Boot 2 - 初识与新工程的创建
Spring Boot的由来 相信大家都听说过Spring框架. Spring从诞生到现在一直是流行的J2EE开发框架. 随着Spring的发展,它的功能越来越强大,随之而来的缺点也越来越明显,以至于 ...
- [转]新型智慧城市总体架构 华为 新ICT 一云二网三平台
本文转自:http://www.jpsycn.com/hangyexinwen/20160801142354.html “十三五”规划提出,充分运用现代信息技术和大数据,建设一批新型示范性智慧城市.日 ...
- Web应用的组件化(二)——管控平台 #7
Web应用的组件化(二) 管控平台 在上一篇中我们提到了组件化的大致思路,这一篇主要讲述在这么做之后,我们需要哪些外围手段去管控整个开发过程.从各种角度看,面对较大规模前端开发团队,都有必要建立这么一 ...
- 标题:u-boot 移植步骤详解
1 U-Boot简介U-Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目.从FADSROM.8xxROM.PPCBOOT逐步发展演化而来.其源码目录.编译形式与 ...
- MySql移植到嵌入式Linux平台
最近在做考勤机系统,硬件采用的cortex-A8,哈哈,其实是有点浪费的,2410就可以的.所以就要考虑到考勤数据的存储问题,本来是打算用sqlite数据库存储的,可是后来发现,这个数据库只是一个本地 ...
- 假防病毒软件从电脑移植到了 Android 平台
以前有位女研究生点击网络钓鱼的链接.随即出现实时扫毒画面的方式,接着呈现了扫毒结果,跑出十余笔病毒数据,记录了被感染的计算机的具体位置,并提示她必须更新防病毒软件,而她在付费两千元后收到"防 ...
- 手把手教您将 libreoffice 移植到函数计算平台
LibreOffice 是由文档基金会开发的自由及开放源代码的办公室套件.LibreOffice 套件包含文字处理器.电子表格.演示文稿程序.矢量图形编辑器和图表工具.数据库管理程序及创建和编辑数学公 ...
- Windows7安装程序无法定位现有系统分区,也无法创建新的系统分区
解决Windows7.Windows8系统安装时“安装程序无法定位现有系统分区,也无法创建新的系统分区”提示. 方法一 把Windows7镜像发在你电脑的非系统盘的其他硬盘上. 重启机器,通过U盘启动 ...
- Storm 系列(二)实时平台介绍
Storm 系列(二)实时平台介绍 本章中的实时平台是指针对大数据进行实时分析的一整套系统,包括数据的收集.处理.存储等.一般而言,大数据有 4 个特点: Volumn(大量). Velocity(高 ...
随机推荐
- 阿里面试官让我实现一个线程安全并且可以设置过期时间的LRU缓存,我蒙了!
目录 1. LRU 缓存介绍 2. ConcurrentLinkedQueue简单介绍 3. ReadWriteLock简单介绍 4.ScheduledExecutorService 简单介绍 5. ...
- 数据挖掘入门系列教程(十)之k-means算法
简介 这一次我们来讲一下比较轻松简单的数据挖掘的算法--K-Means算法.K-Means算法是一种无监督的聚类算法.什么叫无监督呢?就是对于训练集的数据,在训练的过程中,并没有告诉训练算法某一个数据 ...
- [Laravel框架学习一]:Laravel框架的安装以及 Composer的安装
1.先下载Composer-Setup.exe,下载地址:下载Composer .会自动搜索PHP.exe的安装路径,如果没有,就手动找到php路径下的php.exe. 2.在PHP目录下,打开php ...
- SpringBoot+Netty+WebSocket实现实时通信
这篇随笔暂时不讲原理,首先搭建起一个简单的可以实现通信的Demo.之后的一系列随笔会进行一些原理上的分享. 不过在这之前大家最好了解一下Netty的线程模型和NIO编程模型,会对它的整体逻辑有所了解. ...
- Jmeter系列(6)- test plan测试计划详细讲解
如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html 测试计划的作用 测试计划描述了Jmet ...
- 面试题56 - I. 数组中数字出现的次数
面试题56 - I. 数组中数字出现的次数 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次.请写程序找出这两个只出现一次的数字.要求时间复杂度是O(n),空间复杂度是O(1). 示例 ...
- AWR发现TOP Event log file sequential read
对客户DB进行巡检,发现TOP EVENT是LOG FILE Sequential read 等待事件说明 https://www.xuebuyuan.com/zh-hant/1743045.html ...
- 2019-2020-1 20199329《Linux内核原理与分析》第四周作业
<Linux内核原理与分析>第四周作业 一.上周问题总结: 虚拟机环境缺少部分库文件 书本知识使用不够熟练 二.本周学习内容: 1.实验楼环境使用gdb跟踪调试内核 1.1 在该环境下输入 ...
- 数据挖掘入门系列教程(十一点五)之CNN网络介绍
在前面的两篇博客中,我们介绍了DNN(深度神经网络)并使用keras实现了一个简单的DNN.在这篇博客中将介绍CNN(卷积神经网络),然后在下一篇博客中将使用keras构建一个简单的CNN,对cifa ...
- 怎么在java 8的map中使用stream
怎么在java 8的map中使用stream 简介 Map是java中非常常用的一个集合类型,我们通常也需要去遍历Map去获取某些值,java 8引入了Stream的概念,那么我们怎么在Map中使用S ...