u-boot-1.1.6源码浅析(二)

U-boot源码目录结构 .....“sed –e”表示后面跟的是一串命令脚本,而表达式“s/abc/def/”表示要从标准输入中,查找到内容为“abc”的,然后替换成“def”。其中“abc”表达式用可以使用“.”作为通配符。命令“uname –m”将输出主机CPU的体系架构类型。本人使用Intel 奔腾系列的CPU,因此“uname –m”输出“i686”。 阅读详情

在上一篇文章里说到了,如果直接运行make的话,u-boot是编译不过去的,因为缺少$(OBJTREE)/include /config.mk这个文件。然后出错提示让去看README,那咱们就去看看这个README里面写的是什么东西。
这个README文件里介 绍了一下u-boot这个工程,然后说明了一下好些个参数是做什么用的,其中有一句话是包含跟咱们编译有关的信息的

make <board_name>_config

也就是说,编译的时候,make后面是需要跟参数的,那么根据make的语法,这个<board_name>_config肯定是在 Makefile里定义了的一个target了。

然后再看一下Makefile文件,果然以_config结尾的target很多。因为我的板子是仿制三星的S3C2440的,所以与我最接近的, 让我在移植的时候代码改动量最小的,就是smdk2410_config这个target了。如果是新手,对自己没有什么信心,那就可以直接使用这个 target来编译,直接修改与这个target相关的源码就可以了。其实我个人倒是建议另外给自己的板子取一个名字,然后在Makefile里给自己的 板子按着相应的规则给加一条target。然后把自己需要的与现在板子的环境最接近的板子的相关的文件都拷到相应的位置,然后慢慢修改它们就可以了。

有人会问,我怎么知道把哪里的文件都拷到哪里去呢,其实不要紧,后面就会分析到,你到时候就会看到相应的文件查找、拷贝规则了。而且如果你的文件拷 错地方了,那就会有相应的出错提示,多操作几步,应该就没有问题。别告诉我你看不懂这些英文,如果这样的话,你可能得需要先去学一下英文,这方面的中文资 料太少了。

因为现在只是讲u-boot代码的分析,所以就不涉及到移植的过程,那么以后的make就以make smdk2410_config,这个target来做说明了,这个如果讲清楚了,那么移植也比较容易了。

首先看Makefile的内容,找到smdk2410_config这个target,内容如下:

smdk2410_config : unconfig
 @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0

首先我们看到,这个target首先需要执行一个unconfig操作,然后再执行后面的操作。然后我们查到unconfig操作的具体内容如下:

unconfig:
 @rm -f $(obj)include/config.h $(obj)include/config.mk /
  $(obj)board/*/config.tmp $(obj)board/*/*/config.tmp

看得出来,它是删掉了包括$(obj)include/config.mk文件在内的,几个在编译的时候生成的配置文件,这 个$(obj)include/config.mk与$(OBJTREE)/include/config.mk是同一个文件。这样做是为了保证重新生成 文件的纯粹性。

执行完unconfig后,就执行:

 @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0

这里的$(MKCONFIG)就会被替换成上文中所说的$(SRCTREE)/mkconfig文件路径,相关于是把这个文件的内容,当可执行程序 执行了,其实,它就是一个shell脚本。

一定要注意这句$(@:_config=),其实这里是用了一个比较高级的Makefile语法,$(a:patternA=patternB), 这样的语法表示把a变量里的形式为patternA的换成为patternB,然后输出。那么在这个例子里,a变量换成了@,它的意思与shell里@的 意思是一样的,就是输入进来的所有的参数,但是中间不用环境变量IFS所定义的分隔符分开。patternA就是_config,patternB就是 空。然后再看看咱们执行这个Makefile的时候输入的语句:

 make smdk2410_config

那么在这里的话,传到$(SRCTREE)/mkconfig这个脚本里的参数实际上就是 smdk2410 arm arm920t smdk2410 NULL s3c24x0

一共有六个参数,需要记清楚,不记得其实也不要紧,需要的时候回来查一查就OK了。

下一步,就是分析$(SRCTREE)/mkconfig这个脚本的内容了。实际上,这个脚本就生成了前面我们需要的$(OBJTREE) /include/config.mk这个文件

