On 25 Jan 2014, at 5:05 pm, Chuck McManis <[email protected]> wrote:

> So I was playing around with an example I was writing and wanted to initiate 
> a software reset, basically duplicated what pushing the reset button does. 
> 
> In various docs this is called a "Software System Reset" and there is a 
> function in the cm3 sub section of loc3 that does something kinda like the 
> ARM documents called : scb_reset_system()
> 
> That is defined as :
> 
> void scb_reset_system(void)
> {
>     SCB_AIRCR = SCB_AIRCR_VECTKEY | SCB_AIRCR_SYSRESETREQ;
> 
>     while (1);
> }
> 
> And presumably one calls this from your source and "poof!" you have reset the 
> system. Except it doesn't, it hangs there in the while(1); which seems a bit 
> odd.

SYSRESETREQ is just a wire out of the core:
The control bit SYSRESETREQ requests a reset by an external system resource. 
The system components that are reset by this request are IMPLEMENTATION 
DEFINED. SYSRESETREQ is required to cause a Local reset. 

And the bit is nominally owned by the debugger, not code.

IOW, what it will do for you will vary pretty widely from SoC to SoC. If 
possible, prefer using a watchdog or a vendor-specific mechanism to reset if 
you can...
------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For
Critical Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today.
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
libopencm3-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libopencm3-devel

Reply via email to