Difference between revisions of "Microcontrollers-nxp"
| m (Add section "References".) | m (→^ MCUs:  - minor formatting) | ||
| (8 intermediate revisions by the same user not shown) | |||
| Line 11: | Line 11: | ||
| <!-- comentario --> | <!-- comentario --> | ||
| − | == [[#top|^]]  | + | == [[#top|^]] MCUs == | 
| + | |||
| + | Starting point for datasheet and user manual links to specific NXP MCU families: | ||
| + | <ul> | ||
| + | *  https://www.nxp.com/docs/en/data-sheet/LPC11U6X.pdf | ||
| + | *  https://www.nxp.com/docs/en/nxp/data-sheets/LPC55S6x_DS.pdf   LPC55S69 datasheet.  See page 47 of 133 for course configuration register map. | ||
| + | </ul> | ||
| + | |||
| + | An important security concern of the LPC55S69 is detailed here in an Oxide dot computer article: | ||
| + | <ul> | ||
| + | *  https://oxide.computer/blog/exploiting-undocumented-hardware-blocks-in-the-lpc55s69 | ||
| + | </ul> | ||
| + | |||
| + | A related article from 0xide company (Oxide company spelled for searchability) regarding LPC55S69 undocumented features: | ||
| + | <ul> | ||
| + | *  https://www.youtube.com/watch?v=eKKgaGbcq4o | ||
| + | </ul> | ||
| + | |||
| + | <!-- comentario --> | ||
| + | |||
| + | == [[#top|^]] 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: | 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: | ||
| Line 21: | Line 41: | ||
| A link to download multi-core document: | A link to download multi-core document: | ||
| *  https://community.nxp.com/pwmxy87654/attachments/pwmxy87654/blog/379/1/LPC55xx_Multicore_v1.00.pdf | *  https://community.nxp.com/pwmxy87654/attachments/pwmxy87654/blog/379/1/LPC55xx_Multicore_v1.00.pdf | ||
| + | |||
| + | Schematic files for LPC55S69-EVK at this link, but requires NXP user account and login: | ||
| + | |||
| + | *  https://www.nxp.com/design/development-boards/lpcxpresso-boards/lpcxpresso55s69-development-board:LPC55S69-EVK | ||
| Line 43: | Line 67: | ||
| == [[#top|^]] NXP Bootloading == | == [[#top|^]] NXP Bootloading == | ||
| + | |||
| + | NXP's document on their built-in ROM based bootloader: | ||
| + | |||
| + | *  https://www.nxp.com/docs/en/reference-manual/MCUBOOTRM.pdf | ||
| + | |||
| + | |||
| + | Some NXP community forum posts: | ||
| + | |||
| + | *  https://community.nxp.com/t5/MCU-Bootloader/Entry-and-Exit-of-ROM-Bootloader-MKE18F-MCUXpresso/m-p/905906 | ||
| *  https://community.nxp.com/t5/NXP-Designs/Bootloader-and-ISP-for-LPC55S69/m-p/1061246 | *  https://community.nxp.com/t5/NXP-Designs/Bootloader-and-ISP-for-LPC55S69/m-p/1061246 | ||
Latest revision as of 19:57, 15 February 2023
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:
- https://www.nxp.com/docs/en/data-sheet/LPC11U6X.pdf
- https://www.nxp.com/docs/en/nxp/data-sheets/LPC55S6x_DS.pdf LPC55S69 datasheet. See page 47 of 133 for course configuration register map.
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:
- https://www.nxp.com/docs/en/application-note/AN12282.pdf LPC55S69 multi-core DSP capabilities
- https://www.nxp.com/docs/en/application-note/AN12335.pdf LPC55xx/LPC55Sxx Dual Core Communication
- https://www.nxp.com/docs/en/application-note/AN12358.pdf LPC55xx/LPC55Sxx Dual-Core Debug in MCUXpresso
- https://community.nxp.com/t5/Blogs/LPC55xx-Multicore-Applications-with-MCUXpresso-IDE/ba-p/1130891 LPC55xx Multicore Applications with MCUXpresso IDE
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
- 
0721
- http://www.nxp.com/docs/en/application-note/AN2708.pdf intro to External Bus Interface EBI
- https://www.nxp.com/docs/en/user-guide/DSP56F827EVMUM.pdf DSP56F827 evaluation board
2022
- 
0721
^ 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:
- 
Solution on github, written in rust language?  Need to confirm this . . .
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