摘要:
这里我们来看XLOADER_ENTRY中调用的第二个标号ddr_init处的代码,这部分代码的作用是对外部内存SDRAM进行初始化,在我 spearplus开发板中,使用的是DDR SDRAM。在调用ddr_init之前,外部内存是不能用的,因为外部内存的时钟以及控制寄存器都还没有初始化,因此此时只... 阅读全文
摘要:
上一篇文章对XLOADER_ENTRY进行了分析,看到其中调用的第一个标号就是sys_init,本文就对这个标号对应的代码段进行粗略的分析,这里我也还有好多没有搞明白的,就先留着,日后慢慢明白,先把自己目前能够看明白的东西记下来。另外,需要说明的是,像sys_init以及后续还要讲的ddr_init... 阅读全文
摘要:
根据上文中获得的线索,本文分析init.S中的XLOADER_ENTRY。在init.S中,定义了好多与平台相关的寄存器地址宏以及好多其他函数,我们在用到的时候再回过头来分析,这里,我们只看其中的一个函数(其实是一个标号,我们暂且称之为函数也无妨)——XLOADER_ENTRY。好了,废话不多说,来... 阅读全文
摘要:
本文中的所有代码版本都是基于ST的SpearPlus开发板的。xloader是在系统上电之后,执行完ROM中的frimware后最先开始执行的用户程序,它的体积很小,执行的功能也很简单,主要是对系统时 钟以及外部SDRAM进行初始化,初始化完成之后就检查Flash中的uboot image是否准备好... 阅读全文
摘要:
(8) USB 操作指令指令功能usb reset初始化USB控制器usb stop [f]关闭USB控制器usb tree已连接的USB设备树usb info [dev]显示USB设备[dev]的信息usb storage显示已连接的USB存储设备usb dev [dev]显示和设置当前USB存储... 阅读全文
摘要:
在PCIe总线中,有些TLP含有Data Payload,如存储器写请求、存储器读完成TLP等。在PCIe总线中,TLP含有的Data Payload大小与Max_Payload_Size、Max_Read_Request_Size和RCB参数相关。下文将分别介绍这些参数的使用。 5.4.1 ... 阅读全文
摘要:
本节讲述PCIe总线定义的各类TLP,并详细介绍这些TLP的格式。在这些TLP中,有些格式对于初学者来说较难理解。读者需要建立PCIe总线中与TLP相关的一些基本概念,特别是存储器读写相关的报文格式。在PCIe总线中,存储器读写,I/O读写和配置读写请求TLP由以下几类报文组成。 (1) 存储... 阅读全文
摘要:
TLP的路由是指TLP通过Switch或者PCIe桥片时采用哪条路径,最终到达EP或者RC的方法。PCIe总线一共定义了三种路由方法,分别是基于地址(Address)的路由,基于ID的路由和隐式路由(Implicit)方式。 存储器和I/O读写请求TLP使用基于地址的路由方式,这种方式使用TL... 阅读全文
摘要:
当处理器或者其他PCIe设备访问PCIe设备时,所传送的数据报文首先通过事务层被封装为一个或者多个TLP,之后才能通过PCIe总线的各个层次发送出去。TLP的基本格式如图5?1所示。 TLP的格式" alt="" > 一个完整的TLP由1个或者多个TLP Prefix、TLP头、Data... 阅读全文
摘要:
事务层是PCIe总线层次结构的最高层,该层次将接收PCIe设备核心层的数据请求,并将其转换为PCIe总线事务,PCIe总线使用的这些总线事务在TLP头中定义。PCIe总线继承了PCI/PCI-X总线的大多数总线事务,如存储器读写、I/O读写、配置读写总线事务,并增加了Message总线事务和原子... 阅读全文