【iCore1S 双核心板_ARM】例程十八:SD_IAP_FPGA实验——更新升级FPGA
实验现象及操作说明:
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();
MX_SDIO_SD_Init();
// MX_USB_DEVICE_Init();
MX_FATFS_Init(); /* USER CODE BEGIN 2 */
if(!KEY_INPUT){
MX_USB_DEVICE_Init();
while(){
LED_RED_ON;
HAL_Delay();
LED_RED_OFF;
HAL_Delay();
}
} if(BSP_SD_Init() != USBD_OK){
while(){
LED_RED_ON;
for(i = ;i < ;i++);
LED_RED_OFF;
for(i = ;i < ;i++);
}
}
HAL_Delay(); //¹ÒÔØSD¿¨
res = f_mount(&fatfs,"0:",);
if(res != RES_OK){ //¹ÒÔØÊ§°Ü£¬Â̵ƿìÉÁ
while(){
LED_GREEN_ON;
for(i = ;i < ;i++);
LED_GREEN_OFF;
for(i = ;i < ;i++);
}
}
res = f_open(&fil,"0:/system/sdram.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/1dFjJs5N 密码:kylw

【iCore1S 双核心板_ARM】例程十八:SD_IAP_FPGA实验——更新升级FPGA的更多相关文章
- 【iCore3 双核心板】例程十八:USB_VCP实验——虚拟串口
实验指导书及代码包下载: http://pan.baidu.com/s/1c1erqIc iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- 【iCore1S 双核心板_ARM】例程八:ADC实验——电源监控
实验原理: STM32内部集成三个12位ADC,iCore1S的所有电源经过 电阻分压或者直接接入STM32的ADC的输出通道内,输入电流 经过高端电流检测芯片ZXCT1009F输入到ADC的输入通道 ...
- 【iCore1S 双核心板_ARM】例程五:IWDG看门狗实验——复位ARM
实验原理: STM32内部包含独立看门狗,通过看门狗可以监控程序运行,程序错误 时,未在规定时间喂狗,自动复位ARM.本实验通过按键按下,停止喂狗, 制造程序运行 错误,从而产生复位 . 实验现象: ...
- 【iCore1S 双核心板_ARM】例程六:WWDG看门狗实验——复位ARM
实验原理: STM32内部包含窗口看门狗,通过看门狗可以监控程序运行,程序错误 时,未在规定时间喂狗,自动复位ARM.本实验通过按键按下,停止喂狗, 制造程序运行 错误,从而产生复位 . 实验现象: ...
- 【iCore1S 双核心板_ARM】例程七:通用定时器实验——定时点亮LED
实验原理: 通过STM32的三个GPIO口来驱动LED灯的三个通道:设定GPIO为推挽 输出模式,采用灌电流的方式与LED连接,输出高电平LED灭,输出低电平 LED亮,通过通用定时器TIM3实现50 ...
- 【iCore1S 双核心板_ARM】例程九:DAC实验——输出直流电压
实验原理: STM32内部集成12位DAC,可以配置成12位或8位,DAC具有两个独立转换通道, 在双DAC模式下,DA转换可被配置成独立模式或工作模式,iCore1S中DAC参考电压为 2.5V.本 ...
- 【iCore4 双核心板_ARM】例程二十九:SD_IAP_FPGA实验——更新升级FPGA
实验现象及操作说明: 1.烧写程序成功,绿色ARM·LED灯点亮,三色FPGA·LED灯循环点亮,烧写失败,如果挂载SD卡失败,红灯快闪,如果打开文件失败,蓝灯快闪,读取文件指针移动失败,白灯点亮,升 ...
- 【iCore1S 双核心板_ARM】例程十五:USB_HID实验——双向数据传输
实验方法: 1.USB_HID协议免驱动,此例程不需要驱. 2.将跳线冒跳至USB_OTG,通过Micro USB 线将iCore1S USB-OTG接口与电脑相连. 3.打开上位机软件usb_hid ...
- 【iCore1S 双核心板_ARM】例程二十:UART_IAP_ARM实验——更新升级STM32
实验现象及操作说明: 1.本例程共有两个代码包,APP和IAP,IAP程序功能实现将APP程序升级至STM32中. 2.直接上电或烧写程序将执行升级的APP应用程序. BIN升级文件产生方法: 1.编 ...
随机推荐
- BZOJ.4199.[NOI2015]品酒大会(后缀自动机 树形DP)
BZOJ 洛谷 后缀数组做法. 洛谷上SAM比SA慢...BZOJ SAM却能快近一倍... 只考虑求极长相同子串,即所有后缀之间的LCP. 而后缀的LCP在后缀树的LCA处.同差异这道题,在每个点处 ...
- 2017-9-24-Linux移植:ubuntu server 16.04无法联网&无法apt-get update解决
无法上网!!!不能忍.. 现象:ifconfig 毛都没有,想找一下ip都找不到. ifconfig –a 可以列出所有网卡设备,确认VM VirtualBox网卡开对了,已经给到了虚拟机. 编辑/e ...
- 英语口语练习系列-C13-聚会
词汇 音频 1. apartment [əˈpɑ:tmənt] n. 公寓 a big / small apartment 一个大的/小的公寓 in an apartment 在公寓 2. arm [ ...
- ES6快速入门(二)数据结构
ES6快速入门 一.解构 1. 对象解构 let person = { name: 'Tang', age: 28 }; //必须同名,必须初始化 let {name, age} = person; ...
- 如何避免Android程序的ANR?
In Android, the system guards against applications that are insufficiently responsive for a period o ...
- [P1005][NOIP2007] 矩阵取数游戏 (DP+高精)
我不会高精…… 也不会DP…… 这道题即考高精又考DP…… 我要死了 给一个不是高精的代码(当然不能满分) #include<cstdio> #include<iostream> ...
- pythonweb服务器编程(四)
Web动态服务器-1 #coding=utf-8 import socket import sys from multiprocessing import Process import re clas ...
- Eclipse 安装Maven插件m2eclipse
Eclipse->Help->Install New Software->Work with右边Add按钮->Name字段中输入m2e,Location字段中输入http:// ...
- Python直接控制鼠标键盘
Python直接控制鼠标键盘 之前因为期末的原因已经很久没写博客了,今天博主发现一个好玩的模块PyAutoGUI,借助它可以使用Python脚本直接控制键盘鼠标,感觉可以解决很多无聊的机械运动.这里记 ...
- mysql连接查询(A表某字段 like B表字段)
假设有A.B两表 A表中有个字段column_aa B表中有个字段column_bb 如果需要查询出B表中字段column_bb like A表中column_aa字段的纪录,可以使用如下语句 sel ...