实验现象及操作说明:

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 = 0;unsigned char buffer[1024];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(1){LED_RED_ON;HAL_Delay(300);LED_RED_OFF;HAL_Delay(300);}}if(BSP_SD_Init() != MSD_OK){while(1){LED_RED_ON;for(i = 0;i < 3000000;i ++);LED_RED_OFF;for(i = 0;i < 3000000;i ++);    }}HAL_Delay(500);res = f_mount(&fatfs,"0",1);if(res != RES_OK){while(1){LED_RED_ON;for(i = 0;i < 3000000;i ++);LED_RED_OFF;for(i = 0;i < 3000000;i ++);    }}res = f_open(&fil,"0:/system/sram.rbf",FA_READ);              if(res != RES_OK){while(1){LED_BLUE_ON;for(i = 0;i < 3000000;i++);LED_BLUE_OFF;for(i = 0;i < 3000000;i++);}}    res = f_lseek(&fil,0);                                          if(res != RES_OK){//°×É«
        LED_RED_ON;LED_BLUE_ON;LED_GREEN_ON;while(1){}}//开始升级FPGA
    NCONFIG_OFF;DCLK_OFF;for(i = 0; i < 5000; i++);if(NSTATUS == 1){LED_RED_ON;return 0;       }for(i = 0;i < 40;i++);NCONFIG_ON;for(i = 0; i < 40; i++);while(ncounter < fil.fsize){res = f_read(&fil,buffer,1024,&counter);                     if(res != RES_OK){while(1){LED_RED_ON;for(i = 0;i < 10000000;i++);LED_RED_OFF;for(i = 0;i < 10000000;i++);}}for(k = 0; k < counter; k++){for(i = 0; i < 8; i++){if(buffer[k]&0x01)DATA0_ON;else DATA0_OFF;DCLK_ON;buffer[k] >>= 1;DCLK_OFF;}ncounter++;}}    if(CONFIG_DONE == 1){LED_GREEN_ON;}else {LED_BLUE_ON;}for(i = 0; i < 40; i++){DCLK_ON;for(i = 0; i < 800; i++);
         DCLK_OFF;for(i = 0; i < 800; i++);
    }    /* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */}

源代码下载链接:

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

iCore4链接:

转载于:https://www.cnblogs.com/xiaomagee/p/7613732.html

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

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

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

  2. 【代码升级】【iCore3 双核心板】例程二十八:FSMC实验——读写FPGA

    实验指导书及代码包下载: 链接:https://pan.baidu.com/s/1i6WL51V 密码:1mk4 iCore3 购买链接: https://item.taobao.com/item.h ...

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

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

  4. 【iCore4 双核心板_ARM】例程二十:LWIP_TCP_CLIENT实验——以太网数据传输

    实验现象: 核心代码: int main(void) { system_clock.initialize(); //ϵͳʱÖÓ³õʼ»¯led.initialize(); //LED³õʼ» ...

  5. 【iCore4 双核心板_ARM】例程三十八:DSP MATH库测试

    实验现象: 核心代码: int main(void) {/* USER CODE BEGIN 1 */int i,j;int res;float time[2];static int error_fl ...

  6. 【iCore4 双核心板_ARM】例程二十三:LWIP_HTTP实验——网页服务器

    实验现象: 核心代码: int main(void) { system_clock.initialize(); led.initialize(); adc.initialize(); delay.in ...

  7. 【iCore4 双核心板_ARM】例程十七:USB_MSC实验——读/写U盘(大容量存储器)

    实验方法: 1.将跳线冒跳至USB_UART,通过Micro USB 线将iCore4 USB-UART接口与电脑相连. 2.打开PUTTY软件. 3.通过读U盘转接线将U盘(或者读卡器)与iCore ...

  8. 【iCore4 双核心板_ARM】例程五:SYSTICK定时器 实验——定时点亮LED

    实验原理: 通过STM32的三个GPIO口驱动三色LED的三个通道,设定GPIO为推挽输出模式,采 用灌电流方式与LED连接,输出高电平LED灭,输出低电平LED亮,通过系统定时器实现 1s定时,每秒 ...

  9. 【iCore4 双核心板_ARM】例程十一:DMA实验——存储器到存储器的传输

    实验原理: DAM(直接存储器访问)传输不需要占用CPU,可以在存储器至存储器实现高速的数据 传输.本实验采用DAM2控制器的数据流0,选用通道0进行数据传输.通过LED的颜色来 判断传输是否成功. ...

  10. 【iCore4 双核心板_ARM】例程一:ARM驱动三色LED

    实验原理: 通过STM32的三个GPIO驱动一个三色LED,引脚PB2接红色LED(ARM_LEDR), 引脚PA9接蓝色LED(ARM_LEDB),引脚PA10接绿色LED(ARM_LEDG),   ...

最新文章

  1. 当你舌吻十秒后,下面就……
  2. keras实现 vgg16
  3. LinkedList集合
  4. 联想扬天T4900v开启VT-x方法
  5. Bootstrap的学习
  6. 大锅菜机器人_炒菜机或者炒菜机器人有好用的吗 - 玩主论坛
  7. 复练--软考高级-综合布线部分
  8. ES5(三)——数组新增函数every()、some()、map()、foreach()、filter()和reduce()汇总
  9. [poj1410]Intersection
  10. 面向对象思想的设计原则概述
  11. mysql 大文件导入工具_BigDump:导入超大mysql数据库文件工具
  12. linux源码头文件_您必须在2020年尝试的十大最佳Linux码头
  13. 本特利电涡流传感器330103-00-04-90-01-CN
  14. 2D制图实战之仿QQ截图工具
  15. 51单片机300个proteus仿真实例下载
  16. WIFI远程控制实例分享,喜欢你就来!
  17. 3.2nbsp;系统分析之正反馈
  18. 百度糯米 android,百度糯米安卓版|百度糯米for android官方手机版 6.7.1 - 系统天堂...
  19. python 基于CQL操作neo4j数据库
  20. 2018年如何挣钱 ?

热门文章

  1. IS-IS详解(十一)——IS-IS 区域间防路由环路和次优路径
  2. 路由器AP、路由、桥接模式有什么区别
  3. Docker是什么,有什么用?一看就明白
  4. 深度强化学习DQN(Deep Q Network)原理及例子:如何解决迷宫问题,附源码
  5. C#等同于正则表达式的写法
  6. fasfdfs安装记录(CentOS7)
  7. Android开发周报:Android 8.0开始推送、微店插件化实践
  8. 《奇点来临》——阿西莫夫三大定律
  9. Riemann映射定理
  10. 超级易使用的jquery视频背景插件Vide