资源简介
28335二阶bootloader,可以实现远程应用升级, 非常好用

代码片段和文件信息
/*
* BootLoader.c
*
* Created on: 2017年4月19日
* Author: admin
*/
#include “BootLoader.h“
bootloader_data Boot_ID_info;
u8 data_temp[DATA_LEN*2];
Uint16 write_temp[DATA_LEN];
Uint16 read_temp[READ_MAX];
u8 can_cmd = (u8 )0x00;//ID的bit0~bit3位为命令码
u32 read_addr = (u32)0x00;//读取数据起始地址
u32 read_len = (u32)0x00;//读取数据长度
u16 crc_data = (u16)0x00;
u16 can_addr = (u16)0x00;;//ID的bit4~bit15位为节点地址
u32 start_addr = (u32)0x00;//每一包数据的起始地址
u32 data_size = (u32)0x00;//数据包的大小
u32 data_index = (u32)0x00;//数据指针
u32 FlashSize = (u32)0x00;
uint32_t exe_type = (u32)0x00;
u8 file_type = File_None;
Uint16 app_check[3] = {0xFFFF0xFFFF0xF5F4};
Boot_CMD_LIST cmd_list =
{
.Read = 0x0A //读取flash数据
.Erase = 0x00 //擦除APP区域数据
.Write = 0x02 //以多字节形式写数据
.Check = 0x03 //检测节点是否在线,同时返回固件信息
.Excute = 0x05 //执行固件
.CmdFaild = 0x09 //命令执行失败
.WriteInfo = 0x01 //设置多字节写数据相关参数(写起始地址数据量)
.CmdSuccess = 0x08 //命令执行成功
.SetBaudRate = 0x04 //设置节点波特率
};
Device_INFO DEVICE_INFO =
{
.FW_Version.bits.Version = 31
.FW_Version.bits.date = 31
.FW_Version.bits.month = 12
.FW_Version.bits.year = 2017
.Device_addr.bits.reserve = 0x00
.FW_TYPE.bits.FW_type = CAN_BL_BOOT
.FW_TYPE.bits.Chip_Value = TMS320F28335
.Device_addr.bits.Device_addr = DEVICE_ADDR
};
//关于全局中断相关操作主要是为了和STM32保持一致便于一致代码
void __disable_irq(void)
{
//关闭全局中断
DINT;
DRTM;
}
void __enable_irq(void)
{
//打开全局中断
EINT;
ERTM;
}
void __set_PRIMASK(u8 state)
{
if(state == 1)
{
__disable_irq();//关闭全局中断
}
else if(state == 0)
{
__enable_irq();//打开全局中断
}
else
{
return;
}
}
unsigned short int CRCcalc16 (unsigned char *dataunsigned short int len)
{
int i;
unsigned short int crc_res = 0xFFFF;
while(len--)
{
crc_res^=*data++;
for(i = 0;i < 8;i++)
{
if(crc_res&0x01)
{
crc_res = (crc_res>>1)^0xa001;
}
else
{
crc_res = (crc_res>>1);
}
}
}
return crc_res;
}
void CAN_BOOT_JumpToApplication(uint32_t Addr)
{
// asm(“ LB 0x310000“); //最开始采用的是汇编跳转方式只能跳转为固定的地址
// (*((void(*)(void))(Addr)))(); //后续参考STM32的跳转方式
//(*(pFunction)(Addr))();
pFunction jump;
jump = (pFunction)(Addr);
jump();
}
#pragma CODE_SECTION(CAN_BOOT_ExecutiveCommand“ramfuncs“);
void CAN_BOOT_ExecutiveCommand(CanRxMsg *pRxMessage)
{
u8 i;
CanTxMsg TxMessage;//发送对应消息
Uint16 ret = 0x01;
FLASH_ST Flash_Status;
for(i = 0;i <8;i++)
{
TxMessage.CAN_Tx_msg_data.msg_byte.data[i] = 0x00;
}
TxMessage.CAN_num = CANA;
TxMessage.DLC = 1;
TxMessage.ExtId.bit.resved = 0x00;
TxMessage.IDE = CAN_ID_EXT;
TxMessage.MBox_num = 0x02;
TxMessage.Tx_timeout_cnt = 0x00;
TxMessage.SAE_J1939_Flag = 0;
//获取地址信息
Boot_ID_info.ExtId.all = pRxMessage->ExtId.bit.ExtId;
can_cmd = Boot_ID_info.ExtId.bit.cmd;
can_addr = Boot_ID_info.ExtId.bit.addr;
if((can_addr!=DEVICE_ADDR)&&(can_addr!=0))
{
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-03-25 03:01 28335CAN_Update_Flash-master\
文件 666 2018-03-25 03:01 28335CAN_Update_Flash-master\.ccsproject
文件 27209 2018-03-25 03:01 28335CAN_Update_Flash-master\.cproject
文件 39 2018-03-25 03:01 28335CAN_Update_Flash-master\.gitignore
文件 813 2018-03-25 03:01 28335CAN_Update_Flash-master\.project
目录 0 2018-03-25 03:01 28335CAN_Update_Flash-master\BootLoader\
目录 0 2018-03-25 03:01 28335CAN_Update_Flash-master\BootLoader\inc\
文件 4293 2018-03-25 03:01 28335CAN_Update_Flash-master\BootLoader\inc\BootLoader.h
目录 0 2018-03-25 03:01 28335CAN_Update_Flash-master\BootLoader\src\
文件 17634 2018-03-25 03:01 28335CAN_Update_Flash-master\BootLoader\src\BootLoader.c
目录 0 2018-03-25 03:01 28335CAN_Update_Flash-master\Flash28335_API_V210\
目录 0 2018-03-25 03:01 28335CAN_Update_Flash-master\Flash28335_API_V210\Lib\
文件 76026 2018-03-25 03:01 28335CAN_Update_Flash-master\Flash28335_API_V210\Lib\Flash28335_API_V210.lib
目录 0 2018-03-25 03:01 28335CAN_Update_Flash-master\Flash28335_API_V210\inc\
文件 3034 2018-03-25 03:01 28335CAN_Update_Flash-master\Flash28335_API_V210\inc\Flash2833x_API_Config.h
文件 9056 2018-03-25 03:01 28335CAN_Update_Flash-master\Flash28335_API_V210\inc\Flash2833x_API_Library.h
目录 0 2018-03-25 03:01 28335CAN_Update_Flash-master\bsp\
目录 0 2018-03-25 03:01 28335CAN_Update_Flash-master\bsp\inc\
文件 3665 2018-03-25 03:01 28335CAN_Update_Flash-master\bsp\inc\CANA.h
文件 452 2018-03-25 03:01 28335CAN_Update_Flash-master\bsp\inc\Flash.h
文件 499 2018-03-25 03:01 28335CAN_Update_Flash-master\bsp\inc\LED.h
目录 0 2018-03-25 03:01 28335CAN_Update_Flash-master\bsp\src\
文件 17041 2018-03-25 03:01 28335CAN_Update_Flash-master\bsp\src\CANA.c
文件 965 2018-03-25 03:01 28335CAN_Update_Flash-master\bsp\src\Flash.c
文件 1490 2018-03-25 03:01 28335CAN_Update_Flash-master\bsp\src\LED.c
目录 0 2018-03-25 03:01 28335CAN_Update_Flash-master\user\
目录 0 2018-03-25 03:01 28335CAN_Update_Flash-master\user\inc\
文件 360 2018-03-25 03:01 28335CAN_Update_Flash-master\user\inc\main.h
目录 0 2018-03-25 03:01 28335CAN_Update_Flash-master\user\src\
文件 1952 2018-03-25 03:01 28335CAN_Update_Flash-master\user\src\main.c
目录 0 2018-03-25 03:01 28335CAN_Update_Flash-master\user_lib\
............此处省略58个文件信息
- 上一篇:自习室座位管理系统
- 下一篇:SpringBoot实战教程亲测非常好百度网盘链接
相关资源
- CCS5.05.1可使用的license
- dsp2812上128点FFTc程序以及其CMD文件
- DSP28335程序片内FLASH搬运至RAM运行的
- 基于DSP2812的以太网调试程序
- DSP与PC通讯的几种方法
- DSP 语音识别程序 DTW MFCC
- 创龙C66x平台GigE工业相机图像采集案例
- VC工程转Qt工程文件的工具
- 基于DSP的大功率开关电源的设计方案
- 基于DSP 56F801的正弦波输出DC/AC电源
- 基于DSP的大功率开关电源设计
- 基于ARM7和DSP的逆变电源设计电路
- 基于运动控制器MCK2407的无刷直流电机
- es(elasticsearch)整合SpringCloudSpringBo
- tms320c6748 DSP原理图 SCH PCB
- TMS320F280049最小系统原理图
- F280049C_CMPSS_01.zip
- 基于DSP的矿用静止无功发生器的研制
- 基于DSP的矿井提升机永磁同步电机D
- 基于DSP的SVPWM变频调速系统
- 基于DSP的下一代车载娱乐系统
- DSP控制器原理及其在运动控制系统中
- 北京交通大学-数字图像处理试卷+ 答
- 十字路口交通灯.pdsprj
- 用DSP Builder实现FIR滤波器
- TMS320C54X DSP结构、原理及应用(第二版
- DSP 28035 源码
- PCI总线接口与DSP的HPI接口
- 基于DSP交流伺服系统与CAN总线的通信
- 单片机与DSP中的基于DSP的FFT算法在无
评论
共有 条评论