海思芯片pcie启动——pcie_mcc驱动框架的booter程序分析

这篇具有很好参考价值的文章主要介绍了海思芯片pcie启动——pcie_mcc驱动框架的booter程序分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、booter程序介绍

(1)源码目录:pcie_mcc/multi_boot/example/boot_test.c;
(2)调用命令:./booter start_device;
(3)booter程序的作用:在主片将pcie启动相关的驱动加载完成后,调用booter来引导从片pcie启动;

2、主片引导从片启动的过程

(1)调用pcie启动相关驱动,知道当前pcie接口连接了多少个从片;
(2)先传输uboot的前80KB数据到36A的内部RAM中,并启动36A,让36A芯片执行传输过去的uboot前80KB数据,实现内存的初始化;
(3)初始化内存后,将uboot通过pcie的地址转换单元发送到36A从片的内存中;
(4)将kernel通过pcie的地址转换单元发送到36A从片的内存中;
(5)将rootfs通过pcie的地址转换单元发送到36A从片的内存中;
(6)经过第二到第五步,已经将uboot、kernel、rootfs发送到所有36A从片;
(7)启动所有36A从片,36A直接执行内存中的uboot,启动内核,再挂载根文件系统;

3、函数调用顺序

main(int argc, char *argv[])
	ioctl(dev_fd, GET_ALL_DEVICES, &attr);	#获取扫描到的所有36A从片
		start_device(dev_fd, action, attr);
			transfer_uboot_to_devices
				ioctl(fd, PCIE_TRANSFER_DATA, &attr_arg);	# 传输uboot到36A从片
			transfer_kernel_to_devices(dev_fd, &attr);
				ioctl(fd, PCIE_TRANSFER_DATA, &attr_arg);	# 传输kernel到36A从片
			transfer_fs_to_devices(dev_fd, &attr);
				ioctl(fd, PCIE_TRANSFER_DATA, &attr_arg);	# 传输rootfs到36A从片
			unreset_slave_devices(dev_fd, &attr);			
				ioctl(fd, START_TARGET_DEVICE, &attr_arg);	# 启动36A从片
				
		reset_slave_device(dev_fd, action, attr);	# 复位所有从片,如果是通过pcie启动36A,这个一般不调用

4、pcie启动时从片的地址空间布局

海思芯片pcie启动——pcie_mcc驱动框架的booter程序分析

5、补充:什么是芯片内SRAM?

(1)芯片内SRAM:就是36A芯片内部集成了小容量的RAM内存,SRAM是静态RAM,不需要初始化就可以运行;
(2)对应芯片内存内还集成小容量的SROM,用来存放芯片固化的代码,同样不需要初始化上电即可用;
(3)芯片上电,将SROM中的代码搬运到SRAM中运行,这样才可以支持各种启动方式;
(4)在初始化内存前,内存是不可用的,所以只能将uboot前面部分读取到片内SRAM运行,初始化内存后接可以直接将uboot、kernel、rootfs发送到内存;
(5)参考博客:https://blog.csdn.net/weixin_42031299/article/details/123602617;

6、疑问:读取前80KB的uboot已经超过片内SRAM大小?

海思芯片pcie启动——pcie_mcc驱动框架的booter程序分析

(1)从芯片手册的地址空间映射表可知,片内SRAM的大小是64KB,是放不下uboot前80KB的;
(2)但是片内SRAM地址后面紧接的地址空间是保留地址空间,应该是将超过的16KB复制到该地址空间也没事,或者是芯片内固化的代码已经做了截断处理;
(3)读uboot前80KB是海思SDK里提供的pcie_mcc驱动指定的,具体为什么要是80KB只有海思的原厂工程师最清楚,不必深究;
(4)我看到有其他人说,初始化内存的代码只在uboot的前32KB,其实不用读取80KB这么多,如果想了解更清楚,可以去看uboot的链接脚本,看看哪些文件被链接在前面;

7、booter总结

(1)booter功能是主片引导从片通过pcie接口启动,逻辑上并不复杂,就是主片把uboot、kernel、rootfs发送到从片的内存,然后启动从片;
(2)想要彻底了解海思pcie启动,还要继续深挖vendor_dev_host.ko和boot_device.ko,这两个驱动是启动相关的;文章来源地址https://www.toymoban.com/news/detail-462695.html

