设为首页 加入收藏

TOP

【视频版】基于飞腾芯片的设计与调试入门指导(二)
2023-07-23 13:26:56 】 浏览:65
Tags:于飞腾 计与调
知道外边接的是什么,要从哪个接口去传输命令呢,这个就是在BIOS生成的时候,有个配置选项,来告诉OS系统我外边接的什么。

表 不同电源管理控制器使用的通讯接口和配置方式

 

图片

 

涉及S3状态,有个管脚要特别说明一下:GPIO0_A1,这个脚的使用一定要好好看下手册说明。当主机从S3恢复到S0状态时,板上的CPLD控制单位会通过信号引脚 K17(信号名 UART_0_CTS_N/GPIO0_A1)向CPU发送主板当前的是否满足S3→S0状态的S3_OK信号。S3_OK 信号为高电平时候,表示可以正常恢复到S0。S3_OK信号为低时,通知CPU主板出现异常状态(内存掉电等情况),系统将重新启动,而不是从 S3 恢复。如果设计上没有S3的需求,那么这个GPIO0_A1要做拉低处理,不能不管,要不会出错的。

 

2.1.3 内存

飞腾CPU的内存控制器做的还是比较好的,如果设计没有硬伤,走线没有太差,不管使用内存条还是DDR颗粒,都会得到一个很好的训练参数支撑系统的运行。

首先要说的是,飞腾桌面CPU,FT-2000/4是支持DDR3和DDR4的,到D2000芯片是只支持DDR4的。这些内容在芯片手册中都有说明,这里特别拿出来提醒大家一下。

芯片是有两个DDR控制器的,我们可以称为两个通道。每个控制器有4个片选信号,我们可以叫做4rank。所以,我们一个CPU最大的设计是这样的:2个通道×4rank。像下图一样的设计,就可以插4条双rank的内存条。

图片

图 双通道×4rank的D2000板卡

内存控制器若按照 8bit 划分为一个 slice,一个通道 72bit 可划分为 9 个 slice(第9个,即slice[8]为ECC)。

DQ交换:在进行X8兼容内存的设计时,slice内部的8个DQ可以自由互换。

Slice交换:slice[0:7]可以进行slice之间交换。Slice[8]为ECC用途,不能与其它slice交换。若用户需要使用ECC的内存条,slice[8]必须与DIMM条上的slice [8]进行连接。若确认无需ECC功能,将slice [8]信号浮空即可。

这里还有个特别说明的地方,就是DDR控制器有个MEMRESET,这个是输出到DDR上给DDR做复位的。前面在供电和电源管理章节里提到过,S3状态是需要将待机状态压到内存的,那么待机时就要求DDR不能掉电,当然更不能被复位。因为S3状态下除了DDR,包括CPU在内的其他无用的电都是需要被关闭的,那么CPU这个MEMRESET一定是个无效的状态。所以,如果我们的板卡应用会有S3,也就是睡眠状态的,这个MEMRESET就需要控制一下。

这个就是demo图中的这个电路。可以看到,CPU输出的MEM_RST是过了一个MOS的,这个MOS的控制端是接到了CPLD上,因为是不是从S0跳转到S3状态,CPLD是可以通过PWR_CTR0、PWR_CTR1这两个脚数脉冲来知道的,那么它也就知道是否需要控制MOS将CPU输出的MEM_RST传递给DDR。

图片

图 demo图中S3状态对于MEMRESET的处理

 

2.1.4 调试串口

调试飞腾,要是不把调试串口引出来,那基本就等死就完了。

UART 接口电平为 1.8V CMOS 电平标准,若使用的外设不兼 容 1.8V CMOS 电平,需进行电平转换;默认UART_1为系统调试串口,用于输出系统打印信息,波特率115200bps。记住,这玩意儿默认就是串口1,不能改。你要非得改,要动的代码千千万,还不是你自己能改的了的,何必动它呢。你就用串口1就行了。

是用TTL还是RS232,根据硬件需求自己设计就好。

 

2.1.5 QSPI接口

前面提到好几次CPU的BIOS,那么BIOS存放在哪?CPU启动的时候从哪里读呢?

都是从QSPI接口。QSPI 接口兼容 SPI,且作为启动加载片外固件的唯一接口。CPU 启动后,最先通过 QSPI 接口的 QSPI_CSN0 片选的 Flash 芯片加载固件,来执行相关指令。固件正常执行完成,才能在后面引导OS系统启动。

图片

图片

图 QSPI flash接口电路

QSPI Flash有16pin的、8pin的,1.8V的、3.3V的。设计时选取根据要自身的需求。并且最好选取大家常用的,飞腾兼容适配过的型号,同时建议flash最好16MB以上,8MB有的用起来还是小,会有问题。

 

2.1.6 存储

这里存储是个广义的概念,也就是所有能存放OS的都可以叫做存储,SD卡、NVME、SATA、NOR Flash都可以。他们作为OS存储的要求很简单,只要能放得下OS,能被固件读写就可。

一般咱们PC机都是用SATA硬盘作为存储介质,飞腾CPU上没有sata接口,如果要用sata硬盘做存储,那就需要通过PCIe外扩sata。如果不想外扩,那就用NVME SSD。如果系统比较小,比如一些实时系统Vxworks啥的,那么把系统生成bin文件,放到启动用QSPI Flash剩余的空间也是可以的,当然放到SD卡里也是可以的。要求前面也说过了,只要放的下,固件能看到这个存储,能操作它就可以。

 

2.2 如何让CPU开始工作?

2.2.1 上电时序

在前面2.1.2供电和电源管理章节讲过,要让CPU从未加电状态到加电后工作状态,就是使CPU从S4/S5状态转到S0状态。这个状态跳转其实就是通过外边的电源管理控制器(CPLD或EC或X100)跑一下CPU的上电时序。

图片

图 CPU上电时序

这里提示一点,手册里给出了上电时序的各个时序之间的延时t值,就是上面图中的t1~t12,那就严格按照手册来做就好了。不要去问不这么做会怎么样。可能你设计的好,不这么做也能用,但是这个可法保证每次这么做都可以,手册都给参数了,就按手册做不就好了么。

上电时序跑完,CPU就会启动了,它下一步就会去QSPI CS0接口去读数据了,所以你如果不知道自己时序是不是好了,那就可以用示波器去量QSPI CS0是否有读数据的动作,同时测量一下QSPI的时钟,在固件加载前应该是380KHz。也就是CS0是否有拉低的状态。要是有拉低,那就说明CPU在尝试去读外置FLASH了,那么也就说明CPU上电正常了,已经开始工作了。

 

2.2.2 固件

固件这个名字其实应该不陌生,很多网卡,很多PCIe桥片都要烧EEPROM,那里面的Bin文件我们就叫固件。这里CPU启动用的程序,我们也叫固件,借鉴X86的叫法,那就叫BIOS。只是个名字,不要纠结,在飞腾这里基本都叫固件。

固件这里的情况汇总到下表:

表 飞腾CPU固件情况说明

固件提供方

厂家

费用

固件形式

对应OS

联系方式

飞腾

飞腾

免费

Uboot

实时系统(Vx+国内实时系统)

桌面系统(能用设备树引导的开源linux)

联系飞腾FAE

UEFI

桌面系统(麒麟+开源linux)

第三方

昆仑

收费

联系厂商

联系厂商

http://www.kunluntech.com.cn/lxwm

百敖

收费

http://www.byosoft.com.cn/rhgm/index.jhtml

国科银河

收费

http://hngkyh.com/i

首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇RK3568用户自定义开机画面功能 下一篇飞腾X100 LPDDR颗粒线序配置辅助..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目