关于$(SRCTREE)/mkconfig的分析,请看我的u-boot-1.1.6源码浅析(三)

现在整理一下编译的步骤,俺用伪码表示吧:

 if( 存在$(OBJTREE)/include/config.mk文件)
 {
  执行u-boot-1.1.6源码浅析 (一)中忽略的部分
 }
 else
 {
  输入错误提示,让我们查看README文件,然后退出
 }

当我们执行make smdk2410_config的时候,如果$(SRCTREE)/mkconfig文件没有出错,则$(OBJTREE)/include /config.mk文件就会被创建,那么Makefile的逻辑就会走u-boot-1.1.6源码浅析(一)中忽略的部分。

我会按照程序执行的顺序来说明整个过程,所以下一篇文章会讲$(SRCTREE)/mkconfig的内容,然后再是u-boot-1.1.6源码 浅析(一)中忽略的部分。

imx6ull-系统移植篇1——U-Boot使用体验 本文介绍了在imx6ull开发板上移植U-Boot的过程。详细说明了U-Boot编译步骤、分析了uboot启动时输出的关键信息. 阅读详情

相关推荐

2.1【Linux系统移植之一】:移植U-Boot(制作u-boot.bin文件)

文章目录一、下载源码、编译源码二、修改源码(适配自己的开发板)2.1 拷贝配置文件2.2 拷贝头文件2.3 拷贝开发板对应板级文件夹三、编译新的U-Boot(自己开发板的U-Boot)四、烧写U-Boot到SD卡,启动U-Boot五、U-Boot命令 备注:本文以正点原子imx6ull芯片Alpha开发板为例。参考《正点原子嵌入式linux驱动开发指南V1.4.pdf》整理的笔记。 一、下载源码、编译源码 该步骤的作用是:测试源码是否可以正常编译 ARM芯片官网下载对应的U-BOOT,并解压 tar

Ace's Blog 4685

u-boot-1.1.6及Linux-2.6.22到arm platform(s3c2440)

    u-boot-1.1.6及Linux-2.6.22到arm platform(s3c2440)                                             作者:makethyme更新u-boot为了更新u-boot,需要启动tftp服务器.需要设置PC机的网关,IP等. 如下:在Federo 4.0中点击运用程序->系统设置->

makethyme的专栏 2609

U-Boot重点源码详解

文件夹就是和具体的板子有关的,打开此文件夹,里面全是不同的板子,毫无疑问正点原子的开发板肯定也在里面(其中imxdownload是烧录文件 u-boot*这些文件是编译产生的。这个文件夹里面的文件都是跟 ARMV7。,只是freescale 后来被。芯片的板子都放到此文件夹中,可以看出有很多架构,比如。文件夹,在里面找到和。的时候需要重点关注的。文件夹里面有个名为“

weixin_41199566的博客 1420

u-boot1.1.6以及linux和文件系统在fs2410上的移植

第一次接触u-boot移植,菜鸟一个,啥都不懂得,在网上转了很久,决定还是先借鉴一下被人的经验吧!!!我参考的文章是http://www.diybl.com/course/6_system/linux/Linuxjs/2008727/134020_2.html,这个文章对我来说,真是不错,改动的东西比较少,我喜欢,^_^,对于这篇文章,我想说明几点的是:在部分(一)的第五步当中,我没有改写我自

ninedays的专栏 2214

imx6ull移植Linux系统第一篇——U-Boot的移植

imx6ull移植Linux系统第一篇——U-Boot的移植 花了大概两周的时间,把Linux的移植认真学了一遍,期间踩了不少坑,花费了不少时间去解决各种奇奇怪怪的问题,最终完成了uboot、系统镜像、设备树以及根文件系统的制作,并最终下载到开发板上运行。这里想对这两周的学习内容进行一个总结,因为后期会有其他的学习安排,系统移植是一些经验和方法的掌握,如果长时间不去用,时间久了肯定会忘,希望这里写的总结会对后期的移植工作给出一些方法上的参考。 提示:本系列文档共分四篇:U-Boot的移植、Linux内核的

qq_40380893的博客 3506

DM6467开发之U-Boot移植(1)——U-Boot学习

1        DM6467启动流程 在移植U-Boot之前,首先需要了解DM6467的启动流程,知道U-Boot在系统启动过程中的位置及作用。DM6467标准的启动过程如图 1‑1所示,主要包括四个步骤:RBL(ROM BootLoader)→UBL(User Boot Loader)→U-Boot →Linux内核。 图1‑1 DM6467启动流程 系统上电时,首先运行的是

hyanglu1573的专栏 5034

u-boot 1.1.6 分析(1)

分析一个软件先从根目录Makefile分析. VERSION = 1 PATCHLEVEL = 1 SUBLEVEL = 6 EXTRAVERSION= U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL).$(EXTRAVERSION) VERSION_FILE = $(obj)include/version_auto...

