# Licenças e fontes

Código da interface e periféricos virtuais: GPL-2.0-or-later. Sem garantia. O texto da GPLv2 está em `vendor/unicorn-LICENSE`.

## Unicorn.js / Unicorn

- Wrapper: Alexandro Sanchez Bach; motor: Nguyen Anh Quynh, Dang Hoang Vu e demais contribuidores.
- Pacote: `@alexaltea/unicorn-js@2.1.4`, GPL-2.0, licença incluída em `vendor/unicorn-LICENSE`.
- Fonte do wrapper: https://github.com/AlexAltea/unicorn.js/tree/560284c59c11c8d6c94d537f4354339f069ddcdf
- Fonte do motor: https://github.com/unicorn-engine/unicorn/tree/2.1.4
- O motor local limita a 12 instruções cada bloco traduzido para evitar estouro na tradução de trechos Thumb extensos no WebAssembly. O script `tools/build-cpu.cjs` reproduz a alteração.
- Pacote original: https://registry.npmjs.org/@alexaltea/unicorn-js/-/unicorn-js-2.1.4.tgz
- Modificação (22/10/2026): seletor WASM do modelo MCLASS exportado como global `lab_model` (8=M3, 9=M4), em vez de fixo em M33; o wrapper aceita `wasmBinary` e expõe essa global. A lógica de execução das instruções não foi reimplementada.

## Keystone.js / Keystone

- `@alexaltea/keystone-js@0.9.2`, GPL-2.0. Sem modificações.
- Licença: `vendor/keystone-LICENSE`.
- Wrapper e receita: https://github.com/AlexAltea/keystone.js/tree/7693b038edb6b3352937daeab39321a784fa9075
- Motor: https://github.com/keystone-engine/keystone
- Pacote: https://registry.npmjs.org/@alexaltea/keystone-js/-/keystone-js-0.9.2.tgz

## Capstone.js / Capstone

- `@alexaltea/capstone-js@5.0.9`, BSD-3-Clause. Sem modificações.
- Licença: `vendor/capstone-LICENSE`.
- Wrapper e receita: https://github.com/AlexAltea/capstone.js/tree/52da0b9c931a9f40255461250310cc96cb45c945
- Motor: https://github.com/capstone-engine/capstone
- Pacote: https://registry.npmjs.org/@alexaltea/capstone-js/-/capstone-js-5.0.9.tgz

As receitas upstream identificam os submódulos correspondentes dos motores. Créditos e licenças dos componentes internos permanecem aplicáveis. Todos os scripts da interface são servidos em código-fonte legível. As bibliotecas são servidas localmente, sem CDN.

## Modificações para a disciplina ELF74 (desde 29/10/2026)

Versão modificada de uma IDE web de Assembly distribuída sob GPL-2.0-or-later.

- `index.html`, `app.js`, `core.js`, `devices.js`, `examples.js`, `project.js`: botão "↓ .bin + .hex", abas Startup, Placa real e Instalação, clocks do SYSCTL/RCC no simulador, exemplo 08 da EK-TM4C1294XL, nomes do projeto.
- Novos: `zip.js`, `startup-ui.js`, `startup.css`, `startups.js` (gerado de `startups/`), `placa-icdi.js`, `placa-imagem.js`, `placa-cdc.js`, `placa-ui.js`, `placa.css`, `instalacao-ui.js`, `instalacao.css`, `instalacao/linux/70-tiva-icdi.rules`, `utfpr.css`.
- Startups da ST (`startups/startup_stm32*.s`): arquivos oficiais de STMicroelectronics/cmsis-device-f4 e cmsis-device-f1, sem alteração, Apache-2.0 (`startups/LICENSE-ST-*.md`).
- Startups da TI (`startups/startup_tm4c*.s`): escritos para este projeto; posições e nomes dos vetores tirados de `inc/hw_ints.h` do TivaWare 2.2.0.295.
- `img/utfpr-horizontal.svg` e `img/utfpr-horizontal-negativa.svg`: marca da UTFPR, convertida dos PDFs oficiais de https://www.utfpr.edu.br/comunicacao/design/marca-da-utfpr (na versão negativa só o texto escuro virou branco). A marca é da universidade e não está sob a GPL. Este é um projeto de aluno, não um site oficial da UTFPR.

## Cortex Lab · novembro de 2026

