annotate packages/hal/sh/cq7708/current/misc/mkcqrom.c @ 94:4642a6d35749 ecos-sw-2000-06-02

Merge from eCos master repository on 2000-06-02-07:47:04-BST
author jlarmour
date Fri, 02 Jun 2000 17:35:00 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
94
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
1 /* Split ROM data Program for CqREEK SH-3 (Thanks Yamanaka-san) */
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
2 /* Nihon Cygnus Solutions KASHIWAYA Haruki '00-4-13 */
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
3
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
4 /* This program separate ROM data for one ROM socket.
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
5 The cq board has two ROM sockets, and those bus size can
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
6 switch to 8bit or 16bit with JP6.
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
7 If your program is smaller than 32kByte, you can use
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
8 a 256k bit ROM with 8bit bus mode.
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
9 However, the board curcuit connection is peculiar.
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
10 A0 is connected to A14 in 8bit bus mode (See the curcuit diagram),
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
11 this mean's all odd data are assigned from 0x4000 offset.
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
12 You must use this program and separate ROM data when you use
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
13 a 256k bit ROM with 8bit bus mode.
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
14
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
15 If your program is bigger than 32kByte, simply, you can use
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
16 two 256k bit(or bigger) ROM with 16bit bus mode.
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
17 You do *not* need to use this program.
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
18 (Details, separate ROM data to odd and even, and write each data to
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
19 each ROMs, and attach odd's ROM to IC4, even's ROM to IC8.)
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
20
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
21 */
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
22
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
23 #include <stdio.h>
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
24 #include <errno.h>
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
25
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
26 #define ROMSIZE (32 * 1024)
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
27
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
28 main(int argc, char **argv)
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
29 {
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
30 FILE *fpr, *fpw;
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
31 int i, c;
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
32 char *s, *p;
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
33
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
34 if(argc != 3) {
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
35 printf("Usage: mkcqrom <input-filename> <output-filename>\n Please see comments in mkcqrom.c.\n");
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
36 exit(1);
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
37 }
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
38
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
39 p = (char *)malloc(ROMSIZE);
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
40 if(p == NULL) {
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
41 printf("malloc error\n");
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
42 exit(1);
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
43 }
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
44 fpr = fopen(*++argv, "rb");
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
45 if(fpr == NULL) {
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
46 printf("open error %s %d\n", *argv, errno);
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
47 exit(1);
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
48 }
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
49 memset(p, 0xff, ROMSIZE);
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
50
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
51 /* split even data to 0x4000 offset (A0 is assigned to A14) */
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
52 i = 0;
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
53 while(1) {
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
54 c = getc(fpr);
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
55 if(c == EOF) break;
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
56 s = p + (i / 2) + (i % 2) * 0x4000;
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
57 *s = (char)c;
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
58 i++;
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
59 }
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
60 fclose(fpr);
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
61
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
62 fpw = fopen(*++argv, "wb");
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
63 if(fpw == NULL) {
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
64 printf("open error %s %d\n", *argv, errno);
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
65 exit(1);
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
66 }
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
67 fwrite(p, ROMSIZE, sizeof(char), fpw);
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
68 fclose(fpw);
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
69 }
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
70