三.linux开发之uboot移植(三)——.基础之shell和Makefile回顾

本文详细介绍了Linux开发中uboot移植的基础知识,着重讲解了shell脚本的运行方法、变量定义与引用、命令调用、选择分支结构以及循环结构。此外,还探讨了Makefile的基础概念,包括目标、依赖和命令,以及Makefile的通配符、伪目标、变量赋值运算符和环境变量。通过本文,读者能够深入理解shell和Makefile在Linux开发中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.补基础之shell

1.shell程序运行的运行有多种方法,这里介绍三种方法:

第一种:./xx.sh,和运行二进制可执行程序方法一样。这样运行shell要求shell程序必须具有可执行权限。chmod a+x xx.sh来添加可执行权限。

第二种:source xx.sh,source是linux的一个命令,这个命令就是用来执行脚本程序的。这样运行不需要脚本具有可执行权限。常用这个

第三种:bash xx.sh,bash是一个脚本程序解释器,本质上是一个可执行程序。这样执行相当于我们执行了bash程序,然后把xx.sh作为argv[1]传给他运行。

2.shell程序的第一行一般都是: #!/bin/sh

这行话以#!开始,后面加上一个pathname(路径),这行话的意思就是指定shell程序执行时被哪个解释器解释执行。所以我们这里写上/bin/sh意思就是这个shell将来被当前机器中/bin目录下的sh可执行程序执行。

3、shell中的变量定义和引用

(1)变量定义时可以初始化,使用=进行初始化赋值。在shell中赋值的=两边是不能有空格的。

(2)变量引用。shell中引用一个变量必须使用符号就是变量解引用符号。

注意:$符号后面跟一个字符串,这个字符串就会被当作变量去解析。如果这个字符串本身没有定义,执行时并不会报错,而是把这个变量解析为空。也就是说在shell中没有被定义的变量其实就相当于是一个定义并赋值为空的变量。

注意:变量引用的时候可以var{var}。这两种的区别是在某些情况下只能用var

### U-Boot 2016 版本移植概述 U-Boot作为嵌入式系统的引导加载程序,在不同硬件平台上具有不同的实现细节。对于U-Boot 2016版本而言,其移植流程主要包括环境准备、源码获取与配置、交叉编译工具链设置以及最终的烧录调试几个方面[^2]。 #### 获取并解压U-Boot源代码 针对具体硬件平台如i.MX系列处理器,可以从官方FTP服务器下载对应版本的压缩包: ```bash wget https://ftp.denx.de/pub/u-boot/u-boot-2016.03.tar.bz2 tar jxf u-boot-2016.03.tar.bz2 cd u-boot-2016.03/ ``` #### 配置目标板参数 每种型号的目标板都需要指定相应的配置文件来适配具体的硬件特性。例如对于i.MX6ULL开发板来说,则需执行如下命令完成初步配置工作: ```bash make imx_v7_defconfig ``` 此步骤会依据预定义好的`.config`文件自动生成适合该款ARM架构芯片的工作模式其他必要的选项设定[^3]。 #### 编写自动化构建脚本 为了简化后续重复性的编译操作,可以创建一个简单的Shell脚本来封装整个过程。下面是一个适用于基于eMMC存储介质启动方式的例子: ```bash #!/bin/bash export ARCH=arm export CROSS_COMPILE=arm-linux-gnueabihf- make clean && make ``` 保存上述内容至名为`build_uboot.sh`的文件中,并赋予可执行权限以便随时调用: ```bash chmod +x build_uboot.sh ./build_uboot.sh ``` #### 输出格式转换 编译完成后,默认情况下生成的是ELF格式的映像文件[uImage]。然而实际应用当中可能还需要将其进一步处理成其他形式的数据流用于刷机或其他用途。因此Makefile通常还提供了额外规则支持将原始输出转化为二进制格式(.bin)或是S记录(SREC)[^1]。 #### 测试验证阶段 最后一步是在真实物理设备上测试新编译出来的固件能否正常运作。这往往涉及到通过JTAG接口或者SD卡等方式向目标机器灌输最新版U-Boot镜像,并观察串口终端上的日志输出确认一切按预期进行。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值