HanWnz的博客 305

U-Boot 之一 源码文件、启动阶段(TPL、SPL)、FALCON、设备树

现在,U-Boot 已经成为了是嵌入式设备首选的用于包装指令以引导设备操作系统内核的启动加载程序,并且是基于 GPL 协议开源的,项目地址:https://source.denx.de/u-boot。它可用于许多计算机架构,包括 68k,ARM,Blackfin,MicroBlaze,MIPS,Nios,SuperH,PPC,RISC-V 和 x86。.........

技术干货 8171

2008-05-06 | u-boot-1.1.6源码浅析(二)

 2008-05-06 | u-boot-1.1.6源码浅析(二)(原创,请勿转载)  标签: config  u-boot  boot  源码  make  在上一篇文章里说到了,如果直接运行make的话,u-boot是编译不过去的,因为缺少$(OBJTREE)/include/config.mk这个文件。然后出错提示让去看README,那咱们

1113

深入解析u-boot-1.1.6源码与应用

U-Boot是一个广泛应用于嵌入式系统中的开源引导加载程序(bootloader),它的主要作用是在嵌入式设备上电或复位后,负责初始化硬件设备、建立内存空间的映射图,从而为操作系统的加载和运行提供准备环境。U-Boot以其丰富的硬件支持、高度可配置性及活跃的社区支持,在各种ARM、PowerPC、MIPS等架构的处理器上得到广泛应用。在本章中,我们将首先对U-Boot进行总体概述,随后对它的基本特性和应用背景进行深入探讨,为读者们构建起对U-Boot的初步认识。

weixin_35754676的博客 1200

u-boot1.1.6,linux2.6.22.6 and it's patch

u-boot1.1.6 linux-2.6.22.6 and it's patch. 东山视频教程光盘资源

U-Boot 浅析

U-boot介绍

安迪西_嵌入式攻城狮 5267

深入理解EtherCAT状态机:从IGH代码看伺服电机如何从‘上电’到‘使能’

本文深入解析EtherCAT状态机的工作原理,重点探讨伺服电机从'上电'到'使能'的状态转换过程。通过分析状态字(Status Word)和控制字(Control Word)的交互机制,结合IGH代码实例,揭示DS402状态机的核心逻辑,帮助工程师解决60%以上的伺服控制问题,提升EtherCAT网络调试效率。

weixin_42549037的博客 289

u-boot源码分析

u-boot源码分析

小王的博客 6809

Xilinx DMA IP核心配置与实战解析

本文介绍了Xilinx DMA IP核在直接寄存器模式下的配置与工作流程。DMA通过AXI4-Lite接口接收指令,实现内存与数据流之间的高速传输,无需CPU介入。文章详细说明了开发环境配置、IP参数设置(包括地址位宽、数据宽度等关键参数)以及寄存器操作流程。通过仿真分析,展示了读操作中AXI4接口的突发传输机制,包括地址、长度和突发大小的配置。文中还提供了寄存器地址映射表、信号定义等关键信息,为DMA IP核的应用开发提供了实用参考。

weixin_37688766的博客 884

C# Code-Behind 技术全面解析

Code-Behind 是 ASP.NET Web Forms 中的一种技术模式,通过将用户界面标记(.aspx文件)与程序逻辑代码(.aspx.cs文件)分离,实现表现层与逻辑层的解耦。其核心思想是前端展示与后台逻辑的物理文件分离,通过ASP.NET编译器将两者合并编译成一个Page类并执行。Code-Behind 的优势包括较好的代码组织、较高的开发效率,尤其适合快速开发数据驱动应用。然而,与现代开发模式如ASP.NET MVC、ASP.NET Core和Blazor相比,Code-Behind 在可维

