This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Object to HEX file converter

hi,

i m using an IDE which generates .obj file as final end result.But i want hex file.
so is there any converter of object to hex file.
please help in this matter.

Parents
  • void fatcheck(vodi)
    {
    unsigned char sectors_per_cluster;
    unsigned int *pi;
    unsigned long *pl;
    pi = (unsigned int *)&raw_block[FAT_BYTES_PER_SECTOR];
    partition.bytes_per_sector = *pi++;
    partition.sectors_per_cluster = *pi & 0xFF;
    pi = (unsigned int *)&raw_block[FAT_RESERVED_SECTORS];
    reserved_sectors = *pi++;
    number_of_fats = *pi & 0xFF;
    pl = (unsigned long *)&raw_block[FAT_FAT_SIZE];
    sectors_per_fat = *pl;
    partition.fat1_start_sector = partition.offset + reserved_sectors;
    partition.fat2_start_sector = partition.fat1_start_sector + sectors_per_fat;
    partition.root_dir_start_sector = partition.fat2_start_sector + sectors_per_fat;
    partition.last_free_chain = 0;
    fat_find_free_chain();}
    static unsigned long fat_calc_data_address(unsigned long cluster, unsigned char sector)
    {unsigned long offset;
    offset = ((cluster - 2) * partition.sectors_per_cluster);
    offset += partition.root_dir_start_sector;
    offset += sector;
    offset *= partition.bytes_per_sector;
    return offset;}
    static unsigned long fat_calc_chain_address(unsigned long index)
    {unsigned long offset;
    offset = partition.fat1_start_sector + (index >> 7);
    offset *= partition.bytes_per_sector;
    return offset;}
    void fat_load_root_directory(void)
    {unsigned long offset;
    offset = partition.root_dir_start_sector;
    offset *= partition.bytes_per_sector;
    mmc_read(offset);
    directory.parent_cluster = 0x00;
    directory.start_cluster = 0x02;
    directory.current_sector = 0x00;
    directory.current_cluster = 0x02;
    directory.current_direntry = (DIRENTRY *)FIRST_ENTRY_IN_ROOT;}
    static void fat_load_directory(unsigned long cluster, unsigned char sector, unsigned char new)
    {mmc_read(fat_calc_data_address(cluster, sector));
    if (new)
    {directory.parent_cluster = directory.start_cluster;
    directory.start_cluster = cluster;
    directory.current_direntry = (DIRENTRY *)FIRST_ENTRY_IN_DIR;}
    directory.current_cluster = cluster;
    directory.current_sector = sector;}
    static void fat_read_next_sector_or_cluster(void)
    {if (directory.current_sector == (partition.sectors_per_cluster-1))
    fat_load_directory(fat_next_chain(directory.current_cluster), 0, FALSE);
    else
    {directory.current_sector++;
    fat_load_directory(directory.current_cluster, directory.current_sector, FALSE);}}
    static DIRENTRY *fat_seek_directory(char *name, unsigned char find_free)
    {unsigned char i;
    DIRENTRY *p = (DIRENTRY *)START_OF_SECTOR;
    fat_load_directory(directory.start_cluster, 0, FALSE);
    i = 0;
    while(1)
    {i++;
    if (match_name(name, p->Name, 8))
    if (p->Attribute & ATTRIB_SUBDIR)
    {if (!find_free) return p;
    else return 0;}
    if (!p->Name[0])
    {if (!find_free)
    return 0;
    else
    return p;}
    p++;
    if (!(i % 0x10))
    {i = 0;
    p = (DIRENTRY *)START_OF_SECTOR;
    fat_read_next_sector_or_cluster();}}
    return 0;}
    static DIRENTRY *fat_seek_file(char *name, unsigned char find_free)
    {unsigned char i;
    DIRENTRY *p = (DIRENTRY *)START_OF_SECTOR;
    fat_load_directory(directory.start_cluster, 0, FALSE);
    i = 0;
    while(1)
    {i++;
    if (match_name(name, p->Name, 11))
    if (p->Attribute == ATTRIB_ARCHIVE)
    return p;
    if (!p->Name[0])
    {if (!find_free) return 0;
    else return p;}
    p++;
    if (!(i % 0x10))
    {i = 0;
    p = (DIRENTRY *)START_OF_SECTOR;
    fat_read_next_sector_or_cluster();}}
    return 0;}
    static unsigned long fat_find_free_chain(void)
    {unsigned long index = partition.last_free_chain;
    unsigned long *p;
    mmc_read(fat_calc_chain_address(index));
    p = (unsigned long* )START_OF_SECTOR;
    p += (index & 0x7F);
    while(*p)
    {index++;
    p++;
    if (!(index % 0x80))
    {mmc_read(fat_calc_chain_address(index));
    p = (unsigned long* )START_OF_SECTOR;}}
    partition.last_free_chain = index;
    return index;}
    unsigned char fat_read_direntry(unsigned char first)
    {if (first)
    fat_load_directory(directory.start_cluster, 0, FALSE);
    else
    {if (directory.current_direntry == (DIRENTRY *)LAST_DIRENTRY)
    {fat_read_next_sector_or_cluster();
    directory.current_direntry = (DIRENTRY *)START_OF_SECTOR;}
    else
    directory.current_direntry += 0x20; }}
    static unsigned long fat_next_chain(unsigned long from)
    {unsigned long *p;
    mmc_read(fat_calc_chain_address(from));
    p = (unsigned long* )START_OF_SECTOR;
    p += (from & 0x7F);
    return *p;}
    void fat_mark_next_chain(unsigned long old, unsigned long new)
    {unsigned long *p;
    unsigned long offset;
    offset = fat_calc_chain_address(old);
    mmc_read(offset);
    p = (unsigned long* )START_OF_SECTOR;
    p += (old & 0x7F);
    *p = new;
    mmc_write(offset);
    offset = fat_calc_chain_address(new);
    mmc_read(offset);
    p = (unsigned long* )START_OF_SECTOR;
    p += (new & 0x7F);
    *p = 0x0FFFFFFF;
    mmc_write(offset);}
    void fat_chain_free(unsigned long index)
    {unsigned long *p;
    unsigned long temp = index;
    unsigned long offset;
    while (temp)
    {offset = fat_calc_chain_address(temp);
    mmc_read(offset);
    p = (unsigned long* )START_OF_SECTOR;
    p += (temp & 0x7F);
    temp = *p;
    *p = 0;
    mmc_write(offset); }}
    static void fat_clear_sector(unsigned long cluster, unsigned char sector)
    {mmc_clear(fat_calc_data_address(cluster, sector));}
    unsigned char fat_make_directory(char *name)
    }
    
    

