u-boot的烧写及使用,u-boot-2013.01的移植 6.30

news2024/12/28 6:11:20

1.将Linux的执行文件放到板子上运行

嵌入式系统

1.嵌入式系统 定制

2.硬件:核心芯片+底板

	软件:驱动+应用  驱动+系统+应用(并发,网络,文件。。。)

3.系统:linux 开源   模块化  支持芯片众多   功能

4.交叉开发环境:

		1)硬件:PC <------net(协议最简单)-----> Board

		2)软件:代码,交叉开发工具(board的芯片类型)下载工具(把二进制文件从PC搬移到板子上 tftp)

因为指令集不一样,所以x86架构的不能直接在ARM中使用,所以要交叉编译

gcc和arm-gcc是不一样的

movi -h

出现信息则不用烧录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CfPw0Okp-1688121833986)(C:\Users\1\AppData\Roaming\Typora\typora-user-images\image-20230630111535154.png)]

没有出现信息则需要烧录
烧写的过程
1.断电 SD卡取出来
2.金属片拨片向上表示可写
3.SD卡插上之后 右键  管理--磁盘管理
4.imageWriter中打开u.bin--->write--->success

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3pJxM6r9-1688121833986)(C:\Users\1\AppData\Roaming\Typora\typora-user-images\image-20230630141428727.png)]

ifconfig eth0 192.168.2.250(同网段)

此时的a.out应该是用交叉编译arm-linux-gcc 1.c  生成的
生成的a.out应该更改权限 chmod 777 a.out
并且将a.out放到mytftp文件中

tftp -g -r a.out 192.168.2.249

在超级终端中./a.out即可运行程序

2.自行配置文件

bootloader	引导启动程序(硬件软件初始化) u.bin

kernel	操作系统运行到内核来  uImage xx.dtb(设备数文件)

rootf	根目录中所有文件的集合:根文件系统 ramdisk-----也运行到内核中

bootloader

bootloader不属于操作系统,采用汇编+C语言开发(汇编先去初始化C语言环境然后用C去运行),需要针对特定的硬件平台去编写
依赖CPU的体系结构,也需要硬件的差异去配置,定制化的与硬件强相关的软件

bootloader的操作模式

自启动模式
交互模式:
	hit any key to stop autoboot: 0

常用的bootloader:

GRUB和U-boot

GRUB:一般是x86的操作系统中使用

U-boot:在嵌入式的平台下,引导启动基本上都是u-boot

U-boot
开源的软件,支持的体系结构和开发板众多

命令:环境设置、数据传输、存储器访问、加载运行
pri:显示所有的环境变量
set:设置新的环境变量
save:将当前定义的所有的环境变量保存

MMC命令(烧写命令) eMMC命令
mmcinfo:查看MMC设备信息
mmc read/write devnum addr start_blk blkcnt
mmc write 0 41000000 0 2(每一块512byte)
==>
tftp 先下载
movi write kernel 41000000 = mmc write 0 41000000 1 2  

实现网络下载的自启动

设置自启动命令

在这里插入图片描述

然后save

启动

实现emmc的自启动

保存到硬盘,再从硬盘中读出来

tftp 41000000 uImage
movi write kernel 41000000
tftp 42000000 exynos4412-fs4412.dtb 
movi write dtb 42000000
tftp 43000000 ramdisk.img
movi write rootfs 43000000 300000

设置emmc自启动命令
set bootcmd movi read kernel 41000000\;movi read dtb 42000000\;movi read rootfs 43000000 300000\;bootm 41000000 43000000 42000000

【uboot】的制作

1.代码编译-----> u.bin

board(底板)

common(命令)

disk(磁盘)

drivers(设备数)

makefile

boards.cfg:  中的Target指定目标是用来对应的芯片和板子编译到u-boot里去

tar -xvf u-boot-2013.01

vi Makefile

编译:
#if.....

185 CROSS_COMPILE ?= arm-linux-

#end.....

make qong_config

make -j8 (多线程编译,加快编译速度)

编译出定制化的指示和qong的二进制文件 u-boot.bin

得到一个可以把内核加载起来的uboot

2.确认uboot是否支持芯片(samsung exynos 4412)

arch(关于芯片目录)—>arm–>cpu—>armv7–>exynos

支持:继续

不支持:1.下载最新版的uboot 2.找芯片厂家提供

