报价
HOME
报价
正文内容
SPI NAND Flash启动 海思Hi35xx uboot启动分析总结
发布时间 : 2024-10-06
作者 : 小编
访问数量 : 23
扫码分享至微信

海思Hi35xx uboot启动分析总结

liwen01 2019.12.09

前言

在嵌入式linux设备中,uboot的最终目的就是启动kernel。对于uboot而言,没有人把它引导起来,所以uboot首先需要把自己加载起来,然后再去引导kernel的启动,这也就可以大致的分为Uboot启动的第一阶段和第二阶段。

(一)start.S第一阶段启动总结

在海思hi3251a官方的《Hi3521A_PINOUT_CN》手册上有上电锁存管脚BOOTROM_SEL,这个是引脚用来定义是从BOOTROM启动还是从spi flash启动 。

(1)BOOTROM启动

当启动模式为从 BOOTROM 启动时,海思的BOOTROM的程序会去初始化串口,然后与海思的HiBurn工具建立通信

如果能建立通信,则启动HiBurn升级uboot程序流程,如果不能与HiBurn建立连接,等待一段时间之后它就转去从外部的spi flash启动

(2)HiBurn 烧入原理

HiBurn烧入的基本原理是,HiBurn工具与BOOTROM程序建立连接之后,先下载uboot程序的开始4KB数据到海思芯片的内部RAM

然后通过下载的那一小部分uboot代码去初始化外部的DDR,如果DDR初始化成功,HiBurn再将剩下的uboot程序下载到外部的DDR中去

最后是在DDR中启动uboot,如果要进行烧入操作,是通过DDR中的Uboot程序,发送uboot命令将DDR中的uboot程序烧入到外部的flash中去,这样就实现了uboot程序的升级。

(3)spi flash启动

海思的hi3521a芯片支持从 SPI NOR Flash 和 SPI NAND Flash 直接启动,它的启动也就是我们start.s中的大部分实现。主要做的工作有:

初始化CPU相关功能(关缓存,关MMU,设置SVC模式等)将异常中断向量表重定向到内部RAM将uboot代码重定向到外部DDR中设置栈空间清空BSS段最后调用C语言接口去执行C语言代码实现第二阶段的启动。第一阶段在执行之后,在DDR中的映射空间的数据分布如下:

(二)start_armboot第二阶段启动总结

在uboot的启动的第二阶段,主要做的是:

初始化变量和结构体重定向环境变量初始化堆管理器初始化环境变量进入命令处理循环

在命令处理循环中,默认Uboot是超时等待用户命令输入

如果有检测到命令的输入,则执行相应的命令,如果超时没有命令输入,uboot默认执行的bootm命令进行kernel启动引导。

这里涉及到两个比较总要的点:环境变量的重定向和uboot命令处理。

(1)环境变量重定向

在uboot第二阶段的时候,uboot会去检测flash中环境变量的地址中环境变量是否有效,如果有效,则使用flash中的环境变量值来初始化uboot运行中的环境变量,如果flash中的环境变量无效,则使用默认的环境变量来初始化运行中的uboot。

在uboot的用户命令操作过程中,如果有对环境变量进行修改,都是修改的内存中的那一份环境变量,如果要将修改的环境变量保存到flash中去,则需要运行命令saveenvuboot在flash的分布如下:

uboot.bin烧入到flash的0地址位置,boot.bin里面的数据就是按我们连接脚本中的数据那样分布。在0x80000(512KB)开始的位置就是环境变量的在flash的位置,其大小为256KB。

(2)uboot命令处理

在启动的最后阶段,就是执行uboot的bootm命令,主要就是uboot将kernel程序从flash中复制到内存去,然后就是检验kernel镜像文件的有效性,设置uboot传递给kernel的参数,设置kernel启动的环境(比如关缓存,关中断,CPU处于SVC模式等)

最后就是通过一个函数指针指向kernel的启动地址,调用该函数实现uboot到kernel的运行。

在这个过程中,启动参数和机器码同时传递给kernel,关于参数传递,实际在这里是通过寄存器间参数的地址传递给了kernel。

(3)参数传递

C语言进行函数调用的时候,常常会传递给被调用的函数一些参数,对于这些C语言级别的参数,被编译器翻译成汇编语言的时候,就要找个地方存放一下,并且让被调用的函数能够访问,否则就没发实现传递参数了。对于找个地方放一下,分两种情况。

一种情况是,本身传递的参数就很少,就可以通过寄存器传送参数。因为在前面的保存现场的动作中,已经保存好了对应的寄存器的值,那么此时,这些寄存器就是空闲的,可以供我们使用的了,那就可以放参数,而参数少的情况下,就足够存放参数了,比如参数有2个,那么就用r0和r1存放即可。另外一种情况是,如果参数太多,寄存器不够用,那么就得把多余的参数堆栈中了。即,可以用堆栈来传递所有的或寄存器放不下的那些多余的参数。