Reply
  • void fatcheck(vodi)
    {
    unsigned char sectors_per_cluster;
    unsigned int *pi;
    unsigned long *pl;
    pi = (unsigned int *)&raw_block[FAT_BYTES_PER_SECTOR];
    partition.bytes_per_sector = *pi++;
    partition.sectors_per_cluster = *pi & 0xFF;
    pi = (unsigned int *)&raw_block[FAT_RESERVED_SECTORS];
    reserved_sectors = *pi++;
    number_of_fats = *pi & 0xFF;
    pl = (unsigned long *)&raw_block[FAT_FAT_SIZE];
    sectors_per_fat = *pl;
    partition.fat1_start_sector = partition.offset + reserved_sectors;
    partition.fat2_start_sector = partition.fat1_start_sector + sectors_per_fat;
    partition.root_dir_start_sector = partition.fat2_start_sector + sectors_per_fat;
    partition.last_free_chain = 0;
    fat_find_free_chain();}
    static unsigned long fat_calc_data_address(unsigned long cluster, unsigned char sector)
    {unsigned long offset;
    offset = ((cluster - 2) * partition.sectors_per_cluster);
    offset += partition.root_dir_start_sector;
    offset += sector;
    offset *= partition.bytes_per_sector;
    return offset;}
    static unsigned long fat_calc_chain_address(unsigned long index)
    {unsigned long offset;
    offset = partition.fat1_start_sector + (index >> 7);
    offset *= partition.bytes_per_sector;
    return offset;}
    void fat_load_root_directory(void)
    {unsigned long offset;
    offset = partition.root_dir_start_sector;
    offset *= partition.bytes_per_sector;
    mmc_read(offset);
    directory.parent_cluster = 0x00;
    directory.start_cluster = 0x02;
    directory.current_sector = 0x00;
    directory.current_cluster = 0x02;
    directory.current_direntry = (DIRENTRY *)FIRST_ENTRY_IN_ROOT;}
    static void fat_load_directory(unsigned long cluster, unsigned char sector, unsigned char new)
    {mmc_read(fat_calc_data_address(cluster, sector));
    if (new)
    {directory.parent_cluster = directory.start_cluster;
    directory.start_cluster = cluster;
    directory.current_direntry = (DIRENTRY *)FIRST_ENTRY_IN_DIR;}
    directory.current_cluster = cluster;
    directory.current_sector = sector;}
    static void fat_read_next_sector_or_cluster(void)
    {if (directory.current_sector == (partition.sectors_per_cluster-1))
    fat_load_directory(fat_next_chain(directory.current_cluster), 0, FALSE);
    else
    {directory.current_sector++;
    fat_load_directory(directory.current_cluster, directory.current_sector, FALSE);}}
    static DIRENTRY *fat_seek_directory(char *name, unsigned char find_free)
    {unsigned char i;
    DIRENTRY *p = (DIRENTRY *)START_OF_SECTOR;
    fat_load_directory(directory.start_cluster, 0, FALSE);
    i = 0;
    while(1)
    {i++;
    if (match_name(name, p->Name, 8))
    if (p->Attribute & ATTRIB_SUBDIR)
    {if (!find_free) return p;
    else return 0;}
    if (!p->Name[0])
    {if (!find_free)
    return 0;
    else
    return p;}
    p++;
    if (!(i % 0x10))
    {i = 0;
    p = (DIRENTRY *)START_OF_SECTOR;
    fat_read_next_sector_or_cluster();}}
    return 0;}
    static DIRENTRY *fat_seek_file(char *name, unsigned char find_free)
    {unsigned char i;
    DIRENTRY *p = (DIRENTRY *)START_OF_SECTOR;
    fat_load_directory(directory.start_cluster, 0, FALSE);
    i = 0;
    while(1)
    {i++;
    if (match_name(name, p->Name, 11))
    if (p->Attribute == ATTRIB_ARCHIVE)
    return p;
    if (!p->Name[0])
    {if (!find_free) return 0;
    else return p;}
    p++;
    if (!(i % 0x10))
    {i = 0;
    p = (DIRENTRY *)START_OF_SECTOR;
    fat_read_next_sector_or_cluster();}}
    return 0;}
    static unsigned long fat_find_free_chain(void)
    {unsigned long index = partition.last_free_chain;
    unsigned long *p;
    mmc_read(fat_calc_chain_address(index));
    p = (unsigned long* )START_OF_SECTOR;
    p += (index & 0x7F);
    while(*p)
    {index++;
    p++;
    if (!(index % 0x80))
    {mmc_read(fat_calc_chain_address(index));
    p = (unsigned long* )START_OF_SECTOR;}}
    partition.last_free_chain = index;
    return index;}
    unsigned char fat_read_direntry(unsigned char first)
    {if (first)
    fat_load_directory(directory.start_cluster, 0, FALSE);
    else
    {if (directory.current_direntry == (DIRENTRY *)LAST_DIRENTRY)
    {fat_read_next_sector_or_cluster();
    directory.current_direntry = (DIRENTRY *)START_OF_SECTOR;}
    else
    directory.current_direntry += 0x20; }}
    static unsigned long fat_next_chain(unsigned long from)
    {unsigned long *p;
    mmc_read(fat_calc_chain_address(from));
    p = (unsigned long* )START_OF_SECTOR;
    p += (from & 0x7F);
    return *p;}
    void fat_mark_next_chain(unsigned long old, unsigned long new)
    {unsigned long *p;
    unsigned long offset;
    offset = fat_calc_chain_address(old);
    mmc_read(offset);
    p = (unsigned long* )START_OF_SECTOR;
    p += (old & 0x7F);
    *p = new;
    mmc_write(offset);
    offset = fat_calc_chain_address(new);
    mmc_read(offset);
    p = (unsigned long* )START_OF_SECTOR;
    p += (new & 0x7F);
    *p = 0x0FFFFFFF;
    mmc_write(offset);}
    void fat_chain_free(unsigned long index)
    {unsigned long *p;
    unsigned long temp = index;
    unsigned long offset;
    while (temp)
    {offset = fat_calc_chain_address(temp);
    mmc_read(offset);
    p = (unsigned long* )START_OF_SECTOR;
    p += (temp & 0x7F);
    temp = *p;
    *p = 0;
    mmc_write(offset); }}
    static void fat_clear_sector(unsigned long cluster, unsigned char sector)
    {mmc_clear(fat_calc_data_address(cluster, sector));}
    unsigned char fat_make_directory(char *name)
    }
    
    

Children