为什么写该文
公司有款产品采用FPGA做处理器,需要 远程升级 —— 不使用烧写器,通过网络对其升级。领导提议既然程序是存储在外部存储器上的,那么能否通过EPCS4与ARM SPI 总线通信连接刷新FPGA程序呢?于是就有了下文的实践。
要实现该功能有几种方式:
1. 解析编译出的FPGA下载文件jic、pof,将解析后的内容烧录到EPCS4中。但是否这两种文件格式公开存储结构呢?芯片厂商是否对此保密?
2. 直接读取EPCS4的程序,烧录到另一块EPCS4中。但是否读取的EPCS4内容以及根据FPGA序列号做了加密呢?
权衡任务安排时间,选择第二种方案,毕竟就算第一种方案可行,也需要设计第二方案的读写操作。 可喜的是这次逆向工程就这么搞定了。
具体实现
ARM用IO模拟SPI总线烧FPGA配置芯片EPCS4完成软件升级,在TQ2440上测试,工程可以通过下面的
github连接获得。该工程与TQ2440平台定制,在其他平台未必能运行,建议只看 BitOpt.h,EPCS4.c,EPCSxx.h,mainboot.c
几个文件,其他无关代码不必多看。
升级步骤:
1、 一块已经用下载器烧录FPGA程序的EPCS4与ARM连接,ARM读出EPCS4“所有扇区”数据保存到NandFlash中,然后拷贝到电脑备份。
2、 另一块待烧录的FPGA与ARM连接,将刚读出的数据烧写进去。
读取的数据是最终执行的二进制Bin文件,因为Altera开发环境所生成的jic、pof与最终EPCS4内的内容不一样(除非找到生成Bin的方法)。之所以读取“所有扇区”数据是因为不知道实际Bin文件大小,干脆全部读出。EPCS4存储空间是512KB。IO模拟SPI时序的方式速度有限,读/写512KB各需要40S,用SPI总线速度会快不少。该方法已经在2块FPGA里运行没问题,证明Bin文件并没有在烧写过程中绑定FPGA芯片序列号。
演示:
启动后按“5”进入EPCS4测试代码。
按“N”将Bin文件从Nand拷贝到SDRAM的0x30200000,长度512KB。
按“W”将0x30200000的数据烧录到EPCS4中,写入后计算写入前数据校验码得0x00000039,然后再读出EPCS4中“所有”数据,计算读出内容的校验码也是0x00000039,比较校验移植返回“Success!!!”,否则返回“Check sum Error!!!”。
硬件连接:
升级过程中FPGA需要掉电,或者将FPGA与EPCSxx连接的引脚断开,否则3个设备连接到共用信号线无法通信。
EPCS4驱动编写、移植注意事项:
1、 演示代码驱动部分EPCS4.c、EPCSxx.h采用的是IO模拟SPI总线协议,不能直接使用,需要看的是各函数实现的逻辑,照搬到WinCE上。该代码可以直接兼容EPCS4、EPCS16、EPCS64。对于EPCS1、EPCS128只要修改页面大小、扇区大小相关宏。EPCS1、EPCS128不支持epcs_read_silicon_id(具体查看EPCSxx芯片手册)。
2、 Mainboot.c文件只需要看3个函数:epcs4_write_file()、epcs4_read_file()、check_sum(),其中读写函数必须根据具体芯片容量而定,可以通过读取芯片ID而获得芯片类型,动态修改烧写代码容量。
3、 SPI时序CLK脉冲宽度“能宽不能窄”,芯片手册建议脉冲跨度大于20nS,演示代码中IO模拟SPI速率很低,脉冲宽度3uS,所以未加任何延时。据说2440SPI总线速率能达到20MB,所以有必要适当添加延时,或配置脉冲宽度,
4、 Read Status命令可以再任何时候发送,返回0表示处于空闲状态(具体状态意义查看芯片手册),发送Read Status以外的命令必须确定芯片处于空闲状态,否则命令被抛弃。
5、 “每次”发送写、擦除命令前必须发送写使能命令
6、 发送“连续”读、写字节命令最大长度只能在一个Page范围之内,读写到Page末地址若还有数据请求,多余的部分被芯片抛弃。
7、 不允许在一个CS周期内发送两个命令
正确的命令是:CS拉低——发送命令1——CS拉高;CS拉低——发送命令2——CS拉高;
不允许:CS拉低——发送命令1——发送命令2——CS拉高;
建议移植代码测试步骤
1、读取芯片ID号(silicon ID或Device Identification)
2、如果读取错误的话用示波表查看时序,保证CLK脉冲周期大于40ns,以及MOSI发送的内容正确(Read silicon ID——0xAB或Read silicon ID——0x 9F)。
3、读取扇区内容。
4、擦除、写入(写入前必须先擦除)所有扇区,并读出写入数据。
5、读取EPCSxx数据在NandFlash里建立bin文件,最后烧写到EPCSxx能运行
6、与节点管理器添加更新FPGA通信协议
关键字:ARM 在线升级 逆向工程
引用地址:
ARM在线升级FPGA程序方法(逆向工程)
推荐阅读最新更新时间:2024-03-16 14:49
SyncFlash存储器在ARM嵌入式系统中的应用
随着嵌入式处理器的迅速发展,32位RISC处理器的应用越来越广泛,许多基于ARM核的微处理器都集成了SDRAM控制器。应用系统中一般都是采用SDRAM存储器作内存、NOR Flash作程序存储器。这种应用存在着缺点,而本文介绍的采用SyncFlash(即同步Flash存储器)设计嵌入系统的方法能很好地克服这些不足。
SyncFlash存储器 在嵌入式应用系统中用作程序存储器的器件一般是EPROM、NOR Flash、EEPROM等。大家都比较熟悉Flash 存储器,应用也很多,而SyncFlash存储器相对较陌生,目前应用也较少。SyncFlash存储器就是在NOR Flash的基础上增加了同步接口(所有信号均在时钟上升沿锁存
[单片机]
CDMA网络智能车载导航终端的优化设计
结合gpsOne定位技术、CDMA通信技术和GIS技术的智能车载终端,可与控制中心配合,实现对车辆的导航、报警和监控等多种应用。gpsOne是一种混合定位技术,它综合了GPS和无线网络的优势,具有适用性广、精度高、定位时间短和成本低等特点。 本文提出智能车载导航仪的优化设计方案,剖析gpsOne的定位原理,探讨系统开发中的多项关键技术,并给出一个基于ARM和Linux平台的工程实例。 1 概述 1.1 定位业务的产生背景 随着移动通信的发展,电信服务商与制造商除了语音传输外,纷纷推出各种增值数据业务与设备,以寻找新的收入来源。消费者也希望手机除了通话、收发邮件、上网外,还能有其他功能。国家基础地理信息中心的统
[模拟电子]
Arm更新Neoverse路线图,公布V1和N2平台
随着更多云厂商越来越需要进行针对系统的专门优化,定制化的芯片设计开始变成普遍流行,基础设施芯片市场变得越来越有趣,玩家越来越多。今年以来,包括印度电子和信息技术部MeitY,法国芯片初创企业 SiPearl,韩国电子通信研究所 ETRI,都宣布开发基于Neoverse V1的产品。 国内厂商奋起直追 包括腾讯和阿里在内的一批国内系统厂商,正在加速构建基于Arm的服务器的芯片。 腾讯专项测试技术中心总监黄闻欣(Victor Huang)表示:“2020年,腾讯和Arm正式签署了一份合作协议,希望通过合作加速Arm Neoverse技术的测评和适配。后面我们通过TencentBench测试框架发现,得益于更多可扩展的CPU
[嵌入式]
基于ARM的LCD触摸屏系统设计
引言 随着嵌入式系统技术的飞速发展,工业设备产品也越来越现代化,普遍要求可视化操作。LCD触摸屏低耗能.散热小,成本低,纤薄轻巧,外形尺寸小,安装容易。使用LCD触摸屏作为工业设备的输入输出设备既能达到可视化的要求,方便现场操作,又能降低产品的成本。而在产品的整体设计过程中,人机交互界面的设计往往占据着很大一部分工作,这样,不但极大地增加了产品的开发成本瓶且延长了产品的上市周期。本文设计的基于S3C44BOX的人机交互界面是一种可定制、简单易用、性能优良的通用型人机交互界面,能很好地解决上述问题。 1 系统结构 系统主要包括三个部分,分别为PC机、S3C4480X微处理器和LCD触摸屏模块。系统结构框图如图1所示
[家用电子]
ARM笔记:虚拟机Linux系统和开发板通过USB转串口连接的方法
一、让虚拟Linux系统直接和物理串口相连 1. 启动虚拟机,进入Linux系统,点击虚拟机菜单栏的【虚拟机】选项, 接着点击【移除设备】接着选择【prolific USB-serial Controller】 选择【与 主机 连接或断开连接】 通过以上操作可以让USB转串口设备与主机断开连接,即让USB转串口设备直接和虚拟机内的Linux系统直接连接,通过以上操作,Linux系统内/dev目录下会出现一个ttyUSB0的字符设备文件,接着我们在minicom串口通信工具中配置,具体如下: 选择【Serial port setup】设置串口 输入【a】选择串口驱动,写入刚才出现的串口控制终端文件/dev/ttyU
[单片机]
安谋科技稳步焕新,多领域协同发力
2022年5月6日,安谋科技(中国)有限公司(以下简称“安谋科技”)迎来新任管理层。新任联席CEO刘仁辰和陈恂在员工线上大会宣布,将全面接手公司运营。这标志着,安谋科技一场以“换帅”为主线且历时两年之久的管理权纷争终于尘埃落定。 安谋科技在发布于其官方微信号的公开信中表示:在新领导层的带领下,将一如既往地作为一家独立运营的公司,支持中国半导体产业的发展,在保持安谋科技业务模式不变(包括但不限于继续开展Arm IP业务和大力发展自有知识产权IP)的基础上,进一步发展与客户的良性关系,深化与各合作伙伴的健康合作,持续加大投入丰富Arm中国合作伙伴生态系统。 安谋科技近期持续露出新动态,不仅官方渠道恢复发声,公司合作动态更是高频
[半导体设计/制造]
autossh 移植到arm
一、环境介绍 1.1 宿主机 Ubuntu 1404 32 位 1.2 嵌入式平台 ATMEL AT91SAM9X25 1.3 交叉工具链 arm-none-linux-gnueabi autossh源码下载地址 二、交叉编译 tar xvf autossh-1.4b.tgz cd autossh-1.4b/ ./configure --prefix=$PWD/tmp --host=arm-none-linux-gnueabi --build=i686-linux make make install 执行完安装之后,将安装目录的可执行文件拷贝到目标板即可
[单片机]
ARM/DSP双核系统的通信接口设计
引 言 嵌入式系统的核心是嵌入式微处理器和嵌入式操作系统。早期的嵌入式系统硬件核心是各种类型的8位和16位单片机;而近年来32位处理器以其高性能、低价格,得到了广泛的应用。近年来,又出现了另一类数据密集处理型芯片DSP。DSP由于其特殊的结构、专门的硬件乘法器和特殊的指令,使其能快速地实现各种数字信号处理及满足各种高实时性要求。随着现代嵌入式系统的复杂度越来越高,操作系统已成为嵌入式系统不可缺少的部分。免费的嵌入式操作系统,如Linux等,随着自身不断的改善,得到了飞速的发展。Linux是一个免费的、强大的、可信赖的、具有可伸缩性与扩充性的操作系统。Linux实现了许多现代化操作系统的理论,并且支持完整的硬件驱动程序、网络通
[嵌入式]