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.
What's with the cryptic messages and what does it have to do with this thread?
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) }
Why put this in this thread and not keep it here http://www.keil.com/forum/docs/thread10155.asp ??? And it looks -very- messy.
Whats wrong with this code ? 1) it is not indented 2) it is not commented 3) it is in the wrong thread 4) naah - the above will suffice
Erik