This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430F5438A的BSL问题(续)

Other Parts Discussed in Thread: MSP430F5438A, MSP430F149

  我司正在开发MSP430F5438A的产品。遇到以下几点问题,请帮忙解答。

1. 430的BSL除了下载程序外,可以用来做串口通信吗?还是说只有在BSL mode下,对应的pin才能是串口的功能,

其它时候,无法用作串口功能实现与上位机通信?

2. 出于对产品的内代码的保护目的,请问430有哪些机制保证我的软件安全吗?包括不能被读取出二进制文件。

  • 楼主你好,

    这里简答回答一下:

    1、5438A的BSL引脚为P1.1和P1.2,他们是定时器模块的脚,不是uart模块的脚。换句话说,BSL串口功能是通过定时器模拟来实现的,那么问题1的回答应该是BSL的管脚在非BSL模式下也可以做串口功能来用,但是不是使用的真正的串口模块,而是要通过定时器模拟来实现。如果要使用5438A自带的硬件uart,这两个管脚是不行的。

    2、430对代码的保护主要有这两个方面:

        1)对于JTAG/SBW,可以通过将熔丝熔断的方法。熔断之后JTAG/SBW完全被disable,也就是切断了通过JTAG/SBW读取片内代码的可能;

        2)对于BSL,对代码的读取需要先向BSL发送32个字节的密码,该密码就是片内程序的中断向量表的值。换句话说,只要你自己不将片内程序的二进制代码给别人,别人是不会知道中断向量表里的内容的,也就无法通过BSL执行读取flash内容的操作。

         

  • 非常感谢您的解答。对我很有帮助。

  • xinxin li2,

    关于MSP430的加密,建议参考“【经验分享】MSP430单片机常见加密总结”:

    http://www.deyisupport.com/question_answer/microcontrollers/msp430/f/55/t/4274.aspx

    BR,

    Lina

  •  你好,我也在做这个bsl下载,使用的是msp430F149 这款单片机,按照官方给的“通过引导加载程序进行MSP430 编程”说明书, 我已经将前面的擦除指令, RX密码,指令执行成功, 但当我想向bsl发送TX数据块指令的时候,为什么返回的ack是A0,而不是90,这是不是代表指令发送无效?我应该如何处理?

    ps:指令内容为:80140404f00f10009be0 ,十六进制,串口:E,8,1

  • 你好,

       这段指令的内容应该是希望读取地址为0x0ff0开始的0x10个数据。但是根据F149的datasheet来看,地址0x0ff0是在ROM区。文档slau319中有描述:

    The transmit data block command is used for any read access to the flash memory, RAM, or peripheral module control registers at 0000h to 01FFh.

    关于读写时序,楼主可以参考下面的时序,把地址和长度参数换成自己的:

    TO BSL: 80
    (Synchronization character sent to the BSL)
    FROM BSL: 90
    (Acknowledge from BSL)
    TO BSL: 80 14 04 04 00 0F 0E 00 75 E0
    (Send Command to read memory from 0x0F00, length 0x000E)
    FROM BSL: 80 00 0E 0E F2 13 40 40 00 00 00 00 00 00 02 01 01 01 C0 A2
    (Returned values from BSL)

    Regards,

    Rik

  • 你好,谢谢你的答复

    但根据你给的例子, 我也做了实验, 发送80时可以收到90,但发送 80 14 04 04 00 0F 0E 00 75 E0时,我收到的还是A0。怎么回事?