编译u-boot(硬件: atk-dl6y2c)和NFS/EMMC模式启动Linux Kernel

目录

概述

1 编译u-boot

1.1 解压文件

1.2 编译u-boot

2 配置环境

2.1 在Ubunt 搭建TFTP

2.2 建立下载目录

3 烧写bootloader到SD

4 使用NFS模式启动板卡

5 从EMMC 启动 Linux 系统

5.1 通过配置参数方式

5.2 使用命令直接启动内核


文中使用的代码下载地址:

【免费】atk-dl6y3c-build-uboot相关资料资源-CSDN文库

【免费】Ubuntu下裸机烧写软件-ATK-DL6Y2C资源-CSDN文库

概述

本文主要介绍使用编译ATK-DL6Y2C板卡配套的u-boot源码包( uboot-imx-2016.03-2.1.0-g0ae7e33-v1.7.tar.bz2 ),交叉编译器版本为:gcc-linaro-4.9.4-arm-linux-gnueabihf。编译该代码包,并生成.bin文件,使用其提供的imxdownload功能将其下载到SD中,测试u-boot的命令,使用该u-boot通过NFS和EMMC启动Linux kernel。还简要介绍了NFS的搭建方法。

1 编译u-boot

1.1 解压文件

ATK-DL6Y2C使用的板卡标配u-boot代码包为:

tar -vxjf uboot-imx-2016.03-2.1.0-g0ae7e33-v1.7.tar.bz2  -C atk_u_boot

解压之后,列出文件信息:

进入atk_u_boot目录中修改build.sh的执行权限,使用命令:

chmod 777 build.sh

1.2 编译u-boot

在编译u-boot之前,确保ubuntu中已经安装编译环境,安装编译环境的执行命令如下:

chmod u+x fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh
./fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh

安装完成编译环境后,进入atk_u_boot目录中,执行./build.sh 编译u-boot,执行命令之后:

编译完成后,在atk_u_boot/tmp目录下生成.bin文件

2 配置环境

2.1 在Ubunt 搭建TFTP

step-1: 安装xinetd,使用命令

sudo apt-get install xinetd

step-2: 执行以下程序安装 tftp-hpa 和 tftpd-hpa 服务程序 ,使用命令:

sudo apt-get install tftp-hpa tftpd-hpa

step-3: 执行以下指令打开 tftpd-hpa 配置文件,修改 tftp 目录为 TFTP 服务器工作目录。使用命令:

sudo vi /etc/default/tftpd-hpa

NFS的下目录为:/home/mftang/tftp

step-4: 执行以下指令创建/etc/xinetd.d/tftp 配置文件 ,使用命令:

sudo vi /etc/xinetd.d/tftp

添加如下代码:

server tftp
{
   socket_type = dgram
   wait = yes
   disable = no
   user = root
   protocol = udp
   server = /usr/sbin/in.tftpd
   server_args = -s /home/mftang/tftp -c
   #log_on_success += PID HOST DURATION
   #log_on_failure += HOST
   per_source = 11
   cps =100 2
   flags =IPv4
}

step-5: 修改/添加 tftp 文件后, 执行以下指令重启 tftpd-hpa。

sudo service tftpd-hpa restart

step-6: 重启 xinetd 服务。

sudo service xinetd restart

2.2 建立下载目录

使用如下命令创建目录,并修改目录的权限。

mkdir /home/mftang/tftp
chmod 777 /home/mftang/tftp

将编译生成的内核zImage和设备树文件.dtb文件,放到如下目录中。所需的文件如下:

3 烧写bootloader到SD

进入到bootloader的编译目录,使用如下命令烧写.bin文件:

./imxdownload  u-boot-imx6ull-14x14-ddr512-emmc.bin /dev/sdb

如果没有任何提示错误,说明下载数据完成。

在板卡上将启动方式调至:SD启动模式

重新上电启动系统,u-boot已经工作了

4 使用NFS模式启动板卡

step 1:设置板卡ip

setenv ipaddr 192.168.1.50
setenv ethaddr b8:ae:1d:01:00:00
setenv gatewayip 192.168.1.1
setenv netmask 255.255.255.0
​
setenv serverip 192.168.1.11
saveenv

 step-2: nfs 启动板卡:

