u-boot(一) - 开发环境搭建

一,在windows上安装WSL2

1,WSL2介绍

WSL2 是适用于 Linux 的 Windows 子系统体系结构的一个新版本,它支持适用于 Linux 的 Windows 子系统在 Windows 上运行 ELF64 Linux 二进制文件。 它的主要目标是提高文件系统性能,以及添加完全的系统调用兼容性。

2,安装

通过命令行(管理员身份)执行:

# 适用于 Linux 的 Windows 子系统
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

# 虚拟机平台
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

3,更新内核

目前版本的 Win10 需要手动更新 WSL2 内核,前往    下载适用于 x64 计算机的最新 WSL2 Linux 内核 下载 msi 文件手动更新。

4,设置 wsl 默认版本

通过命令行(管理员身份)执行:

wsl --set-default-version 2

让未来的 Linux 都默认以 WSL2 形式安装。

5,安装 Linux 系统

当前有两种方式可选,通过微软商城一键安装或者通过wsl命令手动安装。

微软商城安装

打开 Microsoft Store,搜索 wsl 即可获取可用 Linux 发行版。

现在支持的发行版有:

  • Ubuntu 16.04 LTS

  • Ubuntu 18.04 LTS

  • Ubuntu 20.04 LTS

  • openSUSE Leap 15.1

  • SUSE Linux Enterprise Server 12 SP5

  • SUSE Linux Enterprise Server 15 SP1

  • Kali Linux

  • Debian GNU/Linux

  • Fedora Remix for WSL

  • Pengwin

  • Pengwin Enterprise

  • Alpine WSL

下载完成后,点击图标进入,首次使用会需要几分钟执行安装。

完成安装后,设置 Ubuntu 用户名(非 root)及密码,正式开启 Ubuntu 系统。

二,u-boot源码下载及编译

1,使用的硬件

IMX6ULL开发板:百问网嵌入式专家-韦东山嵌入式专注于嵌入式课程及硬件研发

CPU:ARM Cortex-A

内存:512MB DDR3L

Flash: 4GB eMMC Flash

2,u-boot源码下载和编译

源码下载:u-boot的版本 2017.03

git config --global user.email "xxxx"
git config --global user.name "xxx"
git clone https://e.coding.net/codebug8/repo.git

repo/repo init -u https://gitee.com/weidongshan/manifests.git -b linux-sdk -m imx6ull/100ask_imx6ull_linux4.9.88_release.xml --no-repo-verify
repo/repo sync -j4

临时设置编译的环境变量:

export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export PATH=$PATH:/home/zhuwg1/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin

编译:

make distclean
make mx6ull_14x14_evk_defconfig
make -j4

编译生成的u-boot-dtb.imx是我们需要文件。

三,烧写u-boot到硬件板子的Flash

芯片厂商一般都会提供烧写工具,除了可以烧写整个系统镜像还可以单独更新单个分区的镜像,比如IMX6ULL芯片可以使用MGTool工具单刷u-boot、kernel、rootfs等,将u-boot-dtb.imx传到windows系统,按照操作文档通过USB将u-boot烧写到EMMC。

四,u-boot简介

Linux系统要启动就必须需要一个bootloader程序,也就是说芯片上电后先运行一段bootloader程序,这段bootloader程序会先初始化DDR等外设,然后将Linux内核从flash(NAND/NOR FLASH/SD/MMC等)拷贝到DDR中,最后启动Linux内核

bootloader和Linux内核的关系跟PC上的BIOS和Windows的关系一样,bootloader就相当于BIOS。目前有很多现成的bootloader软件可用,比如U-Boot、vivi、RedBoot等,其中以U-Boot使用最为广泛。

boot(Universal Boot Loader),是一个遵循GPL协议的开源软件,是一个裸机代码,可以看作是一个裸机综合例程。

u-boot的核心功能就是启动内核:

  • 读Flash,把内核读入内存

  • 启动内核

1,uboot官网代码

uboot官网上下载的是最原始的uboot源码。uboot官网下载地址如下:The U-Boot Documentation — Das U-Boot unknown version documentation

 

2,半导体厂商uboot代码

移植uboot时一般不会直接用 uboot 官方的源码的,官方的源码是给半导体厂商准备的,半导体厂商会根据自家的芯片,维护自己芯片对应的uboot。NXP维护的的uboot地址:GitHub - Freescale/u-boot-fslc: U-Boot tree to host pending fixes and improvements

3,开发板厂商uboot代码

开发板厂商做的开发板需要修改芯片厂商官方的uboot,使其支持开发板厂商生产的评估板。本文使用的100ask开发板的uboot下载地址:CODING | 一站式软件研发管理平台

五,u-boot的目录结构

在u-boot目录下执行"tree . -d > 1.txt",可以得到目录的结构,精简如下:

.
├── Licenses //许可证文件
├── api //与硬件无关的API函数
├── arch //与架构体系有关的代码
│   ├── arm
│   │   ├── cpu
│   │   │   ├── armv7
│   │   │   │   ├── mx6
│   │   ├── dts
│   │   │   └── include
│   │   │       └── dt-bindings -> ../../../../include/dt-bindings
│   │   ├── include
│   │   │   ├── asm
│   │   │   │   ├── arch-imx
│   │   │   │   ├── arch-imx8
│   │   │   │   ├── arch-imx8m
│   │   │   │   ├── imx-common
│   │   │   └── debug
│   │   ├── lib
│   │   ├── mach-rockchip
│   │   │   ├── rk3036
│   │   │   ├── rk3288
│   │   │   └── rk3399
│   │   └── lib
├── board //不同板子的定制代码
│   ├── freescale
│   │   ├── common
│   │   │   └── p_corenet
│   │   ├── corenet_ds
│   │   ├── mx6ul_14x14_ddr3_arm2
│   │   ├── mx6ul_14x14_evk
│   │   ├── mx6ul_14x14_lpddr2_arm2
│   │   ├── mx6ul_nxpu_iopb
│   │   ├── mx6ul_spriot
│   │   ├── mx6ull_ddr3_arm2
│   │   ├── mx6ullevk
├── cmd //命令相关代码
│   ├── fastboot
│   └── mvebu
├── common //通用代码
│   ├── eeprom
│   ├── init
│   └── spl
├── configs //配置文件
├── disk //磁盘分区相关代码
├── doc //文档
├── drivers //驱动代码
├── dts //设备树
├── examples //示例程序
│   ├── api
│   └── standalone
├── fs //文件系统
│   ├── cbfs
│   ├── cramfs
│   ├── ext4
│   ├── fat
│   ├── jffs2
│   ├── reiserfs
│   ├── sandbox
│   ├── ubifs
│   ├── yaffs2
│   └── zfs
├── include //头文件
├── lib //库文件
├── net //网络相关代码
├── post //上电自检程序
├── scripts //脚本文件
├── test //测试代码
└── tools //工具文件夹

六,u-boot文档说明

后续总结的文档中很多引用了<100ask.net>中的内容,侵删。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值