--------------End--------------

如需获取更多内容

请关注公众号 liwen01

一文了解 Hi3516DV500 芯片

来源:易百纳技术社区

一、芯片介绍

Hi3516DV500是一颗面向行业市场推出的高清智能网络摄像头SoC。该芯片最高支持2路sensor输入,支持最高5M@30fps的ISP图像处理能力,支持2F WDR、多级降噪、六轴防抖、多光谱融合等多种传统图像增强和处理算法,支持通过AI算法对输入图像进行实时降躁等处理,为用户提供了卓越的图像处理能力。支持热红外、结构光和ToF sensor的接入和处理。

Hi3516DV500内置双核A55,提供高效、丰富和灵活的CPU资源,以满足客户计算和控制需求。Hi3516DV500集成了高效的神经网络推理引擎,最高2Tops NN算力,支持业界主流的神经网络框架。

Hi3516DV500提供稳定、易用的SDK软件开发包,支撑客户产品快速量产。

二、关键特性

智能加速:2Tops INT8 NN加速引擎5M@30fps 编解码

支持5M@30fps的H.265/H.264编码

支持5M@30fps的H.265/H.264解码

支持 2 路 2M@30fps 的黑白与彩色融合。支持图像 AI ISP 处理支持 USB2.0 高速外设接口支持 Linux OS 下快速出图(500ms)。

三、功能框图

四、详细硬件参数

特性

参数

处理器内核

- 双核 ARM Cortex A55@850MHz- 32KB I-Cache,32KB D-Cache,256KB L3 cache- 支持 NEON 加速,集成 FPU 处理单元- 支持 TrustZone

智能视频分析

- 神经网络:支持完整的API和工具链,易于客户开发- 升级 IVE 算子,支持特征点检测、周界、光流及多种计算机形态学算子- 升级 DPU 算法实现双目深度图加速单元,最大分辨率 2048 x 2048,最大视差224,处理性能 720p@30fps

视频编解码

- 支持 H.264 BP/MP/HP Level 5.1- 支持 H.265 Main Profile Level 5.1- H.264/H.265 编解码最大分辨率为 6144x 6144- 支持 I/P 帧- H.264/H.265 多码流编解码典型性能如下:3072 x 1728@30fps(编码)+1920 x1080@30fps(编码)+720 x 480@30fps(编码)3072 x 1728@30fps(编码)+720 x 480@30fps(编码)+1920 x1080@30fps(解码)3072 x 1728@30fps(解码)- 支持 8 个区域的编码前 OSD 叠加- 支持 CBR/VBR/AVBR/FIXQP/QPMAP 等多种码率控制模式- 输出码率最大值 80Mbps- 支持 8 个感兴趣区域(ROI)编码- 支持视频前端叠加 mosaic 编码- 支持数字水印- 支持 PVC 感知编码降低码流- 支持 JPEG Baseline 编解码- JPEG 编解码最大分辨率 16384 x 16384- JPEG 最大性能编码:3072 x 1728 @60fps(YUV420)解码:3072 x 1728 @30fps(YUV420)

ISP

- 支持多路 sensor 同时处理- 支持 3A(AE/AWB/AF)功能,3A 参数用户可调节- 支持去固定模式噪声(FPN)- 支持坏点校正和镜头阴影校正- 支持两帧 WDR 及 Advanced Local Tone Mapping,支持强光抑制和背光补偿- 支持多级 3D 去噪- 支持图像边缘增强- 支持去雾- 支持动态对比度增强- 支持 3D-LUT 色彩调节- 支持新一代镜头畸变校正- 支持鱼眼等任意形状几何矫正- 支持 6-DoF 数字防抖- 支持陀螺仪防抖和 Rolling-Shutter 校正- 支持图像 Mirror、Flip、90 度/270 度旋转- 支持使用神经网络对图像进行实时 DRC、BNR、3DNR 或 DM 处理- 支持黑白与彩色两路图像双光融合- 提供 PC 端 ISP 调节工具

视频与图形处理

- 支持图形和图像 1/15.5~16x 缩放功能- 支持水平方向全景拼接输入 2 路 1920x1080@30fps,输出3840x2160@30fps- 支持视频层、图形层叠加- 支持色彩空间转换

视频输入接口

- 支持 4-Lane image sensor 串行输入,支持MIPI/LVDS/Sub-LVDS/HiSPi 多种接口- 支持 4-Lane 或 2x2-Lane 等多种组合,最高支持 2 路 sensor 输入- 支持 8/10/12/14 Bit RGB Bayer DC 时序视频输入,时钟频率最高 148.5MHz- 支持 BT.601、BT.656、BT.1120 视频输入接口- 支持通过 MIPI 虚拟通道输入 1~4 路 YUV- 支持主流 CMOS 电平热成像传感器接入- 支持结构光图像模组- 支持 cw ToF 图像传感器

