5.6 物联网RK3399项目开发实录-Android开发之U-Boot 编译及使用(wulianjishu666)

物联网入门到项目实干案例下载:

https://pan.baidu.com/s/1fHRxXBqRKTPvXKFOQsP80Q?pwd=h5ug

---------------------------------------------------------------------------------------------------------------------------------

U-Boot 使用

前言

RK U-Boot 基于开源的 U-Boot 进行开发,工作模式有启动加载模式和下载模式。启动加载模式是 U-Boot 的正常工作模式,嵌入式产品发布时,U-Boot 都工作在此模式下,主要用于开机时把内存中的内核加载到内存中,启动操作系统;下载模式主要用于将固件下载到闪存,开机时长按 Recovery 键可进入下载模式。本文简单说明 U-Boot 的使用,更多相关文档请看 SDK 下面的 RKDocs/common/uboot/RockChip_Uboot 开发文档 V3.0.pdf

编译

编译 U-Boot 与编译内核类似,编译前把默认配置写入 .config,执行:

  • Android:

make rk3399_box_defconfig
  • linux:

make firefly-rk3399

如果需要修改相关选项,也可以用:

make menuconfig

编译:

make ARCHV=aarch64

编译后生成:

u-boot/uboot.img
u-boot/trust.img
u-boot/RK3399MiniLoaderAll_Vx.xx.bin

烧录

打开烧录工具,板子接好 USB OTG 线,接通电源时按住 Recovery 键,使开发板进入 U-Boot 的下载模式,在烧录工具中选择编译好的 Loader 文件,点击执行即可,如下图:

_images/uboot_download.jpg

确认是否正确烧写新的 Loader

如果你已经成功烧写你最新编译的 Loader,在开机的串口输出中可以看到类似如下信息:

#Boot ver: 2016-12-19#1.05

如果打印的时间及版本与你编译的一致,说明你成功更新了 Loader。

进入 U-Boot 命令行模式

由于 Firefly 产品主要用于开发,所以我们默认设置开机时有1秒的倒计时,如果这时候在串口输入任意键即可进入 U-Boot 命令行模式。 发布的产品是不需要进入 U-Boot 命令行模式的,如果需要设置U-Boot默认不进入命令行模式的,可以做如下修改:

在文件 u-boot/include/configs/rk33plat.h

/* mod it to enable console commands.  */
#define CONFIG_BOOTDELAY               0

把宏 CONFIG_BOOTDELAY 改为 0 即默认不进入命令行模式。

一级 Loader(RK3328)

U-BOOT 作为一级 Loader 模式,那么仅支持 EMMC 存储设备,编译完成后生成的镜像:

RK3288LoaderU-BOOT_V2.17.01.bin

其中 V2.17.01 是发布的版本号,rockchip 定义U-Boot loader 的版本,其中 2.17 是根据存储版本定义的,客户务必不要修改这个版本,01 是 U-Boot 定义的小版本,用户根据实际需求在 Makefile 中修改。

二级 Loader(RK3399/RK3399PRO)

U-Boot 作为二级 Loader 模式,那么固件支持所有的存储设备,该模式下,需要 MiniLoader 支持,通过宏 CONFIG_MERGER_MINILOADER 进行配置生成。同时引入 Arm Trusted,Firmware 会生成 trust image,这个通过宏 CONFIG_MERGER_TRUSTIMAGE 进行配置生成。RK3399 使用二级 Loader,编译生成的镜像为:

u-boot/uboot.img
u-boot/trust.img
u-boot/RK3399MiniLoaderAll_V1.05.bin

其中 V1.05 是发布的版本号,rockchip 定义 U-Boot loader 的版本,其中 1.05 是根据存储版本定义的,客户务必不要修改这个版本。uboot.img 是 U-Boot 作为二级 loader 的打包。 trust.img 是 U-Boot 作为二级 loader 的打包。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爬虫逆向实战(38)-某空气质量平台(反调试,AES,DES,MD5)

