第一季6:海思方案中uboot、kernel和rootfs的烧写方法

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。

一、概述

因为所用的板子默认从SPI Flash启动,因此本文主要讲如何“使用tftp,烧写映像文件(uboot、kernel、rootfs)到SPI Flash”。另外海思还提供了“烧写映像文件到NAND Flash或者eMMC”的方法,但大同小异,只是命令和地址空间不同而已。

二、烧录uboot

(1)假如还没有烧录uboot,可以在PC端使用Hi_tool工具(/software/pc/Hi_TOOL目录下,效果类似于三星的DNW工具)来烧录uboot。

(2)使用Hi_tool时,需要先安装jre。

(3)烧写过程:

a、将映像文件从上位机下载到开发板的SDRAM中(即内存)。

b、擦除开发板的spiflash相应的分区。

c、将SDRAM中的镜像烧录到spi的分区内。

三、烧录uboot后

1、配置tftp服务器

(1)配置tftp服务器,见博客https://xiefor100.blog.csdn.net/article/details/125572043。

(2)将SDK中的/package/image_uclibc_hi3518ev200下的相关映像文件(这是SDK提供的已经制作好的镜像文件)拷贝到tftp服务器目录(我的是/tftpboot/)下。

root@ubuntu:/home/xjh/iot/hisi_development/Hi3518E_SDK/Hi3518E_SDK_V1.0.3.0/package/image_uclibc_hi3518ev200# ls
rootfs_hi3518ev200_128k.jffs2  rootfs_hi3518ev200_2k_128k_32M.img  rootfs_hi3518ev200_32M.ext4   u-boot-hi3518ev200.bin
rootfs_hi3518ev200_256k.jffs2  rootfs_hi3518ev200_2k_4bit.yaffs2   rootfs_hi3518ev200_64k.jffs2  uImage_hi3518ev200
root@ubuntu:/home/xjh/iot/hisi_development/Hi3518E_SDK/Hi3518E_SDK_V1.0.3.0/package/image_uclibc_hi3518ev200# cp u-boot-hi3518ev200.bin /tftpboot/
root@ubuntu:/home/xjh/iot/hisi_development/Hi3518E_SDK/Hi3518E_SDK_V1.0.3.0/package/image_uclibc_hi3518ev200# cp rootfs_hi3518ev200_64k.jffs2 /tftpboot/
root@ubuntu:/home/xjh/iot/hisi_development/Hi3518E_SDK/Hi3518E_SDK_V1.0.3.0/package/image_uclibc_hi3518ev200# cp uImage_hi3518ev200 /tftpboot/
root@ubuntu:/home/xjh/iot/hisi_development/Hi3518E_SDK/Hi3518E_SDK_V1.0.3.0/package/image_uclibc_hi3518ev200# 

2、uboot的参数配置

(1)设置uboot的serverip(即tftp服务器的ip)、ipaddr(开发版ip)和ethaddr(开发板的MAC地址)、netmask、gatewayip,使得与tftp服务器同一网段。

(2)然后在开发板上ping虚拟机,确保能够ping通,使得网络畅通。

3、在uboot控制台中,烧写映像文件到SPI Flash

(1)执行“du -h *”得知待烧录的各文件的大小如下。

root@ubuntu:/tftpboot# ls
rootfs_hi3518ev200_64k.jffs2  u-boot-hi3518ev200.bin  uImage_hi3518ev200
root@ubuntu:/tftpboot# du -h *
4.8M	rootfs_hi3518ev200_64k.jffs2
268K	u-boot-hi3518ev200.bin
2.6M	uImage_hi3518ev200
root@ubuntu:/tftpboot# du
7784	.
root@ubuntu:/tftpboot# 

(2)spiflash的地址空间如下,以下的烧写操作均基于该表格的地址空间分配,也可以根据实际情况进行调整。

分区大小起始地址截止地址
bootloader1M0x00000000 0x00100000
kernel3M0x001000000x00400000
rootfs12M0x004000000x01000000

另外,由手册查知开发板的内存(64MB的SDRAM)的地址范围是80000000~83FFFFFF。

(3)烧写u-boot

在uboot控制台上分条执行以下指令。其表示从虚拟机中下载uboot镜像到以地址0x82000000开始的内存中,然后再从内存中读取数据写到spiflash中。

sf probe 0
mw.b 82000000 ff 100000
tftp 0x82000000 u-boot-hi3518ev200.binsf probe 0
sf erase 0 100000
sf write 82000000 0 100000    reset

注意,重启后要设置环境变量serverip、ipaddr为同一网段并save。

