TLE989x如何禁用SWD
1.这里我们需要先了解TLE9893的启动流程。复位后,如果TMS和P0.0保持高电平,那么系统会直接进入debug模式,也就是使用SWD连接。如果TMS和P0.0不为高,系统会按照预设的NAC(提前写入flash相应地址),等待BSL指令。俩个特殊情况:如果NAC<2,也就是不等待BSL指令直接启动(参考文件:2.1.1.2 NAC time);如果NAC>0x1c,那么系统会一直等待BSL指令而不会调转app代码运行。在等待NAC时间内收到Host synchronization指令,系统进入BSL模式,响应各种BSL指令。如果在NAC时间内没有收到Host synchronization指令,那么系统会跳转APP,执行用户代码。可以参考tle988x9x-user-manual-usermanual-en.pdf 3.5 Device startup
2.参考如上流程图,当我们enable permanent protection后,TMS和P0.0为高电平(进入debug模式),系统会自动退出debug模式,禁用SWD,开始执行用户代码。
3.要启用permanent protection有俩种方法:
a.在系统进入BSL(Bootstrap Loader)模式后,通过CAN发送指令Cmd 0x89 NVM permanent protection set。(参考文件:4.1 BSL commands)
b.软件中调用API:int32_t user_nvm_perm_protect_set (uint32_t passphrase) 。(参考文件:4.2 User API routines)
在启用permanent protection后,可以在BSL模式下发送Cmd 0x98 NVM permanent protection clear指令解除保护,并且只能通过此方式解除保护,。
4.如果只是启用permanent protection,那么还是可以通过BSL指令解除保护,且这个指令是公开通用的,所以想要永久保护,参考系统复位启动流程,我们需要让系统无法进入BSL模式,无法接收解除保护指令即可。在NAC设置<2的值时,系统会直接启动,无法进入BSL模式。

