| Index: platforms/stm/disco_fletch/src/fletch_entry.cc
|
| diff --git a/platforms/stm/disco_fletch/src/fletch_entry.cc b/platforms/stm/disco_fletch/src/fletch_entry.cc
|
| deleted file mode 100644
|
| index f6667d3aef2b59b2912a742b1ac03c5e7b7299b2..0000000000000000000000000000000000000000
|
| --- a/platforms/stm/disco_fletch/src/fletch_entry.cc
|
| +++ /dev/null
|
| @@ -1,146 +0,0 @@
|
| -// Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE.md file.
|
| -
|
| -#include <stdlib.h>
|
| -
|
| -#include <cmsis_os.h>
|
| -extern "C" {
|
| - #include <lcd_log.h>
|
| -}
|
| -#include <stm32746g_discovery.h>
|
| -#include <stm32746g_discovery_lcd.h>
|
| -
|
| -#include "include/fletch_api.h"
|
| -#include "include/static_ffi.h"
|
| -
|
| -#include "platforms/stm/disco_fletch/src/fletch_entry.h"
|
| -#include "platforms/stm/disco_fletch/src/page_allocator.h"
|
| -#include "platforms/stm/disco_fletch/src/uart.h"
|
| -#include "src/shared/utils.h"
|
| -
|
| -extern unsigned char _binary_snapshot_start;
|
| -extern unsigned char _binary_snapshot_end;
|
| -extern unsigned char _binary_snapshot_size;
|
| -
|
| -extern PageAllocator* page_allocator;
|
| -
|
| -Uart* uart;
|
| -
|
| -extern "C" size_t UartRead(uint8_t* buffer, size_t count) {
|
| - return uart->Read(buffer, count);
|
| -}
|
| -
|
| -extern "C" size_t UartWrite(uint8_t* buffer, size_t count) {
|
| - return uart->Write(buffer, count);
|
| -}
|
| -
|
| -extern "C" void LCDDrawLine(
|
| - uint32_t x1, uint32_t y1, uint32_t x2, uint32_t y2) {
|
| - // BSP_LCD_DrawLine takes uint16_t arguments.
|
| - BSP_LCD_DrawLine(x1, y1, x2, y2);
|
| -}
|
| -
|
| -// Implementation of write used from syscalls.c to redirect all printf
|
| -// calls to the print interceptors.
|
| -extern "C" int Write(int file, char *ptr, int len) {
|
| - for (int i = 0; i < len; i++) {
|
| - if (file == 2) {
|
| - fletch::Print::Error("%c", *ptr++);
|
| - } else {
|
| - fletch::Print::Out("%c", *ptr++);
|
| - }
|
| - }
|
| - return len;
|
| -}
|
| -
|
| -FLETCH_EXPORT_TABLE_BEGIN
|
| - FLETCH_EXPORT_TABLE_ENTRY("uart_read", UartRead)
|
| - FLETCH_EXPORT_TABLE_ENTRY("uart_write", UartWrite)
|
| - FLETCH_EXPORT_TABLE_ENTRY("lcd_height", BSP_LCD_GetYSize)
|
| - FLETCH_EXPORT_TABLE_ENTRY("lcd_width", BSP_LCD_GetXSize)
|
| - FLETCH_EXPORT_TABLE_ENTRY("lcd_clear", BSP_LCD_Clear)
|
| - FLETCH_EXPORT_TABLE_ENTRY("lcd_draw_line", LCDDrawLine)
|
| - FLETCH_EXPORT_TABLE_ENTRY("lcd_set_foreground_color", BSP_LCD_SetTextColor)
|
| - FLETCH_EXPORT_TABLE_ENTRY("lcd_set_background_color", BSP_LCD_SetBackColor)
|
| - FLETCH_EXPORT_TABLE_ENTRY("lcd_display_string", BSP_LCD_DisplayStringAt)
|
| -FLETCH_EXPORT_TABLE_END
|
| -
|
| -// Run fletch on the linked in snapshot.
|
| -void StartFletch(void const * argument) {
|
| - fletch::Print::Out("Setup fletch\n");
|
| - FletchSetup();
|
| - fletch::Print::Out("Reading fletch snapshot\n");
|
| - unsigned char *snapshot = &_binary_snapshot_start;
|
| - int snapshot_size = reinterpret_cast<int>(&_binary_snapshot_size);
|
| - FletchProgram program = FletchLoadSnapshot(snapshot, snapshot_size);
|
| - fletch::Print::Out("Run fletch program\n");
|
| - FletchRunMain(program);
|
| - fletch::Print::Out("Fletch program exited\n");
|
| -}
|
| -
|
| -void UartPrintIntercepter(const char* message, int out, void* data) {
|
| - int len = strlen(message);
|
| - for (int i = 0; i < len; i++) {
|
| - if (message[i] == '\n') {
|
| - uart->Write(reinterpret_cast<const uint8_t*>("\r"), 1);
|
| - }
|
| - uart->Write(reinterpret_cast<const uint8_t*>(message + i), 1);
|
| - }
|
| -}
|
| -
|
| -// LCDLogPutchar is defined by the STM LCD log utility
|
| -// (Utilities/Log/lcd_log.c) by means of the macro definitions of
|
| -// LCD_LOG_PUTCHAR in lcd_log_conf.h.
|
| -extern "C" int LCDLogPutchar(int ch);
|
| -void LCDPrintIntercepter(const char* message, int out, void* data) {
|
| - int len = strlen(message);
|
| - if (out == 3) {
|
| - LCD_LineColor = LCD_COLOR_RED;
|
| - } else {
|
| - LCD_LineColor = LCD_COLOR_BLACK;
|
| - }
|
| - for (int i = 0; i < len; i++) {
|
| - LCDLogPutchar(message[i]);
|
| - }
|
| -}
|
| -
|
| -// Main task entry point from FreeRTOS.
|
| -void FletchEntry(void const * argument) {
|
| - // Add an arena of the 8Mb of external memory.
|
| - uint32_t ext_mem_arena =
|
| - page_allocator->AddArena("ExtMem", 0xc0000000, 0x800000);
|
| -
|
| - // Initialize the LCD.
|
| - size_t fb_bytes = (RK043FN48H_WIDTH * RK043FN48H_HEIGHT * 2);
|
| - size_t fb_pages = page_allocator->PagesForBytes(fb_bytes);
|
| - void* fb = page_allocator->AllocatePages(fb_pages, ext_mem_arena);
|
| - BSP_LCD_Init();
|
| - BSP_LCD_LayerDefaultInit(1, reinterpret_cast<uint32_t>(fb));
|
| - BSP_LCD_SelectLayer(1);
|
| - BSP_LCD_SetFont(&LCD_DEFAULT_FONT);
|
| -
|
| - // Initialize LCD Log module.
|
| - LCD_LOG_Init();
|
| - LCD_LOG_SetHeader(reinterpret_cast<uint8_t*>(const_cast<char*>("Fletch")));
|
| - LCD_LOG_SetFooter(reinterpret_cast<uint8_t*>(const_cast<char*>(
|
| - "STM32746G-Discovery")));
|
| - FletchRegisterPrintInterceptor(LCDPrintIntercepter, NULL);
|
| -
|
| - // For now always start the UART.
|
| - uart = new Uart();
|
| - uart->Start();
|
| -
|
| - FletchRegisterPrintInterceptor(UartPrintIntercepter, NULL);
|
| -
|
| - // Always disable standard out, as this will cause infinite
|
| - // recursion in the syscalls.c handling of write.
|
| - fletch::Print::DisableStandardOutput();
|
| -
|
| - StartFletch(argument);
|
| -
|
| - // No more to do right now.
|
| - for (;;) {
|
| - osDelay(1);
|
| - }
|
| -}
|
|
|