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

news2024/12/23 22:14:05

嵌入式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.7

tar -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.7

tar -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.7

tar -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.7

tar -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.coloradmin.cn/o/135357.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

lscpu查看cpu信息

$ lscpu Architecture: x86_64 # 架构CPU op-mode(s): 32-bit, 64-bitAddress sizes: 45 bits physical, 48 bits virtualByte Order: Little Endian # 字节序 CPU(s): 2 # 逻辑cpu数On-line CPU(s) list: 0,1 Vendo…

GitHub上 7 个Spring Boot 优质开源项目

前后端分离已经在慢慢走进各公司的技术栈,不少公司都已经切换到这个技术栈上面了。即使贵司目前没有切换到这个技术栈上面,松哥也非常建议大家学习一下前后端分离开发,以免在公司干了两三年,SSH 框架用的滚瓜烂熟,出来…

hcip第四天实验

实验步骤 配置ip 所有设备可以与公网可以通信,在边界路由器上配置缺省指向ISP 配置普通GRE 启OSPF,对于不规则区域使用重发布 优化LSA更新量 R5: [r5]acl 2000 [r5-acl-basic-2000]rule permit source any [r5]int GigabitEthernet…

数据库知识

关系数据库标准语言SQL 写在开头这一章应该把更多的功夫放在实践上面,书中的语句繁杂多样,不亲自写一写是不容易学会的。其次,理论学了那么多,不会有人不想实践敲一下吧[doge]?建议先搞数据更新中的插入数据后再看查询…

【回答问题】ChatGPT上线了!写出coco数据集的图像分类训练和预测函数代码?

写出coco数据集的图像分类训练代码 好的,我会尽力写出图像分类训练代码。首先,你需要准备好 COCO 数据集的图像和标签,并将其转换成适合你模型使用的格式。其次,你需要选择一个图像分类模型,并定义好模型的结构。接下…

【课程太贵,学习无门,让你们了解CSS3入门知识】

文章目录‍❤️‍🔥CSS简介‍‍‍‍❤️‍🔥CSS选择器❣️选择器一❣️选择器二❣️关系选择器‍❤️‍🔥CSS属性❣️字体属性❣️背景属性❣️文本属性❣️表格属性‍❤️‍🔥CSS文档流‍❤️‍🔥CSS浮动‍❤️‍&…

【编程导航】设计模式学习笔记

设计模式日常学习(一)设计模式 软件设计模式的概念 软件设计模式(Software Design Pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的…

windows下编译dtkwidget

参考 https://blog.csdn.net/yuxue321/article/details/109552210 步骤 安装官方qt5.12.3,安装时勾选64位版本、32位版本 下载glib和pkg,到mingw73_32目录下,解压到当前文件夹 https://brltty.app/archive/Windows/MinGW/glib_2.34.3-1_wi…

【大数据】Hadoop完全分布式配置(超详细)

文章目录概述1.准备Linux2.安装JDK3.克隆两台虚拟机4.免密登陆5.安装Hadoop6.配置Hadoop配置文件7.启动服务8.在集群上测试一个jar包-单词统计的功能问题总结概述 Hadoop完全分布式配置-具体步骤如下 默认前提: 1.在Windows平台下安装Vmware平台(默认已…

数据库的三大范式

数据库的三大范式 设计关系数据库时,需要遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,越高的范式数据冗余度越低。 实际开发中涉及到的范式一般有三种:第一范式、第二范式、第…

WindowsTerminal_01 配置SSH连接

文章目录1 前言2 过程参考1 前言 windows terminal 功能强大,可以自定义终端。由于实验需求,需要用到Linux服务器,所以打算使用Windows Termial 来配置终端,以此来方便地登录服务器,执行一些简单的命令 2 过程 自定…

MongoDB基础

目录简介安装基操pymongo简介 MongoDB 是一个非关系型数据库非常适合超大数据集的存储,由 C 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰…

TC275——03开发环境搭建

开发环境与工具链的搭配有很多,这里选择最省事的英飞凌自己推出的一款基于eclipse的IDE,主要是学习,不用于商业用途。 安装ADS开发环境 下载网址: AURIX™ Development Studio - Infineon Technologies 下载这个安装包 双击安装…

Springboot-Vue项目框架每部分的介绍

Springboot-Vue项目框架每部分的介绍 文章目录Springboot-Vue项目框架每部分的介绍前端后端前端 后端 如上图所示,在Springboot项目中,目录结构有代码层结构和资源文件的结构 SpringBoot项目框架对工程结构并没有特殊的限制,只要是良好的工程…

C语言--图书管理项目

C语言图书管理系统项目 第一节 C 语言基础以及基本数据类型 第二节 C 语言运算符 第三节 C 语言控制语句 第四节 C 语言自定义函数 第五节 C 语言修饰变量的关键字 第六节 C 语言构造数据类型–数组 第七节 C 语言字符串 第八节 C 语言指针 第九节 指针与函数、指针函数、函数…

【Linux多线程编程】1. 多线程与单线程

什么是单线程 在描述什么是多线程之前&#xff0c;先讲讲什么是单线程。 int var 100; // 全局变量 var&#xff0c;初始值为 100 void func(){var 100;std::cout << "now var is: " << var << std::endl; // c 语法&#xff0c;意思为输出 va…

【强训】day02

努力经营当下&#xff0c;直至未来明朗&#xff01; 文章目录一、选择二、 编程1. 排序子序列2. 倒置字符串答案1. 选择2. 编程普通小孩也要热爱生活&#xff01; 一、选择 阅读如下代码。 请问&#xff0c;对语句行 test.hello(). 描述正确的有&#xff08;&#xff09; pa…

网站备案信息查询,网站备案号在哪里查询

网站备案号一般是在工信部官方查询&#xff0c;也可以使用第三方工具查询。 1、使用工信部域名信息备案管理系统网站查询 打开工信部的域名信息备案管理系统网站https://beian.miit.gov.cn/&#xff0c;点击ICP备案信息查询&#xff0c;添加需要查询的域名&#xff08;网站网址…

Drools基础与实现(操作实例)

简介&#xff1a; Drools 是用 Java 语言编写的开放源码规则引擎&#xff0c;使用 Rete 算法对所编写的规则求值。Drools 允许使用声明方式表达业务逻辑。可以使用非 XML 的本地语言编写规则&#xff0c;从而便于学习和理解。并且&#xff0c;还可以将 Java 代码直接嵌入到规则…

逻辑漏洞渗透与攻防(一)之身份验证漏洞

目录 逻辑漏洞概要 漏洞的根因&#xff1a; 逻辑漏洞的分类&#xff1a; 身份验证漏洞 暴力破解漏洞 1.1 未限制爆破 1.2 爆破-验证码爆破 1.3 暴力破解漏洞-限制IP爆破 1.4 暴力破解漏洞-限制密码错误次数来爆破 1.5 暴力破解漏洞-多字段爆破 1.6 限制登录频率爆破 …