全志H3烧入U-boot和Linux内核以及配置

  • 1.U-boot的烧入和U-boot环境配置
    • 1.1U-boot烧入和启动测试
  • 2.编译完的内核处理和烧入
    • 2.1处理内核
    • 2.2烧入内核
  • U-boot环境配置

1.U-boot的烧入和U-boot环境配置

1.1U-boot烧入和启动测试

需要的材料:
准备一张性能良好的TF卡,不要用淘宝那种几块钱包邮的TF卡容易坏。
读卡器。
之前编译得到的u-boot-sunxi-with-spl.bin文件。
编译得到的文件 参考我前一篇
链接: H3编译小结.
首先先清除TF卡上所有分区(也可以不清除,推荐清除)。
接着输入:。

dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8
X为TF卡分配的字母
我这里是/dev/sdb
解释:以1024B,也就是1K为块单位大小,跳过8块。
也就是从TF卡的8KB处开始写入文件u-boot-sunxi-with-spl.bin。

然后拔下,插入香橙派,接上debug串口也就是UART0,打开串口软件,我这里用的是Putty,不建议使用杂牌串口软件,那些用于STM32是没问题的,用在ARM-debug上会有乱码的可能。设置波特率为115200,先打开串口再上电,接着会出现。

U-Boot SPL 2020.04 (Jun 10 2020 - 19:55:55 +0800)
DRAM: 1024 MiB
Trying to boot from MMC1U-Boot 2020.04 (Jun 10 2020 - 19:55:55 +0800) Allwinner TechnologyCPU:   Allwinner H3 (SUN8I 1680)
Model: Xunlong Orange Pi One
DRAM:  1 GiB
MMC:   mmc@1c0f000: 0
Loading Environment from FAT... No valid partitions found In:    serial
Out:   serial
Err:   serial
Net:   phy interface0
eth0: ethernet@1c30000
starting USB...
Bus usb@1c1a000: USB EHCI 1.00
Bus usb@1c1a400: USB OHCI 1.0
Bus usb@1c1b000: USB EHCI 1.00
Bus usb@1c1b400: USB OHCI 1.0
scanning bus usb@1c1a000 for devices... 1 USB Device(s) found
scanning bus usb@1c1a400 for devices... 1 USB Device(s) found
scanning bus usb@1c1b000 for devices... 1 USB Device(s) found
scanning bus usb@1c1b400 for devices... 1 USB Device(s) foundscanning usb for storage devices... 0 Storage Device(s) found
Hit any key to stop autoboot:  0

出现这些代表U-boot编译烧入成功。
这时随意输入字母然后按回车,即可进入到U-boot的控制台

香橙派拔电,将TF卡继续插入Linux主机,继续内核烧入。

2.编译完的内核处理和烧入

2.1处理内核

所需材料:
TF卡和读卡器
编译完的内核文件zImage
编译完会产生Image,还有zImage,zImage是压缩的Image,而我们需要的是uImage,uImage是在zImage文件的前面加上了64字节的信息。
切换到ZImage文件所在目录输入:

mkimage -A arm -O linux -T kernel -C none -a 0x46000000 -e 0x46000000 -n linux-5.3.5+ -d zImage uImage
重点参数:0x46000000,内核在主存运行的起始位置,这里是0x46000000,根据数据手册。
全志的主存起始地址好像在0x40000000。
偏移了0x6000000是因为U-boot文件,设备树文件,内核文件都在主存里,这里我随便偏移了0x6000000,保证不会覆盖掉这些文件即可。
重点参数:linux-5.3.5+ Linux内核版本

0x46000000会占用前面0x6000000的空间,浪费了我们宝贵的且有限的内存空间,所以后期我们需要自己根据实际情况进行修改,现阶段只需测试启动内核,完成大于完美。
我们得到了U-boot需要的Uimage文件

2.2烧入内核

分区不会损坏之前烧入的U-boot,Linux分区从2048块开始,块单位是512B,也就是分区是从2048*0.5KB=1MB处开始的,U-boot大小约为450KB,所以不用担心会损坏U-boot文件
首先,我们对TF卡进行分区,当然也可以不用分区,十分建议分区,用分区的原因下面再解释
输入命令:fdisk 你的tf卡
我这里是 :fdisk /dev/sdb
输入:p先查看信息

Disk /dev/sdb:29.5 GiB,31666995200 字节,61849600 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

再输入:n

