U-BOOT中CONFIG.MK源文件注解

TI OMAP平台BSP学习笔记之 - UBOOT(1) 1. Bootloader 和 TI Uboot Bootloader的一种,用来引导系统,通常HLOS如LINUX,WINDOWS等系统的镜像保存在硬盘、EMMC等介质中,Bootloader的主要功能是为这些系统准备硬件环境,然后将HLOS系统加载到RAM中,最后把HLOS给运行起来。通常在IC、特别是嵌入式IC复位后,它会跳转到片内ROM去运行特定的固化代码(也可能是上电后从特定的... 阅读详情

#
# (C) Copyright 2000-2006
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
#
# See file CREDITS for list of people who contributed to this
# project.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
# MA 02111-1307 USA
#

#########################################################################

ifneq ($(OBJTREE),$(SRCTREE))
ifeq ($(CURDIR),$(SRCTREE))
dir :=
else
dir := $(subst $(SRCTREE)/,,$(CURDIR))
endif

obj := $(if $(dir),$(OBJTREE)/$(dir)/,$(OBJTREE)/)
src := $(if $(dir),$(SRCTREE)/$(dir)/,$(SRCTREE)/)

$(shell mkdir -p $(obj))
else
obj :=
src :=
endif

# clean the slate ...
PLATFORM_RELFLAGS =
PLATFORM_CPPFLAGS =
PLATFORM_LDFLAGS =

#
# When cross-compiling on NetBSD, we have to define __PPC__ or else we
# will pick up a va_list declaration that is incompatible with the
# actual argument lists emitted by the compiler.
#
# [Tested on NetBSD/i386 1.5 + cross-powerpc-netbsd-1.3]

ifeq ($(ARCH),ppc)
ifeq ($(CROSS_COMPILE),powerpc-netbsd-)
PLATFORM_CPPFLAGS+= -D__PPC__
endif
ifeq ($(CROSS_COMPILE),powerpc-openbsd-)
PLATFORM_CPPFLAGS+= -D__PPC__
endif
endif

ifeq ($(ARCH),arm)
ifeq ($(CROSS_COMPILE),powerpc-netbsd-)
PLATFORM_CPPFLAGS+= -D__ARM__
endif
ifeq ($(CROSS_COMPILE),powerpc-openbsd-)
PLATFORM_CPPFLAGS+= -D__ARM__
endif
endif

ifeq ($(ARCH),blackfin)
PLATFORM_CPPFLAGS+= -D__BLACKFIN__ -mno-underscore
endif

#@包含体系,开发板,CPU特定的规则文件:
ifdef ARCH #指定预编译体系结构选项
sinclude $(TOPDIR)/$(ARCH)_config.mk # include architecture dependend rules
endif
ifdef CPU #定义编译时对齐,浮点等选项
sinclude $(TOPDIR)/cpu/$(CPU)/config.mk # include  CPU specific rules
endif
ifdef SOC #无此文件
sinclude $(TOPDIR)/cpu/$(CPU)/$(SOC)/config.mk # include  SoC specific rules
endif
ifdef VENDOR
BOARDDIR = $(VENDOR)/$(BOARD)
else
BOARDDIR = $(BOARD)
endif
ifdef BOARD #指定特定板子的镜像连接时的内存基地址,重要!
sinclude $(TOPDIR)/board/$(BOARDDIR)/config.mk # include board specific rules
endif

#########################################################################

CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; /
      else if [ -x /bin/bash ]; then echo /bin/bash; /
      else echo sh; fi ; fi)

ifeq ($(HOSTOS)-$(HOSTARCH),darwin-ppc)
HOSTCC  = cc
else
HOSTCC  = gcc
endif
HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
HOSTSTRIP = strip

#########################################################################
#
# Option checker (courtesy linux kernel) to ensure
# only supported compiler options are used
#
cc-option = $(shell if $(CC) $(CFLAGS) $(1) -S -o /dev/null -xc /dev/null /
  > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)

#
# Include the make variables (CC, etc...)
#

#@定义交叉编译链工具

AS = $(CROSS_COMPILE)as
LD = $(CROSS_COMPILE)ld
CC = $(CROSS_COMPILE)gcc
CPP = $(CC) -E
AR = $(CROSS_COMPILE)ar
NM = $(CROSS_COMPILE)nm
STRIP = $(CROSS_COMPILE)strip
OBJCOPY = $(CROSS_COMPILE)objcopy
OBJDUMP = $(CROSS_COMPILE)objdump
RANLIB = $(CROSS_COMPILE)RANLIB

@定义AR选项ARFLAGS,调试选项DBGFLAGS,优化选项OPTFLAGS

 预处理选项CPPFLAGS,C编译器选项CFLAGS,连接选项LDFLAGS