set serverip '192.168.1.141'
set ipaddr '192.168.1.88'
save

(4)烧写内核

在uboot控制台上分条执行以下指令。

mw.b 82000000 ff 300000
tftp 82000000 uImage_hi3518ev200sf probe 0
sf erase 100000 300000
sf write 82000000 100000 300000

(5)烧写文件系统

在uboot控制台上分条执行以下指令。

mw.b 82000000 ff C00000
tftp 0x82000000 rootfs_hi3518ev200_64k.jffs2sf probe 0
sf erase 400000 C00000
sf write 82000000 400000 C00000

(6)设置启动参数

在uboot控制台上分条执行以下指令。注意mem=32M,实际硬件是64M,硬件上的64M内存有两个用途,一部分给OS用,一部分给MPP使用。这里32M指的是OS使用的。

set bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x300000;bootm 0x82000000'
set bootargs 'mem=32M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1024K(boot),3072K(kernel),12288K(rootfs)'
save

4、上述指令含义

sf probe 0

  • 整句表示查找spiflash。
  • sf表示spiflash,probe表示查找,0表示板载spiflash的编号(可能有多个,这里0表示编号)。

sf erase 0 100000

  • 整句表示擦除uboot分区。
  • 0表示要擦除的起始地址,(16进制的)100000表示长度,这里刚好1M,和设置uboot长度1M相符。

sf write 82000000 0 100000

  • 整句表示将数据从SDRAM烧写到spiflash。
  • 82000000表示源文件所在的SDRAM地址,后二者表示起始位置和长度。

mw.b 82000000 ff 100000

  • mw.b表示以字节为单位写内存。
  • 82000000表示写内存时的起始地址,100000表示要写1M长度,ff表示内存的每个字节都写成1111_1111。

sf read 0x82000000 0x100000 0x300000

  • 整句表示从spiflash的kernel分区中读取kernel。
  • 表示从spiflash的0x100000开始,读取长度为0x300000的内容,写到SDRAM以0x82000000开始的位置中。

root=/dev/mtdblock2

  • 表示根文件系统在第2个分区。

mtdparts=hi_sfc:1024K(boot),3072K(kernel),12288K(rootfs)

  • 表示分区表。
  • 对比uboot移植专栏中写死的、静态分区表,这里是传参的、动态的分区表。传参分区表优先级比静态分区表高。

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

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

相关文章

Java Web笔记之Struts2.1 +Hibernate3.3 +Spring3.0

2019独角兽企业重金招聘Python工程师标准>>> 1、Struts2 1.1、了解Struts2 Struts2是基于MVC设计模式的Java Web框架技术之一,按照MVC设计思想把Java Web应用程序分为: 控制器层,包括核心控制器FilterDispatcher和业务控制器Actio…

高地址和低地址、高字节与低字节、大小端模式的转换、存储顺序

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 一、高地址和低地址 二、高字节低字节 如int a16777220,化为十六进制是0x01 00 00 04,则04属于低字节,01属于高字节。 三、大小端模式 (1)如果a在内…

漫谈数据挖掘从入门到进阶

入门:数据挖掘入门的书籍,中文的大体有这些:Jiawei Han的《数据挖掘概念与技术》Ian H. Witten / Eibe Frank的《数据挖掘 实用机器学习技术》Tom Mitchell的《机器学习》TOBY SEGARAN的《集体智慧编程》Anand Rajaraman的《大数据》Pang-Nin…

(转)Asp.Net生命周期系列一

原文地址:http://www.cnblogs.com/skm-blog/archive/2013/07/07/3176713.html Asp.Net生命周期对于初级甚至中级程序员来说,一直都是一个难题,很多程序员不了解生命周期,导致使用Asp.Net做开发感觉很不灵活,感觉太多东…

与TCP有关的面试内容

以下内容源于网络资料的学习与整理。 参考博客 TCP/IP四层模型 - BlueTzar - 博客园(OSI参考模型和TCP模型的详解,包括格式) TCP/IP协议-为什么说TCP是可靠连接_shuaixio的博客-CSDN博客(为什么可靠及优缺点) 两张动图…

JUnit4概述

JUnit4是JUnit框架有史以来的最大改进,其主要目标便是利用Java5的Annotation特性简化测试用例的编写。先简单解释一下什么是Annotation,这个单词一般是翻译成元数据。元数据是什么?元数据就是描述数据的数据。也就是说,这个东西在…

正则表达式30分钟入门教程(转)

