嵌入式Linux驱动开发笔记(八)

news/2025/2/5 8:03:54/

嵌入式Linux驱动开发笔记(八)

  • 交叉编译工具说明:

正点原子提供两种交叉编译工具链。这两种交叉编译工具链解释如下图。
在这里插入图片描述

我们只需要知道上面的第二种通用的交叉编译器去学习【正点原子】 I.MX6U 嵌入式 Linux 驱动开发指南这本教程。第一种 Poky 编译器是Yocto 项目编译出的,常用于编译开发板光盘 A-基础资料->1、例程源码->3、正点原子 Uboot和 Linux 出厂源码及快速编译 Qt 应用程序到开发板上运行。

1 Linaro GCC 编译器编译U-Boot和Linux内核

1.1 安装 Linaro GCC 交叉编译工具链

Linaro GCC 交叉编译工具链 版本

gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz
1.2 编译U-Boot源码
# 安装依赖库
# 安装 ncurses 库, 否则编译会报错
sudo apt-get install libncurses5-dev
# 解压源码包
mkdir -p uboot-imx-2016.03-2.1.0-g0ae7e33-v1.7tar -vxjf uboot-imx-2016.03-2.1.0-g0ae7e33-v1.7.tar.bz2 -C uboot-imx-2016.03-2.1.0-g0ae7e33-v1.7/cd uboot-imx-2016.03-2.1.0-g0ae7e33-v1.7

因为我们使用的是 512MB(DDR3)+8GB(EMMC)核心板,使用如下命令来编译对应的 uboot

# ARCH=arm 设置目标为 arm 架构
# CROSS_COMPILE 指定所使用的交叉编译器# 清除工程
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
# 配置 uboot
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_ddr512_emmc_defconfig
# 编译
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4

编译完成以后 uboot 源码多了一些文件,其中 u-boot.bin 就是编译出来的 uboot二进制文件。uboot是个裸机程序,因此需要在其前面加上头部(IVT、DCD等数据)才能在I.MX6U上执行,u-boot.imx 文件就是添加头部以后的 u-boot.bin, u-boot.imx 就是我们最终要烧写到开发板中的 uboot 镜像文件。

1.3 编译Linux内核源码
# 安装依赖库
# 安装 lzop 库,否则内核编译会失败
sudo apt-get install lzop
# 解压源码包
mkdir -p linux-imx-4.1.15-2.1.0-g3dc0a4b-v2.7tar -vxjf linux-imx-4.1.15-2.1.0-g3dc0a4b-v2.7.tar.bz2 -C linux-imx-4.1.15-2.1.0-g3dc0a4b-v2.7/cd linux-imx-4.1.15-2.1.0-g3dc0a4b-v2.7
# ARCH=arm 设置目标为 arm 架构
# CROSS_COMPILE 指定所使用的交叉编译器# 清除工程
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
# 配置工程
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_v7_defconfig
# 打开图形配置界面,对 Linux 进行配置
# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
# 编译
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j4

编译完成以后就会在 arch/arm/boot 这个目录下生成一个叫做 zImage 的文件, zImage 就是我们要用的 Linux 镜像文件。另外也会在 arch/arm/boot/dts 下生成很多.dtb 文件,这些.dtb 就是设备树文件。

2 Poky 编译器编译U-Boot和Linux内核

