zoukankan      html  css  js  c++  java
  • linux4.11内核设备编译时出现的问题(参考博客并更改的)

    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用户下进行编译,否则可能会出错

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

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

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    EntityFramework优缺点
    领导者与管理者的区别
    七个对我最好的职业建议(精简版)
    The best career advice I’ve received
    Difference between Stored Procedure and Function in SQL Server
    2015年上半年一次通过 信息系统项目管理师
    Difference between WCF and Web API and WCF REST and Web Service
    What’s the difference between data mining and data warehousing?
    What is the difference between a Clustered and Non Clustered Index?
    用new创建函数的过程发生了什么
  • 原文地址:https://www.cnblogs.com/edan/p/9330708.html
Copyright © 2011-2022 走看看