setenv bootcmd 'tftp 80800000 zImage; tftp 83000000 imx6ull-14x14-emmc-4.3-480x272-c.dtb; bootz 80800000 - 83000000'

运行结果:

执行上述命令后,板卡会从tftp下载内核zImage和设备树文件到内存,出现如下log:说明内核启动成功了

5 从EMMC 启动 Linux kernel

5.1 通过配置参数方式

配置参数

setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'
​
setenv bootcmd 'mmc dev 1; fatload mmc 1:1 0x80800000 zImage; fatload mmc 1:1 0x83000000
imx6ull-14x14-emmc-4.3-480x272-c.dtb; bootz 0x80800000 - 0x83000000;'
​
saveenv

执行命令后,显示如下错误:

查询mmc中的内容:

ls mmc 1:1

结论: 

根据文档《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.81.pdf》page: 909 中提供的方法,无法正常启动内核。

5.2 使用命令直接启动内核

使用u-boot命令,从 EMMC 中读取 zImage 镜像文件和设备树文件 ,并启动内核。使用如下命令执行:

mmc dev 1
fatload mmc 1:1 0x80800000 zImage
fatload mmc 1:1 0x83000000 imx6ull-14x14-emmc-4.3-480x272-c.dtb
bootz 0x80800000 - 0x83000000

启动内核之后,运行的log信息: 

结论:

单独运行每一条命令,可以从EMMC中启动内核

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/488457.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

QT(3/25)

完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示“登录成功”,提供一个OK按钮,用户点击OK后,关闭登录界面,跳转到其他界面。 如果账号和密码不匹配&#…

day04_JDBC_课后练习 - 参考答案(一共11道练习题)