视频输出接口

- 支持一路 BT.1120 或 BT.656 接口输出,其中BT.1120 最高性能1920x1080@60fps- 支持 6/8bit 串行或 16/18/24bit RGB 并行输出,最高频率 74.25MHz- 支持 4-Lane Mipi DSI/CSI 接口输出,最高1.8Gbps/lane,性能 3072 x1728@30fps- 支持 Gamma 校正和水平方向 sharpen

音频接口与处理

- 内置 Audio codec,支持 16bit 双路差分语音输入和双路单端语音输出- 支持 1 路 I2S 接口,兼容多声道时分复用传输模式(TDM)- 支持 8 路数字 MIC 阵列输入- 支持多协议语音编解码- 支持音频 3A(AEC/ANR/ALC)处理

网络接口

- 1 个千兆以太网接口支持RGMII、RMII两种接口模式支持TSO、UFO、COE等加速单元

外部存储器接口

- DDR4/LPDDR4/LPDDR4x 接口支持2 x 16bit DDR4支持1 x 32bit LPDDR4/LPDDR4xDDR4最高速率2400MbpsLPDDR4/LPDDR4x最高速率 2400Mbps最大容量4GB- SPI Nor/SPI Nand Flash 接口支持1、2、4线模式SPI Nor Flash支持3Byte、4Byte 地址模式- eMMC5.1 接口,最大容量 2TB- 可选择从 eMMC、SPI Nor/SPI Nand Flash 启动

外围接口

- 2 个 SDIO3.0 接口SDIO0支持SDXC卡,最大容量2TBSDIO1支持对接wifi模组- 1 个 USB2.0 接口USB Host/Device可切换- 支持上电复位(POR)和外部输入复位- 集成独立供电 RTC- 集成 4 通道 LSADC- 集成 RGB 小屏专用三线控制接口- 多个 UART、I2C、SPI、PWM、GPIO 接口

请前往“易百纳技术社区”查看更多详情

相关问答

spi 启动 是什么?

SPI双启动是指同时使用内部启动(内部Flash)和外部启动(外部SPIFlash)两种方式来启动设备。在这种模式下,设备的启动顺序可以在软件中进行设置。例如,可以...

我在stm32外加了sram和 flash 怎样让程序从片外的 flash启动 ?

方法一:从flash旧扇区,取出1k数据到ram,放到flash新的扇区;从flash旧扇区,取出第2个1k数据到ram,放到flash新的扇区;重复至取完,然后再擦除flash旧扇...方....

spi flash nand flash 的区别?

SPIFlash和NANDFlash是两种常见的闪存存储器类型,它们在结构和工作原理上存在一些区别。1.结构:SPIFlash采用串行接口(SerialPeripheralInterfa...

求助烧录stm32的 spi 扩展 flash 的方法?

stm32没这个功能呢。nxp的倒是可以,比如LPC43x0系列的单片机内部没有rom,就用spiflash来当存储器,不过这时候运行的速度就降低了很多。stm32没这个功能呢。...

主板上 spi flashmemory是什么意思?

1、意思是SPIFlash存储器2、SPIFlash(即SPINorFlash)是NorFlash的一种,NORFlash是一种非易失闪存技术,是Intel创建的。1、意思是SPI...

spi 总线协议详解?

SPI(serialperipheralinterface)是一种同步串行通信协议,由一个主设备和一个或多个从设备组成,主设备启动与从设备的同步通信,从而完成数据的交换。SPI是一...

高人指点MCU(只支持5V供电)和 flash memery(只支持3.3V供电)采用用 SPI 通讯方式的连接电路?

很多(Flashmemery只支持3.3v供电)都允许直接与5VMCU的IO直接连接,不通讯时保持低电平即可。还有一方法就是中间串个470R的电阻。很多(Flashmemery只支持...

mt7621at是什么处理器?

SPI,NANDFlash,SDXC1xUSB3.0,2XUSB2.0,3xPCIe主机5-端口10/100/1000SW/PHY和1个RGMIIGreen--智能时钟缩放(不包括)...

STM32驱动TFT液晶,刷屏慢,瓶颈是 SPIFLASH ,怎么破?

STM32驱动一个128*128的TFT液晶,16位全彩,一张图片就占用了32K的空间,所以把图片数据存放在SPIFLASH上,因为要连续播放N张图片实现类似GIF动画的效果,现在S...

应届生嵌入式Linux开发学到什么程度可以找工作?

精通Linux安装设定操作,熟悉Linux指令,架设WEBServer、FTPServer、MAILServer、tomcat等中间件的配置使用熟练掌握Linux操作系统配置与调试,网...

 十五络脉  怪兽剪径者 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部