microsoft / microsoft/vscode-cpptools

Cross Compile and Cross Deploy and Cross Debug a target

Aperta
#11,158 3 commenti 1 reazione 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

embedded tasks/build/debug
Lingua principale
TypeScript
Stelle
6.2k
Fork
1.7k
Merge medio
14h 46m
PR unite (30g)
61

Descrizione

Feature Request

So a very simple case version of what I am looking for is this, but understand I am really looking for the third step.

Very Basic First Starter Step
On your X64 Cross Compile a Linux C application for RASPBERRY PI (arm linux).

To debug, you must deploy the application to the remote machine
and Launch a remote debugger using something like GDBSERVER
and attach the GDB Debugger to that remote GDB Server.

A simple HELLO WORLD example would be great.

Here is an example:
https://deardevices.com/2019/04/18/how-to-crosscompile-raspi/

NOTE: Additional note: Any form of simulating or MOCKING the hardware is a non-starter. Please do not require QEMU, it must be 100% Optional. REASON: Because while the R-PI is some what supported there are many other targets that are NOT SUPPORTED by QEMU - so the user must be able to skip step 4 and go direct to step 5.

Another example is to use the ARM cpu target as a bare metal target on a PYNQ (or ZYNQ) board.

Second Step

Use the C++/TEST MATE or other example and run unit tests on that remote target (ie: VSCODE presents a BEEKER icon, click on the beaker and and you can select a unit test to run on the remote machine).

Third Step

The target is no longer a RASPBERRY PI - the target is actually a small embedded device. For example one of these:
https://learn.microsoft.com/en-us/azure-sphere/hardware/mt3620-reference-board-design

This third step is what I am really looking for - in my case it is a custom microcontroller board, similar to the MT3620 board but something else.

To make VSCODE unit test solution work, there are many many steps to get to this third stage that is is nearly impossible. I want to be proven wrong.

FOURTH STEP

As you will quickly learn, space and resources are limited in the embedded world. You will probably require 20 to 30 different build environments to build all of the different unit test configurations. Often just to make your code + unit test fit in the target you can only fit maybe 3 or 4 of your 20 to 30 total unit tests.

So you will learn that you need to be able to build (N+1) Variants for your various (N) UNIT TEST configurations, the +1 variant is for your final shippable product without any unit test framework present.

** ANOTHER VARIANT (simpler then embedded but has similarities) **

Run a LINUX machine on a HYPER-V virtual machine (or VMWARE machine) - you need to be able to SSH into he machine and run an application.

On your local Linux machine - compile an application and deploy the application to the remote Linux virtual machine and be able to debug the application.

Even better - be able to use the VSCODE unit test framework work to run unit tests (and debug) that remote application in unit test mode to.

** Final Variant - Build on Linux Ubuntu - Deploy to WSL **

Or the reverse, build on WSL for UBUNTU and deploy/run/test on a Linux machine - perhaps using SSH and/or a remote GDB Session.

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Non sono stati identificati file, test o punti di ingresso. Inizia restringendo la richiesta generale di compilazione incrociata, distribuzione remota, debugging e unit testing a un singolo workflow supportato, quindi definisci l’ambiente di destinazione, i punti di integrazione e i test che dimostrerebbero il completamento.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
cpp, linux, raspberry-pi, vscode
Ambito
build-system, devtools, embedded-iot, testing-qa
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
15/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.