文章目录 day04_JDBC_课后练习第1题参考答案第1题-第3题的sql第4题第5题第6题第7题第8题第9题第10题第11题 day04_JDBC_课后练习 第1题 案例: 1、创建数据库day04_test01_bookstore 2、创建如下表格 (1)图书表books (2&#…

基于SpringBoot+MyBatis校园周边美食探索及分享平台

采用技术 基于SpringBootMyBatis校园周边美食探索及分享平台的设计与实现~ 开发语言:Java 数据库:MySQL 技术:SpringBootMyBatis 工具:IDEA/Ecilpse、Navicat、Maven 页面展示效果 功能清单 前台首页 登录页面 美食鉴赏界面…

【牛客】SQL142 对试卷得分做min-max归一化

描述 现有试卷信息表examination_info(exam_id试卷ID, tag试卷类别, difficulty试卷难度, duration考试时长, release_time发布时间): idexam_idtagdifficultydurationrelease_time19001SQLhard602020-01-01 10:00:0029002Chard802020-01-0…

等保测评密评对照:一文看懂两者差异

最近,在去几个客户的办公室交流的方案的时候,都会被重点问到网络安全问题,在方案中“等保”是如何体现和落实的。而且有些客户的领导也会提到“密评”与“等保”如何衔接,是否有先后顺序,可否同时进行测评等问题。 关于“等保”与…

后端常问面经之Java集合

HashMap底层原理 HashMap的数据结构: 底层使用hash表数据结构,即数组和链表或红黑树 当我们往HashMap中put元素时,利用key的hashCode重新hash计算出当前对象的元素在数组中的下标 存储时,如果出现hash值相同的key,此…

《自动机理论、语言和计算导论》阅读笔记:p28-p48

《自动机理论、语言和计算导论》学习第3天,p28-p48总结,总计21页。 一、技术总结 1.希腊字母(Greek Alphabet包含大小写)。 24个,掌握其读写有助于阅读及数学推导时使用。 2.自动机理论的核心概念 (1)alphabet (2)string (3)language …

【CXL协议-事务层之CXL.mem(3)】

3.3 CXL.mem 3.3.1 Introduction (介绍) CXL 内存协议称为 CXL.mem,它是 CPU 和内存之间的事务接口。 跨芯片通信时,它使用 Compute Express Link (CXL) 的物理层和链路层。 该协议可用于多种不同的内存连接选项,包括…

Pandas操作MultiIndex合并行列的Excel,写入读取以及写入多余行及Index列处理,插入行,修改某个单元格的值

Pandas操作MultiIndex合并行列的excel,写入读取以及写入多余行及Index列处理 1. 效果图及问题2. 源码参考 今天是谁写Pandas的 复合索引MultiIndex,写的糊糊涂涂,晕晕乎乎。 是我呀… 记录下,现在终于灵台清明了。 明天在记录下直…

Vue3进阶(叁):关于 Vue2 项目迁移至 Vue3 的几点注意事项

文章目录 一、前言二、Vue3 新特性三、Vue2 安全保障四、迁移方案4.1 迁移辅助工具 vue/compat 库 五、迁移注意事项5.1 升级和兼容性5.2 组件的改变5.3 Composition API5.4 Vue Router5.5 Vuex5.6 其他库和插件5.7 差异示例5.7.1 创建vue5.7.2 定义时间格式全局过滤器5.7.3 vu…

PTAxt的考研路

xt是我院19级专业第一,但他认为保研并不能展示他全部的实力,所以他在22年初试一结束就加入了23考研的队伍中,并且他为了填补我院近些年来无北大研究生的空白,毅然决然决定扛起19级的大旗,在学校百年华诞之际献上他最诚…

平台介绍-搭建赛事运营平台(3)

上文介绍了品牌隔离的基本原理,就是通过不同的前端和微服务来实现。但是确实很多功能是类似的,所以从编程角度还是有些管理手段的。 前端部分:前端部分没有什么特别手段,就是两个独立的项目工程,分别维护。相同的部分复…

maven的依赖继承

先说一下创建子maven工程的步骤 继承 继承的作用:在父工程中,统一管理项目中的依赖信息,进行统一的版本控制 继承的背景是:对一个大型的项目进行了模块拆分,一个project下,创建了很多的module&#xff0c…

绝地求生:PUBG七周年在线人数70万,比六周年增加24万

大家好,我是闲游盒 自从3月PUBG7周年活动开启,PUBG在线人数再次突破70万,黑盒数据显示最高在线人数达704344人,PUBG迎来又一春。 对比6周年的数据而言,7周年的玩家在线人数增长了24万! 而根据数据显示,PUBG…

centos7 装 docker-ce

安装必要的系统工具: sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 命令会以超级用户的身份安装三个软件包:yum-utils,device-mapper-persistent-…

『笔记』可扩展架构设计之消息队列

前言 众所周知,开发低耦合系统是软件开发的终极目标之一。低耦合的系统更加容易扩展,低耦合的模块更加容易复用,更易于维护和管理。我们知道,消息队列的主要功能就是收发消息,但是它的作用不仅仅只是解决应用之间的通…

数据库高级查询【mysql】

数据库高级查询【数据库】 前言版权推荐数据库高级查询行转列统计数据 CASE WHEN 条件 THEN 结果1 ELSE 结果2 END数据库查询带排名建表查询带排名,排名连续查询带排名,排名不连续查询带排名,按行号 Mysql数据库函数常用函数最后 前言 2024-…

(四)图像的%2线性拉伸

环境:Windows10专业版 IDEA2021.2.3 jdk11.0.1 OpenCV-460.jar 系列文章: (一)PythonGDAL实现BSQ,BIP,BIL格式的相互转换 (二)BSQ,BIL,BIP存储格式的相互转换算法 (三…

SQLite中的原子提交(四)

返回:SQLite—系列文章目录 上一篇:SQLite数据库成为内存中数据库(三) 下一篇:SQLite使用的临时文件(二) 1. 引言 SQLite等事务数据库的一个重要特性 是“原子提交”。 原子提交意味着所有数据库都在…

【文献分享】WimPyDD 程序:用于计算 WIMP 直接检测信号的面向对象的 Python 代码

题目:WimPyDD: An object–oriented Python code for the calculation of WIMP direct detection signals 链接:DOI: 10.1016/j.cpc.2022.108342 Program Title: WimPyDD (first release: v1.6.1) CPC Library link to program files: https://doi.…