Microcontrollers-nxp

From Wiki at Neela Nurseries
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

parent topic Microcontrollers



^ Overview

This local page to hold notes related to NXP semiconductor company, headquartered in Eindhoven, Netherlands.


^ MCUs

Starting point for datasheet and user manual links to specific NXP MCU families:

An important security concern of the LPC55S69 is detailed here in an Oxide dot computer article:

A related article from 0xide company (Oxide company spelled for searchability) regarding LPC55S69 undocumented features:


^ Development Kits

Development kit for the LPC55S69 MCU intro page at https://www.nxp.com/document/guide/getting-started-with-the-lpc55s69-evk-evaluation-board:GS-LPC55S69-EVK. From here a couple of useful further documents or chapters to this effective users' manual are . . . reached by clicking once on left pane navigation links, which load content into a right hand pane of the above linked manual. In the page on multi-core examples and use there are external links to some important application notes including:

A link to download multi-core document:

Schematic files for LPC55S69-EVK at this link, but requires NXP user account and login:


^ Technologies and Features

2022

2022


^ NXP Bootloading

NXP's document on their built-in ROM based bootloader:


Some NXP community forum posts:

How to enter NXP ROM bootloader from firmware:

Known ROM bootloader issue of NXP with no plans for fix:


^ To Sort

Microcontrollers de NXP, starting with a NXP's Line Card:

2021-07-08

And an article at Wikipedia:


How to program dual-core microcontrollers:



Not sure how useful this code example will be, it is posted in or around 2014. Hard to read on the NXP forum due to some funky formatting:

;/* File: example.s */

        .syntax unified             /* this makes the assembler automatically generate IT instructions for you */

        .cpu    cortex-m0           /* this selects the cortex-m0 architecture and helps you avoid using cortex-m3/cortex-m4 instructions */

        .text                       /* this makes sure the code goes into the .text section */

        .global m0vectors

        .word   0x20004000          /* this defines the initial stack pointer for the Cortex-M0 */

        .word   m0reset             /* the reset exception vector */

/* here you should place your other exception vectors. There are too many to include in this example */

        .global m0test              /* this exports the symbol m0test, so you can reference it from for instance C */

        .func   m0test,m0test       /* this names the symbol m0test as a function (for the debug-info) */

        .type   m0test,%function    /* this tells the assembler (and linker) what kind of symbol we're generating */

        .thumb_func                 /* this is necessary if pointers use the symbol */

        .align                      /* this makes sure the code is positioned on a 16-bit boundary */

m0test:                             /* this defines the actual symbol */

        ldr     r0,=0x01234567      /* example code, load a value into r0 */

        bx      lr                  /* return to the calling function */

m0reset:

        bl      m0test              /* this is the startup-code, call our function */

lockup: wfi                         /* sleep the CPU; it'll wake up if an interrupt occurs */

         b       lockup              /* go back to sleep */

        .size   m0test, . - m0test  /* this tells the linker how big this function is, so it can correctly exclude it if it's unused */

        .endfunc                    /* this marks the end of the function (for the debug-info) */

You can then refer to the code from your C file...

/* File: main.c */

#include <ipc_queue.h>

/* Note: you don't need argc and argv on a microcontroller. */

int main(int argc, const char *argv[])

{

     IPC_haltSlave();

     SET_SLAVE_SHADOWREG(m0vectors);

     IPC_startSlave();

     while(1)

     {

          asm volatile("wfi");

     }

     return(0);

}


^ References




- - - top - - -