嵌入式启动概述

嵌入式boot loader

功能类似于PC的BIOS、硬件检测是否正常

加载操作系统镜像到RAM

设置不同的启动方式

常见的启动方式

NOR/NAND flash启动

从SD卡启动

BootLoader从网络加载Linux内核启动

U-boot编译

下载源码

从GitHub下载地址点我

修改

Makefile找CROSS_COMPILE

CROSS_COMPILE ?= arm-linux-gnueabi-

config.mk找ARCH

ARCH ?= arm

编译

make -j4

实验Uboot

qemu-system-arm -M vexpress-a9 -m 512M -nographic -kernel u-boot

启动成功

QEMU网络功能配置

配置QEMU与主机的网络连接

采用桥接的网络连接与Host通信

需要主机内核tun/tap模块支持

配置

主机安装工具包:apt-get install uml-utilities bridge-utils

创建tun设备文件(自动会创建)

修改/etc/network/interface文件,重启生效,添加

auto br0iface br0 inet dhcpbridge_ports ens33

创建/etc/qemu-ifup和/etc/qemu-ifdown文件

 /etc/qemu-ifup

#!/bin/shecho sudo tunctl -u $(id -un) -t $1
sudo tunctl -u $(id -un) -t $1echo sudo ifconfig $1 0.0.0.0 promisc up
sudo ifconfig $1 0.0.0.0 promisc upecho sudo brctl addif br0 $1
sudo brctl addif br0 $1echo brctl show
brctl showsudo ifconfig br0 192.168.33.135

/etc/qemu-ifdown

#!/bin/shecho sudo brctl delif br0 $1
sudo brctl delif br0 $1echo sudo tunctl -d $1
sudo tunctl -d $1echo brctl show
brctl show

内核配置编译

使用U-boot引导内核镜像

将内核变异为UImage格式

需要制定uImage的加载地址

编译时指定

make LOADADDR=0x60003000 uImage -j4

主机TFTP工具安装

安装tftp工具:apt-get install tftp-hpa tftpd-hpa xinetd

修改配置文件

vim /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"TFTP_DIRECTORY="/home/tftpboot"TFTP_ADDRESS="0.0.0.0:69"TFTP_OPTIONS="-l -c -s"

创建tftp目录:mkdir /home/tftpboot  chmod 777 tftpboot/

重启tftp服务:/etc/init.d/tftpd-hpa restart

两种引导方式

自动引导

1、修改include/configs/vexpress_common.h

先搜索BOOTCOMMAND

然后修改

#define CONFIG_BOOTCOMMAND \"tftp 0x60003000 uImage;tftp 0x60500000 vexpress-v2p-ca9.dtb; \setenv bootargs 'root=/dev/mmcblk0 console=ttyAMA0'; \bootm 0x60003000 - 0x60500000; "

在再下面添加

/*Netmask*/#define CONFIG_IPADDR 192.168.1.128#define CONFIG_NETMASK 255.255.255.0#define CONFIG_SERVERIP 192.168.1.70

注意:此处CONFIG_SERVERIP为tftp主机即我们的主机的ip

CONFIG_IPADDR为同网段内随便一个IP就可以

    2、编译

进入u-boot文件夹

make vexpress_ca9x4_defconfig
make -j4

3、将必要的文件移到tftpboot

包括编译生成的u-boot、编译生成的uImage、vexpress-v2p-ca9.dtb、启动脚本

4、修改启动脚本

qemu-system-arm \-M vexpress-a9 \-m 512m \-kernel u-boot \-nographic \-net nic,vlan=0 -net tap,vlan=0,ifname=tap0 \-sd /home/gyy/work/qemu/rootfs.ext3

5、运行启动脚本启动

会自动从tftp服务器下载uImage和vexpress-v2p-ca9.dtb并写入正确位置

到此启动成功

手动引导

自动引导适合我们自己学习时使用,一次配好就不用管了每次启动只要执行启动脚本就可以了,但是往往开发中是不一定能够使用自动引导的,我们需要进入u-boot后手动从tftp服务器下载内核并加载,以下为手动加载的方法

在未加载时按下回车进入手动模式

设置开发板地址:setenv ipaddr 192.168.1.128

查看开发板地址:print ipaddr

设置tftp服务器地址:setenv serverip 192.168.1.70

设置bootargs:saveenv bootargs  'root=/dev/mmcblk0 console=ttyAMA0'

下载uImage:tftp 60003000 uImage

下载dtb文件:tftp 60500000 vexpress-v2p-ca9.dtb

启动:bootm 60003000 - 60500000

启动成功

修改u-boot的Makefile实现自动复制到tftpboot

