linux uboot
文章平均质量分 87
li_wen01
liwen01
展开
-
海思(Hi3521a)uboot详细分析(8)——bootm启动命令解析
在uboot启动第二阶段的最后,程序进入了一个死循环,实际是在等待超时和等待用户命令的输入,然后根据不同的命令去执行uboot的不同功能,实际uboot就是一个单片机程序,只有一个进程在运行。uboot引导kernel的启动,首先是从环境变量bootcmd中获取启动命令,然后通过执行bootcmd里面的命令来实现kernel的启动的。 uboot第二阶段启动可以查看博客《uboot.........原创 2019-12-06 21:26:15 · 5401 阅读 · 2 评论 -
海思(Hi3521a)uboot详细分析(7)——uboot环境变量分析
uboot被加载到内存中运行后,在启动过程的第二阶段,uboot会去flash中将环境变量复制到ddr中,如果uboot中的环境变量校验不通过,则使用默认的环境变量值初始化环境变量,如果用户从命令终端修改了环境变量的值,那么需要使用saveenv命令才会将环境变量同步到flash中保存,因为在命令终端运行时,uboot是运行在内存中,修改的是DDR内存中的环境变量。本文也就是分析uboot.........原创 2019-12-06 21:25:51 · 2035 阅读 · 1 评论 -
海思(Hi3521a)uboot详细分析(6)——uboot启动第二阶段start_armboot函数分析
uboot 在start.S中完成了第一阶段启动后,由汇编语言调用C语言函数start_armboot进入第二阶段的启动,在海思给的Uboot代码中,该函数定义在/u-boot-2010.06/arch/arm/lib/board.c。它主要完成了:全局变量的初始化 初始化硬件及软件数据结构 初始化uboot堆管理器 flash驱动初始化 环境变量重定向 输入输出初始化 其..................原创 2019-12-06 21:25:33 · 2611 阅读 · 1 评论 -
海思(Hi3521a)uboot详细分析(9)——uboot启动分析总结
在嵌入式linux设备中,uboot的最终目的就是启动kernel。对于uboot而言,没有人把它引导起来,所以uboot首先需要把自己加载起来,然后再去引导kernel的启动,这也就可以大致的分为Uboot启动的第一阶段和第二阶段。具体内容可以参考博客《序言和目录》(一)start.S第一阶段启动总结 在海思hi3251a官方的《Hi3521A_PINOUT_CN》手册上有............原创 2019-12-06 21:26:22 · 4462 阅读 · 1 评论 -
海思(Hi3521a)uboot详细分析(5)——uboot启动第一阶段start.S文件分析
从《链接文件u-boot.lds分析》中我们看到链接脚本的代码段链接的第一个文件是arch/arm/cpu/hi3521a/start.o,也就是说程序运行最开始是从start.S文件开始执行的。 start.S在这里完成uboot的第一阶段的启动,它的内容包括:设置CPU SVC模式 关闭mmu和缓存 启动流程判断 关闭地址重映射 使能指令缓存 重定向异常向量表到内.........原创 2019-11-28 22:12:04 · 4642 阅读 · 1 评论 -
海思(Hi3521a)uboot详细分析(4)——链接文件u-boot.lds分析
u-boot.lds是U-boot的总链接脚本,通过根目录下的config.mk中LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds 知道我们使用的是位于u-boot-2010.06/arch/arm/cpu/hi3521a/ 里的u-boot.lds。 关于config.mk的分析可以参考博客《顶层config.mk分析》,其它.........原创 2019-11-25 20:55:01 · 1492 阅读 · 0 评论 -
海思(Hi3521a)uboot详细分析(3)——顶层config.mk分析
该config.mk位于uboot源码的根目录下, 其包含了子目录下许多同名的config.mk。所以千万注意这些同名文件的主次区别。 通过顶层Makefile中的include $(TOPDIR)/config.mk 可以知道,在顶层Makefile中有包含顶层的config.mk顶层config.mk内容主要结构为:设置各种路径 设置主机环境的编译选项 确定各交叉编译.........原创 2019-11-25 20:54:51 · 1098 阅读 · 0 评论 -
海思(Hi3521a)uboot详细分析(0)——序言和目录
1.背景 因项目需要,最近对项目中使用到的hi3521a uboot进行了一次详细分析,用来定位分析项目中遇到的问题,今天开始,将uboot从配置,编译,运行到最后引导内核启动的整个过程做一个详细分析。 目的有两个,一是对自己分析uboot做一个记录总结,以便日后查询;二是取之于网络,回馈于网络,希望能帮助到有需要的人。2.专栏目录 本系列博客的内容如下,基本按配.........原创 2019-11-25 20:54:11 · 2924 阅读 · 1 评论 -
海思(Hi3521a)uboot详细分析(2)——顶层mkconfig分析
在顶层的Makefile中,由语句MKCONFIG := $(SRCTREE)/mkconfig 可以知道uboot进行配置的时候,会执行顶层目录的mkconfig脚本,以HI3521A板子为例,执行配置的时候最终会执行命令:hi3521a_config: unconfig @$(MKCONFIG) $(@:_config=) arm hi3521a hi3521a NU......原创 2019-11-25 20:54:38 · 1058 阅读 · 0 评论 -
海思(Hi3521a)uboot详细分析(1)——顶层Makefile分析
顶层Makefile对于uboot的配置和编译都非常重要,对顶层Makefile的分析有助于进一步的了解uboot的启动流程和uboot的配置及移植,uboot的其它内容分析可以参考博客《序言和目录》。顶层Makefile的内容主要结构为:确定版本号及主机信息 实现静默编译功能 设置各种路径 设置编译工具链 设置规则 设置与cpu相关的伪目标需要注意的是,结构顺序并不代.........原创 2019-11-25 20:54:27 · 2062 阅读 · 2 评论 -
一种嵌入式linux本地和远程升级程序的方法
嵌入式linux设备要进行软件升级有很种多方式方法,总的来说可以分为本地升级和远程升级。本地升级包括升级工具升级,存储介质升级等,远程升级是指通过网络进行程序升级。这里介绍一种同时至此本地和远程升级的方法,以供参考。本地升级: (1)升级工具升级 现在的升级工具有很多,不同的芯片支持不同的工具,比如jlink,串口等,海思的芯片提供Hitool升级工具。升级工具升级......原创 2018-09-01 16:41:06 · 15088 阅读 · 3 评论 -
linux 自定义组合按键进入uboot 命令行模式
uboot源代码中是只要串口中输入任意的字符uboot就进入命令模式。在嵌入式设备中,这是个不太稳定的方式。嵌入式设备一般使用的环境比较复杂,所受的干扰了比较大,系统启动的时候串口易受到干扰而导致误触发输入字符,这样设备就进入了uboot的命令行模式,最终导致系统不能自动启动。为了降低这种干扰,软件端可以设置uboot组合按键进入uboot,这样误触发的概率就降低了。 如果要设置......原创 2018-07-02 18:45:31 · 11500 阅读 · 1 评论 -
设计uboot同时支持nor flash和nand flash引导kernel启动
嵌入式开发应用的时候有这样一种场景:外围核心硬件一样,但是为了节省成本亦或是为了兼容以前旧的产品,有些设备贴的是spi norflash,有些设备贴的是spi nandflash亦或是其他的存储设备。为了方便代码管理及后续代码的维护,软件设计需要同时支持多种存储设备,实现多种存储设备使用同一套uboot代码。因为不同存储设备的的启动参数不一样,所以就需要设计根据不同存储设备来设置不同的启动.........原创 2019-02-13 22:14:54 · 2065 阅读 · 0 评论 -
海思Hi3520DV400 uboot看门狗喂狗
看门狗的功能这里不再介绍,自行百度谷歌搜索。这里记录一下Hi3520DV400看门狗的喂狗设置。首先查 include/watchdog.h中的代码,可以发现,如果需要启用硬看门狗,需要定义宏:CONFIG_HW_WATCHDOG/* * Hardware watchdog */#ifdef CONFIG_HW_WATCHDOG #if defined(__ASSEMBLY_...............原创 2019-01-07 18:09:41 · 2415 阅读 · 1 评论 -
海思HI35XX通过uboot查看flash指定地址的数据
在实际应用中有遇到过设备放置一段时间后设备不能启动的问题,uboot 完全没有响应,类似于flash中的数据被擦洗掉一样。网上有介绍说是nandflash 不稳定,高温或是静电会导致nand flash 的比特位反转的问题,反转的少了,controller内部的ECC会将数据纠正,反转的多了超过纠错能力,就没有办法正确读取数据,这个在高温的时候比较明显。 在海思平台上,可以通过这.........原创 2019-03-20 18:19:46 · 4021 阅读 · 1 评论 -
海思HI35XX 通过uboot 读取U盘文件进行固件升级
基本过程为:uboot 启动后,通过命令将U盘的的文件读取到内存中,再通过uboot 的flash 写入命令将读取到内存中的升级文件写入到flash的固定位置。(一)usb常用命令 uboot一般支持对usb的操作命令有:start,reset,stop,tree,info,storage,dev,part,read,write等。Usage:usb start - .........原创 2019-03-24 19:52:10 · 8450 阅读 · 11 评论 -
uboot 中Nand flash 常用操作命令解析
uboot 支持nand flash的数据及oob数据的读写显示操作,也至此手动标记坏块的命令,当一般不建议手动修改flash的坏块标志。这里介绍在uboot中操作和查看flash数据的常用命令及方法。说明:本文测试使用的flash信息如下:SPI Nand(cs 0) ID: 0xc2 0x12 Name:"MX35LF1GE4AB"Block:128KB Page:2KB Ch......原创 2019-03-30 20:03:50 · 14988 阅读 · 1 评论 -
NandFlah 相关知识详解
CrifanLi摘要本文先解释了Nand Flash相关的一些名词,再从Flash硬件机制开始,介绍到Nand Flash的常见的物理特性,且深入介绍了Nand Flash的一些高级功能,然后开始介绍Linux下面和Nand Flash相关的软件架构MTD的相关知识,最后介绍了在Linux的MTD驱动框架下,如何实现Nand Flash的驱动。 本文提供多种格式供: ...转载 2019-03-30 18:29:39 · 5268 阅读 · 0 评论