基于飞腾芯片的设计与调试入门指导

简介: 基于飞腾芯片的设计与调试入门指导

——York  2022.12.30




一、啥是自主可控

国产CPU现在厂家细算起来其实有很多,现在华为、小米也在做自己的CPU,瑞芯微、全志等的SoC现在也是广泛应用。但是真正能叫做自主可控的CPU厂商,只有6家。那啥是自主可控?首先来不严谨的讲下现在数字芯片是怎么做的设计。FPGA大家都知道,可以通过Verilog或者VHDL等硬件编程语言实现硬件功能。比如,我要实现一个SPI控制8个LED灯的功能,可能从市面上找这种功能的芯片是没有的,那么我就可以自己指定控制LED的指令,通过使用FPGA自己编成,解析SPI传下来的指令,控制LED的亮灭。如果测试验证没有问题,那么就可以把FPGA的RTL拿出来,经过处理拿去流片,流片完成给芯片起个名字,比如YKS2D8001,这就成为了市面上能够实现SPI接口控制8个LED的ASIC芯片了。同时,咱们FPGA的实现代码,也可以拿出来当成一个IP,以后谁要想使用FPGA来实现这个功能的时候,就可以拿来用而不用再单独购买咱们流片完成的ASIC芯片YKS2D8001。

那么,咱们在做复杂功能FPGA的时候,比如xilinx的,咱们会调用xilinx提供的现成的IP,比如它的DDR控制器IP、PCIe IP或者更简单些的串口IP、IIC IP。这些IP咱们在程序实现时,是可以直接调用,根据xilinx提供的操作手册把这个IP给用起来的,但是这个IP核的实现代码,咱们是看不到的,如果咱们想改IP核内的代码,那肯定是没办法的。这就是非自主可控。自主可控,就是能够掌握IP的所有代码,自己想改就改。

飞腾就是国内自主可控6家之一。也就是可以简单的理解为飞腾芯片内的每行代码,每一个功能实现,都是自己实现的。这里有人会说,飞腾不是arm64的么,那是arm的呀。是的,飞腾是arm64的,但是飞腾是购买的arm的指令集授权。指令集授权大家可以通俗的认为就是购买了函数名,但是函数实现是自己做的。所以即使是arm64,也是自主可控的。


二、基于飞腾芯片的设计

2.1 最小系统硬件设计

要想让飞腾CPU加电后跑起来,硬件设计上有几个部分是必须有的。时钟、供电、内存、调试串口、QSPI Flash接口、存储。下面就针对每个部分详细说一下。


2.1.1 时钟

时钟不用多说,所有的芯片都需要时钟。飞腾芯片需求的时钟主要就是两种,1是芯片的主时钟48MHz,2就是芯片的PCIe控制器PEU的时钟100MHz。这个100MHz时钟要求PEU和外设同源,也就是从同一个时钟发生器产生,HSCL电平标准,AC耦合。并且设计时,即使PEU不用,PCIe时钟也是要接的。

图 CPU总的时钟框图

图 PEU0的时钟

图 PEU1的时钟

2.1.2 供电和电源管理

飞腾的电源种类并不多,需要0.8V(核电)、1.2V(VDDQ)、1.8V(IO)三种。其他电源域基本都可以直连或者通过磁珠连接到这三个电源中,这里就参考demo设计就可以了。

这里需要提示的是:

1.就近放置在芯片电源管脚下的电容为4.7uF,这里尽量不要修改。

2.CPU有一个3.3V的电源管脚,这里给供一个3.3V过来即可。

3.各个电的最大电流一定要查手册,设计电源时一定要保证满足。

4.各个电的纹波不能超5%。注意,这里说的是整个运行状态下,就是BIOS阶段、OS系统启动和运行阶段,是都不能超的。这里特别强调,非常重要!

说到电源,就不得不说电源管理。借鉴x86的电源管理状态,飞腾CPU也有电源管理的几个状态。

图 飞腾CPU电源状态

S0就是正常工作的状态,S3就是类似window的睡眠,即待机状态压到内存中,所以要求内存一直带电。S4/S5就是类似window的休眠和关机,即待机状态压到硬盘,或者就是直接关机了,这个时候整板都会掉电。

