Changeset 41984


Ignore:
Timestamp:
2014-08-03T13:16:02+02:00 (4 years ago)
Author:
blogic
Message:

firmware-utils: made mkdir615h1 work for all Senao-produced devices as mksenaofw and cleaned up some of its formatting

Signed-off-by: Forest Crossman <cyrozap@…>

Backport of r41962

Location:
branches/barrier_breaker
Files:
2 edited
1 moved

Legend:

Unmodified
Added
Removed
  • branches/barrier_breaker/target/linux/ramips/image/Makefile

    r41983 r41984  
    378378define BuildFirmware/DIR615H1/squashfs 
    379379        $(call BuildFirmware/Default4M/$(1),$(1),dir-615-h1,DIR-615-H1) 
    380         -mkdir615h1 -e $(call sysupname,$(1),dir-615-h1) \ 
    381                 -o $(call imgname,$(1),dir-615-h1)-factory.bin 
     380        -mksenaofw -e $(call sysupname,$(1),dir-615-h1) \ 
     381                -o $(call imgname,$(1),dir-615-h1)-factory.bin \ 
     382                -r 0x218 -p 0x30 -t 3 
    382383endef 
    383384BuildFirmware/DIR615H1/initramfs=$(call BuildFirmware/OF/initramfs,$(1),dir-615-h1,DIR-615-H1) 
  • branches/barrier_breaker/tools/firmware-utils/Makefile

    r41849 r41984  
    2222        $(call cc,motorola-bin) 
    2323        $(call cc,dgfirmware) 
    24         $(call cc,mkdir615h1 md5) 
     24        $(call cc,mksenaofw md5) 
    2525        $(call cc,trx2usr) 
    2626        $(call cc,ptgen) 
  • branches/barrier_breaker/tools/firmware-utils/src/mksenaofw.c

    r41983 r41984  
    2020#include "md5.h" 
    2121 
    22 #define HDR_LEN                 0x60 
    23 #define BUF_SIZE                0x200 
    24 #define VERSION_SIZE            0x10 
    25 #define MD5_SIZE                0x10 
    26 #define PAD_SIZE                0x20 
    27 #define DEFAULT_MAGIC           305419896 
    28 #define DEFAULT_VERSION         "123" 
    29 #define DEFAULT_VENDOR_ID       536 
    30 #define DEFAULT_HEAD_VALUE      0x0 
    31 #define DEFAULT_BLOCK_SIZE      65535 
    32 #define DEFAULT_PRODUCT_ID      48 
    33 #define DEFAULT_FIRMWARE_TYPE   0x03 
     22#define HDR_LEN                 0x60 
     23#define BUF_SIZE                0x200 
     24#define VERSION_SIZE            0x10 
     25#define MD5_SIZE                0x10 
     26#define PAD_SIZE                0x20 
     27 
     28#define DEFAULT_BLOCK_SIZE      65535 
     29 
     30#define DEFAULT_HEAD_VALUE      0x0 
     31#define DEFAULT_VERSION         "123" 
     32#define DEFAULT_MAGIC           0x12345678 
    3433 
    3534typedef struct { 
     
    3736        uint32_t vendor_id; 
    3837        uint32_t product_id; 
    39         uint8_t version[VERSION_SIZE]; 
     38        uint8_t  version[VERSION_SIZE]; 
    4039        uint32_t firmware_type; 
    4140        uint32_t filesize; 
    4241        uint32_t zero; 
    43         uint8_t md5sum[MD5_SIZE]; 
    44         uint8_t pad[PAD_SIZE]; 
     42        uint8_t  md5sum[MD5_SIZE]; 
     43        uint8_t  pad[PAD_SIZE]; 
    4544        uint32_t chksum; 
    4645        uint32_t magic; 
     
    5756 
    5857static firmware_type FIRMWARE_TYPES[] = { 
    59                 { 0x01, "bootloader" }, 
    60                 { 0x02, "kernel" }, 
    61                 { 0x03, "kernelapp" }, 
    62                 { 0x04, "apps" }, 
    63                 { 0x05, "littleapps" }, 
    64                 { 0x06, "sounds" }, 
    65                 { 0x07, "userconfig" }, 
    66                 { 0x0a, "factoryapps" }, 
    67                 { 0x0b, "odmapps" }, 
    68                 { 0x0c, "langpack" } 
     58        { 0x01, "bootloader" }, 
     59        { 0x02, "kernel" }, 
     60        { 0x03, "kernelapp" }, 
     61        { 0x04, "apps" }, 
     62        /* The types below this line vary by manufacturer */ 
     63        { 0x05, "littleapps (D-Link)/factoryapps (EnGenius)" }, 
     64        { 0x06, "sounds (D-Link)/littleapps (EnGenius)" }, 
     65        { 0x07, "userconfig (D-Link)/appdata (EnGenius)" }, 
     66        { 0x08, "userconfig (EnGenius)"}, 
     67        { 0x09, "odmapps (EnGenius)"}, 
     68        { 0x0a, "factoryapps (D-Link)" }, 
     69        { 0x0b, "odmapps (D-Link)" }, 
     70        { 0x0c, "langpack (D-Link)" } 
    6971}; 
    7072 
     
    164166 
    165167        if (md5_file(input_file_name, (uint8_t *) &header->md5sum) < 0) { 
    166                 fprintf(stderr, "Md5 failed on file %s\n", input_file_name); 
     168                fprintf(stderr, "MD5 failed on file %s\n", input_file_name); 
    167169                fclose(fp_input); 
    168170                fclose(fp_output); 
     
    212214{ 
    213215        img_header header; 
    214         char buf[512]; 
     216        char buf[BUF_SIZE]; 
    215217 
    216218        FILE *fp_input; 
     
    288290                        "  -d <file>            decode image file <file>\n" 
    289291                        "  -o <file>            write output to the file <file>\n" 
    290                         "  -t <type>            set image type to <type>, defaults to 3\n" 
     292                        "  -t <type>            set image type to <type>\n" 
    291293                        "                       valid image <type> values:\n"); 
    292294        for (i = 0; i < sizeof(FIRMWARE_TYPES) / sizeof(firmware_type); i++) { 
     
    299301                        "  -m <magic>           set encoding magic <magic>\n" 
    300302                        "  -z                   enable image padding to <blocksize>\n" 
    301                         "  -b <blocksize>       set image <blocksize>, defaults to 65535\n" 
    302                         "  -h                   show this screen\n"); 
     303                        "  -b <blocksize>       set image <blocksize>, defaults to %u\n" 
     304                        "  -h                   show this screen\n", DEFAULT_BLOCK_SIZE); 
    303305        exit(status); 
    304306} 
     
    319321        header.magic = DEFAULT_MAGIC; 
    320322        header.head = DEFAULT_HEAD_VALUE; 
    321         header.vendor_id = DEFAULT_VENDOR_ID; 
    322         header.product_id = DEFAULT_PRODUCT_ID; 
    323         header.firmware_type = DEFAULT_FIRMWARE_TYPE; 
    324323        strncpy( (char*)&header.version, DEFAULT_VERSION, VERSION_SIZE - 1); 
    325324 
     
    347346                        } 
    348347                        if (header.firmware_type == 0) { 
    349                                 fprintf(stderr, "Invalid firmware <type>!\n"); 
     348                                fprintf(stderr, "Invalid firmware type \"0\"!\n"); 
    350349                                usage(progname, EXIT_FAILURE); 
    351350                        } 
     
    356355                        break; 
    357356                case 'r': 
    358                         header.vendor_id = strtol(optarg, 0, 10); 
     357                        header.vendor_id = strtol(optarg, 0, 0); 
    359358                        break; 
    360359                case 'p': 
    361                         header.product_id = strtol(optarg, 0, 10); 
     360                        header.product_id = strtol(optarg, 0, 0); 
    362361                        break; 
    363362                case 'm': 
     
    387386        } 
    388387 
    389         if (input_file == NULL || output_file == NULL ) { 
     388        /* Check required arguments*/ 
     389        if (header.firmware_type == 0) { 
     390                fprintf(stderr, "Firmware type must be defined\n"); 
     391                usage(progname, EXIT_FAILURE); 
     392        } else if (input_file == 0 || output_file == 0) { 
    390393                fprintf(stderr, "Input and output files must be defined\n"); 
    391394                usage(progname, EXIT_FAILURE); 
     395        } else if (header.vendor_id == 0 || header.product_id == 0) { 
     396                fprintf(stderr, "Vendor ID and Product ID must be defined and non-zero\n"); 
     397                usage(progname, EXIT_FAILURE); 
    392398        } 
    393399 
    394400        switch (mode) { 
    395401        case NONE: 
     402                fprintf(stderr, "A mode must be defined\n"); 
    396403                usage(progname, EXIT_FAILURE); 
    397404                break; 
Note: See TracChangeset for help on using the changeset viewer.