Guía de usuario do software Cortex-M de depuración NXP AN14120
Introdución
Este documento describe a compilación cruzada, a implantación e a depuración dunha aplicación para o procesador i.MX 8M Family, i.MX 8ULP e i.MX 93 Cortex-M mediante Microsoft Visual Studio Code.
Entorno de software
A solución podería implementarse tanto no servidor Linux como no servidor Windows. Para esta nota de aplicación, asúmese un PC con Windows, pero non é obrigatorio.
Nesta nota da aplicación úsase a versión 6.1.22_2.0.0 de Linux BSP. Utilízanse as seguintes imaxes previas á construción:
- i.MX 8M Mini: imx-image-full-imx8mmevk.wic
- i.MX 8M Nano: imx-image-full-imx8mnevk.wic
- i.MX 8M Plus: imx-image-full-imx8mpevk.wic
- i.MX 8ULP: imx-image-full-imx8ulpevk.wic
- i.MX 93: imx-image-full-imx93evk.wic
Para obter pasos detallados sobre como construír estas imaxes, consulte a Guía do usuario de i.MX Linux (documento IMXLUG) e a Guía de usuario do proxecto i.MX Yocto (documento IXLXYOCTOUG).
Se se usa un PC con Windows, escriba a imaxe previa na tarxeta SD usando Win32 Disk Imager (https:// win32diskimager.org/) ou Balena Etcher (https://etcher.balena.io/). Se se usa un PC con Ubuntu, escriba a imaxe previa na tarxeta SD usando o seguinte comando:
$ sudo dd if=.wic of=/dev/sd bs=1M status=progress conv=fsync
Nota: Comprobe a súa partición do lector de tarxetas e substitúa a sd pola súa partición correspondente. 1.2
Instalación de hardware e equipamento
- Kit de desenvolvemento:
- NXP i.MX 8MM EVK LPDDR4
- NXP i.MX 8MN EVK LPDDR4
- NXP i.MX 8MP EVK LPDDR4
- NXP i.MX 93 EVK para 11×11 mm LPDDR4 – NXP i.MX 8ULP EVK LPDDR4
- Tarxeta Micro SD: utilízase SanDisk Ultra 32 GB Micro SDHC I Clase 10 para o experimento actual.
- Cable micro-USB (i.MX 8M) ou tipo C (i.MX 93) para porto de depuración.
- Sonda de depuración SEGGER J-Link.
Requisitos previos
Antes de comezar a depurar, deben cumprirse varios requisitos previos para ter un ambiente de depuración configurado correctamente.
PC Host: conexión de depuración da placa i.MX
Para establecer a conexión de depuración de hardware, siga os seguintes pasos:
- Conecte a placa i.MX ao PC host mediante o conector USB-UART DEBUG e PC USB mediante un cable USB. O sistema operativo Windows atopa os dispositivos en serie automaticamente.
- No Xestor de dispositivos, en Portos (COM e LPT) busque dous ou catro portos serie USB conectados (COM). Un dos portos úsase para as mensaxes de depuración xeradas polo núcleo Cortex-A, e o outro é para o núcleo Cortex-M. Antes de determinar o porto correcto necesario, lembre:
- [i.MX 8MP, i.MX 8ULP, i.MX 93]: Hai catro portos dispoñibles en Device Manager. O último porto é para a depuración de Cortex-M e o penúltimo porto é para a depuración de Cortex-A, contando os portos de depuración en orde ascendente.
- [i.MX 8MM, i.MX 8MN]: Hai dous portos dispoñibles no Xestor de dispositivos. O primeiro porto é para a depuración de Cortex-M e o segundo para a depuración de Cortex-A, contando os portos de depuración en orde ascendente.
- Abre o porto de depuración correcto usando o teu emulador de terminal serie preferido (por exemploample PuTTY) configurando os seguintes parámetros:
- Velocidade ata 115200 bps
- 8 bits de datos
- 1 broca de parada (115200, 8N1)
- Sen paridade
- Conecte a sonda de depuración SEGGER USB ao host e, a continuación, conecte o SEGGER JTAG conector á placa i.MX JTAG interface. Se a placa i.MX JTAG interface non ten conector guiado, a orientación determínase aliñando o fío vermello ao pin 1, como na Figura 1.
Configuración de VS Code
Para descargar e configurar o VS Code, siga os seguintes pasos:
- Descarga e instala a última versión de Microsoft Visual Studio Code desde o oficial websitio. No caso de usar Windows como sistema operativo anfitrión, escolla o botón "Descargar para Windows" na páxina principal de Visual Studio Code.
- Despois de instalar Visual Studio Code, ábreo e escolla a pestana "Extensións" ou prema a combinación Ctrl + Maiús + X.
- Na barra de busca dedicada, escriba MCUXpresso para VS Code e instale a extensión. Aparece unha nova pestana no lado esquerdo da xanela de VS Code.
Configuración da extensión MCUXpresso
Para configurar a extensión MCUXpresso, siga os seguintes pasos:
- Fai clic na pestana dedicada á extensión MCUXpresso da barra lateral esquerda. Desde o PANEL DE INICIO RÁPIDO, fai clic
Abre o instalador de MCUXpresso e dá permiso para descargar o instalador. - A xanela do instalador aparece en pouco tempo. Fai clic en MCUXpresso SDK Developer e en SEGGER JLink, a continuación, fai clic no botón Instalar. O instalador instala o software necesario para arquivos, cadea de ferramentas, soporte para Python, Git e sonda de depuración
Despois de instalar todos os paquetes, asegúrese de que a sonda J-Link estea conectada ao ordenador host. A continuación, comprobe se a sonda tamén está dispoñible na extensión MCUXpresso en DEBUG PROBES view, como se mostra na figura
Importar MCUXpresso SDK
Dependendo da placa que esteas a executar, crea e descarga o SDK específico do oficial de NXP websitio. Para esta nota de aplicación, probáronse os seguintes SDK:
- SDK_2.14.0_EVK-MIMX8MM
- SDK_2.14.0_EVK-MIMX8MN
- SDK_2.14.0_EVK-MIMX8MP
- SDK_2.14.0_EVK-MIMX8ULP
- SDK_2.14.0_MCIMX93-EVK
Para construír un exampficheiro para i.MX 93 EVK, consulte a Figura 7:
- Para importar un repositorio de SDK de MCUXpresso en VS Code, siga os seguintes pasos:
- Despois de descargar o SDK, abra Visual Studio Code. Fai clic na pestana MCUXpresso do lado esquerdo e expande os REPOSITORIOS e PROXECTOS INSTALADOS views.
- Fai clic en Importar repositorio e selecciona ARQUIVO LOCAL. Fai clic no Explorar... correspondente ao campo Arquivo e selecciona o arquivo SDK descargado recentemente.
- Seleccione o camiño onde se descomprimirá o arquivo e enche o campo Localización.
- O campo Nome pódese deixar por defecto ou pode escoller un nome personalizado.
- Marque ou desmarque Crear repositorio Git en función das súas necesidades e, a continuación, faga clic en Importar.
Importar un exampa aplicación
Cando se importa o SDK, aparece baixo o REPOSITORIOS INSTALADOS view.
Para importar un example dende o repositorio do SDK, siga os seguintes pasos:
- Fai clic en Importar Example do botón Repositorio dos PROXECTOS view.
- Escolla un repositorio da lista despregable.
- Escolla a cadea de ferramentas na lista despregable.
- Escolla o taboleiro de destino.
- Escolla demo_apps/hello_world example da lista Escolla un modelo.
- Escolla un nome para o proxecto (pódese usar o predeterminado) e configure o camiño para a localización do proxecto.
- Fai clic en Crear.
- Realice os seguintes pasos só para a familia i.MX 8M. No marco dos PROXECTOS view, expanda o proxecto importado. Vaia á sección Configuración e fai clic en mcuxpresso-tools.json file.
a. Engadir "interface": "JTAG"en "depurar" > "segger"
b. Para i.MX 8MM, engade a seguinte configuración: "dispositivo": "MIMX8MM6_M4" en "depuración" > "segger"
c. Para i.MX 8MN, engade a seguinte configuración: "dispositivo": "MIMX8MN6_M7" en "depuración" > "segger"
d. Para i.MX 8MP, engade a seguinte configuración:
“dispositivo”: “MIMX8ML8_M7” en “depurar” > “segger”
O seguinte código mostra un exampli para a sección "depuración" de i.MX8 MP despois de realizar as modificacións anteriores de mcuxpresso-tools.json:
Despois de importar o exampa aplicación correctamente, debe estar visible baixo os PROXECTOS view. Ademais, a fonte do proxecto files están visibles na pestana Explorador (Ctrl + Maiús + E).
Construíndo a aplicación
Para crear a aplicación, prema a icona esquerda Crear seleccionado, como se mostra na Figura 9.
Prepare o taboleiro para o depurador
Para usar JTAG para depurar aplicacións Cortex-M, hai algúns requisitos previos dependendo da plataforma:
- Para i.MX 93
Para admitir i.MX 93, o parche para SEGGER J-Link debe estar instalado: SDK_MX93_3RDPARTY_PATCH.zip.
Nota: Debe utilizarse este parche, aínda que estea instalado no pasado. Despois de que remate a descarga, descomprima o arquivo e copie o directorio Devices e o JLinkDevices.xml file a C:\Programa Files\SEGGER\JLink. Se se usa un PC Linux, a ruta de destino é /opt/SEGGER/JLink.- Depurando Cortex-M33 mentres só se está a executar Cortex-M33
Neste modo, o interruptor de modo de arranque SW1301[3:0] debe configurarse en [1010]. A continuación, a imaxe M33 pódese cargar e depurar directamente usando o botón depurar. Para máis detalles, consulte a Sección 5.
Se se necesita Linux en execución en Cortex-A55 en paralelo con Cortex-M33, hai dúas formas de depurar Cortex-M33: - Depurando Cortex-M33 mentres Cortex-A55 está en U-Boot
Primeiro, copie o sdk20-app.bin file (situado no directorio armgcc/debug) xerado na Sección 3 na partición de arranque da tarxeta SD. Arranque o taboleiro e deténgalo en U-Boot. Cando o interruptor de inicio está configurado para iniciar o Cortex-A, a secuencia de inicio non inicia o Cortex-M. Ten que ser iniciado manualmente usando os comandos seguintes. Se Cortex-M non se inicia, JLink falla ao conectarse ao núcleo.
- Nota: Se o sistema non se pode depurar normalmente, intente facer clic co botón dereito no proxecto no MCUXpresso para VS
Código e escolla "Anexar para depurar o proxecto". - Depurando Cortex-M33 mentres Cortex-A55 está en Linux
O DTS do núcleo debe modificarse para desactivar o UART5, que usa os mesmos pinos que o JTAG interface.
Se se usa un PC con Windows, o máis sinxelo é instalar WSL + Ubuntu 22.04 LTS e despois compilar o DTS de forma cruzada.
Despois da instalación de WSL + Ubuntu 22.04 LTS, abra a máquina Ubuntu que se executa en WSL e instala os paquetes necesarios:
Agora, as fontes do núcleo pódense descargar:
Para desactivar o periférico UART5, busque o nodo lpuart5 en linux-imx/arch/arm64/boot/dts/freescale/imx93-11×11-evk.dts file e substitúe o estado correcto por desactivado:
Recompilar o DTS:
Copie o recén creado linux-imx/arch/arm64/boot/dts/freescale/imx93 11×11-evk.dtb file na partición de arranque da tarxeta SD. Copia o hello_world.elf file (situado no directorio armgcc/debug) xerado na Sección 3 na partición de arranque da tarxeta SD. Arranque o taboleiro en Linux. Dado que a ROM de arranque non inicia o Cortex-M cando se inicia o Cortex-A, o CortexM debe iniciarse manualmente.
Nota: O ola_ mundo.elfo file debe colocarse no directorio /lib/firmware.
- Depurando Cortex-M33 mentres só se está a executar Cortex-M33
- Para i.MX 8M
Para admitir i.MX 8M Plus, o parche para SEGGER J-Link debe estar instalado:
iar_segger_support_patch_imx8mp.zip.
Despois de que finalice a descarga, descomprima o arquivo e copie o directorio Dispositivos e o directorio
JLinkDevices.xml file desde o directorio JLink a C:\Program Files\SEGGER\JLink. Se é un PC Linux
se usa, a ruta de destino é /opt/SEGGER/JLink.- Depurando Cortex-M mentres Cortex-A está en U-Boot
Neste caso, non hai que facer nada especial. Arranca o taboleiro en U Boot e vai á Sección 5. - Depurando Cortex-M mentres Cortex-A está en Linux
Para executar e depurar a aplicación Cortex-M en paralelo con Linux que se executa en Cortex-A, o reloxo específico debe estar asignado e reservado para Cortex-M. Faise dende U-Boot. Detén o taboleiro en U-Boot e executa os seguintes comandos:
- Depurando Cortex-M mentres Cortex-A está en U-Boot
- Para i.MX 8ULP
Para admitir o i.MX 8ULP, debe instalarse o parche para SEGGER J-Link: SDK_MX8ULP_3RDPARTY_PATCH.zip.
Nota: Este parche debe usarse aínda que estea instalado no pasado.
Despois da descarga, descomprima o arquivo e copie o directorio Devices e o JLinkDevices.xml file a C:\Programa Files\SEGGER\JLink. Se se usa un PC Linux, a ruta de destino é /opt/SEGGER/JLink. Para i.MX 8ULP, debido á unidade Upower, primeiro crea o flash.bin usando m33_image no noso repositorio "VSCode". A imaxe M33 pódese atopar en {CURRENT REPO}\armgcc\debug\sdk20-app.bin. Consulte a Sección 6 do Manual de iniciación con MCUX presso SDK para EVK-MIMX8ULP e EVK9-MIMX8ULP no SDK_2_xx_x_EVK-MIMX8ULP/docs sobre como construír a imaxe flash.bin.
Nota: Use a imaxe M33 no repositorio de VSCode activo. En caso contrario, o programa non se conecta correctamente. Fai clic co botón dereito e escolla "Anexar".
Execución e depuración
Despois de premer o botón depurar, escolla a configuración do proxecto Depurar e comeza a sesión de depuración.
Cando se inicia unha sesión de depuración, móstrase un menú dedicado. O menú de depuración ten botóns para iniciar a execución ata que se activa un punto de interrupción, pausar a execución, avanzar, entrar, saír, reiniciar e deter.
Ademais, podemos ver variables locais, rexistrar valores, ver algunha expresión e comprobar a pila de chamadas e os puntos de interrupción.
no navegador da esquerda. Estas rexións de funcións están na pestana "Executar e depurar", e non en MCUXpresso
para VS Code.
Nota sobre o código fonte do documento
ExampO código de ficheiro que se mostra neste documento ten os seguintes dereitos de autor e licenza BSD-3-Clause:
Copyright 2023 NXP Permítese a redistribución e o uso en formas fonte e binarias, con ou sen modificación, sempre que se cumpran as seguintes condicións:
- As redistribucións do código fonte deben conservar o aviso de copyright anterior, esta lista de condicións e a seguinte exención de responsabilidade.
- As redistribucións en forma binaria deben reproducir o aviso de copyright anterior, esta lista de condicións e a seguinte exención de responsabilidade na documentación e/ou outros materiais deben proporcionarse coa distribución.
- Nin o nome do titular dos dereitos de autor nin os nomes dos seus colaboradores poden usarse para aprobar ou promover produtos derivados deste software sen un permiso previo e específico por escrito.
ESTE SOFTWARE O PROPORCIONAN OS TITULARES DO COPYRIGHT E OS COLABORADORES "TAL CUAL" E DENEGARON CALQUERA GARANTÍA EXPRESA OU IMPLÍCITA, INCLUÍDAS, PERO NON LIMITADAS A, AS GARANTÍAS IMPLÍCITAS DE COMERCIABILIDADE E IDONEIDADE PARA UN FIN PARTICULAR. EN NINGÚN CASO O TITULAR OU OS COLABORADORES SERÁ RESPONSABLE DE NINGÚN DANOS DIRECTOS, INDIRECTOS, ACCIDENTALES, ESPECIAIS, EXEMPLARS OU CONSECUENTES (INCLUÍDO, PERO NON LIMITADO A, A ADQUISICIÓN DE BENS OU SERVIZOS SUSTITUTOS, PERDA DE DATOS, BENEFICIOS DO USO; OU INTERRUPCIÓN DE NEGOCIOS) SEEN CAUSADOS E SOBRE CALQUERA TEORÍA DE RESPONSABILIDADE, FOI POR CONTRATO, RESPONSABILIDADE ESTRICTA OU EXTRAORDINARIA (INCLÚA A NEGLIXENCIA OU DE OUTRO MODO) DERIVADA DE CALQUERA FORMA DO USO DESTE SOFTWARE, AÍNDA QUE SE ACONSELLÓ.
Información legal
Definicións
Borrador — Un estado de borrador nun documento indica que o contido está aínda
baixo re internoview e suxeita a aprobación formal, que poderá dar lugar a modificacións ou engadidos. NXP Semiconductors non ofrece ningunha representación ou garantía en canto á exactitude ou integridade da información incluída nun borrador dun documento e non terá ningunha responsabilidade polas consecuencias do uso desta información.
Exencións de responsabilidade
Garantía limitada e responsabilidade — Considérase que a información deste documento é precisa e fiable. Non obstante, NXP Semiconductors non ofrece ningunha representación ou garantía, expresa ou implícita, en canto á exactitude ou integridade desta información e non terá ningunha responsabilidade polas consecuencias do uso desta. NXP Semiconductors non se fai responsable do contido deste documento se o proporciona unha fonte de información allea a NXP Semiconductors. En ningún caso NXP Semiconductors será responsable de ningún dano indirecto, incidental, punitivo, especial ou consecuente (incluíndo, sen limitación, lucro cesante, aforro perdido, interrupción do negocio, custos relacionados coa eliminación ou substitución de calquera produto ou cargos de reelaboración) xa sexa. ou non, tales danos están baseados en agravio (incluíndo neglixencia), garantía, incumprimento do contrato ou calquera outra teoría legal.
Sen prexuízo de calquera dano que o cliente poida sufrir por calquera motivo, a responsabilidade acumulada e acumulada de NXP Semiconductors cara ao cliente polos produtos descritos neste documento estará limitada de acordo cos Termos e condicións de venda comercial de NXP Semiconductors.
Dereito a facer cambios — NXP Semiconductors resérvase o dereito de facer cambios na información publicada neste documento, incluídas, sen limitación, especificacións e descricións de produtos, en calquera momento e sen previo aviso. Este documento substitúe e substitúe toda a información proporcionada antes da súa publicación.
Idoneidade para o seu uso — Os produtos de NXP Semiconductors non están deseñados, autorizados ou garantidos para ser axeitados para o seu uso en sistemas ou equipos de soporte vital, críticos para a vida ou para a seguridade, nin en aplicacións nas que se pode esperar razoablemente que a falla ou o mal funcionamento dun produto NXP Semiconductors resulte en problemas persoais. lesións, morte ou danos graves á propiedade ou ao medio ambiente. NXP Semiconductors e os seus provedores non aceptan ningunha responsabilidade pola inclusión e/ou o uso de produtos de NXP Semiconductors en tales equipos ou aplicacións e, polo tanto, tal inclusión e/ou uso corre a risco do cliente.
Aplicacións — Aplicacións que aquí se describen para calquera destas
os produtos son só para fins ilustrativos. NXP Semiconductors non fai ningunha representación ou garantía de que tales aplicacións sexan axeitadas para o uso especificado sen máis probas ou modificacións.
Os clientes son responsables do deseño e funcionamento dos seus
aplicacións e produtos que utilizan produtos de NXP Semiconductors, e NXP Semiconductors non se fai responsable de ningunha asistencia coas aplicacións ou o deseño de produtos do cliente. É responsabilidade exclusiva do cliente determinar se o produto NXP Semiconductors é axeitado e apto para as aplicacións e produtos previstos do cliente, así como para a aplicación e o uso planificados dos clientes de terceiros do cliente. Os clientes deben proporcionar garantías de deseño e funcionamento adecuadas para minimizar os riscos asociados ás súas aplicacións e produtos.
NXP Semiconductors non acepta ningunha responsabilidade relacionada con calquera defecto, dano, custo ou problema que se basee en calquera debilidade ou defecto nas aplicacións ou produtos do cliente, ou na aplicación ou uso por parte dos clientes externos do cliente. O cliente é responsable de facer todas as probas necesarias para as aplicacións e produtos do cliente que utilicen os produtos de NXP Semiconductors co fin de evitar un defecto das aplicacións e dos produtos ou da aplicación ou uso por parte de terceiros do cliente.
Termos e condicións de venda comercial - Os produtos de NXP Semiconductors véndense suxeitos aos termos e condicións xerais de venda comercial, publicados en https://www.nxp.com/profile/termos, a non ser que se acorde o contrario nun acordo individual escrito válido. No caso de que se celebre un acordo individual, só se aplicarán os termos e condicións do acordo respectivo. NXP Semiconductors opón expresamente a aplicación dos termos e condicións xerais do cliente con respecto á compra de produtos de NXP Semiconductors por parte do cliente.
Control de exportación — Este documento, así como o(s) artigo(s) aquí descrito(s), poden estar suxeitos ás normas de control das exportacións. A exportación pode requirir unha autorización previa das autoridades competentes.
Adecuación para o seu uso en produtos non cualificados para a automoción — A non ser que este documento indique expresamente que este NXP Semiconductors específico
o produto está cualificado para o automóbil, o produto non é adecuado para o seu uso en automóbiles. Non está cualificado nin probado de acordo coas probas de automóbiles ou requisitos de aplicación. NXP Semiconductors non acepta ningunha responsabilidade pola inclusión e/ou o uso de produtos non cualificados para automóbiles en equipos ou aplicacións automotrices.
No caso de que o cliente utilice o produto para o seu deseño e uso
aplicacións automotivas ás especificacións e estándares automotivos,
cliente (a) utilizará o produto sen a garantía do produto de NXP Semiconductors para tales aplicacións, usos e especificacións automotrices, e (b) sempre que o cliente utilice o produto para aplicacións automotrices máis aló das especificacións de NXP Semiconductors, ese uso será exclusivamente baixo o propio risco do cliente e (c) o cliente indemnizará totalmente a NXP Semiconductors por calquera responsabilidade, dano ou reclamación de produtos fallidos derivados do deseño e uso do produto por parte do cliente. para aplicacións automotivas máis aló da garantía estándar de NXP Semiconductors e das especificacións do produto de NXP Semiconductors.
Traducións — Unha versión non inglesa (traducida) dun documento, incluída a información legal deste documento, é só para referencia. A versión en inglés prevalecerá en caso de discrepancia entre a versión traducida e a inglesa.
Seguridade — O cliente entende que todos os produtos NXP poden estar suxeitos a vulnerabilidades non identificadas ou poden soportar estándares ou especificacións de seguridade establecidas con limitacións coñecidas. O cliente é responsable do deseño e funcionamento das súas aplicacións e produtos ao longo do seu ciclo de vida para reducir o efecto destas vulnerabilidades nas aplicacións e produtos do cliente. A responsabilidade do cliente tamén se estende a outras tecnoloxías abertas e/ou propietarias soportadas polos produtos NXP para o seu uso nas aplicacións do cliente. NXP non se fai responsable de ningunha vulnerabilidade. O cliente debe comprobar regularmente as actualizacións de seguranza de NXP e facer un seguimento adecuado.
O cliente seleccionará produtos con funcións de seguridade que mellor cumpran as regras, regulamentos e estándares da aplicación prevista e tomará as decisións de deseño definitivas sobre os seus produtos e é o único responsable do cumprimento de todos os requisitos legais, regulamentarios e relacionados coa seguridade dos seus produtos, independentemente de de calquera información ou apoio que poida proporcionar NXP. NXP dispón dun Equipo de Resposta a Incidentes de Seguridade do Produto (PSIRT) (que se pode acceder en PSIRT@nxp.com) que xestiona a investigación, os informes e a liberación de solucións para as vulnerabilidades de seguridade dos produtos NXP.
NXP B.V. — NXP B.V. non é unha empresa operadora e non distribúe nin vende produtos.
Documentos/Recursos
![]() |
Software de depuración NXP AN14120 Cortex-M [pdfGuía do usuario i.MX 8ULP, i.MX 93, AN14120 Depuración de software Cortex-M, AN14120, depuración de software Cortex-M, software Cortex-M, software |