那么有人问了,S4/S5是俩状态呀?一个是休眠系统状态压到硬盘,一个是关机,这俩放一起咋区分呢?其实不用区分,系统状态压到硬盘了,就已经是被固定保存了,即使掉电也不会有数据丢失,这里应该没错吧。所以对于电源管理来说,S4/S5状态时都是要掉电的。那么S4、S5的区别,主要在下一次开机时。如果去看系统下去执行休眠和关机时的log信息,可以看出,休眠和关机系统处理是不同的,他们会置不同的标志。那么在下次开机的时候,这个置的标志,就能够告知系统要从哪种状态启动。

到这里,供电和电源管理的几个状态应该就说清了,那么现在实际问题来了,供电我能明白,就是使用电源芯片供电嘛。那么这个电源管理,我咋做?

那么下面,我们就一个一个的来说。

首先,我们一个板子肯定是从未加电状态转为加电状态,让CPU跑起来。那么对应上面的状态,那就是S4/S5状态到S0状态,也就是断电关机状态到上电工作状态。这个状态的控制,其实就是对CPU各个电源域上电时序的控制。所以,做硬件不用想太多,从未加电到加电让CPU跑起来,换句话说就是从S4/S5状态到S0状态的实现,就是你想办法把你给CPU的各个电按下面时序跑完就好了。在保证电路设计的情况下哈,只要你按时序跑完,CPU肯定就启动了,也就到了S0阶段。

图 S4/S5到S0开机时序图

那么,你能猜到了吧,S0到S4/S5是咋弄,其实也一样,也是跑电时序。但是……硬件工程师又问了,板子系统正好好的跑着呢,我咋知道要去跑掉电时序呢?这个问题问的很好。去执行掉电时序,总是要收到信号的,那么这个信号在时序图中是能够看出来的,就是图中标绿的部分。PWR_CTR0、PWR_CTR1这两个是CPU芯片上的两个管脚,当我们在OS系统下点了休眠或者关机命令时,系统肯定是要先去保存自己的状态到硬盘,当保存完了,OS会通过PWR_CTR0、PWR_CTR1这两个管脚,发送脉冲出来(应该是4脉冲代表重启,8脉冲代表转S3状态,12脉冲代表转S4/S5状态),告诉外边可以去跑掉电时序了。外边收到这个脉冲后,自己根据掉电时序去跑就可以了。

图 S0到S4/S5关机时序图

图 PWR_CTR0、PWR_CTR1两管脚

前面提到了PWR_CTR0、PWR_CTR1这两个管脚把脉冲发给外边,那么这个外边是啥呢?这里外边其实就是个控制器,单片机也好,CPLD也好,只要能够数脉冲,能够控电时序就好了。Demo图一般用的都是CPLD。

正面.png

图 demo图一般都是用CPLD做电源管理

那么又有人问了,我做笔记本难道还需要上一个CPLD控制电源么,一般笔记本都有EC呀,EC能用么?答案当然是肯定的。所以这里又要说明一个事情,电源管理接口不只有上面PWR_CTR0、PWR_CTR1这两管脚,也可以通过LPC,也可以通过IIC。要是外边电源管理控制器使用CPLD或者MCU等,那么建议就接到CPU PWR_CTR0、PWR_CTR1这两管脚,通过数脉冲去判断要执行的状态跳转。要是使用EC的话,就要求把EC接到CPU的LPC接口上,通过LPC去通信状态跳转。要是用飞腾的套片X100做电源管理,就要求把CPU的IIC1接到X100的IIC上。那么OS系统在发送状态跳转的时候是怎么知道外边接的是什么,要从哪个接口去传输命令呢,这个就是在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/index.php?c=about&a=detail&id=14


通过上面的表我们可以发现,要是使用免费的,那么就用飞腾提供的固件。飞腾固件有两种形式,uboot或者UEFI。Uboot能引导实时系统,比如vx类的,也能引导桌面系统,但是桌面系统只能引导开源linux,换句话说就是只能引导能提供设备树的桌面系统。UEFI只能引导桌面系统,比如麒麟、ubuntu这类的。

