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

news2024/11/16 3:28:56

目录

概述

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中启动内核

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

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

相关文章

MySQL 8.x 高可用集群之MGR(组复制)

MySQL 8.x 高可用集群之MGR(组复制) 前言一、集群部署1.1 修改主机名和关闭selinux1.2 MySQL安装1.2.1 **移除Linux自带安装的mariadb数据库**1.2.2 下载安装文件1.2.3 顺序执行安装1.2.4 启动mysql并修改密码1.2.5 开启防火墙端口允许访问 1.3 修改mysq…

模仿羊羊~消消乐

慎玩!随机生成、不保证能消完哦! 游戏试玩: 链接: https://pan.baidu.com/s/1IwtOd__8Ca0bSouMP8kEzw 提取码: 6yhd

[深度学习]yolov8+pyqt5搭建精美界面GUI设计源码实现五

【简单介绍】 依托先进的目标检测算法YOLOv8与灵活的PyQt5界面开发框架,我们倾力打造出了一款集直观、易用与功能强大于一体的目标检测GUI界面软件。通过深度融合YOLOv8在目标识别领域的出色性能与PyQt5的精美界面设计,我们成功推出了一款高效且稳定的软…

【Web】浅聊Jackson序列化getter的利用——POJONode

目录 核心速览 原理分析 EXP TemplatesImpl利用 SignedObject利用 核心速览 writeValueAsString是jackson序列化自带的入口,在调用该方法的过程中将会通过遍历的方法将bean对象中的所有的属性的getter方法进行调用 下面介绍如下利用链: BadAttrib…

python3游戏GUI--开心打地鼠游戏By:PyQt5(附下载地址)

文章目录 一.前言二.游戏预览1.启动2.开始游戏3.游戏结束4.排行榜 三.游戏思路四.总结 一.前言 第一次用PyQt做游戏,有点小紧张呢。本次使用PyQt5制作一款简单的打地鼠游戏,支持基本游戏玩法、…

IO网络通信

IO Bio: 同步阻塞,一个线程一次连接,基于字符流/字节流 Nio:同步非阻塞 一个线程多个连接,多个请求注册到多路复用selector上,多路复用器轮训连接 面向缓冲区, 从某通道读取数据到缓存区&…

详解Python面向对象编程(一)

类和对象 面向过程——怎么做? (1)把完成某一需求的所有步骤、从头到尾,逐步实现 (2)根据开发需求,将某些功能独立的代码块封装成一个又一个的函数 (3)最后完成的代码&a…

csdn最全面的网安面试题汇总——小白篇

防范常见的 Web 攻击 什么是 SQL 注入攻击 攻击者在 HTTP 请求中注入恶意的 SQL 代码,服务器使用参数构建数据库 SQL 命令时,恶意SQL 被一起构造,并在数据库中执行。 用户登录,输入用户名 lianggzone,密码 ‘ or ‘…

程序员如何兼职赚小钱?

程序员由于有技术和手艺其实兼职赚钱的路子还是挺多的,只要你有足够的时间。 1. 做外包 这是比较传统的方式,甲方在一些众包平台上发布开发任务,你可以抢这个任务,但是价格都比较便宜。 任务比较多的平台: 猪八戒、一品威客、开…

【Java】哈希表

文章目录 一、概念二、哈希冲突2.1概念2.2设计合理的哈希函数-避免冲突2.3调节负载因子-避免冲突2.4闭散列-冲突解决(了解)2.5开散列/哈希桶-冲突解决(重点掌握) 三、代码实现3.1成员变量及方法的设定3.2插入3.3重新哈希3.4 获取到…

面试题-Elasticsearch集群架构和调优手段(超全面)

对于Elasticsearch(ES),我了解并有经验。在我之前的公司,我们有一个相对大型的ES集群,以下是该集群的架构和一些调优手段的概述: 1. 集群架构 集群规模:我们的ES集群由15个节点组成&#xff0c…

ICC2:postmask ECO参考脚本

更多学习内容请关注「拾陆楼」知识星球 拾陆楼知识星球入口 eco_netlist -by_verilog_file eco.v -write_changes eco.tcl set_app_options -name design.eco_freeze_silocon_mode -value true source eco tcl set_app_options -name design.eco_freeze_silocon_mode -valu…

C++ 3.25作业

1、定义自己的命名空间&#xff0c;其中有string类型的变量&#xff0c;再定义两个函数&#xff0c;一个函数完成字符串的输入&#xff0c;一个函数完成求字符串长度&#xff0c;再定义一个全局函数完成对该字符串的反转 #include <iostream>using namespace std;namesp…

vite+vue3动态模块化导入并使用pinia

一、安装引入pinia 1.安装 pnpm install pinia # 或者使用 yarn yarn add pinia # 或者使用 npm npm install pinia 2.在main.js里引入 import { createApp } from vue import App from ./App.vue import { createPinia } from pinia createApp(App).use(createPinia()).mo…

【linux网络(一)】初识网络, 理解四层网络模型

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; Linux网络 1. 前言2. 初识网络…

Python 全栈体系【四阶】(十八)

第五章 深度学习 一、基本理论 4. 神经网络的改进 4.1 神经网络的局限 全连接神经网络的局限&#xff08;一&#xff09; 未考虑数据的“形状”&#xff0c;会破坏数据空间结构。例如&#xff0c;输入数据是图像时&#xff0c;图像通常是高长通道方向上的 3 维形状。但是&a…

JavaParser 手动安装和配置

目录 前言 一、安装 Maven 工具 1.1 Maven 软件的下载 1.2 Maven 软件的安装 1.3 Maven 环境变量配置 1.4 通过命令检查 Maven 版本 二、配置 Maven 仓库 2.1 修改仓库目录 2.2 添加国内镜像 三、从 Github 下载 JavaParser 3.1 下载并解压 JavaParser 3.2 从路径打…

C#学习笔记2:设置启动项目、数组/二维数组

今日继续我的C#学习之路 设置启动项目&#xff1a; Visual Studio 无法直接启动带有“类库输出类型“的项目。若要调试此项目&#xff0c;请在此解决方案中添加一个引用库项目的可执行项目。将这个可执行项目设置为启动项目问题解决 调试学习时的一个小插曲&#xff0c;有时会…

yolov8直接调用zed相机实现三维测距(python)

yolov8直接调用zed相机实现三维测距&#xff08;python&#xff09; 1. 相关配置2. 相关代码3. 实验结果 相关链接 此项目直接调用zed相机实现三维测距&#xff0c;无需标定&#xff0c;相关内容如下&#xff1a; 1.yolov5直接调用zed相机实现三维测距&#xff08;python&#…

深入解析MySQL的四种打开方式

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …