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的产品。遇到以下几点问题,请帮忙解答。
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。怎么回事?