那么有人问了,我想UEFI引导vx不可以么?可以,那么就用第三方收费的,这里只是飞腾的UEFI不支持。飞腾免费提供的就是解决大家调试用,比如你板子都来了,总不能等第三方定制的固件到了才能去引导系统去测试板子吧,这会儿你就可以用飞腾提供的固件先进行测试,保证你的测试周期。同时这里也说明一点,飞腾的UEFI不是商用的交付用的固件,只是用于测试的,所以它有很多功能还是可以提升的,但是这里要是有定制功能,就需要自己去改了,飞腾只提供基础版本够你用,要是有定制功能,要么自己改,要么去找第三方固件厂商去购买。

飞腾固件我们拿uboot固件举例,它是由uboot部分和PBF部分组成的。其中uboot是提供源码的,PBF是闭源的bin文件。飞腾提供固件编译环境、编译方法指导等。这个可以查看网上的文章:

https://blog.csdn.net/yorkworlddream/article/details/125482429?spm=1001.2014.3001.5501

B站视频:

https://www.bilibili.com/video/BV1h94y197ry/

https://www.bilibili.com/video/BV1ce4y197ze/

https://www.bilibili.com/video/BV1Fg411Z761/


里面将固件编译配置方法讲的很清楚了,我这里就不展开讲了。总而言之一句话,就是飞腾提供的固件配置环境和操作方法,能让一个没有搞过配置的硬件工程师都能很容易的把CPU的核心数、内存、PCIe等进行配置。

固件编译完是一个bin文件,这个文件我们要通过烧片机写器把它烧到我们QSPI FLASH,这个flash烧好后,放到CPU QSPI CS0接口上,CPU开机后就会去读flash里的内容了。所以为了调试方便,我们需要两个东西,一个是烧片机写器,一个就是尽量在CPU QSPI CS0接口上接一个调试座。

下面展示的就是烧写器、烧写器转芯片座,和焊接到PCB板上的调试座。

烧写器产品很多,这里示例的是硕飞的烧写器和它对应的16pin的转接座,当然你要是用8pin的flash,那就用8pin的转接座。(硕飞公司看到可以联系我打钱哈,●ˇ∀ˇ●)

焊接到PCB上调试座主要就是方便flash的取换,因为调试中固件可能经常要改参数,要是没有这个调试座,flash就要来来回回的拆下来烧写再焊上这样。

硕飞公司各烧写器支持器件列表:

https://www.sflytech.com/devlist.asp?model=SP20P/SP20X/SP20F/SP20B


2.2.3 系统

固件调完,就要到系统了。我们后面都是基于飞腾固件来讲的,使用第三方固件的不在我们讨论范围里。

系统的引导我们下面也要分几种不同的情况进行说明。表的形式列出:

表 不同固件下的系统引导

系统

采用固件

系统说明

桌面系统

Uboot

系统只能是在其他地方,将硬盘分好区,在指定位置放好设备树、系统镜像、文件系统后,拔下来放到我们最终的板卡上,使用uboot通过设备引导系统启动

UEFI

可以在最终板卡上,使用类似x86+windows的那种方法,把系统iso放到U盘里,在UEFI下通过U盘来安装系统。系统引导时,是采用grub启动系统。

实时系统

Uboot

把系统镜像bin文件放到存储器中,使用uboot命令找到bin,引导启动。



2.3 设计资料获取


资源类型

获取渠道

硬件

芯片手册,设计demo等

联系飞腾FAE

PCIe外设、QSPI Flash等硬件兼容外设列表

通过飞腾官网→技术支持→硬件服务

https://phytium.com.cn/class/137

软件

Uboot、UEFI源码和固件编译环境等

联系飞腾FAE

飞腾linux内核

联系飞腾FAE

Vx BSP、裸跑、Yocto、Android、openHarmony等其他资源

通过gitee代码仓库

https://gitee.com/phytium_embedded

技术支持

飞腾有自己的技术支持平台,是网页版的,有基于飞腾的项目要做,通过销售渠道或者技术渠道,找到飞腾的FAE。在技术支持平台注册账号,建立项目,从项目获取资料开始,所有的技术问题,包括设计中有问题,都可以从技术支持平台上提工单要到支持,很方便。

(主要提示:一定要找飞腾技术支持部的FAE)

注册和登录网址:

https://serviceplus.phytium.com.cn/

注册完账号,要找飞腾FAE给审核账号。



三、基于飞腾芯片的调试步骤

3.1 环境准备

序号

设备名称

用途

要求

1

串口线

用于连接飞腾CPU调试串口

