资源简介
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实战教程亲测非常好百度网盘链接
相关资源
- 基于DSP的振镜扫描式激光标记控制系
- 基于DSP芯片TMS320F2812的振镜式激光打标
- FFT算法的DSP实现.rar
- F28335的最小系统板原理图及其PCB
- L_8086_8259_8255_8253.pdsprj
- dsp开发中将flash中的代码搬到RAM中执行
- DSP算法实验大作业
- DSP最小系统原理图设计
- DSP2812的LCD1602显示程序
- DSP 基2 FFT 算法详细代码带注释
- TMS320F2812 SCI串口通信 键盘 12864液晶
- DSP最小系统的设计
- DSP2407最小开发板原理图,PCB图
- TI的DSP封装库(很全)
- DSP28335 AD7606源码.rar
- DSP原理及应用试题
- dsp-fir滤波器的设计汇编程序
- 正交解码电路和捕获单元在转角和转
- dsp常用例程汇编语言
- DSP_AD采样程序
- 基于DSP2812的DS18B20温度采集
- 利用DSP F28335 实现了12864显示工程
- DSP28335开发板最小系统
- DSP入门教程(非常经典)
- 基于dsp的FIR低通数字滤波器器设计
- 基于DSP_TMS320C5402的FIR数字滤波器设计
- DSP2812封装库
- TMS320C54x_fir滤波器的实现_dsp_包含源代
- 关于ccs的一个简单图像处理
- ADSP-21489中文数据手册.rar
评论
共有 条评论