Thursday, May 7, 2020

Maybe have to go back to merging files.

Going to try:
c:\tinyc\avrdude -CC:\tinyc\avrdude.conf -v -patmega328p -carduino -PCOM15 -b57600  -Uflash:w:high2.hex:i -Uflash:r:dump6.bin:r
This seems to work. But it doesn't on mega. Not sure why.Changed high2.asm around and it still works. around $5000. NB old stuff around $4000 still there too.

Better go back to merged files. Am creating quite a good c file that takes two files and merges them.

C:\TinyC\MyFiles5May20_0\combine5.c

//https://stackoverflow.com/questions/16479006/can-i-use-fgetc-or-fputc-in-a-binary-file
//Tue May  5 11:39:35 NZST 2020. Now want to chop 1802 bin file into lower and upper parts. 0-$400 and $4000-endoffile
//Wed May  6 15:55:34 NZST 2020. Looking at command linelist of files.
#include<stdio.h>
#include <string.h>
#include <stdlib.h>
void ttest1(void);
int fileIsReal(char* );
int exists(const char *fname);
int k;
char str1[32] ;
int main( int argc, char *argv[])
{ k=argc; 
strcpy(str1, argv[1]); //copies argv[1] into str1. May be useful.
printf("Argc is %d.\n",argc);
if( argc == 3 ) {
printf("The first argument supplied is file %s.  ", argv[1]);
printf(" Its length is %d, ",strlen(argv[1]));
char c1 =  argv[1][strlen(argv[1])-1];
printf("and the last character is '%c'. \n" , c1) ; //argv[1][strlen(argv[1])-1]);
//if(c1!='x') system ("Notepad.exe");
printf("The second argument supplied is file %s.  ", argv[2]);
printf(" Its length is %d, ",strlen(argv[2]));
char c2 =  argv[2][strlen(argv[2])-1];
printf("and the last character is '%c'. \n" , c2) ; //argv[1][strlen(argv[1])-1]);
}
   else if( argc > 3 ) {
      printf("Too many arguments supplied.\n");
  exit(4);
   }
   else {
      printf("Two arguments expected.\n");
  exit(5);
   }
/*printf("Argc is %d,  ",argc);
printf("argv[1]  is %s, ",argv[1]);
printf("argv[2]  is %s.\n ",argv[2]); */
    //FILE * fptr = fopen("BlinkNew3.ino.bin", "rb");  // open existingblink file for nano
//FILE * fptr = fopen("CDP1802e91.ino.bin", "rb");  // open existingblink file for nano
//FILE * fptr = fopen("CDP1802e93.ino.bin", "rb");  // open existingblink file for nano
//printf("Result of exists() function for %s is %d\n",argv[1],exists(argv[1]));
if(exists(argv[1] )) printf("File %s can be used. ",argv[1]);
else {
printf(" Can't find file %s.",argv[1]); 
exit(3);
}
if(exists(argv[2] )) printf(" File %s can be used.\n",argv[2]);
else {
printf(" Can't find file %s.",argv[2]); 
exit(3);
}
FILE * fptr = fopen(argv[1], "rb");  // open existingblink file for nano
FILE * fptr1 = fopen( argv[2], "rb");  // open long file with 1802 code above $4000 and $0 to 1K
    //char buffer[10000] = {0}; // the pic is 6kb or so, so 10k bytes will hold it
    FILE * fptr2 = fopen("combinedFile0.bin", "wb"); // open a new binary file to be sent to mega
FILE * fptr3 = fopen("low1802.bin", "wb"); // open a new binary file for vRAM[] insertion via terminal
                                                      
    unsigned long fileLen, fileLen1;
    unsigned long counter;

    fseek(fptr, 0, SEEK_END);
    fileLen=ftell(fptr);      // get the exact size of the blink file
    fseek(fptr, 0, SEEK_SET);
printf("The size of argv[1], %s, is  %d bytes.  ",argv[1],fileLen);
 
fseek(fptr1, 0, SEEK_END);
    fileLen1=ftell(fptr1);      // get the exact size of the blink file
    fseek(fptr1, 0, SEEK_SET);
printf("The size of argv[2], %s, is  %d bytes.\n ",argv[2],fileLen1);

    for(counter=0; counter<fileLen; counter++)
        fputc(fgetc(fptr),fptr2);  // read each byte of the arduino file. Put into combinedFile0
                                           
for(counter=fileLen; counter<0x4000; counter++) //fill in the gap between arduino file and 1802asm.bin
        fputc(0x00,fptr2);  
fseek(fptr1,0x4000,SEEK_SET);
for(counter=0x4000; counter<fileLen1; counter++)
        fputc(fgetc(fptr1),fptr2);  //Put bytes from 1802.asm file that are above $4000 into combinedFile0
fseek(fptr1,0,SEEK_SET);
for(counter=0; counter<0x400; counter++)
        fputc(fgetc(fptr1),fptr3);  //Put bytes from 1802.asm file that are below $400 into low1802.bin .

    fclose(fptr);
fclose(fptr1);
    fclose(fptr2);
fclose(fptr3);
return 0;
}
void ttest1(void) {
printf("The fttttirst argument supplied is %d", k);
}
/*int fileIsReal(char* filename) {
int j;
FILE * fptr = fopen(argv[1], "rb");
}*/
int exists(const char *fname)
{
    FILE *file;
    if ((file = fopen(fname, "r")))
    {
        fclose(file);
        return 1;
    }
    return 0;
}

Or use sreccat :
 srec_cat.exe HexFile1.hex -Intel HexFile2.hex -Intel -o MergedHexFile.hex -Intel

No comments:

Post a Comment

Pi Pico and other Boards

 Got a new Pi Pico and it looks very promising. Want to use Oled display with it.