根据硬件设计,要是TTL串口就用TTL串口线,要是RS232电平,就用RS232串口线

2

PC机

用于运行串口调试软件

建议有两种,一种就是SecureCRT,另外一种就是纯字符型串口助手,比如sscom。因为SecureCRT它会解析终端命令比如退格、清屏啥的,导致log存的有的时候不全。所以要用sscom这类不执行终端命令的串口调试助手把所有的串口信息都存下来。

3

万用表

用来测量CPU各个电阻抗,保证没有焊接短路

没啥要求,不是十几二十块钱那种的就行

4

示波器

必要时用来测量QSPI 接口波形。必要时用来测量电源纹波。

没啥要求,有表笔就行。要是测纹波,可是得有接地弹簧,能靠测。


3.2 静态测量

3.2.1 测量静态阻抗

将万用表打到电阻档位,然后分别测量 Vcore、VDDQ、VDDQ、VTT 的静态阻抗。这里要提示一点,核电阻抗很低,很多都在1Ω、2Ω、3Ω都是正常的,换句话说,只要不是0Ω就行!很多人用二极管档测阻抗,有的表一测核电阻抗就响了,不要光看响不响,要看看值。


3.2.2 测量电压

在确保电路没有存在短路的情况下,对电路板进行上电,查看电路板上的核电压、内存电压、IO 口电压、3.3V 电压、5V 电压等是否正确。

这里电压就自己去看手册去对就好了。此时要是为了稳妥,可以把纹波也量一量。但此时量到的只是静态的电压纹波,固件和系统跑起来,这个纹波和此时可能是不一致的。


3.3 加电前准备

前面静态做完,加电前的准备工作基本就没啥了,主要就是不管你是用CPLD还是EC还是X100,加电前一定要把上电时序保证了,至少你编程是照着时序去实现的。千万不要连上电时序控都没控,着急的就上电。

其次,就是固件要编好了,烧到了flash中,并且flash已经放到了调试座上,也就是CPU可以通过QSPI CS0接口去读flash里的固件了。


3.4 加电

3.4.1 调试串口有打印

3.4.1.1 能进shell

调试串口有打印,并且能进shell,这个真的是要恭喜你,板子调试太顺利了。不过这么顺利了,我们也要看看log,尤其是看看ddr训练部分训练的是否顺利。因为即使我们DDR部分设计如果有问题,要是不是很致命的话,控制器会尝试多次参数训练,最终找到能用的参数。我们要关心的是训练次数,正常来说我们从log上,参数训练是很短的。要是我们看到log上有很多次的参数尝试,那么说明咱们这个ddr还是有些问题。

下面是训练成功的log截图,如果我们在达到success之前,反复出现过很多次红框框出的那种信息,那么说明DDR控制器尝试了很多参数,最终才找到了一个合适。见过一些板子需要训练大概20s多,可以从log上看到很多很多个红框的信息。这种说明DDR设计上不是很好,需要再仔细查一查。

图 log中内存训练部分截图

进了shell,我们就可以敲命令了。

uboot飞腾是在公版的上面改的,所有命令都是兼容的,我们可以搜uboot命令就可以了。环境变量的:Printenv、setenv、saveenv。寄存器读写:md、mw。PCIe外设扫描:pci e。

UEFI也是兼容公版UEFI的。寄存器读写:mm。PCIe外设扫描:pci。网络:ifconfig、ping。

这个我们后面也单独出一个文档,这里也是简要说明一下。


3.4.1.2不能进shell

串口有打印,但是卡半截,不能跑到shell,这里绝大多数都是硬件问题。我们要根据打印来判断可能的故障点。

这个问题点很多,我们后面也是单独出文章来说明。这里单独提示一点,串口卡了这时候要用示波器测纹波了。因为固件已经开始跑了,如果纹波很大,可能会出现卡在很多位置,这个就没法判断了,所以固件咋调都过不去,纹波是必须要量的,尤其是核电的,不能超5%。


3.4.2 串口无打印

加电后串口都没有打印,那么我们首先就是要用示波器量下QSPI的时钟和片选。

