TMS570LS3137 bootloader编写

背景:

适应与现在大部分的工业产品在产品发布后,固件出现问题需要修复,但是返厂重新烧录,增加了产品的维护成本,固件增加bootloader升级功能,维护人员就可以现场为客户进行固件升级。

获取资源:
本篇文件主要是使用官方提供的bootloader固件升级包,如何移植到自己的项目中去。
固件升级包获取方式:
从官网中获取,或者从以下链接获取:
Hercules bootloader

bootloader如何使用:

解压上面压缩包后,请详细阅读readme, 我选用的是Uart 升级方式,软件中使用Ymodel 协议通讯下载,常用的Uart调试工具都带有该协议.

用户程序编写过程注意事项:

关于TMS570LS3137的片上flash的结构图如下:
在这里插入图片描述

由上图可知,flash有三块,bank0,bank1,bank7.
其中只有bank7能使用FEE的功能。
bank0,bank1只能按扇区进行擦写。
因此,flash的内存分配,我做了以下分配:
bank0分为两部分,一部分存储bootloader,一部分存储应用程序。
bank1用于存储升级代码。
bank7用于存储用户数据(经常会读写操作),

1.bootloader 需要注意的地方。
1)保持bootloader区和用户升级区的debug串口波特率保持一致,我选择的是9600
2)选择好程序跳转的地方,如果升级完毕后,程序会跳转到用户区
3)修改跳转地址,打开文件“sys_intvecs.asm”,做如下修改。

在这里插入图片描述
在这里插入图片描述

修改后面有注释。

修改文件“bl_config.h”中的用户程序开始地址
在这里插入图片描述

4)修改完毕后,然后需要修改用户程序APP中的,起始地址
打开,用户程序工程中的“sys_link.cmd”文件,做如下修改

MEMORY
{
    VECTORS (X)  : origin=0x00020000 length=0x00000020
    FLASH0  (RX) : origin=0x00020020 length=0x0015FFE0
    FLASH1  (RX) : origin=0x00180000 length=0x00180000
    STACKS  (RW) : origin=0x08000000 length=0x00001500
    RAM     (RW) : origin=0x08001500 length=0x0003EB00

/* USER CODE BEGIN (2) */
/* USER CODE END */
}

以上修改完毕后,都进行编译生产.out文件,用官方自带的nowflash工具进行烧录。
在这里插入图片描述

根据两块烧录地址不同,分别将文件烧录在各自的flash中。烧录完毕后,打开串口观察现象。如下图所示。
在这里插入图片描述

从打印信息可以看出,程序成功的从boot区跳转到用户区,实验成功。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 当然可以为您提供有关tms570ls3137的IIC驱动的相关信息。TMS570LS3137是德州仪器(Texas Instruments)公司的一款高性能微控制器,具有丰富的外设接口,其中包括IIC接口(也称为TWI接口)。为了使用TMS570LS3137的IIC接口,您需要编写相应的IIC驱动程序,实现对IIC总线上从设备的读写操作。 IIC驱动程序的编写可以分为以下几个步骤: 1.初始化IIC接口:在使用IIC接口之前,需要对其进行初始化,包括配置IIC接口的时钟、引脚等。 2.发送起始信号:在进行读写操作之前,需要向IIC总线发送起始信号,通知从设备准备好了接收数据。 3.发送从设备地址:在发送起始信号之后,需要向IIC总线发送要读写的从设备地址,告诉从设备需要读写哪个寄存器或哪段数据。 4.发送数据:如果是写操作,需要向从设备发送数据;如果是读操作,需要向从设备发送读命令。 5.结束操作:完成数据读写之后,需要向IIC总线发送停止信号,通知从设备数据传输已经结束。 需要注意的是,具体的驱动程序实现方式可能因不同的应用场景而有所差异,您可以参考TMS570LS3137的数据手册和相关的IIC驱动程序示例进行编写。 希望这些信息对您有所帮助! ### 回答2: TMS570LS3137是德州仪器(Texas Instruments)公司的一款基于ARM Cortex-R4内核的微控制器。它具有许多功能丰富的外设,其中包括一个IIC(Inter-Integrated Circuit)接口,用于与其他设备进行串行通信。 编写TMS570LS3137的IIC驱动程序需要以下步骤: 1. 配置引脚:首先,需要配置两个引脚作为IIC接口的SDA(数据线)和SCL(时钟线)。这可以通过设置引脚功能、复用和方向来完成。确保正确配置这些引脚以实现IIC通信。 2. 初始化IIC:在代码中,需要初始化IIC控制器,设置通信速率、字长等参数。这可以通过配置IIC控制器的寄存器来完成。确保根据实际需求正确设置这些参数。 3. 发送和接收数据:一旦IIC接口被正确初始化,就可以使用驱动程序来发送和接收数据。发送数据时,将数据写入数据寄存器,并设置传输控制位来启动传输。接收数据时,需要等待接收完成并将接收到的数据从接收寄存器中读取出来。确保在发送和接收数据时,按照IIC通信协议来操作。 4. 错误处理:在使用IIC驱动程序时,需要考虑错误处理。例如,如果发生总线冲突或设备没有响应,需要采取适当的措施。这可能包括重试、重置IIC控制器等操作。 综上所述,编写TMS570LS3137的IIC驱动程序需要进行引脚配置、初始化IIC控制器、发送和接收数据以及错误处理。这些步骤可以根据具体的硬件配置和通信需求来实现。同时,德州仪器官方提供了相关的文档和例程,可以作为编写驱动程序的参考和指导。 ### 回答3: TMS570LS3137是德州仪器(TI)公司生产的一款微控制器,具有强大的处理能力和丰富的接口功能。为了实现IIC(Inter-Integrated Circuit)总线的通信功能,需要编写相应的驱动程序。 IIC是一种常用的串行通信协议,用于连接微控制器与外部设备,如传感器、存储器等。下面是一个简单的TMS570LS3137的IIC驱动程序框架: 1. 初始化IIC控制器: 在程序初始化时,需要设置一些寄存器来配置IIC控制器。首先,要设置IIC时钟速率、工作模式和地址模式等。具体的配置取决于所需的通信参数。 2. 使能IIC总线: 调用相应的函数或设置寄存器,使能IIC总线,使其能够工作。 3. 发送起始条件: 在开始通信之前,需要发送起始条件到总线上。这可以通过设置相应的寄存器来实现。 4. 发送或接收数据: 使用相应的函数或寄存器,向IIC总线发送需要传输的数据,或者从总线上接收数据。 5. 等待传输完成: 等待传输操作完成,这可以通过查询相应的寄存器或使用中断方式来实现。 6. 发送停止条件: 在传输完成后,需要发送停止条件到总线上。这可以通过设置相应的寄存器来实现。 7. 关闭IIC总线: 当所有数据传输完成后,需要关闭IIC总线,以便其他设备可以使用。 需要根据具体的应用需求,编写适合自己的函数来实现上述功能。以上是TMS570LS3137的简单IIC驱动程序框架,具体的实现还需要根据具体的硬件接口和通信协议等因素进行调整和完善。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值