OpenCores
URL https://opencores.org/ocsvn/igor/igor/trunk

Subversion Repositories igor

[/] [igor/] [trunk/] [avr/] [tools/] [formatsd.c] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 4 atypic
#include <sys/types.h>
2
#include <sys/stat.h>
3
#include <fcntl.h>
4
#include <unistd.h>
5
 
6
#include <stdio.h>
7
#include <stdint.h>
8
 
9
#define MAXBUFLEN 4096
10
 
11
int
12
main(int argc, char *argv[])
13
{
14
        struct stat st;
15
        uint32_t bootsize, datasize, data;
16
        uint8_t buffer[MAXBUFLEN];
17
        ssize_t numbytes;
18
        int fd, fd_boot, fd_data;
19
 
20
        if (argc < 4)
21
                errx(1, "usage: %s bootprogram datacontents outfile", argv[0]);
22
 
23
        fd = open(argv[3], O_WRONLY | O_CREAT, 0644);
24
        if (fd < 0)
25
                err(1, "open %s", argv[3]);
26
        fd_boot = open(argv[1], O_RDONLY);
27
        if (fd_boot < 0)
28
                err(1, "open %s", argv[1]);
29
        fd_data = open(argv[2], O_RDONLY);
30
        if (fd_data < 0)
31
                err(1, "open %s", argv[2]);
32
        /* Get sizes. */
33
        if (fstat(fd_boot, &st) < 0)
34
                err(1, "fstat");
35
        bootsize = htonl(st.st_size);
36
        if (fstat(fd_data, &st) < 0)
37
                err(1, "fstat");
38
        datasize = htonl(st.st_size);
39
        /* Write bootsize and datasize. */
40
        if (write(fd, &bootsize, sizeof(bootsize)) < 0)
41
                err(1, "write");
42
        if (write(fd, &datasize, sizeof(datasize)) < 0)
43
                err(1, "write");
44
 
45
        /* Read data and write to sd. */
46
        while ((numbytes = read(fd_boot, buffer, MAXBUFLEN)) > 0) {
47
                if (write(fd, buffer, numbytes) < 0)
48
                        err(1, "write");
49
        }
50
        while ((numbytes = read(fd_data, buffer, MAXBUFLEN)) > 0) {
51
                if (write(fd, buffer, numbytes) < 0)
52
                        err(1, "write");
53
        }
54
        return (0);
55
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.