QSPI 接口作为启动加载片外固件的唯一接口。CPU上电后后,通过QSPI接口的QSPI_CSN0片选的Flash芯片加载固件,来执行相关指令。因此需要查看 QSPI 的时钟信号(QSPI读固件之前时钟以及读完之后固件配置的时钟),QSPI读固件之前时钟频率应为380KHz左右,网安版的应该是4.6MHz


表 串口无打印各种可能性分析

QSPI时钟和片选

故障可能性

解决方法

看上电时序,测量系统时钟

测量上电时序,保证与手册一致。测量系统时钟,保证满足芯片要求。

Flash是否适配过

查飞腾官网适配型号,看是否进行过兼容适配

Flash电平与CPU电平是否一致,因为有的设计可能采用了3.3V flash,接到CPU上时往了过电平转换芯片了

要是真是电压不一致,尽量就是换电平一致的flash芯片再试试了

Flash有没有虚焊。

Flash各个脚都测测,都量量的吧

测量CPU芯片调试串口的管脚处,看看是否有波形,有可能是串口通路上串口芯片或者调试串口线或者串口软件啥的有问题呢

这个就让硬件工程师来测吧,这个要不会他也做不了飞腾的板子


3.5 系统引导

使用uefi去安装引导系统,请看文章:

https://blog.csdn.net/yorkworlddream/article/details/124866224

使用uboot去制作系统,引导系统,请参考仓库说明:

https://gitee.com/phytium_embedded/phytium-linux-buildroot




附录:文中涉及到的外部文章汇总:



#####################################

前面说的和本文有些关联的硬件资源,黑皮书的话会好些,纯国人写的就……:


《计算机系统设计:片上系统》

《计算机组成与嵌入式系统-第6版》

《计算机组成与设计硬件软件接口-第5版》

《计算机组装与维修基础教程(第5版)》--基于wintel

相关文章
|
6月前
|
数据采集 监控 安全
精简高效与安全兼备:ARM32与MCU32平台上的信息协议设计新思路
精简高效与安全兼备:ARM32与MCU32平台上的信息协议设计新思路
266 1
|
6月前
|
安全 前端开发 Linux
DP读书:鲲鹏处理器 架构与编程(十一)鲲鹏生态软件架构 AND 硬件特定软件
DP读书:鲲鹏处理器 架构与编程(十一)鲲鹏生态软件架构 AND 硬件特定软件
80 0
|
传感器 Linux 芯片
那些只有芯片原厂才能做的驱动开发工作
那些只有芯片原厂才能做的驱动开发工作
|
存储 数据挖掘
带你读《天猫精灵:如何在互联网公司做硬件》——2.5 电子设计相关工具简介
带你读《天猫精灵:如何在互联网公司做硬件》——2.5 电子设计相关工具简介
|
Linux
海思3559万能平台搭建:串口编程
海思3559万能平台搭建:串口编程
300 0
海思3559万能平台搭建:串口编程
|
存储 人工智能 安全
鲲鹏系列五: DevKit开发全系列工具技术要点总结
摩尔定律发展趋势的逐渐放缓,让算力和性能陷入一系列发展瓶颈,市场对创新架构的需求日益加深,计算平台的创新之战一触即发
696 0
鲲鹏系列五: DevKit开发全系列工具技术要点总结
|
消息中间件 机器学习/深度学习 监控
研发思维03----嵌入式操作系统固件开发经验之经典
研发思维03----嵌入式操作系统固件开发经验之经典
897 0
研发思维03----嵌入式操作系统固件开发经验之经典
|
6月前
|
Ubuntu Linux 数据安全/隐私保护
针对性架构芯片soc环境傻瓜式教程
本文介绍了初步搭建VNC远程桌面,完成soc环境搭建第一步的方法。
240 2
针对性架构芯片soc环境傻瓜式教程
|
NoSQL IDE 物联网
RISC-V生态全景解析(八):平头哥玄铁CPU调试系统介绍
编辑语: 芯片开放社区(OCC)面向开发者推出RISC-V系列内容,通过多角度、全方位解读RISC-V,系统性梳理总结相关理论知识,构建RISC-V知识图谱,促进开发者对RISC-V生态全貌的了解。
2265 0
RISC-V生态全景解析(八):平头哥玄铁CPU调试系统介绍
|
开发工具 芯片
项目开发中ARM单片机芯片分类及选型
项目开发中ARM单片机芯片分类及选型
项目开发中ARM单片机芯片分类及选型