IPS(Interpreter for Process Structures) for mbed
Dependencies: ConfigFile FATFileSystem mbed
IPS port from linux/unix version.
mbed_blinky.ips
0 VAR led1 " LED1 " DigitalOut led1 ! : main ANFANG 1 JA? 1 led1 @ write 200 wait_ms 0 led1 @ write 200 wait_ms DANN/NOCHMAL ; main
- ips-02.tgz - ips for linux/unix
- ipsdoc.zip - document
- https://bitbucket.org/va009039/ips/
VirtualRAM.h@1:e74530ad6b9e, 2015-05-13 (annotated)
- Committer:
- va009039
- Date:
- Wed May 13 18:39:01 2015 +0900
- Revision:
- 1:e74530ad6b9e
add L152RE.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
va009039 |
1:e74530ad6b9e | 1 | // VirtualRAM.h 2015/4/29 |
va009039 |
1:e74530ad6b9e | 2 | #pragma once |
va009039 |
1:e74530ad6b9e | 3 | #define PAGE_CHUNK_SIZE 1024 |
va009039 |
1:e74530ad6b9e | 4 | class VirtualRAM { |
va009039 |
1:e74530ad6b9e | 5 | public: |
va009039 |
1:e74530ad6b9e | 6 | int used_size; |
va009039 |
1:e74530ad6b9e | 7 | VirtualRAM(): used_size(0) { |
va009039 |
1:e74530ad6b9e | 8 | memset(mem_ptr, 0x00, sizeof(mem_ptr)); // NULL |
va009039 |
1:e74530ad6b9e | 9 | } |
va009039 |
1:e74530ad6b9e | 10 | uint8_t peek(uint16_t a) { |
va009039 |
1:e74530ad6b9e | 11 | uint8_t* mem = ptr(a); |
va009039 |
1:e74530ad6b9e | 12 | if (mem == NULL) { |
va009039 |
1:e74530ad6b9e | 13 | return 0x00; |
va009039 |
1:e74530ad6b9e | 14 | } |
va009039 |
1:e74530ad6b9e | 15 | return mem[a % PAGE_CHUNK_SIZE]; |
va009039 |
1:e74530ad6b9e | 16 | } |
va009039 |
1:e74530ad6b9e | 17 | void poke(uint16_t a, uint8_t b) { |
va009039 |
1:e74530ad6b9e | 18 | uint8_t* mem = ptr(a); |
va009039 |
1:e74530ad6b9e | 19 | if (mem == NULL) { |
va009039 |
1:e74530ad6b9e | 20 | mem = reinterpret_cast<uint8_t*>(malloc(PAGE_CHUNK_SIZE)); |
va009039 |
1:e74530ad6b9e | 21 | MBED_ASSERT(mem != NULL); |
va009039 |
1:e74530ad6b9e | 22 | mem_ptr[idx(a)] = mem; |
va009039 |
1:e74530ad6b9e | 23 | used_size += PAGE_CHUNK_SIZE; |
va009039 |
1:e74530ad6b9e | 24 | } |
va009039 |
1:e74530ad6b9e | 25 | mem[a % PAGE_CHUNK_SIZE] = b; |
va009039 |
1:e74530ad6b9e | 26 | } |
va009039 |
1:e74530ad6b9e | 27 | |
va009039 |
1:e74530ad6b9e | 28 | private: |
va009039 |
1:e74530ad6b9e | 29 | uint8_t* ptr(uint16_t addr) { |
va009039 |
1:e74530ad6b9e | 30 | return mem_ptr[idx(addr)]; |
va009039 |
1:e74530ad6b9e | 31 | } |
va009039 |
1:e74530ad6b9e | 32 | int idx(uint16_t addr) { |
va009039 |
1:e74530ad6b9e | 33 | return addr / PAGE_CHUNK_SIZE; |
va009039 |
1:e74530ad6b9e | 34 | } |
va009039 |
1:e74530ad6b9e | 35 | uint8_t* mem_ptr[65536 / PAGE_CHUNK_SIZE]; |
va009039 |
1:e74530ad6b9e | 36 | }; |
va009039 |
1:e74530ad6b9e | 37 |