|
Packit |
e67170 |
/*
|
|
Packit |
e67170 |
* 32bit LE only
|
|
Packit |
e67170 |
*/
|
|
Packit |
e67170 |
|
|
Packit |
e67170 |
#include <stdio.h>
|
|
Packit |
e67170 |
|
|
Packit |
e67170 |
#define DSP_MAX_SYMBOL_NAME 100
|
|
Packit |
e67170 |
typedef unsigned int u32;
|
|
Packit |
e67170 |
|
|
Packit |
e67170 |
struct dsp_symbol_entry {
|
|
Packit |
e67170 |
unsigned int address;
|
|
Packit |
e67170 |
char symbol_name[DSP_MAX_SYMBOL_NAME];
|
|
Packit |
e67170 |
int symbol_type;
|
|
Packit |
e67170 |
};
|
|
Packit |
e67170 |
|
|
Packit |
e67170 |
struct dsp_segment_desc {
|
|
Packit |
e67170 |
int segment_type;
|
|
Packit |
e67170 |
unsigned int offset;
|
|
Packit |
e67170 |
unsigned int size;
|
|
Packit |
e67170 |
u32 *data;
|
|
Packit |
e67170 |
};
|
|
Packit |
e67170 |
|
|
Packit |
e67170 |
struct dsp_symbol_desc {
|
|
Packit |
e67170 |
int nsymbols;
|
|
Packit |
e67170 |
struct dsp_symbol_entry *symbols;
|
|
Packit |
e67170 |
};
|
|
Packit |
e67170 |
|
|
Packit |
e67170 |
struct dsp_module_desc {
|
|
Packit |
e67170 |
char * module_name;
|
|
Packit |
e67170 |
struct dsp_symbol_desc symbol_table;
|
|
Packit |
e67170 |
int nsegments;
|
|
Packit |
e67170 |
struct dsp_segment_desc * segments;
|
|
Packit |
e67170 |
};
|
|
Packit |
e67170 |
|
|
Packit |
e67170 |
#define SEGTYPE_SP_PROGRAM 0x00000001
|
|
Packit |
e67170 |
#define SEGTYPE_SP_PARAMETER 0x00000002
|
|
Packit |
e67170 |
#define SEGTYPE_SP_SAMPLE 0x00000003
|
|
Packit |
e67170 |
#define SEGTYPE_SP_COEFFICIENT 0x00000004
|
|
Packit |
e67170 |
|
|
Packit |
e67170 |
|
|
Packit |
e67170 |
#include "cwc4630.h"
|
|
Packit |
e67170 |
#include "cwcasync.h"
|
|
Packit |
e67170 |
#include "cwcbinhack.h"
|
|
Packit |
e67170 |
#include "cwcdma.h"
|
|
Packit |
e67170 |
#include "cwcsnoop.h"
|
|
Packit |
e67170 |
|
|
Packit |
e67170 |
/* 3*1024 parameter, 3.5*1024 sample, 2*3.5*1024 code */
|
|
Packit |
e67170 |
#define BA1_DWORD_SIZE (13 * 1024 + 512)
|
|
Packit |
e67170 |
#define BA1_MEMORY_COUNT 3
|
|
Packit |
e67170 |
|
|
Packit |
e67170 |
#include "cs46xx_image.h"
|
|
Packit |
e67170 |
|
|
Packit |
e67170 |
int main(int argc, char **argv)
|
|
Packit |
e67170 |
{
|
|
Packit |
e67170 |
struct dsp_module_desc *desc;
|
|
Packit |
e67170 |
static struct dsp_module_desc *list[] = {
|
|
Packit |
e67170 |
&cwc4630_module,
|
|
Packit |
e67170 |
&cwcasync_module,
|
|
Packit |
e67170 |
&cwcbinhack_module,
|
|
Packit |
e67170 |
&cwcdma_module,
|
|
Packit |
e67170 |
&cwcsnoop_module,
|
|
Packit |
e67170 |
};
|
|
Packit |
e67170 |
static const char *names[] = {
|
|
Packit |
e67170 |
"cwc4630", "cwcasync", "cwcbinhack", "cwcdma", "cwcsnoop"
|
|
Packit |
e67170 |
};
|
|
Packit |
e67170 |
FILE *fp;
|
|
Packit |
e67170 |
int i, n;
|
|
Packit |
e67170 |
|
|
Packit |
e67170 |
for (n = 0; n < 5; n++) {
|
|
Packit |
e67170 |
fp = fopen(names[n], "w");
|
|
Packit |
e67170 |
if (!fp)
|
|
Packit |
e67170 |
return 1;
|
|
Packit |
e67170 |
desc = list[n];
|
|
Packit |
e67170 |
fwrite(&desc->symbol_table.nsymbols, 4, 1, fp);
|
|
Packit |
e67170 |
fwrite(desc->symbol_table.symbols, sizeof(struct dsp_symbol_entry), desc->symbol_table.nsymbols, fp);
|
|
Packit |
e67170 |
fwrite(&desc->nsegments, 4, 1, fp);
|
|
Packit |
e67170 |
for (i = 0; i < desc->nsegments; i++) {
|
|
Packit |
e67170 |
fwrite(&desc->segments[i], 4, 3, fp);
|
|
Packit |
e67170 |
fwrite(desc->segments[i].data, 4, desc->segments[i].size, fp);
|
|
Packit |
e67170 |
}
|
|
Packit |
e67170 |
fclose(fp);
|
|
Packit |
e67170 |
}
|
|
Packit |
e67170 |
|
|
Packit |
e67170 |
fp = fopen("ba1", "w");
|
|
Packit |
e67170 |
if (!fp)
|
|
Packit |
e67170 |
return 1;
|
|
Packit |
e67170 |
fwrite(&BA1Struct, sizeof(BA1Struct), 1, fp);
|
|
Packit |
e67170 |
fclose(fp);
|
|
Packit |
e67170 |
|
|
Packit |
e67170 |
return 0;
|
|
Packit |
e67170 |
}
|