一、数据接口分析 主页地址:某空气质量平台 1、抓包 (1) 反调试 该网站对鼠标右击以及F12进行了监听并拦截 虽然该网站无法打开Chrome控制台,导致我们无法抓包,但是道高一尺魔高一丈。既然我们无法在打开该网站的时候打开Chrome控制台&…

Redis入门到实战-第二十二弹

Redis入门到实战 Redis高可用Sentinel官网地址Redis概述虚拟机配置在主从复制环境的基础上添加Sentinel更新计划 Redis高可用Sentinel 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://redis.io/Redis概述 Redis是一…

AI图像重绘解决方案

高质量的图像素材往往成本高昂且制作周期长,给企业带来了不小的困扰。美摄科技凭借其领先的AI图像重绘解决方案,为企业提供了一种高效、便捷且成本可控的图像优化途径,助力企业重塑视觉形象,引领市场新风尚。 美摄科技的AI图像重…

【跟着CHATGPT学习硬件外设 | 01】SPI外设

文章目录 🚀 概念揭秘关键精华🌟 秒懂案例生活类比实战演练 🔍 原理与工作流程探秘步骤1:初始化SPI接口步骤2:主设备启动通信步骤3:主设备发送数据步骤4:从设备接收数据步骤5:从设备…

【爬虫框架Scrapy】01 开启Scrapy之路

爬虫基础专栏:http://t.csdnimg.cn/r9gt9 前言 如果你没有爬虫基础,相信我,不要进行下去,没什么意义,你会撞的头破血流,最后破灭你那本就不多的兴趣选择放弃!!! OK&…

架构师之路--docker命令实践整理

安装docker sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine sudo yum install -y yum-utils sudo yum-config-manager --add-repo http://mirrors.aliyun.com/…

液体和固体介质的电气特性

本篇为本科课程《高电压工程基础》的笔记。 液体和固体介质广泛应用于高压电气设备内,作为设备的内绝缘。描述电介质的电气特性的四大参数是介电常数 ε \varepsilon ε、电导率 γ \gamma γ、介质损耗角正切 tan ⁡ δ \tan\delta tanδ和击穿场强 E b E_b Eb​。…

第十四届蓝桥杯JavaA组省赛真题 - 互质数的个数

解题思路: 快速幂 欧拉函数 快速幂比较常见于数据较大的取模场景,欧拉函数感觉还是有点抽象 注意: 取模的时候就不要简写了,例如:res res * a % mod;不要写成res * a % mod; import java.util.Scanner;public c…

正弦实时数据库(SinRTDB)的使用(5)-历史数据查询

前文已经将正弦实时数据库的使用进行了介绍,需要了解的可以先看下面的博客: 正弦实时数据库(SinRTDB)的安装 正弦实时数据库(SinRTDB)的使用(1)-使用数据发生器写入数据 正弦实时数据库(SinRTDB)的使用(2)-接入OPC DA的数据 正弦实时数据库(SinRTDB)…

【python】爬取4K壁纸保存到本地文件夹【附源码】

欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 图片信息丰富多彩,许多网站上都有大量精美的图片资源。有时候我们可能需要批量下载这些图片,而手动一个个下载显然效率太低。因此,编写一个简单的网站图片爬取程序可以帮助我们…

堆排序算法详解与C代码实现

堆排序算法详解与C代码实现 一、堆排序的基本概念二、堆排序的主要过程建堆堆调整 三、堆排序算法的特点四、堆排序的C代码实现 在众多的排序算法中,堆排序以其独特的性质和高效的性能脱颖而出。堆排序算法利用堆这种数据结构所设计的一种排序算法,它是选…

Advisor 被重复代理问题排查

问题场景 项目中存在多个 AbstractAdvisorAutoProxyCreator 且其持有的 Advisor Bean 重复 问题复现 相关代码 ResponseBodyRequiresPermissions(PermissionConstant.****)GetMapping(value "/query****.json", name "")public List<***> query…