Welcome to mirror list, hosted at ThFree Co, Russian Federation.

fel.h « src « hakchi-gui - github.com/ClusterM/hakchi.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 2bebb4a0cabaa0ced33f6671be51ce4c2fed822e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#ifndef FEL_H
#define FEL_H

#include <stdint.h>
#include <unistd.h>
#include <QObject>
#include <QByteArray>

struct FeldevHandle;

struct uboot_t
{
    QByteArray data;
    uint8_t md5[16];
    QByteArray cmd;
    uint32_t cmdOffset;

    uboot_t();
    void init(const QByteArray&ba);
    void doCmd(const char*str);
};

#define fes1_base_m 0x2000u
#define dram_base 0x40000000u
#define uboot_base_m 0x47000000u
#define uboot_base_f 0x100000u
#define flash_mem_base 0x43800000u
#define flash_mem_size 0x20u
#define sector_size 0x20000u
#define kernel_base_f (sector_size*0x30)
#define kernel_base_m flash_mem_base
#define kernel_max_size (uboot_base_m-flash_mem_base)
#define kernel_max_flash_size (sector_size*0x20)

class Fel:public QObject
{
    Q_OBJECT
public:
    Fel(QObject*parent=0);
    ~Fel();
    bool init();
    bool initDram(bool force=false);
    void release();
    void setFes1bin(const QByteArray&data);
    void setUboot(const QByteArray&data);
    bool haveUboot()const;
    bool runCode(uint32_t addr,uint32_t s);
    bool runUbootCmd(const char*str,bool noreturn=false);
    size_t readMemory(uint32_t addr,size_t size,void*buf);
    size_t writeMemory(uint32_t addr,size_t size,void*buf);
    size_t readFlash(uint32_t addr,size_t size,void*buf);
    size_t writeFlash(uint32_t addr,size_t size,void*buf);
signals:
    void dataFlow(int flow);
private:
    FeldevHandle*dev;
    QByteArray fes1bin;
    uboot_t uboot;
    bool dramInitOk;
};

#endif // FEL_H