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用户下进行编译,否则可能会出错)
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
以上步骤完成后,应就可以进入文件系统了.
linux4.11内核设备编译时出现的问题(参考博客并更改的)的更多相关文章
- v75.01 鸿蒙内核源码分析(远程登录篇) | 内核如何接待远方的客人 | 百篇博客分析OpenHarmony源码
子曰:"不学礼,无以立 ; 不学诗,无以言 " <论语>:季氏篇 百篇博客分析.本篇为: (远程登录篇) | 内核如何接待远方的客人 设备驱动相关篇为: v67.03 ...
- Linux新内核:提升系统性能 --Linux运维的博客
http://blog.csdn.net/linuxnews/article/details/52864182
- <Win10开发>UWP使用.Net Native编译时遇到的一些问题。
最近开始尝试把WP8.1 Runtime的项目升级成Win10 UWP,我用的方法没什么技巧性,就是直接复制文件和代码到新建的UWP项目.结果是后台代码未经修改,全部正常运行.但是UI控件的布局有些偏 ...
- 鸿蒙内核源码分析(源码注释篇) | 鸿蒙必定成功,也必然成功 | 百篇博客分析OpenHarmony源码 | v13.02
百篇博客系列篇.本篇为: v13.xx 鸿蒙内核源码分析(源码注释篇) | 鸿蒙必定成功,也必然成功 | 51.c.h .o 几点说明 kernel_liteos_a_note | 中文注解鸿蒙内核 ...
- ubuntu14.04 64位系统下编译3.13.11内核源码
该过程一共分为四步: 1.下载内核:我下载的是3.13.11这个版本的内核! 2.解压内核:我将其解压/home/jello/Downloads/linux-3.13.11目录下!下文将会基于此目录编 ...
- 【转】内核编译时, 到底用make clean, make mrproper还是make distclean(转载)
原文网址:http://dongyulong.blog.51cto.com/1451604/449470 内核编译时, 到底用make clean, make mrproper还是make distc ...
- ubuntu下使用g++编译时默认支持C++11 配置方法
1.只需要在源文件程序中加上如下一行代码: #pragma GCC diagnostic error "-std=c++11" 此时源文件代码如下: #pragma GCC dia ...
- VMware Workstation虚拟机打开系统时,提示“无法打开内核设备“\\.\Global\vmx86”: 系统找不到指定的文件。是否在安装 VMware Workstation 后重新引导?”
VMware Workstation虚拟机打开系统时,提示“无法打开内核设备“\\.\Global\vmx86”: 系统找不到指定的文件.是否在安装 VMware Workstation 后重新引导? ...
- 保护嵌入式802.11 Wi-Fi设备时需要考虑的10件事
保护嵌入式802.11 Wi-Fi设备时需要考虑的10件事 10 things to consider when securing an embedded 802.11 Wi-Fi device 随着 ...
随机推荐
- lp_wizard 安装和使用
lp_wizard 安装好之后,安装下面的步骤来和谐: 生成封装安装下面的步骤来做: 封装生成完了之后,注意后缀是 .pad 的需要放入自己的 pad 文件夹,.fsm 的放入 flash 文件夹,. ...
- C++命名规范——谷歌规范
1.文件命名规则 文件名全部小写,可以含下划线或连字符,按项目约定命名,且尽量保证文件名明确.比如: cmd_save_player_info_class.cc ,my_use_full_class. ...
- POJ 3438:Look and Say
Look and Say Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 9196 Accepted: 5566 Desc ...
- phpstorm 的下载、安装与激活
1.phpstorm的下载地址 https://www.jetbrains.com/phpstorm/ 下载后的安装包如图: 2.phpstorm的安装过程 跟据电脑系统下载安装对应版本 一路点击下一 ...
- Java哪些集合类是线程安全的?
早在jdk的1.1版本中,所有的集合都是线程安全的.但是在1.2以及之后的版本中就出现了一些线程不安全的集合,为什么版本升级会出现一些线程不安全的集合呢?因为线程不安全的集合普遍比线程安全的集合效率高 ...
- 学生信息的添加 Java web简单项目初试(失败)
题目要求: 1登录账号:要求由6到12位字母.数字.下划线组成,只有字母可以开头:(1分) 2登录密码:要求显示“• ”或“*”表示输入位数,密码要求八位以上字母.数字组成.(1分) 3性别:要求用单 ...
- Spring原理系列一:Spring Bean的生命周期
一.前言 在日常开发中,spring极大地简化了我们日常的开发工作.spring为我们管理好bean, 我们拿来就用.但是我们不应该只停留在使用层面,深究spring内部的原理,才能在使用时融汇贯通. ...
- 计算机网络(4): socket select使用:聊天室模版
知识点: 如上所示,用户首先将需要进行IO操作的socket添加到select中,然后阻塞等待select系统调用返回.当数据到达时,socket被激活,select函数返回.用户线程正式发起read ...
- Momentum
11.6 Momentum 在 Section 11.4 中,我们提到,目标函数有关自变量的梯度代表了目标函数在自变量当前位置下降最快的方向.因此,梯度下降也叫作最陡下降(steepest desce ...
- php速成_day2
一.PHP中的多维数组 1.多维数组及其用途 多维数组用来存储多个元素,元素是一个数组的结构. 之前学习的数组,是一个一维数组. $person = array( 'name' => 'xiao ...