2.1 安装 Poky 交叉编译工具链
# 修改Poky 交叉编译工具链脚本的权限
chmod u+x fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh# 执行脚本安装交叉编译工具,连续敲下两次回车键确认,再输入用户密码即可
# 默认安装到/opt/fsl-imx-x11/4.1.15-2.1.0 这个默认目录
./fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh# 在不同终端或者切换用户时需要重新使能环境变量方可使用
source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi# 使能环境变量后可以使用 env 指令查看生效的环境变量
env# 查看 gcc 版本,表明环境变量已经生效
arm-poky-linux-gnueabi-gcc --version
2.2 安装依赖库
# 先更新软列表(本地数据库)
sudo apt-get update 
# 安装 lzop 工具,用于生成压缩或解压镜像
sudo apt-get install lzop 
# 安装 ncurese 相关库, U-boot 或者内核菜单显示时需要
sudo apt-get install libncurses* 
2.3 编译U-Boot源码
# 解压源码包
mkdir -p uboot-imx-2016.03-2.1.0-g0ae7e33-v1.7tar -vxjf uboot-imx-2016.03-2.1.0-g0ae7e33-v1.7.tar.bz2 -C uboot-imx-2016.03-2.1.0-g0ae7e33-v1.7/cd uboot-imx-2016.03-2.1.0-g0ae7e33-v1.7# 执行脚本编译,编译的目标文件会在当前 U-boot 源码顶层目录下的 tmp 文件夹里
# 开始编译出厂 U-boot 源码, 生成 u-boot.imx, 第一级启动引导文件
./build.sh
2.4 编译Linux内核源码
# 解压源码包
mkdir -p linux-imx-4.1.15-2.1.0-g3dc0a4b-v2.7tar -vxjf linux-imx-4.1.15-2.1.0-g3dc0a4b-v2.7.tar.bz2 -C linux-imx-4.1.15-2.1.0-g3dc0a4b-v2.7/cd linux-imx-4.1.15-2.1.0-g3dc0a4b-v2.7# 执行脚本编译,编译的目标文件会在当前 Linux 源码顶层目录下的 tmp 文件夹里。
# 开始编译出厂 Linux 源码,包括 zImage, dtb 和 modules
./build.sh

http://www.ppmy.cn/news/8905.html

相关文章

17. 老板让我手动控制网页渲染速度,说这能反爬虫?我信了。

手动数据延迟加载,真的可以反爬虫 爬虫训练场项目,加速更新中,专栏清单参考 pachong.vip 本次案例需要的代码量特别小,所以咱们再 Nginx 中也进行一下相关配置 文章目录页面逻辑实现接口逻辑实现延迟实现,time.sleep()…

c++版369寝室

描述:369 寝室是比较特殊的寝室,因为别的寝室都住了四个人,而 369 寝室只有三个人。也因为这个原因,寝室里的三位同学感情特别好。但是,毕业在即,三位小伙伴马上要分别。为了在未来的某个日子可以见面&…

第二个岳云鹏,跨年晚会含泪主持,成为一道最靓丽的风景

中国人自古讲究:百善孝入先,尤其是对于娱乐圈的明星来说,孝心和爱心更是他们成功的根本。 在这方面,德云社的小岳岳走在了前列,他用自己的孝心和爱心感动了粉丝,也收获了无数的鲜花和掌声。小岳岳的爱心体现…

【学习】domain adaptation、BERT

文章目录一、domain adaptation领域适应domain shiftdomain adversarial training![在这里插入图片描述](https://img-blog.csdnimg.cn/26ef051b6a6148cbadb2dc6a9067fce2.png)domain generalization二、自监督学习多语言BERT的跨语言能力交叉学科能力用人工数据进行预训练一、…

信息数智化招采系统源码——信息数智化招采系统

​ 信息数智化招采系统 服务框架:Spring Cloud、Spring Boot2、Mybatis、OAuth2、Security 前端架构:VUE、Uniapp、Layui、Bootstrap、H5、CSS3 涉及技术:Eureka、Config、Zuul、OAuth2、Security、OSS、Turbine、Zipkin、Feign、Monitor、…

计算机视觉实战----AlexNet网络及使用colab跑YoloV5代码

系列文章目录 文章目录系列文章目录前言一、用colab薅羊毛二、使用百度飞浆操作三、二、使用步骤1.引入库2.读入数据总结前言 一、用colab薅羊毛 Colaboratory 简称“Colab”,是 Google Research 团队开发的一款产品。在 Colab 中,任何人都可以通过浏览…

React-Router6路由相关一(路由的基本使用、重定向、NavLink·、路由表、嵌套路由)(七)

系列文章目录 第一章:React基础知识(React基本使用、JSX语法、React模块化与组件化)(一) 第二章:React基础知识(组件实例三大核心属性state、props、refs)(二&#xff0…

Docker进阶(中)

docker 进阶(中)docker提交镜像等命令docker 镜像原理docker 私有库&推送到私有库容器数据卷docker 安装常规软件docker提交镜像等命令 再这个谈这个docker 提交这个镜像之前我们先补充一下上一篇博客没有谈到的命令。再这里说一下。我们之前谈到的…