分区类型p   主分区 (0个主分区,0个扩展分区,4空闲)e   扩展分区 (逻辑分区容器)
选择 (默认 p): p
分区号 (1-4, 默认  1): 1
第一个扇区 (2048-61849599, 默认 2048): 2048
上个扇区,+sectors 或 +size{K,M,G,T,P} (2048-61849599, 默认 61849599):+100M

以此类推,再创建一个10G大小的分区
100M用于存储设备树文件和内核
10G用于储存根文件系统
大小没有特殊要求,设置为100G和1T也可以。
接着我们需要格式化分区,100M格式化成FAT,10G格式化为EXT2或3或4

fdisk /dev/sdb
输入:t再选择分区1
输入L打印所有可以文件系统格式
再输入6,选择FAT16 FAT32都可以
我这里另外一个分区默认是ext4,不用管

接着将
sun8i-h3-orangepi-pc-plus.dtb和UImage复制进分区1
最后拔出内存卡,插入香橙派,老样子插电打开串口。
进入U-boot控制台:

输入:
load mmc 0:1 0x43000000 sun8i-h3-orangepi-pc-plus.dtb
load mmc 0:1 0x42000000 uImage
bootm 0x42000000 - 0x43000000
解释一下:load不用多说是加载的意思,mmc 0:1是指从mmc 第0个分区和第一个分区
寻找名字叫sun8i-h3-orangepi-pc-plus.dtb的文件,然后加载到主存位置0x43000000来。
为什么是分区0和分区1看全志手册:全志优先先给TF分配分区,所以是0和1,然后其他的比如EMMC的分区3,4。
bootm的意思大概能猜出来了把,两个地址分别对应内核文件和设备树文件,缺一不可。上文说过可以不用格式化为FAT,因为只要知道sun8i-h3-orangepi-pc-plus.dtb和uImage地址和文件大小,
同样可以完成加载。打印:
=> load mmc 0:1 0x42000000 uImage
7933608 bytes read in 357 ms (21.2 MiB/s)
=> load mmc 0:1 0x43000000 sun8i-h3-orangepi-pc-plus.dtb
30640 bytes read in 5 ms (5.8 MiB/s)
=> bootm 0x42000000 - 0x43000000
## Booting kernel from Legacy Image at 42000000 ...Image Name:   linux-5.3.5+Image Type:   ARM Linux Kernel Image (uncompressed)Data Size:    7933544 Bytes = 7.6 MiBLoad Address: 46000000Entry Point:  46000000Verifying Checksum ... OK
## Flattened Device Tree blob at 43000000Booting using the fdt blob at 0x43000000
EHCI failed to shut down host controller.Loading Kernel ImageLoading Device Tree to 49ff5000, end 49fff7af ... OKStarting kernel ...
这里代表内核启动成功了。
下面还有一串阿巴阿巴的信息,先不用管,因为我们的根文件系统还没拷贝进去。

U-boot环境配置

还有最后一步,U-boot每次都手动输入load,bootm很麻烦,所以我们设置一下U-boot启动命令,让U-boot每次上电自动加载并且启动内核。

在U-boot控制台下输入:

setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10
setenv bootcmd 'load mmc 0:1 0x43000000 sun8i-h3-orangepi-pc-plus.dtb; load mmc 0:1 0x42000000 uImage; bootm 0x42000000 - 0x43000000'
saveenv
复制的时候注意看看复制是否正确,putty在长字符串上复制粘贴有概率出错。

至此U-boot设置完成,U-boot的主要作用是将重要信息传给内核并且启动,现在U-boot能正常引导内核,我们的重点应放在文件系统和内核配置上,我们下一步是建立根文件系统和配置内核。下一篇:
《根文件系统的手动建立和烧入》.

