When I reset and reload my BF70x application I encounter exceptions unless the target is power-cycled between launches. What could be causing this?
Currently only a core reset is supported on the BF70x. This has shown limitations when peripherals are running at the time of a core reset as there may be cases where an application has been run, then reloaded to run the example a second time, resulting in exceptions being reported. These exceptions can be the result of the peripheral interrupt being serviced at the wrong time.
In order to avoid this behavior, you will need to identify the peripheral that is causing the issue and create a custom board support package xml file to configure the appropriate register(s) to reset the peripheral whenever the IDDE issues a core reset. Another option would be to use the hard reset on the target board in between running examples.
We welcome related posts on CrossCore Embedded Studio and Add-ins community, or private support requests, as it will help us when adding support to the default XML files in later releases. An example custom board support file is shown below, and more information on custom board support files can be found in the CrossCore Embedded Studio help. Reset values for peripheral registers are detailed in the Hardware Reference Manual.
Custom Board Support Example (Resetting Peripherals)
<?xml version="1.0" standalone="yes"?> <custom-cces-proc-xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="\Analog Devices\CrossCore Embedded Studio 1.1.0\System\ArchDef\ADSP-custom-board.xsd" processor-family="Blackfin" file="example_custom_board_support.xml"> <custom-register-reset-definitions> <|-- Reset EPPI peripheral --> <register name="EPPI0_CTL" reset-value="0x00000000" core="Common" /> </custom-register-reset-definitions> </custom-cces-proc-xml>