确认板子是否支持(fs44112)

支持:继续

不支持:1.下载最新版的uboot 2.找板子厂家提供 找SOC相同的板子的代码(origen)

制作bin文件

0)  make distclean  //清除所有的中间二进制文件 和 配置 第一次需要
1) 在board中找到Samsung公司的板子 cp origen fs4412
2) 在board.cfg中修改 target
3) 修改头文件: cp include/configs/origen.h include/configs/fs4412.h
2) make fs4412_config
3)  make -j8

直接往emmc里面烧录程序

SD卡模式:
tftp  u-boot.bin 41000000
movi write uboot 41000000
断电,切换emmc模式
上电

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

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

相关文章

针对字符串输入之间有空格的问题相关的问题

先说结论&#xff1a; bool flag true;while (cin >> s) {if (flag) {flag false;cout << s.size();} else {cout << , << s.size();}} 即用while&#xff08;cin>>s&#xff09;来输入&#xff0c;一段单词一段单词的来做&#xff08;遇到ci…

第十一章 原理篇:transformer模型入门

说在前面的话&#xff1a; 找工作面试不是特别顺利。进了目标公司的二面&#xff0c;但是一面面试官问的一些“新技术”问题答得不太好&#xff0c;尤其是transformer相关的。这一点确实是自己的问题&#xff0c;在工作后总是面向业务学习&#xff0c;对很多算法都是处于“听说…

AD从原理图到PCB超详细教程

AD超详细教程 前言一、建立一个工程模板二、原理图1.设计原理图。2.使用AD自带库和网上开源原理图库3.画原理图库4.编译原理图 三、PCB1.确定元器件尺寸大小2.绘制PCB Library①使用元器件向导绘制元件库②原理图与PCB的映射 3.绘制PCB①更新PCB②调整元件位置③布线④漏线检查…

库操作和表操作(数据库系列2)

目录 前言&#xff1a; 1.数据库的操作 1.1显示当前的数据库 1.2创建数据库 1.3使用数据库 1.4删除数据库 2.常用数据类型 2.1数值类型 2.2字符串类型 2.3日期类型 3.表的操作 3.1查看表结构 3.2创建表 3.3查看表 3.4删除表 结束语&#xff1a; 前言&#xff1…

【硬件自动化测试--测试软件的设计及实现】如何设计并实现!

今天来聊聊关于硬件方向的自动化软件设计及实现,后面我会用实例来让我们更加深入的了解硬件自动化,首先开发工具选择的是python语言,为啥选择python语言呢,因为他的语法比较简洁,外置库非常多,反正就是对于做自动化方面很实用就对了。 1.硬件自动化测试大致分为三个阶段实…

拓展:IDEA如何使用不同版本的JDK?(改了还报错很可能因为没改全,以mac为例)

以下面的案例为例 Enhanced ‘switch’ blocks are not supported at language level ‘8’ 后面知道是因为Spring的版本和JDK的版本不对应&#xff0c;结果网上找到的解决方案都很简单。下载了一个新版本的JDK&#xff0c;然后IDEA里面Project Structure的Project标签里把SDK给…

ubuntu的aarch64版本上安装anaconda

ubuntu的aarch64版本上安装anaconda 问题背景&#xff1a;今天在基于docker安装的ubuntu18-04的版本上想要安装anaconda&#xff0c;但是出现了问题&#xff0c;发现ubuntu的版本18-04对应的是aarch64&#xff0c;因此记录安装方法。 首先下载安装包没问题但是&#xff0c;在具…

机器学习复习7

机器学习复习7 1 - 根据下图中绘制的决策树&#xff0c;如果一个动物的耳朵是软的&#xff0c;脸型是圆的&#xff0c;并且有胡须&#xff0c;那么这个模型会预测它是猫还是不是猫&#xff1f; A. 不是猫 B. 是猫 **答案&#xff1a;B ** 2 - 以一棵决策树学习来对垃圾邮件和非…

spring boot启动原理分析

springboot启动类中有两个关键的地方 1.SpringBootApplication注解 2.SpringApplication.run方法 SpringBootApplication注解分析 SpringBootApplication注解由三大注解构成&#xff0c; SpringBootConfiguration、EnableAutoConfiguration、ComponentScan。 SpringBootCon…

Java-八股文-基础本部分<一>

