AllWinnerH3 linux4.11版本的bsp下载:
https://pan.baidu.com/s/1mhU4a8K 密码: b375
H3-linux4.11_bsp目录就是所需的源码及编译工具.

下载后, 先安装tools目录里的dtc工具. 解包dtc-master.zip, 执行”make && make install”即可.

1 配置gcc-linaro-7.2.1交叉编译器。因新版的uboot需要大于6.x版本以上的编译器才可以。
 配置好后才可以编译uboot及内核源码.

2 编译uboot:
解包u-boot源码后,进入源码目录:(在root用户下进行编译,否则可能会出错)

 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- orangepi_lite_defconfig  //配置uboot
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- //编译
  此处编译可能会出现错误,缺少一个pathon.h头文件,错误如下图,
  解决办法:输入命令  yum install python-devel sudo dd if=./spl/sunxi-spl.bin of=/dev/sdb bs=1k seek= //烧写bl1到sd卡
sudo dd if=./u-boot.bin of=/dev/sdb bs=1k seek= //烧写uboot.bin到sd卡里

//烧写后,正常情况下应可用sd卡启动板,可通过uart接收到板上uboot的输出信息.

3 编译内核:
解包linux内核源码后,进入内核源码目录下操作:

 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sunxi_defconfig  //配置内核
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage -j4 //编译出内核镜像
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs //编译出设备树文件 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules //编译出驱动模块

//完成后,就可以把设备树文件,内核镜像,文件系统放在sd卡分区里.
文件系统可沿用前面所做的文件系统,或者重编busybox制作文件系统也可.

//我这里是所有所需文件及文件系统都放在sd卡的第一个分区(ext4格式)里, 挂载在/run/media/jk/linux/

//也可以将下面的文件都放到fat32分区里。

 /复制编译出来的设备树文件到sd卡分区里,并重命名为orangepi_lite.dtb
sudo cp arch/arm/boot/dts/sun8i-h3-orangepi-lite.dtb /run/media/jk/linux/orangepi_lite.dtb //复制内核镜像到sd卡分区里
sudo cp arch/arm/boot/zImage /run/media/jk/linux/zImage //把编译出来的驱动模块安装到sd卡分区里
sudo make ARCH=arm modules_install INSTALL_MOD_PATH=/run/media/jk/linux

以上步骤完成后, 即可把sd卡接板上启动系统. 进入uboot后,还需要设置好环境变量:

 //设置uboot启动后自动引导系统(下面两个根据自己文件的存放位置选择相应的命令,第一个文件放在ext4中,第二个放在fat32)
setenv bootcmd "ext4load mmc 0:1 0x46000000 zImage; ext4load mmc 0:1 0x47000000 orangepi_lite.dtb; bootz 0x46000000 0:0 0x47000000"
setenv bootcmd "fatload mmc 0:2 0x46000000 zImage; fatload mmc 0:2 0x47000000 orangepi_lite.dtb; bootz 0x46000000 0:0 0x47000000" //设置内核启动参数.这里需要注意sd卡在uboot上是第0个设备,但在linux内核里变成了第2个设备(可在内核的log看到).
setenv bootargs "root=/dev/mmcblk2p1 rw console=ttyS0,115200n8"
  保存环境变量:
  saveenv
  重启系统:
  reset

以上步骤完成后,应就可以进入文件系统了.

最新文章

  1. AngulaJs+Web Api Cors 跨域访问失败的解决办法
  2. canvas转盘抽奖
  3. Silverlight 动画详解
  4. WKWebView与Js实战(OC版)
  5. Prince2七大原则(3)
  6. Hadoop伪分布配置与基于Eclipse开发环境搭建
  7. backbone.Router History源码笔记
  8. 移动互联与大数据之美-逐浪CMS2 X1.1发布
  9. 1067: spark.components:NavigatorContent 类型值的隐式强制指令的目标是非相关类型 String
  10. 《android开发艺术探索》读书笔记(二)--IPC机制
  11. tedu训练营day01
  12. SQL查数据库有哪些触发器,存储过程...
  13. OOM
  14. Linux环境jdk的安装
  15. Linux惊群效应详解
  16. 管理idea Open Recent
  17. JAVA实现组合、排列、重复排列(多层循环)
  18. Java项目中如何扩展第三方jar包中的类?
  19. 《DSP using MATLAB》Problem 3.1
  20. 第五章:Reminders实验:第一部分[Learn Android Studio 汉化教程]

热门文章

  1. cmake 简易入门
  2. Java基础之反射、注解、代理
  3. Spring创建Bean的顺序
  4. django 过滤器-查询集-比较运算符-FQ对象-mysql的命令窗口
  5. Spring中@Value("${}"))取不到值的几种情况
  6. import torch 报错
  7. Java线程——线程之间的数据共享
  8. windows 10下的python开发环境
  9. 查找ARP攻击源
  10. php封装一个接口类