ifneq (,$(findstring s,$(MAKEFLAGS)))
ARFLAGS = cr
else
ARFLAGS = crv
endif
RELFLAGS= $(PLATFORM_RELFLAGS)
DBGFLAGS= -g # -DDEBUG
OPTFLAGS= -Os #-fomit-frame-pointer
ifndef LDSCRIPT
#LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds.debug
ifeq ($(CONFIG_NAND_U_BOOT),y)
LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot-nand.lds
else
LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds
endif
endif
OBJCFLAGS += --gap-fill=0xff

gccincdir := $(shell $(CC) -print-file-name=include)

CPPFLAGS := $(DBGFLAGS) $(OPTFLAGS) $(RELFLAGS)  /
 -D__KERNEL__ -DTEXT_BASE=$(TEXT_BASE)  /

ifneq ($(OBJTREE),$(SRCTREE))
CPPFLAGS += -I$(OBJTREE)/include2 -I$(OBJTREE)/include
endif

CPPFLAGS += -I$(TOPDIR)/include
CPPFLAGS += -fno-builtin -ffreestanding -nostdinc  /
 -isystem $(gccincdir) -pipe $(PLATFORM_CPPFLAGS)

ifdef BUILD_TAG
CFLAGS := $(CPPFLAGS) -Wall -Wstrict-prototypes /
 -DBUILD_TAG='"$(BUILD_TAG)"'
else
CFLAGS := $(CPPFLAGS) -Wall -Wstrict-prototypes
endif

# avoid trigraph warnings while parsing pci.h (produced by NIOS gcc-2.9)
# this option have to be placed behind -Wall -- that's why it is here
ifeq ($(ARCH),nios)
ifeq ($(findstring 2.9,$(shell $(CC) --version)),2.9)
CFLAGS := $(CPPFLAGS) -Wall -Wno-trigraphs
endif
endif

# $(CPPFLAGS) sets -g, which causes gcc to pass a suitable -g<format>
# option to the assembler.
AFLAGS_DEBUG :=

# turn jbsr into jsr for m68k
ifeq ($(ARCH),m68k)
ifeq ($(findstring 3.4,$(shell $(CC) --version)),3.4)
AFLAGS_DEBUG := -Wa,-gstabs,-S
endif
endif

AFLAGS := $(AFLAGS_DEBUG) -D__ASSEMBLY__ $(CPPFLAGS)

LDFLAGS += -Bstatic -T $(LDSCRIPT) -Ttext $(TEXT_BASE) $(PLATFORM_LDFLAGS)
#这一句指定了起始地址TEXT_BASE

# Location of a usable BFD library, where we define "usable" as
# "built for ${HOST}, supports ${TARGET}".  Sensible values are
# - When cross-compiling: the root of the cross-environment
# - Linux/ppc (native): /usr
# - NetBSD/ppc (native): you lose ... (must extract these from the
#   binutils build directory, plus the native and U-Boot include
#   files don't like each other)
#
# So far, this is used only by tools/gdb/Makefile.

ifeq ($(HOSTOS)-$(HOSTARCH),darwin-ppc)
BFD_ROOT_DIR =  /usr/local/tools
else
ifeq ($(HOSTARCH),$(ARCH))
# native
BFD_ROOT_DIR =  /usr
else
#BFD_ROOT_DIR =  /LinuxPPC/CDK  # Linux/i386
#BFD_ROOT_DIR =  /usr/pkg/cross  # NetBSD/i386
BFD_ROOT_DIR =  /opt/powerpc
endif
endif

ifeq ($(PCI_CLOCK),PCI_66M)
CFLAGS := $(CFLAGS) -DPCI_66M
endif

#########################################################################

export CONFIG_SHELL HPATH HOSTCC HOSTCFLAGS CROSS_COMPILE /
 AS LD CC CPP AR NM STRIP OBJCOPY OBJDUMP /
 MAKE
export TEXT_BASE PLATFORM_CPPFLAGS PLATFORM_RELFLAGS CPPFLAGS CFLAGS AFLAGS

#########################################################################

@指定编译规则:

ifndef REMOTE_BUILD

%.s: %.S
 $(CPP) $(AFLAGS) -o $@ $<
%.o: %.S
 $(CC) $(AFLAGS) -c -o $@ $<
%.o: %.c
 $(CC) $(CFLAGS) -c -o $@ $<

else

$(obj)%.s: %.S
 $(CPP) $(AFLAGS) -o $@ $<
$(obj)%.o: %.S
 $(CC) $(AFLAGS) -c -o $@ $<
$(obj)%.o: %.c
 $(CC) $(CFLAGS) -c -o $@ $<
endif

#########################################################################

