实验现象及操作说明:

1、烧写程序成功,绿色ARM·LED灯点亮,三色FPGA·LED灯循环点亮,烧写失败,如果挂载SD卡失败,红灯快闪,如果打开文件失败,蓝灯快闪,读取文件指针移动失败,白灯点亮,升级失败,红灯慢闪。

2、上电时按着ARM·KEY,进入虚拟U盘模式,计算机将出现一个磁盘,可将升级文件拷入SD卡。

核心代码:

int main(void)
{ /* USER CODE BEGIN 1 */
int i;
int k;
unsigned int counter;
unsigned long int ncounter = ;
unsigned char buffer[];
FIL fil;
FATFS fatfs;
static FRESULT res;
/* USER CODE END 1 */ /* MCU Configuration----------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */
SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */
MX_GPIO_Init(); /* USER CODE BEGIN 2 */
if(ARM_KEY_STATE == KEY_DOWN){
MX_USB_DEVICE_Init();
while(){
LED_RED_ON;
HAL_Delay();
LED_RED_OFF;
HAL_Delay();
}
} if(BSP_SD_Init() != MSD_OK){ while(){
LED_RED_ON;
for(i = ;i < ;i ++);
LED_RED_OFF;
for(i = ;i < ;i ++);
}
}
HAL_Delay(); res = f_mount(&fatfs,"",);
if(res != RES_OK){
while(){
LED_RED_ON;
for(i = ;i < ;i ++);
LED_RED_OFF;
for(i = ;i < ;i ++);
}
} res = f_open(&fil,"0:/system/sram.rbf",FA_READ);
if(res != RES_OK){ while(){
LED_BLUE_ON;
for(i = ;i < ;i++);
LED_BLUE_OFF;
for(i = ;i < ;i++);
}
} res = f_lseek(&fil,);
if(res != RES_OK){
//°×É«
LED_RED_ON;
LED_BLUE_ON;
LED_GREEN_ON;
while(){
}
} //开始升级FPGA
NCONFIG_OFF;
DCLK_OFF;
for(i = ; i < ; i++);
if(NSTATUS == )
{
LED_RED_ON;
return ;
}
for(i = ;i < ;i++);
NCONFIG_ON;
for(i = ; i < ; i++); while(ncounter < fil.fsize)
{
res = f_read(&fil,buffer,,&counter);
if(res != RES_OK){ while(){
LED_RED_ON;
for(i = ;i < ;i++);
LED_RED_OFF;
for(i = ;i < ;i++);
}
}
for(k = ; k < counter; k++)
{
for(i = ; i < ; i++)
{
if(buffer[k]&0x01)DATA0_ON;
else DATA0_OFF;
DCLK_ON;
buffer[k] >>= ;
DCLK_OFF;
}
ncounter++;
}
}
if(CONFIG_DONE == ){
LED_GREEN_ON;
}else {
LED_BLUE_ON;
} for(i = ; i < ; i++)
{
DCLK_ON;
for(i = ; i < ; i++);
DCLK_OFF;
for(i = ; i < ; i++);
} /* USER CODE END 2 */ /* Infinite loop */
/* USER CODE BEGIN WHILE */ while ()
{
/* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ }
/* USER CODE END 3 */ }

源代码下载链接:

链接:http://pan.baidu.com/s/1skMtdDV 密码:5bbq

iCore4链接:

【iCore4 双核心板_ARM】例程二十九:SD_IAP_FPGA实验——更新升级FPGA的更多相关文章

  1. 【iCore3 双核心板】例程三十:U_DISK_IAP_FPGA实验——更新升级FPGA

    实验指导书及代码包下载: http://pan.baidu.com/s/1jH1TiKY iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  2. 【iCore3 双核心板】例程三十一:HTTP_IAP_FPGA实验——更新升级FPGA

    实验指导书及代码包下载: http://pan.baidu.com/s/1gdYnQGN iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  3. 【iCore3 双核心板】例程二十:LAN_TCPC实验——以太网数据传输

    实验指导书及代码包下载: http://pan.baidu.com/s/1pJY5uXH iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  4. 【iCore3 双核心板】例程二十九:SD_IAP_FPGA实验——更新升级FPGA

    实验指导书及代码包下载: http://pan.baidu.com/s/1o7h158m iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  5. 【iCore3 双核心板】例程三十三:SD_IAP_ARM实验——更新升级STM32

    实验指导书及代码包下载: http://pan.baidu.com/s/1jHmvQfk iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  6. 【iCore1S 双核心板_ARM】例程二十:UART_IAP_ARM实验——更新升级STM32

    实验现象及操作说明: 1.本例程共有两个代码包,APP和IAP,IAP程序功能实现将APP程序升级至STM32中. 2.直接上电或烧写程序将执行升级的APP应用程序. BIN升级文件产生方法: 1.编 ...

  7. 【iCore4 双核心板_ARM】例程三十:U_DISK_IAP_FPGA实验——更新升级FPGA

    实验现象及操作说明: 1.将升级文件拷入U盘system文件夹中,通过U盘转接线将U盘连接到iCore4 USB OTG接口. 2.烧写程序成功,绿色ARM·LED灯点亮,三色FPGA·LED灯循环点 ...

  8. 【iCore3 双核心板】例程二十二:LAN_UDP实验——以太网数据传输

    实验指导书及代码包下载: http://pan.baidu.com/s/1kTPlJMJ iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  9. 【iCore3 双核心板】例程二十四:LAN_DHCP实验——动态分配IP地址

    实验指导书及代码包下载: http://pan.baidu.com/s/1i4vMMv7 iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  10. 【iCore3 双核心板】例程二十五:LAN_DNS实验——域名解析

    实验指导书及代码包下载: http://pan.baidu.com/s/1jHlBpqe iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

随机推荐

  1. Maven使用lib下的包

    Maven使用中央仓库的同时,使用lib下的包 pom.xml添加如下配置 <build> <plugins> <plugin> <artifactId> ...

  2. [MySQL] MySQL联表查询的执行顺序优化查询

    SELECT t4.orgName, t3.projectName, t3.Partner, t1.type, COUNT(DISTINCT t1.imei) AS count FROM `t_tem ...

  3. HDU.4700.Flow(构造 最小割树)

    题目链接 \(Description\) 给定\(n\)以及\(n\)个点任意两点之间的最大流,求一张无向图满足给定条件. \(n\leq100\). \(Solution\) 有些类似最小割树. 我 ...

  4. Idea创建一个Springboot单模块项目

    1.打开IDEA,创建新项目,选择Spring Initializr,选择SDK为你的java版本. 2.点击下一步,输入Artifact 3.点击下一步,选择web 4.finish 5.完成后id ...

  5. quartz详解2:quartz由浅入深

    http://blog.itpub.net/11627468/viewspace-1763498/ 一.quartz核心概念 先来看一张图:     scheduler 任务调度器 trigger 触 ...

  6. python之进程和线程3

    1 multiprocessing模块 (1.)直接导入 from multiprocessing import Process import os import time def info(name ...

  7. Vue(十八)Element UI

    Elment UI 1. 简介 Element UI是饿了么团队提供的一套基于Vue2.0的组件库,可以快速搭建网站,提高开发效率 ElementUI PC端 MintUI 移动端 [官网](http ...

  8. python3.5环境配置

    前言: python3应该是python的趋势所在,当然目前争议也比较大,这篇随笔的主要目的是记录在linux6.4下搭建python3环境的过程 以及碰到的问题和解决过程. 另外,如果本机安装了py ...

  9. JAVA自学笔记24

    JAVA自学笔记24 1.能使用同步代码块就使用同步代码块,除非锁对象是this,就可以考虑使用同步方法.静态方法的锁是类的字节码对象. 2.JDK5新特性 1)接口Lock void Lock()/ ...

  10. Mac添加自定义启动图标到Launchpad

    1.使用Automator进行录制 2.选择Application 3.使用运行shell脚本 4.保存在应用程序 5.效果 参考: https://apple.stackexchange.com/q ...