|
File I/O в CCs 3.1, чтение файла |
|
|
|
Aug 22 2006, 09:54
|
Участник

Группа: Новичок
Сообщений: 48
Регистрация: 22-06-06
Пользователь №: 18 270

|
Читаю файл, содержащий 16-битные числа, с помощью File I/O, соответственно SPRU328B by IT CCS User Guide. При открытии файла выбирался фильтр *.* (All files). В качечтве стартового адреса указываю глобальную переменную - массив short sample[160] . Параметр Length утанавливаю равным 160 - длина массива. После точки чтения вывожу значения массива - везде 0, кроме последнего элемента, там 0ха0, т.е. 160. Кроме этого, на прогресс-баре контроллера чтения/записи данных (форма с кнопками Play, Stop и др.) никаких изменений. Подскажите, как правильно пользоваться File I/O, помогите убогому Заранее спасибо за ответы.
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 14)
|
Aug 22 2006, 16:45
|
Участник

Группа: Новичок
Сообщений: 48
Регистрация: 22-06-06
Пользователь №: 18 270

|
Ок, попробовал, создал из тестовых значений файл с заголовком COFF. Но мне нужно читать данные из обычного бинарника без заголовка. Нет ли возможности, не добавляя заголовок, это делать? Или обязательно следует к своему бинарнику пришить заголовок? И ещё - после введения в текст программы указателя и пересборки проекта почему при утаноске адреса в File I/O этот указатель сразу не определяется как правильный, выдаётся сообщение - "идентификатор не найден" ? При этом файл создаётся правильно.
Главный вопрос - обязательно ли добавлять заголовок к бинарнику?
|
|
|
|
|
Aug 23 2006, 16:08
|
Участник

Группа: Новичок
Сообщений: 48
Регистрация: 22-06-06
Пользователь №: 18 270

|
Сформировал я файл с COFF. Что-то не нашёл полного сходства с описанным в инете форматом. Как сформировать заголовок для чтения бинарного файла? Нужно знать куда в память будут данные считаны? Попробую добавить заголовок из сформированного в ходе записи файла. Результат опишу.
|
|
|
|
|
Aug 23 2006, 16:50
|
Участник

Группа: Новичок
Сообщений: 48
Регистрация: 22-06-06
Пользователь №: 18 270

|
И вот ещё - с записью файла всё нормально - объявил указатель, выделил память под него, записал туда данные. В точке записи по этому адресу читается всё нормально. При чтении файла делаю то же самое - объявил ,выделил. Но при попытке указать в строке Адрес имя указателя выдаётся сообщение - "Please enter valid Start adres for file..." Што ж не так? Помогите тупичке...
|
|
|
|
|
Aug 23 2006, 21:55
|
Участник

Группа: Новичок
Сообщений: 48
Регистрация: 22-06-06
Пользователь №: 18 270

|
Посоветуйте почитать что-нибудь о GEL, для наиболее быстрого освоения подхода.
|
|
|
|
|
Aug 29 2006, 08:51
|
Участник

Группа: Новичок
Сообщений: 48
Регистрация: 22-06-06
Пользователь №: 18 270

|
Вот кусок кода, где хочу читать из файла: Код short cp[0]; cp[0] = 0; printf("%x \n",cp[0]); //Software probe point #1 for (i = 0; i <= 10; ) { i++; printf("%x \n",cp[0]); //Software probe point #2 } В Software probe point #1 и Software probe point #2 должно происходить чтение файла. Файл имеет заголовок .dat файла CCS. В окне FILE I/O (File input) следуещее: Probe point: Connected Page: DATA Address: cp Length: 2При нажатии ОК выдаётся сообщение identifier not found cp В окне Break/Probe Points (Probe points): test.c line 125 (0x80096A) --> FILE IN E:\1.dat test.c line 129 (0x800990) --> FILE IN E:\1.dat Люди добрые!! Помогите освоить этот FILE I/O !!! Надеюсь на вас и уповаю! Заранее спасибо.
|
|
|
|
|
Aug 29 2006, 13:16
|
Участник

Группа: Новичок
Сообщений: 15
Регистрация: 28-08-06
Из: msk.ru.earth
Пользователь №: 19 894

|
Цитата(lib @ Aug 29 2006, 12:51)  Люди добрые!! Помогите освоить этот FILE I/O !!! Надеюсь на вас и уповаю! Заранее спасибо. А если сделать cp глобальным? И еще попробовать в настройках пробпойнта _cp вместо cp (хотя в этом контексте должно быть без подчеркивания, но все же).
|
|
|
|
|
Aug 29 2006, 14:37
|
Участник

Группа: Новичок
Сообщений: 48
Регистрация: 22-06-06
Пользователь №: 18 270

|
Адрес глобального массива пропускает, но читать ничего не хочет - изменений данных в пробпоинте чтения нету. При этом запись файла работает на УРА (кстати, что с подчёркиванием, что без него). Ахтунг.
|
|
|
|
|
Aug 29 2006, 16:56
|
Участник

Группа: Новичок
Сообщений: 15
Регистрация: 28-08-06
Из: msk.ru.earth
Пользователь №: 19 894

|
Цитата(lib @ Aug 29 2006, 18:37)  Адрес глобального массива пропускает, но читать ничего не хочет - изменений данных в пробпоинте чтения нету. При этом запись файла работает на УРА (кстати, что с подчёркиванием, что без него). Ахтунг. Возможно область памяти защищена от записи. Конкретизируйте -- это в симуляторе или на железке? И в том и другом случае посмотрите на Memory Map (в первом случае в настройках композера, во втором -- в даташите на камень).
Сообщение отредактировал Shamil.Ru - Aug 29 2006, 17:01
|
|
|
|
|
Aug 30 2006, 07:18
|
Участник

Группа: Новичок
Сообщений: 48
Регистрация: 22-06-06
Пользователь №: 18 270

|
Работа в симмуляторе. Насчёт доступа к памяти - посмотрю cmd-шник. Впрочем, пока вопрос отложу, буду использовать fread,fwrite.
|
|
|
|
|
Aug 30 2006, 07:44
|
Участник

Группа: Новичок
Сообщений: 15
Регистрация: 28-08-06
Из: msk.ru.earth
Пользователь №: 19 894

|
Цитата(lib @ Aug 30 2006, 11:18)  Работа в симмуляторе. Насчёт доступа к памяти - посмотрю cmd-шник. Впрочем, пока вопрос отложу, буду использовать fread,fwrite. Для симулятора надо смотреть меню Option -> Memory Map... и файл <CCS>\drivers\<sim>.cfg, который соответствует выбранному симулятору (в CCS Setup можно посмотреть название этого файла). По идее если память Read-Only, то fread тоже не поможет. А если поможет, то причина не в этом.
|
|
|
|
|
Aug 30 2006, 10:10
|
Участник

Группа: Новичок
Сообщений: 48
Регистрация: 22-06-06
Пользователь №: 18 270

|
Можно использовать файл ***.cmd для определения областей памяти и доступа к ним. Чтение сейчас выполняется fread-ом. Запись fwrite-ом упорно отказывается работать  ) Использую для записи в файл пробпоинт и out-файл.  Потом буду анализировать.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|