admin 发表于 2021-1-5 14:27:21

Altera Cyclone V SoC FPGA EMMC烧写方案--基于AC540

背景介绍
Altera的Cyclone V SoC FPGA芯片,片上集成了高性能的双核ARM Cortex-A9处理器和通用的FPGA逻辑,两者以极高带宽的片上通信总线进行通信,能够解决很多行业中同时需要ARM和FPGA进行高效数据交互的应用场景。

笔者在使用该芯片的时候,遇到了一个令人头疼的问题,就是该芯片中的ARM支持Nand Flash、QSPI、EMMC/SD、FPGA方式启动。
Nand FLASH:而在实际使用中,由于芯片的管脚复用缘故,Nand FLASH所使用的管脚,与以太网冲突,因此为了使用双以太网,一种取舍方案是不使用Nand FLASH进行启动,而将这些管脚用于以太网接口。这样就能够支持双网卡了。
QSPI FLASH:QSPI FLASH容量小,速度慢,用来安装Linux系统,容量捉襟见肘,很难满足需要,一般用在不需要运行Linux系统的应用中,例如运行裸机程序。
FPGA方式:此种方式需要在FPGA侧提供一个存储器来存储Linux的各种文件,对于容量,速度要求依然很高,该方式还没进行进一步的探索,但是可以想象,这种方式一定是所有启动方式里面用起来门槛最高,或者最麻烦的。
EMMC/SD:这种方式用起来有其天然的便利性,SD卡可以在电脑上进行各种读写操作,进行烧录,所以在开发阶段非常方便,需要修改文件的时候只需要把SD卡从板上取下,在电脑上修改好之后再放回板子上就能运行。而EMMC存储器和SD卡使用同一个控制器,所以同一时刻,用了EMMC就没法用SD卡,用了SD卡就没法用EMMC。
不过办法总是有的,不能同时用,总能分时用吧。

解决思路,使用SD卡启动板子,把Uboot跑起来,然后使用NFS方式启动Linux,这样,由于使用NFS方式启动后不需要再从SD卡中读写任何的文件,所以SD卡控制器就空闲出来了,此时吧SD卡卸载掉,接入EMMC,就能实现在Linux系统下对EMMC存储器进行读写了,此时就可以把需要烧写的文件通过各种方式烧写进EMMC存储器了。要完成这个操作,需要满足以下几个条件:
开发板支持网口
开发板和Ubuntu系统能够进行正常的网络通信。
Ubuntu系统配置好tftp功能
Ubuntu系统配置好nfs的支持
ubuntu中tftp路径和nfs路径下存放了对应的文件

1、配置Ubuntu系统下的tftp支持
2、配置Ubuntu系统下的nfs支持
3、在Ubuntu系统中准备所有使用NFS系统启动所需要的文件(FPGA配置文件、设备树、rootfs)
4、设置SOC芯片的Uboot功能中的启动命令

1、配置Ubuntu系统下的tftp支持
在Ubuntu终端中输入sudo apt-get install xinetd来安装xinet
输入sudo apt-get install tftp tftpd完成tftp服务器的安装
使用文本编辑器新建tftp配置文件 vi /etc/xinet.d/tftp 并写入如下配置信息

service tftp
{
      socket_type = dgram
      protocol = udp
      wait = yes
      user = root
      server = /usr/sbin/in.tftpd
      server_args = -s /var/tftpboot/
      disable = no
      per_source = 11
      cps = 100 2
      flags = IPv4
}


server_args 设置的/var/tftpboot是tftp服务器的目录,需要传输的数据就存在这个路径下。


页: [1]
查看完整版本: Altera Cyclone V SoC FPGA EMMC烧写方案--基于AC540