在u-boot的Makefile中找到此位置添加cp u-boot /home/tftpboot,在u-boot生成完成后拷贝

可以看到实现了拷贝功能

在Ubuntu下使用QEMU搭建arm开发环境(三)使用u-boot加载Linux内核相关推荐

  1. 在Ubuntu下使用QEMU搭建arm开发环境(一)搭建基本开发环境

    马上就要开学了,开学后就会开始arm+Linux的学习,因为马上就要去学校了,就没有买板子,打算去了学校再买,但是想学习的心是迫切的(O(∩_∩)O哈哈~),在网上浏览的时候发现了QEMU这个&quo ...

  2. 用QEMU搭建arm开发环境之三:编译BusyBox建立最简单的文件系统

    1.BusyBox简介 BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件(注:不同版本可能包含的数量不一样).BusyBox 包含了一些简单的工具,例如ls.cat和echo等等, ...

  3. 在ubuntu下使用Eclipse搭建Hadoop开发环境

    一.安装准备 1.JDK版本:jdk1.7.0(jdk-7-linux-i586.tar.gz) 2.hadoop版本:hadoop-1.1.1(hadoop-1.1.1.tar.gz) 3.ecli ...

  4. 在window下使用 VScode 搭建 ARM 开发环境—— 详细版

    其实文章也是以前做好的记录,现在把笔记放在博客上面来,方便管理和查看, 所以有一些细节问题并没有图文说明,等后期正真操作一遍的时候来把图片和说明补充完成. 本文给出两种方式,第一种gcc-arm-no ...

  5. Linux下使用Eclipse搭建ARM开发环境

    系统: 新装 ubuntu 14.04.5  64bits 1.安装交叉编译环境 解压 tar xjf arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2 添加环境变量 $ ...

  6. linux eclipse stm32,在ubuntu下利用eclipse搭建stm32开发环境和st-link调试

    一.下载eclipse: 我们选择的工具为Eclipse IDE for C/C++ Developers,官网下载地址在 https://www.eclipse.org/downloads/pack ...

  7. Ubuntu下使用valet搭建laravel生产环境

    Ubuntu下使用valet搭建laravel生产环境 1.安装系统所需软件 更新软件列表 sudo apt update 2.更新软件 echo y | sudo apt upgrade 如果觉得时 ...

  8. 从0开始使用QEMU模拟ARM开发环境之脚本制作分区镜像(rootfs+zImage+dtb)

    文章目录 从0开始使用QEMU模拟ARM开发环境系列一览表 目录结构: 脚本介绍: 分区镜像制作脚本 qemu启动脚本 流程示例 从0开始使用QEMU模拟ARM开发环境系列一览表 文章中 u-boot ...

  9. 学习Mac开发第三弹 通过WebView加载网页

    学习Mac开发第三弹 通过WebView加载网页 添加WebKit.framework  关联Delegate 在新建工程的ViewController里拖放一个WebView,并用Autolayou ...

最新文章

  1. DRF序列化和反序列化
  2. python并发1000个http请求_php下api接口的并发http请求
  3. eruke注册中心搭建
  4. 机器学习(MACHINE LEARNING)MATLAB三层神经网络的简单应用
  5. tensorflow-yolov3 yunyang1994 image_preporcess(image, target_size, gt_boxes=None)函数 image_preprocess
  6. Qt Creator指定代码样式设置
  7. opencv计算两数组的乘积_#剑指Offer#12. 构建乘积数组
  8. Android 打开蓝牙流程
  9. 在python中的使用Libsvm
  10. NFinal ajax
  11. windows server 2008 NLB 集群
  12. 安卓机器人做图软件_移动机器人领域,除了工业(安卓)一体机,工控机也必不可少...
  13. php导出指定格式excel,php导出excel格式文件的例子
  14. 借助Google搜索找客户和邮箱
  15. 关于pthread_cancel()的运用,取消点的理解
  16. 网络安全----身份认证
  17. 全国计算机二级flash,教你如何在Flash当中制作插按钮动画
  18. Centos7创建DNS服务器(超级简单,一看就会)
  19. 大数据学习入门规划?和学习路线
  20. STM32——MG90S数字舵机驱动

热门文章

  1. packetix ***连不上问题解决方法
  2. 竟有人靠抢茅台月入百万,脚本曝光,开源可用!
  3. 编解码持续升级,「硬」实力铸就视频云最优解
  4. c语言学习笔记(考研版)
  5. cisco881配置连接计算机,cisco 881 无线路由配置
  6. 对android中Zygote的理解
  7. MySQL安装失败,如何完全卸载MySQL
  8. 全美达一个人们所不了解的故事
  9. nrf24l01怎么用
  10. JS笔试题(3)【阿里巴巴】