到了这里,关于海思芯片pcie启动——pcie_mcc驱动框架的booter程序分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • arm海思启动udev的错误

    udev 是一个为你的计算机提供设备事件的 Linux 子系统。通俗来讲就是,当你的计算机上插入了像网卡、外置硬盘(包括 U 盘)、鼠标、键盘、游戏操纵杆和手柄、DVD-ROM 驱动器等等设备时,代码能够检测到它们。这样就能写出很多可能非常有用的实用程序,而它已经很好了,

    2024年02月16日
    浏览(32)
  • aurora和pcie的异同点,哪个更适合用作芯片间传输协议?

    目录 两种协议的异同点 相同点 不同点 更合适芯片间传输? 两种协议的异同点 Aurora和PCIe是两种不同的高速串口协议,它们有一些异同点。 带宽:Aurora和PCIe都具有高带宽,可以满足高速数据传输的需求。 可靠性:两者都具有较高的可靠性,能够在各种环境下稳定运行。 标

    2024年01月17日
    浏览(36)
  • 基于海思SD3403/3519AV200的医疗内窥镜技术框架

    医疗内窥镜市场,经过多年的发展,产品种类繁多,应用场景更加的多样了,但是基础的技术方案非常的收敛,主流的方案就是海思的SOC和FPGA。海思的SOC以优秀的图像质量,和便携的开发占据了大量的硬镜应用,同时也正在往软镜方向发展。FPGA由于低图像延迟,以及机电控

    2024年02月01日
    浏览(53)
  • 怎么编写PCIe设备驱动程序

    DocumentationPCIMSI-HOWTO.txt driversnvmehostpci.c PCI总线设备驱动模型: 右边是pci_dev,由PCIe控制器的驱动程序扫描PCIe总线,识别出设备,并构造、注册pci_dev pci_dev结构体含有丰富的信息,比如vid、pid、class、已经分配得到的mem/io资源、INTx中断资源 左边是PCIe设备驱动程序pci_driver,

    2023年04月17日
    浏览(41)
  • PCIe 总线基础 驱动接口 和 BAR空间详解

    PCIe 总线基础 PCIe扫盲系列 原版PDF PCI总线是一种树型结构,并且独立于CPU总线,可以和CPU总线并行操作。PCI总线上可以挂接PCI设备和PCI桥,PCI总线上只允许有一个PCI主设备(同一时刻),其他的均为PCI 从设备,而且读写操作只能在主从设备之间进行,从设备之间的数据交换需

    2023年04月09日
    浏览(31)
  • FPGA PCIE接口的Linux DMA Engine驱动

    英创嵌入式主板,如ESM7000系列、ESM8000系列等,均可配置标准的PCIE×1高速接口。连接NVMe模块作高速大容量数据存储、连接多通道高速网络接口模块都是PCIE接口的典型应用。此外,对于工控领域中的高速数据采集,还可采用FPGA的PCIE IP核实现PCIE EP端点,与英创嵌入式主板构成

    2024年02月15日
    浏览(34)
  • PCIE那些事之linux下EP驱动实现方式二

    EP设备驱动,主要运行在RC侧,用于控制总线地址上的数据传输使用, 提供给应用层接口,应用层调用此接口完成数据传输,主要的分层结构如下 RC侧包含RC控制器驱动 和EP设备驱动 EP侧包含EP控制器驱动和EP端口驱动 (无需关心,一般厂商提供) 实现的主要是EP设备驱动 主要分

    2023年04月08日
    浏览(28)
  • RK3399_PCIe_Host驱动分析_地址映射

    《PCI Express Technology 3.0》,Mike Jackson, Ravi Budruk; MindShare, Inc. 《PCIe扫盲系列博文》,作者Felix,这是对《PCI Express Technology》的理解与翻译 《PCI EXPRESS体系结构导读 (王齐)》 《PCI Express_ Base Specification Revision 4.0 Version 0.3 ( PDFDrive )》 《NCB-PCI_Express_Base_5.0r1.0-2019-05-22》 SOC中AXI总线是

    2024年02月06日
    浏览(41)
  • 【PCIE体系结构九】物理层的基本逻辑框架

    👉个人主页:highman110 👉作者简介:一名硬件工程师,持续学习,不断记录,保持思考,输出干货内容  参考书籍:《深入浅出SSD:固态存储核心技术、原理与实战》           物理层为数据链路层之下的硬件底层,其主要作用有两个,一是传输TLP和DLLP,二是发送和接

    2024年02月04日
    浏览(51)
  • 几款H桥电机驱动芯片直流有刷电机驱动芯片性能分析

    如果您正在寻找一款高性能、可靠、集成度高、能实现卓越电流控制的H桥电机驱动芯片,那么下面介绍的芯片将是不错的选择。  这一系列芯片具有出色的功耗管理能力,以及多种保护功能,精确的电流检测和监控,能够确保系统的长期稳定运行。 此外,次系列芯片芯片有

    2024年02月12日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包