Java基础部分 基础篇<一> Java基础部分 基础篇<二> Java基础部分 基础篇<三> Java基础部分 异常篇 Java基础部分 集合篇 Java基础部分 线程篇 ❤️ &#x1f9e1; &#x1f49b; &#x1f49a; &#x1f499; &#x1f49c;&#x1f5a4; &#x1f90d;…

什么是网络货运平台?

一、什么是网络货运平台&#xff1f; 网络货运平台是依托互联网平台整合配置运输资源&#xff0c;以承运人身份与托运人签订运输服务合同、承担承运人责任&#xff0c;委托实际承运人完成运输服务的物流平台。它通过互联网形式实现运输过程真实、公平、公正、合法&#xff0c…

【LeetCode】239. 滑动窗口最大值

239. 滑动窗口最大值 思路 当我们遍历数组时&#xff0c;我们需要维护一个双端队列&#xff0c;用于存储滑动窗口中的元素的索引。 队列中的元素按照降序排列&#xff0c;即「队头元素是当前滑动窗口中的最大值」。 具体的步骤如下&#xff1a; 创建一个双端队列 window&#…

Spring Boot中的Elasticsearch自动配置:原理与使用

Spring Boot中的Elasticsearch自动配置&#xff1a;原理与使用 简介 在Spring Boot中&#xff0c;Elasticsearch是非常流行的搜索引擎。为了方便开发人员使用Elasticsearch&#xff0c;Spring Boot提供了Elasticsearch自动配置功能。本文将介绍Elasticsearch自动配置的原理与…

burpsuite踩坑(一)

今天在使用burpsuite的时候&#xff0c;能抓到https或者http的包。 但是repeater模块无法使用&#xff0c;而且放行包之后&#xff0c;会出现提示。 搞了半天&#xff0c;以为是证书的问题&#xff0c;或者是burp汉化版的原因&#xff0c;还把汉化版的burp给删除了。 发现都…

【Docker】基于jib插件,实现Docker部署springboot项目

文章目录 创建springboot项目jib插件介绍使用打tar包 Docker部署springboot项目 在工作中&#xff0c;作为一名后端开发人员&#xff0c;项目部署运维的事我们可能都要同时干&#xff0c;今天想跟大家聊聊关于springboot项目使用docker部署相关操作。后期还会跟大家分享docker-…

笔记-方向导数和梯度

笔记-方向导数和梯度 目录方向导数梯度方向导数和梯度的关系 目录 方向导数 方向导数和偏导数的区别就是&#xff1a;方向不同。仅此而已。 我们常说的偏导数无非就是对x轴求偏导&#xff0c;对y求偏导。而方向导数则是对x轴与y轴之间的某一新方向求导数。 还是用一下上次的…

大模型基础之注意力机制和Transformer

【注意力机制】 核心思想&#xff1a;在decoder的每一步&#xff0c;把encoder端所有的向量提供给decoder&#xff0c;这样decoder根据当前自身状态&#xff0c;来自动选择需要使用的向量和信息. 【注意力带来的可解释性】 decoder在每次生成时可以关注到encoder端所有位置的…

Llama大模型运行的消费级硬件要求【CPU|GPU|RAM|SSD】

大型语言模型 (LLM) 是强大的工具&#xff0c;可以为各种任务和领域生成自然语言文本。 最先进的LLM之一是 LLaMA&#xff08;大型语言模型 Meta AI&#xff09;&#xff0c;这是由 Facebook 的研究部门 Meta AI 开发的一个包含 650 亿个参数的模型 要在家运行 LLaMA 模型&…

详解LeafLet中如何展示GeoServer发布的图层组

目录 前言 一、关于图层组 1、使用图层图组的好处 2、创建图层组 二、在Leaflet中展示图层组 1、新建Html模板框架 2、绑定地图map和底图设置 3、绑定图层组 总结 前言 在之前的博文中&#xff0c;曾经重点介绍如何使用LeafLet叠加Geoserver wms图层到已有底图的方法 ,…

机器学习复习6

机器学习复习 1 - 在机器学习的背景下&#xff0c;什么是诊断(diagnostic)&#xff1f; A. 这指的是衡量一个学习算法在测试集(算法没有被训练过的数据)上表现如何的过程 B. 迅速尝试尽可能多的不同方法来改进算法&#xff0c;从而看看什么方法有效 C. 机器学习在医疗领域的应用…