реклама на сайте
подробности

 
 
> Чтение бинарного файла в проэкт TI C5402, Происходит бардак - помогите разобраться...
Саша Z
сообщение May 29 2007, 13:40
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822



Вроде элементарная вещь - читаю бинарный файл в память C5402, элементарный код, а виснет ...
Код:
Код
#include <stdio.h>
#include <stdlib.h>


void f_write(char *str,int arr[],int N);
void f_read(char *str,int arr[],int N);

int z1[1000],Nfloat;

void main()
{ int i;

char str1[]="C:\\Ti\\myprojects\\Project\\Project\\zoom_inst1";
char str2[]="C:\\Ti\\myprojects\\Project\\Project\\zoom_inst1_out";


for (i=0;i<1000;i++)
    z1[i]=0;

puts("start");
f_read(str1,z1,1000);

f_write(str2,z1,1000);
puts("end");
}
            
void f_read(char *str,int arr[],int N )    
{
      FILE  *fr;
      fr = fopen(str,"rb");
      fseek(fr, 0, 0);                          
      fread(arr,1,N,fr);
      fclose(fr);
}
void f_write(char *str,int arr[],int N)  
{
    FILE  *fw;
    fw = fopen(str, "wb");
    fwrite(arr,1,N,fw);
    fclose(fw);
}


Бинарный файл содержит 5800 последовательных байт (2900 integres), в коде проведенном выше - читаю первых 1000 байт а массив z1 (массив заявлен как integer).
На данный момент работаю на симуятор C5402 (т.е. без подключенного борта).
В таком состоянии (чтение 1000 байт) - вроде работает нормально, данные читаются в массив z1.

Задача - прочесть все 5800 байт из исходного файла. Проблема возникает когда увеличиваю размеры массива и чтения файла - скажем говорю прочитать 2000 байт (измению 1000 на 2000 везде где надо в сорсе) - тут программа виснет где-то в процессе чтения файла. Не пойму что происходит... cranky.gif

Конфигурация памяти очень проста:
Код
MEMORY
{
    PAGE 0: EPROG: origin = 0x1200, len = 0x7c00
          
    PAGE 1: IDATA: origin = 0x80,   len =0x8000
}  

SECTIONS
{
  
    .text:    {} > EPROG PAGE 0
    .bss:     {} > IDATA PAGE 1
    .const:   {} > IDATA PAGE 1
    .switch:  {} > IDATA PAGE 1
    .sysmem:  {} > IDATA PAGE 1
    .stack    {} > IDATA PAGE 1
}


думал проблема может быть в памяти - но вроде ее достаточно в конфигурации.

Подскажите что может быть ? help.gif

Спасибо
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
BratherLU
сообщение May 31 2007, 05:24
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 103
Регистрация: 16-05-06
Пользователь №: 17 126



Если у Вас камень с5402 (без букв) - то номер не пройдет у него ДМА не поддерживает работу с внешней памятью, насколько я знаю.
Если у Вас камень с5402А то такое, думаю, можно реализовать, но такую связку мне самому поднимать не приходилось.
Go to the top of the page
 
+Quote Post
Саша Z
сообщение May 31 2007, 05:53
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822



Цитата(BratherLU @ May 31 2007, 09:24) *
Если у Вас камень с5402 (без букв) - то номер не пройдет у него ДМА не поддерживает работу с внешней памятью, насколько я знаю.
Если у Вас камень с5402А то такое, думаю, можно реализовать, но такую связку мне самому поднимать не приходилось.


Опааа, хмм, обломинго...у меня как раз С5402 (без букв). Вот засада...
Спасибо за ценную инфу - я почему-то не видел в его datasheet заявления о том что его DMAи только дня внутренней памяти...наверно плохо смотрел - поищу еще раз для наглядности.

Значит выхода нет, в backgroundе не смогу подкачивать из внешней... 05.gif и тогда значит нет смысла в двух буферах и ping-pongе ? Или все-таки на ваш вгляд это да поможет каким-то образом ?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 00:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01397 секунд с 7
ELECTRONIX ©2004-2016