mirror of
https://github.com/brain-hackers/nkbin_maker
synced 2024-12-22 12:10:05 +09:00
format codes
This commit is contained in:
parent
9e49a0152d
commit
0252289f9f
51
bsd-ce.c
51
bsd-ce.c
@ -1,28 +1,27 @@
|
|||||||
#include <sys/types.h>
|
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <unistd.h>
|
#include <stdint.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdint.h>
|
#include <sys/types.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
char* outfile = "nk.bin";
|
char *outfile = "nk.bin";
|
||||||
int verbose = 0;
|
int verbose = 0;
|
||||||
FILE* fout = NULL;
|
FILE *fout = NULL;
|
||||||
FILE* kfile = NULL;
|
FILE *kfile = NULL;
|
||||||
FILE* lfile = NULL;
|
FILE *lfile = NULL;
|
||||||
char* loader = NULL;
|
char *loader = NULL;
|
||||||
unsigned int loader_size = 0;
|
unsigned int loader_size = 0;
|
||||||
|
|
||||||
#define WRITE(arg,size) \
|
#define WRITE(arg, size) \
|
||||||
if(!fwrite(arg, size, 1, fout)) \
|
if (!fwrite(arg, size, 1, fout)) \
|
||||||
errx(1,"fwrite");
|
errx(1, "fwrite");
|
||||||
|
|
||||||
unsigned char magic[7] = "B000FF\n";
|
unsigned char magic[7] = "B000FF\n";
|
||||||
unsigned int start = 0xa0200000;
|
unsigned int start = 0xa0200000;
|
||||||
unsigned int len = 0;
|
unsigned int len = 0;
|
||||||
|
|
||||||
void
|
void usage() {
|
||||||
usage(){
|
|
||||||
fprintf(stderr, "usage: bsd-ce [-h] [-o outfile] u-boot.bin\n");
|
fprintf(stderr, "usage: bsd-ce [-h] [-o outfile] u-boot.bin\n");
|
||||||
fprintf(stderr, "\n");
|
fprintf(stderr, "\n");
|
||||||
fprintf(stderr, " -h this help\n");
|
fprintf(stderr, " -h this help\n");
|
||||||
@ -30,14 +29,13 @@ usage(){
|
|||||||
fprintf(stderr, " default: %s\n", outfile);
|
fprintf(stderr, " default: %s\n", outfile);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int main(int argc, char *argv[]) {
|
||||||
main(int argc, char* argv[]){
|
|
||||||
int n, i;
|
int n, i;
|
||||||
unsigned int i32, cksum, ch;
|
unsigned int i32, cksum, ch;
|
||||||
long len;
|
long len;
|
||||||
|
|
||||||
while((i = getopt(argc, argv, "hvo:l:")) != -1) {
|
while ((i = getopt(argc, argv, "hvo:l:")) != -1) {
|
||||||
switch(i) {
|
switch (i) {
|
||||||
case 'o':
|
case 'o':
|
||||||
outfile = optarg;
|
outfile = optarg;
|
||||||
break;
|
break;
|
||||||
@ -47,21 +45,21 @@ main(int argc, char* argv[]){
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
argc -= optind; argv += optind;
|
argc -= optind;
|
||||||
|
argv += optind;
|
||||||
if (argc != 1) {
|
if (argc != 1) {
|
||||||
fprintf(stderr, "missing kernel name\n");
|
fprintf(stderr, "missing kernel name\n");
|
||||||
usage();
|
usage();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* load the loader (err...) */
|
/* load the loader (err...) */
|
||||||
if ((lfile = fopen(argv[0], "rb")) == NULL)
|
if ((lfile = fopen(argv[0], "rb")) == NULL)
|
||||||
errx(1, "unable to open '%s'", argv[0]);
|
errx(1, "unable to open '%s'", argv[0]);
|
||||||
fseek(lfile, 0, SEEK_END);
|
fseek(lfile, 0, SEEK_END);
|
||||||
loader_size = ftell(lfile);
|
loader_size = ftell(lfile);
|
||||||
fseek(lfile, 0, SEEK_SET);
|
fseek(lfile, 0, SEEK_SET);
|
||||||
if ((loader = (char*)malloc(loader_size)) == NULL)
|
if ((loader = (char *)malloc(loader_size)) == NULL)
|
||||||
errx(1, "can't allocate %u bytes for loader", loader_size);
|
errx(1, "can't allocate %u bytes for loader", loader_size);
|
||||||
if (!fread(loader, loader_size, 1, lfile))
|
if (!fread(loader, loader_size, 1, lfile))
|
||||||
errx(1, "can't read loader file");
|
errx(1, "can't read loader file");
|
||||||
@ -79,11 +77,11 @@ main(int argc, char* argv[]){
|
|||||||
WRITE(&start, sizeof(start));
|
WRITE(&start, sizeof(start));
|
||||||
WRITE(&loader_size, sizeof(loader_size));
|
WRITE(&loader_size, sizeof(loader_size));
|
||||||
|
|
||||||
|
|
||||||
/* Calculate the loader checksum */
|
/* Calculate the loader checksum */
|
||||||
cksum = 0;
|
cksum = 0;
|
||||||
for (len = 0; len < loader_size; len++) {
|
for (len = 0; len < loader_size; len++) {
|
||||||
ch = (unsigned char)loader[len]; cksum += ch;
|
ch = (unsigned char)loader[len];
|
||||||
|
cksum += ch;
|
||||||
}
|
}
|
||||||
i32 = start;
|
i32 = start;
|
||||||
WRITE(&i32, sizeof(unsigned int));
|
WRITE(&i32, sizeof(unsigned int));
|
||||||
@ -103,9 +101,12 @@ main(int argc, char* argv[]){
|
|||||||
* Write NK.BIN footer - this is just a series of 3x uint32_t indicating
|
* Write NK.BIN footer - this is just a series of 3x uint32_t indicating
|
||||||
* a file of zero length, starting at our init code.
|
* a file of zero length, starting at our init code.
|
||||||
*/
|
*/
|
||||||
i32 = 0; WRITE(&i32, sizeof(i32));
|
i32 = 0;
|
||||||
i32 = start; WRITE(&i32, sizeof(i32));
|
WRITE(&i32, sizeof(i32));
|
||||||
i32 = 0; WRITE(&i32, sizeof(i32));
|
i32 = start;
|
||||||
|
WRITE(&i32, sizeof(i32));
|
||||||
|
i32 = 0;
|
||||||
|
WRITE(&i32, sizeof(i32));
|
||||||
|
|
||||||
free(loader);
|
free(loader);
|
||||||
fclose(fout);
|
fclose(fout);
|
||||||
|
20
nk-dump.c
20
nk-dump.c
@ -1,26 +1,24 @@
|
|||||||
#include <sys/types.h>
|
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <gelf.h>
|
#include <gelf.h>
|
||||||
#include <unistd.h>
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
uint8_t magic[7] = "B000FF\n";
|
uint8_t magic[7] = "B000FF\n";
|
||||||
|
|
||||||
#define READ(buf,len) \
|
#define READ(buf, len) \
|
||||||
if (!fread(buf,len,1,f)) \
|
if (!fread(buf, len, 1, f)) \
|
||||||
err(1, "read error");
|
err(1, "read error");
|
||||||
|
|
||||||
int
|
int main(int argc, char *argv[]) {
|
||||||
main(int argc, char* argv[])
|
FILE *f;
|
||||||
{
|
|
||||||
FILE* f;
|
|
||||||
uint8_t marker[7];
|
uint8_t marker[7];
|
||||||
uint32_t i32, addr, cksum, len, i;
|
uint32_t i32, addr, cksum, len, i;
|
||||||
int n, ch, c;
|
int n, ch, c;
|
||||||
|
|
||||||
if (argc != 2) {
|
if (argc != 2) {
|
||||||
fprintf(stderr,"usage: nk-dump filename\n");
|
fprintf(stderr, "usage: nk-dump filename\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,7 +41,8 @@ main(int argc, char* argv[])
|
|||||||
printf("image %u\n", n);
|
printf("image %u\n", n);
|
||||||
c = 0;
|
c = 0;
|
||||||
for (i = 0; i < len; i++) {
|
for (i = 0; i < len; i++) {
|
||||||
ch = getc(f); c += ch;
|
ch = getc(f);
|
||||||
|
c += ch;
|
||||||
}
|
}
|
||||||
printf(" addr %08x\n", addr);
|
printf(" addr %08x\n", addr);
|
||||||
printf(" len %08x\n", len);
|
printf(" len %08x\n", len);
|
||||||
@ -55,7 +54,6 @@ main(int argc, char* argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
n++;
|
n++;
|
||||||
|
|
||||||
}
|
}
|
||||||
fclose(f);
|
fclose(f);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user