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

Subversion Repositories igor

[/] [igor/] [trunk/] [avr/] [tools/] [formatsd.c] - Rev 4

Compare with Previous | Blame | View Log

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
 
#include <stdio.h>
#include <stdint.h>
 
#define MAXBUFLEN 4096
 
int
main(int argc, char *argv[])
{
	struct stat st;
	uint32_t bootsize, datasize, data;
	uint8_t buffer[MAXBUFLEN];
	ssize_t numbytes;
	int fd, fd_boot, fd_data;
 
	if (argc < 4)
		errx(1, "usage: %s bootprogram datacontents outfile", argv[0]);
 
	fd = open(argv[3], O_WRONLY | O_CREAT, 0644);
	if (fd < 0)
		err(1, "open %s", argv[3]);
	fd_boot = open(argv[1], O_RDONLY);
	if (fd_boot < 0)
		err(1, "open %s", argv[1]);
	fd_data = open(argv[2], O_RDONLY);
	if (fd_data < 0)
		err(1, "open %s", argv[2]);
	/* Get sizes. */
	if (fstat(fd_boot, &st) < 0)
		err(1, "fstat");
	bootsize = htonl(st.st_size);
	if (fstat(fd_data, &st) < 0)
		err(1, "fstat");
	datasize = htonl(st.st_size);
	/* Write bootsize and datasize. */
	if (write(fd, &bootsize, sizeof(bootsize)) < 0)
		err(1, "write");
	if (write(fd, &datasize, sizeof(datasize)) < 0)
		err(1, "write");
 
	/* Read data and write to sd. */
	while ((numbytes = read(fd_boot, buffer, MAXBUFLEN)) > 0) {
		if (write(fd, buffer, numbytes) < 0)
			err(1, "write");
	}
	while ((numbytes = read(fd_data, buffer, MAXBUFLEN)) > 0) {
		if (write(fd, buffer, numbytes) < 0)
			err(1, "write");
	}
	return (0);
}
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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