view src/cs/drivers/drv_app/ffs/board/tdata.c @ 673:62a5285e014a

Lorekeeping: allow tpudrv-leonardo.lib on Leonardo/Tango Back in 2015 the Mother's idea was to produce a FreeCalypso development board that would be a clone of TI Leonardo, including the original quadband RFFE; one major additional stipulation was that this board needed to be able to run original unmodified TCS211-20070608 firmware with all blobs intact, with only minimal binary patches to main.lib and tpudrv.lib. The necessary patched libs were produced at that time in the tcs211-patches repository. That plan was changed and we produced FCDEV3B instead, with Openmoko's triband RFFE instead of Leonardo quadband, but when FC Magnetite started in 2016, a TPUDRV_blob= provision was still made, allowing the possibility of patching OM's tpudrv.lib for a restored Leonardo RFFE. Now in 2020 we have FC Tango which is essentially a verbatim clone of Leonardo core, including the original quadband RFFE. We have also deblobbed our firmware so much that we have absolutely no real need for a blob version of tpudrv.lib - but I thought it would be neat to put the ancient TPUDRV_blob= mechanism (classic config) to its originally intended use, just for the heck of it.
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 29 May 2020 03:55:36 +0000
parents 945cf7f506b2
children
line wrap: on
line source

/******************************************************************************
 * Flash File System (ffs)
 * Idea, design and coding by Mads Meisner-Jensen, mmj@ti.com
 *
 * ffs test data
 *
 * $Id: tdata.c 1.9 Tue, 14 Oct 2003 12:50:00 +0200 tsj $
 *
 ******************************************************************************/

#ifndef TARGET
#include "ffs.cfg"
#endif

#if (TARGET == 1)
#include "chipset.cfg"
#endif

#include "ffs/ffs.h"
#include "ffs/board/drv.h"
#include "ffs/board/tdata.h"

#if (TARGET == 0)
#ifdef WIN32
#include "windows.h"
#else //WIN32
#include "sys/mman.h"
#include "unistd.h"
#endif //WIN32

#include <string.h>
#include <stdlib.h>
#include "stdio.h"
#include "sys/types.h"
#include "sys/stat.h"
#include "fcntl.h"
#endif //TARGET == 0

/******************************************************************************
 * Globals
 ******************************************************************************/

// Buffer for tdata 'HUGE'. In target it point to the flash device, on the
// PC a buffer is allocated and filled with data from a c code file.
char *tdata_buf;

int sdata[TEST_DATA_NUM];

// Initialize test data. 
int test_tdata_init(void)
{
    int i, error, tdatasize, fsize = 60 * 1024;  // Check the file size or?

#ifdef WIN32
    DWORD nbytesread;
	OFSTRUCT lpReOpenBuff;
    HANDLE fd;
    char *fname = "../core.c"; // file to use as test data
#else
    char *fname = "core.c";
    int fd;
#endif
    // Set the size to the maximum image size
    tdatasize = 8 * 1024 * 1024;

    // Open file NOTEME change to readonly
#if (TARGET == 0)    
#ifdef WIN32
    fd = OpenFile(fname, &lpReOpenBuff, OF_READ);
#else 
    fd = open(fname, O_RDONLY, S_IRWXU|S_IRWXG|S_IRWXO);
#endif //WIN32
    if (fd == -1) {
        perror("Failed to open flash image"); exit(1);
    }

    if ((tdata_buf = (char*) malloc(tdatasize)) == 0)
        return EFFS_MEMORY;

#ifdef WIN32
    error = ReadFile(fd, tdata_buf, fsize, &nbytesread, 0);
#else
    error = read(fd, tdata_buf, fsize);
#endif
    if (error < 0) {
        perror("Failed to read file"); exit(1);
    }

#ifdef WIN32
    error = CloseHandle(fd);
#else
    error = close(fd);
#endif
    if (error < 0) {
        perror("Failed to close file"); exit(1);
    }

    // Fill the rest of tdata_buf
    for (i = 1; i < tdatasize/fsize; i++)
        memcpy(&tdata_buf[i], &tdata_buf[0], fsize);
#endif

#if (TARGET == 0)
    // Init tdata
    tdata[TDATA_HUGE] = tdata_buf;
#else
#if (CHIPSET == 12) // Calypso+. Do not read from the secure rom
    tdata[TDATA_HUGE] = (char *) 0x4000000;
#else
    tdata[TDATA_HUGE] = (char *) 0x1;
#endif
#endif //TARGET == 0

    for (i = 0; i < TEST_DATA_NUM; i++) 
        sdata[i] = strlen(tdata[i]);
    
    return EFFS_OK;
}

char *tdata[TEST_DATA_NUM] =
{
    // 0
    "yo",

    // 1
    "NineBytes",

    // 2
    "EighteenCharacters",

    // 3
    "The quick brown fox jumped over the little lazy rabbit then it turned "
    "around and ate the little stupid bunny."
    "The brown fox ate too much and became sick.",

    // 4
    "Foo bar fum fi fo, look high, look low, where it is, i don't know",

    // 5
    "55555",

    // 6
    "Two Canadian guys, Mike and Rob were on the roof, laying tile,"
    "when a sudden gust of wind came and knocked down their ladder." 
    "'I have an idea,' said Mike. 'We'll throw you down, and then"
    "you can pick up the ladder.'" 
    "What, do you think I'm stupid? I have an idea. I'll shine my"
    "flashlight, and you can climb down on the beam of light." 
    "What, do you think I'm stupid? You'll just turn off the"
    "flashlight when I'm halfway there.''",

    // 7
    "7777777",

    // 8
    "88888888",

    // 9
    "999999999",

    // 10
    "dummy"
};