分享到一键分享QQ空间新浪微博百度云收藏人人网腾讯微博百度相册开心网腾讯朋友百度贴吧豆瓣网搜狐微博百度新首页QQ好友和讯微博更多...百度分享首页 | 正则表达式30分钟入门教程 | 常用正则表达式| 正则表达式速查表 | 正则表达式测试工具 | 正则表达式 | 正则练习器在线版 正…

进程、线程简介

以下内容源于网络资源的学习整理,如有侵权,请告知删除。 参考博客 http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html(通俗理解) https://blog.csdn.net/chen_geng/article/details/51613445(表格…

使用keil建立标准STM32工程模版(图文详细版!)

1. 模板工程的创建(超级详细版,使用的是keil 4.5版本) 1.1创建工程目录 良好的工程结构能让文件的管理更科学,让开发更容易更方便,希望大家养成良好的习惯,使用具有合理结构的工程目录,当你着手于较大的软件项目时&a…

android模拟机新闻APP,DavidTGNewsProject

DavidTGNewsProject##【Android】最新主流新闻app功能实现。仿网易,搜狐等新闻客户端(原创作品,转载请说明出处)先给大家看一下效果图:这个项目总体来说虽然不是特别难,但是确实非常常用的功能。是业余时间自己写的一个小项目。以前我们写的时…

轻操作动作休闲单机游戏《狂斩三国2》评测

游戏类别:动作休闲单机游戏时隔一年,曾在国内和台湾手游市 场获得top1佳绩的《狂斩三国》再度归来!其策略加动作的独特玩法在当时颠覆了玩家们对三国游戏的阵营认知。比传统策略更简单明快,比传统动作无脑砍更 具思考乐趣&#xf…

物联网简介

以下内容源于朱有鹏老师课程的学习整理,如有侵权,请告知删除。 本文档提供下载:提取码1111——物联网简介 1、什么是物联网 1.1.物联网的概念和发展历程 1.1.1、认识物联网 (1)百度百科中物联网定义 (…

Mysql语句与应用

2019独角兽企业重金招聘Python工程师标准>>> 1。正则表达式 搜索多个关键词,“或”, 等同 %上海% | %内蒙古% SELECT * FROM analysis_result WHERE result REGEXP 上海|内蒙古 LIMIT 1; "且" SELECT * FROM analysis_result WHERE id 1 AND …

android gb2312 utf-8,不同编码页面之间用form传值出现乱码问题解决方案 utf-8 到 gb2312...

相信有人也曾遇到过这种问题,今天将这个问题稍作整理发布出来。由于编码的问题传值出现乱码,一看到这样的情况,我们首先想到的是线面的两种解决办法:方案一:在接收参数页面进行转码 (这是较为理想的解决办法)方案二&a…

颜色的数字化描述(RGB与YUV的简介)

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 参考内容 (1)YUV和RGB的相互转换实验_Geek.Fan的博客-CSDN博客 (2) 工作中用到的一些基础知识 (3)YUV422 YUV420 Planar \ Se…

softlayer virtual machine vhd磁盘镜像导入shell脚本

softlayer virtual machine vhd磁盘镜像导入shell脚本 脚本 测试上传; 20480 records in20480 records out2147483648 bytes (2.1 GB) copied, 44.2262 s, 48.6 MB/scurl: option --data-binary: out of memorycurl: try curl --help or curl --manual for more information 28…

第二季1:MPP模块概述

以下内容源于海思官方文档内容,如有侵权请告知删除。 一、MPP模块概述 海思的媒体处理软件平台(MPP,Media Process Platform)有利于应用软件的快速开发。因为该平台屏蔽了一些与芯片相关的复杂的底层处理,给应用软件提…

小米平板安装鸿蒙系统,【新机】安卓最强平板?MatePad Pro2曝光:预装鸿蒙OS | 小米平板5到底啥时候发布?...

目前安卓阵营还在好好做平板的可能也就是三星和华为了,至少整体的配置规格都还不错。根据爆料,华为将会在近期推出MatePad Pro 2代产品,预计6月份正式和大家见面。MatePadPro2将会搭载麒麟9000处理器,算是目前安卓平板里性能最强的…

第二季3:sample_venc.c的整体分析

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 一、sample文件夹的介绍 将mpp/sample文件夹以及mpp/include文件夹导入SI后,搜索main时可以发现很多main函数。这说明sample文件夹下有很多例程,每个例程面向一个典型应用。…

poj 2891 Strange Way to Express Integers

题目&#xff1a;http://poj.org/problem?id2891 思路&#xff1a;扩展欧几里得 #include <cstdio> #include <cstring> #include <iostream> #include <cmath> #include <algorithm> using namespace std; #define maxn 100010 int n; long lo…