{"id":13654059,"url":"https://github.com/tzvisor/ltzvisor","last_synced_at":"2025-04-23T07:30:25.413Z","repository":{"id":48825833,"uuid":"102951408","full_name":"tzvisor/ltzvisor","owner":"tzvisor","description":"LTZVisor: a Lightweight TrustZone-assisted Hypervisor","archived":false,"fork":false,"pushed_at":"2018-04-29T23:55:40.000Z","size":455,"stargazers_count":78,"open_issues_count":1,"forks_count":26,"subscribers_count":19,"default_branch":"master","last_synced_at":"2024-11-10T04:36:41.469Z","etag":null,"topics":["hypervisor","trustzone"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tzvisor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-09-09T11:54:44.000Z","updated_at":"2024-11-04T09:58:06.000Z","dependencies_parsed_at":"2022-09-23T22:30:14.433Z","dependency_job_id":null,"html_url":"https://github.com/tzvisor/ltzvisor","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tzvisor%2Fltzvisor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tzvisor%2Fltzvisor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tzvisor%2Fltzvisor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tzvisor%2Fltzvisor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tzvisor","download_url":"https://codeload.github.com/tzvisor/ltzvisor/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250390785,"owners_count":21422782,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hypervisor","trustzone"],"created_at":"2024-08-02T02:01:22.875Z","updated_at":"2025-04-23T07:30:24.964Z","avatar_url":"https://github.com/tzvisor.png","language":"C","readme":"LTZVisor\n=========\n\n\nIntroduction\n------------\n\nLTZVisor is a lightweight TrustZone-assisted hypervisor. It allows the \nconsolidation of two virtual machines (VMs), running each of them in \nan independent virtual world (secure and non-secure) supported by \nTrustZone-enabled processors. \nThe secure world is tipically used for running a small TCB size VM, \nwhile the non-secure world is used for running a rich environment. \n  \nFor the Cortex-A series a tipical configuration encompasses \nrunning a RTOS as secure VM and a GPOS as non-secure VM.\nFor the new generation Cortex-M microcontrollers it can be used for \nrunning a bare metal application or a lightweight RTOS as secure VM \nside by side with a RTOS or an embedded OS for IoT as non-secure VM.  \n\n\n**NOTE**: This is work in progress! Don't expect things to be complete. \nUse at your own risk.\n\n\nCommunity Resources\n-------------------\n\nProject website:\n\n - http://www.tzvisor.org/\n\nProject home:\n\n - https://github.com/tzvisor\n \nLTZVisor source code:\n\n - https://github.com/tzvisor/ltzvisor\n \nMailing list:\n\t\n - ltzvisor-dev@googlegroups.com\n \nFrequently Asked Questions (FAQ):\n\n - Please see [FAQ file](FAQ.md)\n \nContributing:\n\n - Please see [Contribution file](CONTRIBUTING)\n\n\nHardware requirements\n------------\n\nLTZVisor is limited by design to TrustZone-enabled ARM processors,\nwhich include all Cortex-A series (ARMv7-A and ARMv8-A) and the \nnew generation Cortex-M series (ARMv8-M):\n\n - ARM Cortex-A5 (ARMv7-A)\n - ARM Cortex-A7 (ARMv7-A)\n - ARM Cortex-A8 (ARMv7-A)\n - ARM Cortex-A9 (ARMv7-A)\n - ARM Cortex-A15 (ARMv7-A)\n - ARM Cortex-A17 (ARMv7-A)\n \n - ARM Cortex-A32 (ARMv8-A)\n - ARM Cortex-A35 (ARMv8-A)\n - ARM Cortex-A53 (ARMv8-A)\n - ARM Cortex-A57 (ARMv8-A)\n - ARM Cortex-A72 (ARMv8-A)\n - ARM Cortex-A73 (ARMv8-A)\n \n - ARM Cortex-M23 (ARMv8-M)\n - ARM Cortex-M33 (ARMv8-M)\n\n\nLTZVisor has support for the following boards:\n\n - ARMv7-A\n\t* Xilinx Zynq-7000 All Programmable SoC ZC702 Evaluation Kit\n\t* ZedBoard Zynq-7000 ARM/FPGA SoC Development Board \n\t* Zybo Zynq-7000 ARM/FPGA SoC Trainer Board \n\t* PYNQ-Z1 Python Productivity for Zynq (on going)\n\t* i.MX 6QuadPlus SABRE Development Board (on going)\n\t\n - ARMv8-A\n\t* Xilinx Zynq UltraScale+ MPSoC ZCU102 Evaluation Kit (on going)\n \n\n \nSoftware requirements\n------------\nFor building LTZVisor a host system should exist. The host system \nmust be endowed with an Operating Systems supporting a compilation \ntoolchain. We strongly recommend the use of Linaro GNU Toolchain:\n\n - Ubuntu 12.04 and Linaro GNU Toolchain (7.1.1-2017.08)\n\t* arm-eabi-gcc 7.1.1 \n\t* arm-eabi-as 2.28.2\n\t* arm-none-eabi-ld 2.28.2\n\t* arm-none-eabi-objcopy 2.28.2 \n\nDownload: https://releases.linaro.org/components/toolchain/binaries/7.1-2017.08/arm-eabi/\n\nLTZVisor was also tested under the following host \nconfigurations:\n\n - Ubuntu 12.04 and Sourcery G++ Lite Toolchain (2011.03-42)\n\t* arm-none-eabi-gcc 4.5.2 \n\t* arm-none-eabi-as 2.20.51\n\t* arm-none-eabi-ld 2.20.51 \n\t* arm-none-eabi-objcopy 2.20.51 \n\nFor Xilinx-based platforms LTZVisor was also tested under \nthe following host configurations:\t\n\n - Ubuntu 12.04 and Sourcery CodeBench Lite Toolchain (2012.09-105)\n\t* arm-xilinx-eabi-gcc 4.7.2\n\t* arm-xilinx-eabi-as 2.23.51 \n\t* arm-xilinx-eabi-ld 2.23.51 \n\t* arm-xilinx-eabi-objcopy 2.23.51 \n\n - Windows 10 and Sourcery CodeBench Lite Toolchain (2015.05-16)\n\t* arm-xilinx-eabi-gcc 4.9.2\n\t* arm-xilinx-eabi-as 2.24.51 \n\t* arm-xilinx-eabi-ld 2.24.51 \n\t* arm-xilinx-eabi-objcopy 2.24.51 \n\t\nGuest Operating Systems\n------------\n\nLTZVisor supports the following guest operating systems:\n\n - Secure: FreeRTOS, bare metal\n - Non-secure: Linux, bare metal\n\nBuild \u0026 Compile\n------------\n\nFor build LTZVisor, just run `make`:\n\n\tmake \n\t\nThe default configuration targets the ZedBoard platform, uses\nthe Sourcery G++ Lite Toolchain, and setup ups a system with two\nbare metal VMs. \n\nOptionally it is possible to specify the target board:\n\n - Xilinx Zynq-7000 All Programmable SoC ZC702 Evaluation Kit:\n\t\n\t`make BOARD=ZC702`\n\n - ZedBoard Zynq-7000 ARM/FPGA SoC Development Board\n \n\t`make BOARD=ZEDBOARD`\n \n - Zybo Zynq-7000 ARM/FPGA SoC Trainer Board\n \n\t`make BOARD=ZYBO`\n\t\nIt is also possible to specify the cross compile toolchain as well\nas the VMs configuration:\n\n\tmake [BOARD=ZC702] [CROSS_COMPILE=arm-xilinx-eabi-] [S_GUEST=BARE_METAL] [NS_GUEST=BARE_METAL]\n\n(Instructions explaining how to run FreeRTOS as secure guest-OS \nand Linux as non-secure guest-OS will be added soon).\t\n\nDemonstration\n------------\n\nBefore power-on your board, please make sure that you copy the \nbootloader and LTZVisor binary images to the SD card . The bootloader\nis provided in the LTZVisor source project under the folder \"bootloader\".\nEach board as a specific bootloader. Also, please make sure that your \nboard is configured to boot from the SD card.\n\n1. Power-on your board;\n\n2. Run any terminal and setup the serial port for 115200 bps (baud rate);\n\n3. Stop the autoboot by hitting any key;\n\n4. Type the following sequence of commands:\n\n\t- Xilinx Zynq-7000 All Programmable SoC ZC702 Evaluation Kit:\n \n\t\t`mmcinfo`\n\t\t\n\t\t`fatload mmc 0 0x3C000000 LTZVisor.bin`\n\t\t\n\t\t`go 0x3C000000` \n\n\t- ZedBoard Zynq-7000 ARM/FPGA SoC Development Board:\n \n\t\t`mmcinfo`\n\t\t\n\t\t`fatload mmc 0 0x1C000000 LTZVisor.bin`\n\t\t\n\t\t`go 0x1C000000` \n\t\n\t- Zybo Zynq-7000 ARM/FPGA SoC Trainer Board:\n \n\t\t`mmcinfo`\n\t\t\n\t\t`fatload mmc 0 0x1C000000 LTZVisor.bin`\n\t\t\n\t\t`go 0x1C000000` \n\nLTZVisor shall start immediately running! For the default system \nconfiguration (two bare metal VMs) the secure VM shall blink a \nset of LEDs every second, while the non-secure VM shall print \n\"Hello World\" messages. \n\nReferences\n------------\n\n 1. Sandro Pinto, Jorge Pereira, Tiago Gomes, Adriano Tavares, and Jorge Cabral. \n \"LTZVisor: TrustZone is the Key.\" In LIPIcs-Leibniz International Proceedings \n in Informatics, vol. 76. Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik, 2017.\n \n 2. Sandro Pinto, Daniel Oliveira, Jorge Pereira, Nuno Cardoso, Mongkol \n Ekpanyapong, Jorge Cabral, and Adriano Tavares. \"Towards a lightweight embedded \n virtualization architecture exploiting ARM TrustZone.\" In Emerging Technology \n and Factory Automation (ETFA), IEEE, pp. 1-4., 2014.\n\n","funding_links":[],"categories":["EMULATOR","隐私新技术"],"sub_categories":["隐私相关领域法规/条例"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftzvisor%2Fltzvisor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftzvisor%2Fltzvisor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftzvisor%2Fltzvisor/lists"}