香橙派全志H3烧入U-boot和Linux内核以及配置相关推荐

  1. 瑞芯微RK3399芯片开发板香橙派4的HDMI音频播放功能测试(Linux系统)

    瑞芯微RK3399芯片开发板香橙派OrangePi 4(16G)用拥有4G内存16G存储,集成双频WiFi.蓝牙5.0.HDMI输出.千兆网口.USB接口等丰富的功能接口,支持双摄像头输入和两路视频输 ...

  2. 香橙派mqtt阿里云终端(二) --python3.5环境配置以及阿里云环境测试

    书接上回,我搭好了树莓派所需的环境以及往我的个人服务网站上添加了我的树莓派终端,过程当中也是踩了不少坑,不过总算是过来了.接下来切入正题. 目录 python环境以及包配置 基础包安装 阿里云服务器配 ...

  3. 香橙派全志H6方案开发板Pi3 LTS 的26pin SPI接口测试

    wiringOP 已适配 Orange Pi 3 LTS 开发板,使用 wiringOP 可以测试 SPI 的功能 1) linux5.10 系统在 dts 中默认关闭了 26pin 中的 spi 控 ...

  4. 香橙派orangepi pc plus h3 uboot保存环境变量失败解决——Unable to use mmc 1:1... Failed (1)

    前言 环境介绍: 1.编译环境 Ubuntu 18.04.5 LTS 2.SDK orangepi Linux 5.4 SDK 3.uboot v2020.04 一.现象 根据<OrangePi ...

  5. Linux-ARM架构,全志H616香橙派开发笔记

    一.前期准备工作 1.材料准备 ①SD卡及读卡器 ②CH340USB转232串口 ③全志H616香橙派和type-C转USB供电线 ④ PC一台 ⑤SD卡格式化软件SD Card Formatter. ...

  6. 全志H616开发板Orange Pi Zero2连接香橙派5寸TFT液晶屏的测试说明

    香橙派Zero2开发板采用全志H616 四核 64位处理器,拥有512MB/1GB 内存可选,集成千兆以太网卡.蓝牙5.0+双频WiFi(2.4GHz和5GHz).USB2.0.Micro-HDMI( ...

  7. 全志H616高画质芯片香橙派Orange Pi Zero2开发板音频测试说明

    香橙派Zero2开发板搭载高画质旗舰型6K OTT处理器全志H616 四核 64位处理器,适配有Linux系统和安卓电视盒子系统,拥有512MB/1GB 内存可选,集成千兆以太网卡.蓝牙5.0+双频W ...

  8. 全志H616方案香橙派Zero2开发板Linux系统设置静态 IP 地址的方法

    注意: 1)请不要通过修改/etc/network/interfaces 配置文件的方式来设置静态 IP 地址 2)下文测试方法使用的是全志H616芯片的香橙派zero2开发板,如果使用的是香橙派其他 ...

  9. 全志H616芯片香橙派Orange Pi Zero2开发板26pinGPIO口测试

    香橙派Zero2开发板采用全志H616 四核 64位处理器,拥有512MB/1GB 内存可选,集成千兆以太 wiringOP 已适配 Orange Pi Zero 2 开发板,使用 wiringOP ...

最新文章

  1. STL模拟实现1.0 -- list和iterator模拟实现和简单分析
  2. field list什么意思_从源码中学Vue(六)「解密」为什么操作数组的方法也会触发视图更新...
  3. Intel VT学习笔记(九)—— EPT应用示例
  4. docker-maven-plugin的pom配置
  5. ALinq 入门学习(八)--ALinq 对Vs2010 的支持
  6. bzoj2054疯狂的馒头(巧用非递归并查集)
  7. mysql 存取字符集_MySQL字符集设置—MySQL数据库乱码问题详解
  8. keras中文文档_【DL项目实战02】图像识别分类——Keras框架+卷积神经网络CNN(使用VGGNet)
  9. 中国冷凝管行业市场供需与战略研究报告
  10. 思科精睿系列交换机被曝高危漏洞,仅修复部分产品
  11. 在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败
  12. Collections.unmodifiableList方法的使用与场景
  13. matlab fft函数画幅度谱,如何在FFT幅度谱上绘制掩模线
  14. Ubuntu 18.04实现实时显示网速
  15. c语言oct,【讨论】OCT扫描中的C-scan你知道吗????????
  16. java jmf实现本地视频播放_Java的JMF实现视频播放器
  17. (转)eclipse 打开pom.xml文件很慢 设置pom.xml打开方式
  18. VirtualBox 共享粘贴板失效 安装增强功能时提示 未能加载虚拟光盘到虚拟电脑
  19. 什么email邮箱可以作为公共邮箱?
  20. salesforce与微信集成(一)-- 如何配置微信和salesforce

热门文章

  1. Vanilla JS速度超越了vue/react/svelte---kalrry
  2. 5G新机难救董明珠“手机梦”
  3. 51单片机学习笔记之按键控制一盏小灯
  4. 69. 单发多框检测(SSD)代码实现以及QA
  5. 机器学习期末复习笔记
  6. Shader实现喷射蜘蛛网特效
  7. 云服务器怎么安装虚拟显卡,云服务器怎么弄图形界面
  8. android书籍推荐!分析Android未来几年的发展前景,灵魂拷问
  9. python xlwt 合并单元格_python3读取Excel(包含合并单元格)
  10. java根据整型形参m的值_给定程序MODll.C中函数fun的功能是:根据整型形参m,计算如下公式的值。例如,若m中的值为:5...