记录学习的过程 957

u-boot-1.1.6源码浅析(一)

<br />之前买了块开发板,用来学习嵌入式的东西。后来自己制作了自己的交叉编译工具,然后编译了最新的u-boot-1.1.6,烧到板子里后 启动不起来,这才知道搞bootloader的移植,不是这么容易的。而且要想调试方便,就得买一个仿真器。<br />好多人都建议我在上层开发,别管底下的东西,可是我觉得,既然买了这块板子,就要从头到尾了解它,驱动程序这块可以暂时不管,但是与硬件相关的启动 部分不能不管,如果这块也不管的话,那就跟在linux环境下写普通程序,没什么太大的差别了。当然,这只是我现阶段的

heaiding的专栏 914

Python爬虫实战:如何优雅地处理BOSS直聘的反爬机制与Cookie失效问题

本文详细介绍了如何通过Python爬虫技术优雅应对BOSS直聘的反爬机制与Cookie失效问题。从多账号轮换、动态请求头生成到代理IP管理,提供了一套完整的解决方案,帮助开发者构建稳定高效的数据采集系统,有效提升爬虫成功率与数据质量。

weixin_30733003的博客 1562

【嵌入式移植】4、U-Boot源码分析1—Makefile

第257行~261行,定义HOSTCCHOSTCXXHOSTCFLAGS4个变量后续第263行~295行,判断HOSTOS是否为cygwin或者darwin,将对上述变量值进行修改,这里,因此上述变量值不变,最终为第300行~326行,对KBUILD_SRC变量进行赋值结合前述分析,最终值为。

TTZZWWW 1178

PADS VX2.7学习记录05-PADS Layout设计文件Gerber等输出整理

在“PDF Document”栏中,依次选中除REF-TOP和REF-BOT之外的文件,单击图标,将其余PDF Document文件进行删除,如图所示。然后单击【生成PDF】按钮,即可创建一份PDF格式的位号图。

tianpu2320959696的博客 1025

ldpc编解码器设计与仿真

计算校验节点到变量节点的消息 m_{c \to v}=2 \cdot atanh(\prod_{v’ \in N©\setminus v}tanh(\frac{m_{v’ \to c}}{2}))。计算变量节点到校验节点的消息 m_{v \to c}=L_{v,0}+\sum_{c’ \in M(v)\setminus c}m_{c’ \to v}。◦ 对于每个变量节点 v,计算最终 LLR 值 L_{v,f}=L_{v,0}+\sum_{c \in M(v)}m_{c \to v}。

youngerwang的博客 809

编译IMX6ULL的u-boot和kernel源码

准备工作 下载交叉编译工具和源码(可以在网盘下载) U-boot源码:u-boot-2016.03-svn351-Release.20190128.tar.bz2 Kernel源码:linux-4.1.15-20190424.ea5a2b5.tar.bz2 交叉编译工具:fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-tool...

qq_41903418的博客 998

【人工智能】Cursor模型被封?两步教你破解

Cursor模型全线被禁,主流模型如Claude、GPT-4无法访问,仅剩Deepseek等基础模型可用。官方证实限制源于上游API区域政策,提供三种"无效"解决方案引发用户不满。社区发现有效解决方式:需同时开启全局代理和将Cursor网络设置改为HTTP/1.1协议,详细步骤包括修改用户设置和完全重启程序。另有SOCKS5代理配置方案供高级用户选择。技术原理推测HTTP/1.1可绕过区域检测。用户面临继续使用或转投其他工具的选择,社区交流受限但仍有讨论。

奶爸的编程之路,也就一周冷个三天 2197

6.1 U-boot的使用

由于Ubuntu出现了一些问题,后面都是使用正点原子官方版本。

Toutiegongzhu的博客 1258

【以太网硬件六】1000base-T物理层编码究竟是怎么编的?

详述1000base-T物理层4D-PAM5的编码过程

highman110的博客 5325

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【U-Boot笔记整理】U-Boot 完全分析与移植

【U-Boot笔记整理】U-Boot 完全分析与移植

qq_23174771的博客 3404

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

上一篇: U-BOOT MakfeFile 分析
下一篇: u-boot-1.1.6源码浅析(一)
heaiding
博客等级 码龄16年 10粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值