Integração dos recursos da edição da disciplina ELF74, Prof. Paulo Denis Garcez da Luz, a partir de https://github.com/garcezluz/sistemas-embarcados (4c4fa4530862ab74e4ecd6fe4846a0f8bad4e2a3), com o Cortex Lab de Eduardo Nunes dos Santos. O gerenciador de projetos, explorador, módulos, perfis adicionais, compilação C e gravação DFU foram acrescentados nesta edição. A interface e os modelos locais seguem a GPL-2.0-or-later.

## Compilador C e tipografia

Consulte os avisos de Clang, LLD, CMSIS e bibliotecas embarcadas em [c/vendor/NOTICE.txt](c/vendor/NOTICE.txt). A fonte DM Sans é distribuída sob a [SIL Open Font License](fonts/OFL-DM-Sans.txt).

## FreeRTOS, Pac-Man Tilt e projetos C/C++

O modelo Pac-Man Tilt usa as fontes do projeto da disciplina e o kernel FreeRTOS para ARM Cortex-M4F. A [licença MIT do kernel](c/frameworks/freertos/LICENSE.md) acompanha a distribuição. Os créditos dos autores foram preservados nos arquivos-fonte.

O perfil CMSIS usa o CMSIS-Core da Arm e os cabeçalhos dos dispositivos STM32 da ST. Os cabeçalhos dos dois perfis Tiva usam mapas de registradores distribuídos sob 0BSD, com [créditos e procedência](c/frameworks/cmsis/NOTICE.txt). O núcleo compatível com Arduino e os modelos do ST7789 e MPU6050 foram implementados no Cortex Lab.

## Fluxograma

O traçado das conexões usa a distribuição local Viz.js 3.25.0 com Graphviz 14.1.3. Consulte os [créditos, fontes e licenças](vendor/viz-NOTICE.txt).

## Objetos do FreeRTOS

As implementações de grupos de eventos, stream e message buffers, temporizadores de software e corrotinas vêm do [FreeRTOS-Kernel V11.1.0](https://github.com/FreeRTOS/FreeRTOS-Kernel/tree/V11.1.0), sob a licença [MIT](c/frameworks/freertos/LICENSE.md). Elas complementam o núcleo incluído no projeto PacTilt. Os ports GCC para Cortex-M0, Cortex-M3 e Cortex-M7 também vêm do FreeRTOS-Kernel, sob a mesma licença.

## CMSIS-RTX5

O kernel RTX5, os ports GNU Armv6-M e Armv7-M, a interface CMSIS-RTOS2 e a implementação de SysTick são da Arm Limited e estão sob Apache-2.0. A cópia usada pela bancada vem de [CMSIS_5 5.9.0](https://github.com/ARM-software/CMSIS_5/tree/5.9.0/CMSIS/RTOS2). Os avisos originais estão nos arquivos e em [LICENSE.txt](c/frameworks/rtx5/LICENSE.txt).

## Zephyr · perfis de placas STM32

Os arquivos em `c/frameworks/zephyr/*.pack` contêm cabeçalhos, configuração de placa, arquivos-objeto e bibliotecas do [Zephyr 4.4.2](https://github.com/zephyrproject-rtos/zephyr/tree/v4.4.2), compilados da distribuição PlatformIO framework-zephyr 3.40402.0 (BlackPill) e da versão oficial v4.4.2 (Blue Pill, Discovery e Nucleo). A aplicação C do usuário é compilada e vinculada no navegador. O empacotador adapta o script de ligação gerado para o LLD e preserva os registros de interrupção para resolver os endereços após a ligação.

- Zephyr Project e colaboradores, [Apache-2.0](c/frameworks/zephyr/LICENSE-Zephyr).
- Arm CMSIS-Core, revisão `30a859f44ef8ab4dc8f84b03ed586fd16ccf9d74`, [Apache-2.0](c/frameworks/zephyr/LICENSE-CMSIS-Core).
- STMicroelectronics, HAL STM32 `fc11896dd39cfca37bf9b4aeaaa2df8861b81875`, [BSD-3-Clause](c/frameworks/zephyr/LICENSE-STM32-HAL) e [licença dos cabeçalhos CMSIS de dispositivo](c/frameworks/zephyr/LICENSE-STM32-CMSIS).

## Arduino AVR

O núcleo AVR, a GPIO, o Timer0, a USART e o montador vêm do [AVR8js 0.21.1](https://github.com/wokwi/avr8js/tree/v0.21.1), sob a [licença MIT](boards/vendor/avr8js/LICENSE.txt). O montador inclui contribuições de Michael Conrad Tadpol Tilstra.
