【内核笔记】Bootloader启动引导程序

1.u-boot 可以支持多种架构
可以启动多种操作系统

user bootcode是从SD卡等外部设备
上加载的,这样iROM就会先找到能够启动的外部设备
SD卡,并从核心板上的EMMC上搬运user bootcode,而
搬运的这段代码就是我们常说的Bootloader。
ubootpak.bin主要就是一个包含了2ndboot和
uboot.bin的完整Bootloader。

u-boot 的目录结构
arch 体系结构相关,按架构进行分类
board 开发办相关,按厂商分类
conmmon 各种命令的实现
include 各种头文件和开发板配置文件
api 用于演示测试用的代码,通常不参与工程编译
disk 硬盘接口程序
doc 开发使用文档
drivers 设备驱动
examples 一些独立运行的实例,通常不参与工程编译
fs 能支持的文件系统 fat 、ubifs,用于访问带文件系统的存储设备
lib用于存放库和其他主要支持文件程序,中断处理、启动相关等
net 独立于网卡驱动的网络协议
tools 工具软件 mkimage用于制作内核镜像,scripts用于生成指定的config,mk,还有支持GDB的调试工具等
post 商店自检程序
prototype
scripts 用于生成指定的config.mk配置文件,以及一些检查程序

环境变量设置命令
 u-boot中采用环境变量来协调各命令工作时所需的
参数及数据
 环境变量可以存储Bootloader在运行过程中需要用
到的可配置参数列表,以及需要传递给内核的参数
 用户可以通过printenv、setenv、saveenv进行查看、
设置、保存这些参数
 如:
#printenv //打印环境变量
#setenv bootdelay 3 //3秒内核启动等待
#saveenv //保存环境变量
#reset //软重新启动

下载镜像:
通过串口下载到内存中
loady 0x48000000 loadb 0x48000000
USB命令下载
fastboot
网络命令下载(t同一局域网)
ping 10.30.10.xxx

系统启动方式:
1.boot (外存启动)
2.bootm 0x48000000 (内存启动)
3.fastboot flash app uImage(PC)
bootm 0x48000000(开发板u-boot命令行)

commond
board_init_r()->main_loop()没有键按下时直
接启动内核:
 autoboot_command()->
run_command_list()->
parse_string_outer()->setup_string_in_str()->
parse_stream_outer()->
parse_stream()->
run_list()->
run_list_real()->
run_pipe_real()->cmd_process()->
find_cmd()
 board_init_r()->main_loop()有键按下时从命令
行接收命令并处理:
 cli_loop()->
parse_file_outer()->setup_file_in_str()->
parse_stream_outer()->
parse_stream()->
run_list()->
run_list_real()->
run_pipe_real()->cmd_process()->find_cmd()

三步完成U-boot命令的添加:
1.在include/configs/x6818.h中增加一项宏定义:
#define CONFIG_CMD_HELLOWORLD 1
2 、并在common/文件夹下建立cmd_helloworld.c
3 、在common/Makefile中增加一项

在这里插入图片描述

make
重新下载ubootpak,bin
在命令行输入help 和hello 查看结果

HTC目前的系统结构都是几个储存分区独立存在而又关联的。 一个完整的官方rom解开如下所示(参考) boot.img system.img recovery.img hboot.nb0 data.img cache.img radio.img 等等。。。 我们所说的刷机也仅仅是boot.img引导分区加上system.img系统分区、 那么很多同学卡在第一屏,白屏。或者recovery无法进入(有时候涉及到系统文件不完整,一般都是未刷入第三方recovery) 都是因为boot系统内核引导分区)加上system不匹配,造成不能正确引导所致。 既然知道了问题所在,接下来就有几种解决方案了 第一:手动刷入boot。或者recovery。 通过fastboot命令刷入。 首先必须要有fastboot支持,官方刷机包里面都自带。我这里提取给大家 解压运行里面的cmd.exe 我的是直接在系统里面提取的cmd。不一定都适用。如果不能运行那就 点击开始-运行-cmd 进入这个文件夹。运行fastboot命令 手机进入fastboot模式有2种方法。如果你的手机能用adb识别到,有时候卡在第一屏也可以识别 你可以先运行 adb devices 如下图显示说明此时adb命令是可以运行的,也可以做更多的事情。 那么我们通过adb命令进入fastboot吧。 运行命令adb reboot bootloader 这样手机就进入fastboot usb模式,如果电脑驱动没装好,这里会识别不到的 第二种进入方法是,手机完全断电,按住音量向下+电源键不放。进入hboot之后点击下电源键 接下来就是刷入boot和recovery了。 把recovery.img和boot.img提取放到刚才下载的文件夹里面。 回到cmd。运行命令。 单刷boot.img命令 : fastboot flash boot boot.img 单刷recovery.img命令 : fastboot flash recovery recovery.img 当然这里不排除有些机器因为民间解锁后刷官方ROM以及升级hboot的问题出错。 我刚才也是刷了4.0系统的官方rom造成错误,然后刷了一个hboot解决掉了 如果以上还达不到你的要求,那么,继续下一步吧。 第二节:刷入原生官方rom 大家经常遇到的就是手机无法进入系统,刷机各种报错,无法进recovery,那好。我刷htc官方rom总行吧。 但是,经过解锁的机器。有很多局限性。什么cid错误啊,什么版本错误啊。。眼花缭乱了吧。 下面我们一htc sensation和htc raider为例说明下刷机方法。 如果htc sensation和raider都是官方解锁的话。刷入完整的官方rom需要先上锁。 具体方法请参考这里: HTC Raider 4G/X710e/突袭者刷回官方ROM教程 http://bbs.dospy.com/viewthread.php?tid=14412965&bbsid=354&page=1&extra=page=1#pid210911214 那如何选择官方ROM呢。哪一个才是适合自己的手机呢? 这里我给大家提供下对应方法, 回到cmd界面,运行命令。 fastboot getvar all
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值