第 40 章:安全 边界受信任(内部)不受信任(外部)硬件信任根烧录密钥、Boot ROM全部软件TEE 边界Trusty 内核 + 可信应用 TALinux 内核、Android 框架内核边界内核代码、已加载模块全部用户态进程系统服务边界system_server、特权守护进程应用、不可信代码应用沙箱边界应用自身进程与私有数据其他应用、系统内部组件硬件信任根:物理熔丝、一次性可编程存储。TEE 边界:ARM TrustZone 硬件(TZASC、EL3 安全监控程序)。 阅读详情

相关推荐

uboot中编译器EABI问题相关说明

uboot中cpu/xxx中config.mk文件中PLATFORM_RELFLAGS为编译优化选项

fishwang89 1826

uboot的配置与编译——分析/config.mk文件(设置编译选项、交叉编译工具、链接脚本、头文件搜索路径等)

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。

主要记录嵌入式学习与开发过程。 1984

U-boot根目录下的config.mk分析

该config.mk位于uboot源码的根目录下, 其包含了子目录下许多同名的config.mk。所以千万注意这些同名文件的主次区别

XiaoBaWu的博客 4858

u-boot之顶层Makefile分析(三)

在u-boot之顶层Makefile分析(二)中分析了config.mk的生成过程,接着继续分析顶层Makefile 导出config.mk为环境变量 # load ARCH, BOARD, and CPU configuration include $(obj)include/config.mk export ARCH CPU BOARD VENDOR SOC 将include/config.mk文件加载进来并将其内部的五个变量导出为环境变量 设置交叉编译工具链 ifndef CROSS_C

贱贱的剑 477

u-boot顶层makefile、mkconfig、config.mk文件分析

此手册自己总结的,网上找不到第二份,除非拷的我的。u-boot1.1.6版本顶层makefile文件、mkconfig文件、config.mk文件分析,会对执行make ..._config后的过程进行详细分析,看完这个,移植u-boot决定没问题,至少有个好的开始。如果要后面的移植或u-boot2012版本的说明,可以联系我。

别再死磕MuJoCo了!用PyBullet+Stable-Baselines3搞定机械臂强化学习(保姆级环境配置)

本文详细介绍了如何使用PyBullet和Stable-Baselines3构建机械臂强化学习系统,绕过昂贵的MuJoCo许可壁垒。通过实战指南,包括环境配置、机械臂Gym环境构建、训练策略与调优技巧,帮助开发者快速掌握机器人强化学习技术,提升智能控制效率。

weixin_42667269的博客 265

主config.mk

文章目录

heyunpign的博客 194

开关电源EMC整改实录:用WSX系列共模电感搞定30MHz辐射超标

本文详细介绍了开关电源EMC整改实战,通过WSX系列共模电感成功解决30MHz频段辐射超标问题。文章分析了共模干扰的产生机制,对比了不同磁芯材料的性能差异,并提供了电路布局优化与安装技巧,最终通过实测数据验证了整改方案的有效性。

weixin_29305313的博客 415

uboot顶层config.mk分析

    uboot顶层目录中的config.mk定义了确定了当前执行makefile所对应的源文件目录、目标文件目录,编译的程序编译、连接的选项,以及目标文件生成的规则等等。它被包含在顶层的makefile以及各个子目录的makefile中,可以说算是一个全局的makefile包含文件。  ifneq ($(OBJTREE),$(SRCTREE))                        ...

weixin_34358365的博客 172

变焦跟踪理论基础(如何在变焦过程中保持清晰)

如何在整个变焦过程中一直保持图像的清晰度或焦点是变焦跟踪的主要挑战。 当用户在缩放跟踪的情况下改变缩放时,设备保持对焦。 然而,在没有变焦跟踪的情况下,图像变得失焦,图像在变焦跟踪后由于自动对焦(AF)算法才最终对焦。...................................................

ChenYX的博客 20万+

从厘米级到公里级:北斗网格10级精度在ArcPro中的完整应用指南

本文提供了北斗网格十级精度体系在ArcGIS Pro中的完整应用指南。详细解析了从660公里到1.5厘米的十级网格尺度及其编码逻辑,并重点演示了如何在ArcPro中生成网格、计算编码,以及根据项目需求(如滑坡监测)选择合适精度层级的实战策略。指南旨在帮助GIS专业人士利用这套统一的网格框架,高效管理多尺度空间数据并优化分析工作流。

Black的专栏 472

第 3 章:功能标记与 aconfig

生产实现与测试实现都必须实现该接口契约。aconfig 系统为运行时标志解析提供两套存储后端,可通过声明元数据中的字段为每个标志单独选定后端:# aconfig主proto定义# 定型标志内部proto# 存储元数据proto消息文件用途输入:单个标志声明输入:包级别声明封装flag_value输入:单条标志取值覆盖输入:一批取值覆盖集合输出:完整解析完成的标志,附带来源追踪输出:一批解析完成的标志集合tracepoint输出:记录标志取值来源内部:API 定型记录。

dengfuma的专栏 404

Cadence virtuos安装教程

