Reacties
Antwoord
Het commando bash ./program.elf
stuurt het bestand door de bash-interpreter.
Een elf-bestand is een gecompileerd binair bestand en zou als volgt vanaf de opdrachtregel moeten worden uitgevoerd: ./program.elf
Vergeet niet om het uitvoerbare bit voor het bestand in te stellen met:
chmod a+x ./program.elf
Antwoord
Voor zover ik kan zien, is het veel gebruikelijker dat een ARMv7-processor het model ARMv7-A is (het soort dat wordt gebruikt voor de Snapdragon 600/800 in de Galaxy S4 en Nexus 5, evenals de Raspberry Pi 2 / model B), maar uw uitvoer vermeldt de systeemchip als een ARMv71 (ook bekend als de ARMv7 Revision 1). Het lijkt heel goed mogelijk dat de variant van de ARMv7-processor-SDK die je hebt geselecteerd bij het compileren / bouwen van het programma gewoon de verkeerde subset van ARMv7 was, vergelijkbaar met de bedoeling om te bouwen voor ARMv7-A en in plaats daarvan gebouwd voor ARMv7-M. Dit is slechts een gok, aangezien ik geen idee heb voor welke processor / apparaat je aan het bouwen was, of waar je op voortbouwt, maar gezien hoe kieskeurig SoC-processors zijn als het gaat om het draaien van programmas die niet specifiek voor hen zijn gecompileerd, zou ik willen voorstellen om de bron te compileren rechtstreeks op de machine in kwestie, indien mogelijk.
Opmerkingen
- Native compileren was mijn eerste gedachte, maar toen ik dat probeerde te doen, ontstond een andere reeks problemen die ik ' m ook probeer op te lossen. De chip die ik gebruik, is een Xilinx-processor en ik compileer op Xilinx SDK op een Windows-computer. Ik had aangenomen dat Xilinx SDK zou moeten compileren voor de juiste architectuur voor de ARM die ze gebruiken in Xilinx-processors, dus het ' vind ik raar dat dat niet ' t lijkt het geval te zijn.
- Als je ernaar kijkt, lijkt het erop dat Xilinx verschillende processorfamilies heeft, die allemaal onder de categorie ARMv7x vallen, maar verschillende combinaties van verschillende arm-cores gebruiken die worden vaak gevonden in ARMv7-cpus. Het ene model heeft bijvoorbeeld twee A9-Cortexen en een A7-Cortex als secundaire coprocessor, terwijl een ander model een A8-Cortex heeft met een andere enkele A5-Cortex als coprocessor. (Ik heb geen idee of dit echte combos zijn die aanwezig zijn in Xilinx-CPUs, slechts voorbeelden: P
readelf -A ./program.elf
info om te verifiëren. Is er meer aan de fout dan " kan het binaire bestand " niet uitvoeren?bash ./program.elf
? Het elf-bestand is GEEN bash-script. Haal het niet door de bash-interpreter. Het is een elfbestand./program.elf
. Veronderstel bit set uitvoeren.chmod a+x ./program.elf
.