dsp 28377在线升级 实例总结

本文介绍了如何在DSP平台28377D上实现在线升级功能。升级过程包括升级程序和应用程序两部分,升级程序负责接收并烧录应用程序数据。在实际操作中,发现从升级程序跳转到应用程序时,会因调用IntiFlash()函数导致异常中断。解决方案是屏蔽此函数,确保升级流程顺利进行。
摘要由CSDN通过智能技术生成

使用dsp品台28377d来实现在线升级的功能。

 

方案 : 升级程序  +  应用程序

 

升级程序 : 主要的目的是将上位机发送过来的应用程序数据(ccs编译生成的.bin文件)烧写到指定位置,之后在跳转到应用程序执行。

 

应用程序 : 等待升级的程序

 

 

//-------------------------------------------------------------------------------------------------------------------------------------------------------------------

升级代码段 :

 

flash_programming_cpu01.c  
1 //#########################################################################  
2 // FILE: flash_programming_cpu01.c  
3 // TITLE: Flash Programming Example for F2837xD.  
4 //  
5 //! \addtogroup dual_example_list  
6 //! <h1> Flash Programming </h1>  
7 //!  
8 //! This example demonstrates F021 Flash API usage.  
9 //  
10 //#########################################################################  
11 // $TI Release: F2837xD Support Library v170 $  
12 // $Release Date: Mon Sep 21 16:52:10 CDT 2015 $  
13 // $Copyright: Copyright (C) 2013-2015 Texas Instruments Incorporated -  
14 // http://www.ti.com/ ALL RIGHTS RESERVED $  
15 //#########################################################################  
16  
17 #include "F28x_Project.h" // Device Headerfile and Examples Include<span style="white-space:pre">    </span>File  
18 #include "F2837xD_Ipc_drivers.h"  
19  
20 #include <string.h>  
21  
22 //Include Flash API example header file  
23 #include "flash_programming_c28.h"  
24  
25 #define ENTRYADDR 0x88000  
26  
27 extern void lightflash(void);  
28  
29 //*************************************************************************  
30 // FILE Flash API include file  
31 //*************************************************************************  
32 #include "F021_F2837xD_C28x.h"  
33  
34 //Data/Program Buffer used for testing the flash API functions  
35 #define WORDS_IN_FLASH_BUFFER 3608 // Programming data buffer, words  
36  
37 uint16 Buffer[WORDS_IN_FLASH_BUFFER + 1];  
38 uint32 *Buffer32 = (uint32 *)Buffer;  
39  
40 #pragma DATA_SECTION(pbuffer , "PDATASAVE");  
41 uint16 pbuffer[WORDS_IN_FLASH_BUFFER]= {  
42 #include "P_DATA.h"  
43 };  
44  
45 //*************************************************************************  
46 // Prototype of the functions used in this example  
47 //*************************************************************************  
48 void Example_CallFlashAPI(void);  
49  
50 //*************************************************************************  
51 // This is an example code demonstrating F021 Flash API usage.  
52 // This code is in Flash  
53 //*************************************************************************  
54 void main(void)  
55 {  
56 // Step 1. Initialize System Control:  
57 // Enable Peripheral Clocks  
58 // This example function is found in the F2837xD_SysCtrl.c file.  
59 InitSysCtrl();  
60  
61 IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);  
62  
63 InitGpio();  
64  
65 InitPieCtrl();  
66  
67 IER = 0x0000;  
68 IFR = 0x0000;  
69  
70 InitPieVectTable();  
71  
72 EINT; // Enable Global interrupt INTM  
73  
74 // Jump to RAM and call the Flash API functions  
75 Example_CallFlashAPI();  
76  
77 DELAY_US(100000);  
78  
79 static void (*APPEntry)(void);  
80  
81 APPEntry = (void (*)(void))(ENTRYADDR);  
82  
83 ESTOP0;  
84  
85 (*APPEntry)();  
86  
87 while(1);  
88  
89 }  
90  
91 //*************************************************************************  
92 // Example_CallFlashAPI  
93 //  
94 // This function will interface to the flash API.  
95 // Flash API functions used in this function are executed from RAM  
96 //*************************************************************************  
97 #pragma CODE_SECTION(Example_CallFlashAPI , "ramfuncs");  
98 void Example_CallFlashAPI(void)  
99 {  
100 uint32 u32Index = 0;  
101 uint16 i = 0;  
102  
103 Fapi_StatusType oReturnCheck;  
104 volatile Fapi_FlashStatusType oFlashStatus;  
105  
106 // Gain pump semaphore  
107 SeizeFlashPump();  
108  
109 EALLOW;  
110 Flash0EccRegs.ECC_ENABLE.bit.ENABLE = 0x0;  
111 EDIS;  
112  
113 EALLOW;  
114  
115 oReturnCheck = Fapi_initializeAPI(F021_CPU0_BASE_ADDRESS, 200);//for now keeping it out  
116  
117 if(oReturnCheck != Fapi_Status_Success)  
118 {  
119 // Check Flash API documentation for possible errors  
120 while(1);  
121 }  
122  
123 oReturnCheck = Fapi_setActiveFlashBank(Fapi_FlashBank0);  
124 if(oReturnCheck !=
  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DSP 28377是德州仪器(Texas Instruments)公司生产的一种数字信号处理器(Digital Signal Processor,DSP),用于处理计算机通过数字信号的方式进行数据处理和算法运算。 在线升级是指通过网络连接或其他通信方式,将DSP 28377的软件固件或硬件固件更新到最新版本。通过在线升级可以获取软件更新、修复bug、增加新功能等。 要进行DSP 28377在线升级,通常需要以下步骤: 1. 准备工作:确保具备与DSP 28377进行通信的硬件设备,如计算机、编程器等,并确保网络连接稳定。 2. 下载最新版本的固件:去德州仪器官方网站或其他可信的资源平台上,下载适用于DSP 28377的最新固件。确保下载的固件版本与DSP 28377的型号和硬件兼容。 3. 连接DSP 28377:将DSP 28377与计算机或编程器等设备进行连接,确保连接正常。通常可以通过USB接口或JTAG接口进行连接。 4. 打开升级工具:使用德州仪器提供的升级工具或第三方的编程软件,打开相应的升级工具。 5. 选择固件:在升级工具中,选择之前下载的最新固件文件。确保选择的固件与DSP 28377的型号和硬件兼容。 6. 开始升级:在升级工具中,点击开始升级按钮,启动升级过程。请务必确保在升级过程中不要断开通信或电源,以免损坏DSP 28377。 7. 等待完成:等待升级过程完成,通常会有进度条显示升级进度。升级完成后,会有提示信息显示升级成功。 通过以上步骤,就可以实现DSP 28377在线升级在线升级可以为用户提供更好的软件支持和功能升级,使DSP 28377保持最新的性能和功能。同时,也需要注意选择合适的固件和稳定的网络连接,以确保升级过程的顺利进行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值