本文详细介绍了在Ubuntu 18.04系统上安装Cadence Virtuoso IC617及MMSIM的完整流程。主要内容包括:1)系统环境准备(安装JDK及相关依赖包);2)通过创建软链接和修改系统文件实现RedHat环境兼容;3)共享目录文件操作与分卷压缩包合并解压技巧;4)使用InstallScape工具的安装步骤详解,包括权限处理和配置选项。特别提醒需注意系统兼容性处理(如创建redhat-release文件)和分卷压缩包的特殊解压方法(cat合并)。整个安装过程涉及大量Linux命令操作,需特

wangjie36的博客 298

uboot笔记之编译选项分析

uboot版本:2009.11 uboot的编译选项差不多都写在顶层的config.mk中。下面分析此文件中和编译选项有关的部分。 定义本地编译环境变量: ifeq ($(HOSTOS),darwin) #如果主机系统为darwin则主机编译器为cc否则为gcc HOSTCC = cc else HOSTCC = gcc endif HOSTCFLAGS = -Wall

crtnawwan9623的专栏 2156

【OpenFOAM】-olaFlow-算例4- irreg45degTank

不规则波浪模拟

ou_no的博客 2117

【Ubuntu】RK3576 Linux 6.10 Ubuntu 22.04 系统中 HUSB311 Type-C 转 DP 显示输出与 Device/OTG 模式切换配置详解

本文详细介绍了在Rockchip RK3576开发板(Linux Kernel 6.10+Ubuntu 22.04)上配置HUSB311 Type-C控制器的设备树实现方案。主要内容包括:1)硬件连接与模块组成;2)设备树完整配置,涵盖Type-C供电、USB OTG/Host模式、DP显示输出等关键功能;3)软件配置步骤与常见问题排查方法。该方案实现了Type-C接口的DisplayPort AltMode显示输出、USB Device/Host模式自动切换等功能,为嵌入式系统Type-C接口开发提供参考

qq_34478161的博客 808

配置编译过程详解3

uboot配置编译过程分析之uboot源码目录下的config.mk的分析:

cryil_0301的博客 320

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

The Older Reader

转载自 http://yyq123.blogspot.jp/2013/05/the-older-reader.html 这个夏天,就要和Google Reader说再见了。虽然有很多不舍得,但生活还得继续,RSS还要继续看。THE OLDER READER就是一个有着和Google Reader类似的界面和操作的在线RSS阅读器。 登陆THE OLDER READER后,

Henry_Wu001的专栏 3782

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

MTK Projiectconfig.mk文件详细解释

AUTO_ADD_GLOBAL_DEFINE_BY_NAME_VALUE是编译系统开出的3个可以将ProjectConfig.mk中的宏(注意添加的宏必须大写)添加到C/C++源文件的接口 AUTO_ADD_GLOBAL_DEFINE_BY_NAME:(定义了内核就可以用了) 如果你希望定义一个宏开关(作为一个功能模块的开关),然后在源文件(*.c/h等使用到这个宏开关),比如你定义了

caotuo_csdn的博客 1784

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

makefile

 (zz)概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不

水过无痕 1612

2014-10 u-boot 顶层config.mk分析

Based on u-boot-2014-10. 顶层config.mk的内容并不长,这里全部贴出来吧。 这里以已经执行完make trats_defconfig(这个流程可以参看:《2014-10 u-boot make xxx_defconfig 过程分析》),在顶层目录已经生成了.config文件为例,说明config.mk中各变量的取值。 15PLATFORM_RELFLAGS:= 16PLATFORM_CPPFLAGS:= 17PLATFORM_LDFLAGS:=...

一口Linux的专栏 501

HOSTCC scripts/basic/fixdep /bin/sh: line 1: gcc: command not found解决办法

今天学习准备编译gcc遇到以下错误解决办法(答案来自http://341719xubin.blog.163.com/blog/static/132920793200910201302657/)输入make之后,报错,内容如下: [root@localhost linux-2.6.12]# make config HOSTCC scripts/basic/fixdep /bin/sh: line 1

小墨 1万+

Linux 进程控制:fork、exit、wait、exec 与手写一个 mini shell

讲清进程控制的四个动作:fork 创建(内核四件事与写时拷贝)、exit/_exit/return 终止与 8 位退出码、wait/waitpid 等待与 status 位图、exec 七接口与唯一系统调用 execve,最后用这些零件拼出一个支持 cd/export/echo 的 mini shell,并解释环境变量两张表与 putenv 浅拷贝坑。附速查表与 14 道自测题。

BIII__的博客 186
上一篇: U-BOOT源码分析及移植
下一篇: CFI Flash, JEDEC Flash ,Parellel Flash, SPI Flash, Nand Flash,Nor Flash的区别和联系
EMMA3SLP
博客等级 码龄17年 5粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值