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

 
 
 
Reply to this topicStart new topic
> Как добавить данные DATA FLASH в HEX-файл, SiLabs 121
редактор
сообщение May 15 2009, 05:06
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315



Используется SiLabs C8051F121
Есть необходимость во время программирования записать данные в DataFlash.
Подскажите, кто знает, как объявить эти данные в программе (Си или АСМ не важно) чтобы они после компиляции попали в HEX-файл.
Могу руками дописать дописать несколько строк в HEX, но не знаю по какому адресу их расположить.
Делать приложение для записи этих данных через программатор пока не хочется.

Заранее всем спасибо!


--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
Go to the top of the page
 
+Quote Post
Палыч
сообщение May 15 2009, 05:58
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(редактор @ May 15 2009, 08:06) *
Есть необходимость во время программирования записать данные в DataFlash. Подскажите, кто знает, как объявить эти данные в программе (Си или АСМ не важно) чтобы они после компиляции попали в HEX-файл.
Наверное, Ваш МК имеет два вида памяти: flash-память программ и flash-память данных; а программатору требуется два hex-файла для их программирования? Проблема возникла с получением именно второго hex-файла (файла с данными)? К сожалению мне не встречались трансляторы для МК51, которые могут генерировать сразу два hex-файла (программ и данных) одновременно. Но hex-файл - от и в Африке hex-файл rolleyes.gif . Создайте ещё один проект для создания heх-файла данных. Будет он состоять из одной "программы" на ассемблере в которой будет определён начальный адрес данных в памяти (директива транслятора org или .org или что-то подобное в зависимости от Вашего транслятора) и следующих за ней данных (директивы траслятора db, dw или им подобные).
Go to the top of the page
 
+Quote Post
barabek
сообщение May 15 2009, 07:49
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



Цитата(редактор @ May 15 2009, 16:06) *
Используется SiLabs C8051F121
Есть необходимость во время программирования записать данные в DataFlash.
Подскажите, кто знает, как объявить эти данные в программе (Си или АСМ не важно) чтобы они после компиляции попали в HEX-файл.
Могу руками дописать дописать несколько строк в HEX, но не знаю по какому адресу их расположить.
Делать приложение для записи этих данных через программатор пока не хочется.

Заранее всем спасибо!

А что за DataFlash? Имеете ввиду Flash память программ или , что мало вероятно, внешнюю какую-то? И если можно, выразитесь поконкретней о свой задаче. Чисто телепатически я представляю что Вы имели ввиду одно из двух.
1. Хотите записывать что-то вроде серийного номера. Тогда используйте прогу от silabsa MCUProductionProgrammer. В ней можно это сделать, только заранее выбрать адрес для этого серийника, чтобы не попал в код, т.е. где то в конце памяти.
Затем из проги добраться до него просто.
2. Если просто данные, то pdata...
Меня настораживает противоречивость: "во время программирования" и "после компиляции"?
Ведь после компиляции все данные попадают в HEX smile.gif
Go to the top of the page
 
+Quote Post
редактор
сообщение May 18 2009, 04:00
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315



В большинстве МК от SiLabs имеется два вида flash-памяти память программ и память данных.

Программа состоит из двух частей: загрузчика и непосредственно приложения.
Загрузчик служит для обновления программы.Также при старте загрузчик проверяет контрольную сумму приложения и далее разрешает или блокирует работу приложения.
Чтобы точно знать с чем сравнивать контрольную сумму решил использовать flash-память данных для хранения контрольной суммы.

Держать их в области кода не очень удобно, так как для перезаписи необходимо стирать часть программы, разнести их адреса с программой кБайт так на 10 возможно,(опыт имеется).
Хотелось сделать более красиво. Есть энергонезависимая память для данных, надо ее пользовать. В процессе работы доступ раcписан, и все хорошо.

А вот при программировании получается возможно записать только код в flash-память программ.
Поэтому приходиться делать несколько лишних операций: записать загрузчик, записать приложение, собрать стенд в котором дать загрузчику команду на расчет контрольной суммы и ее запись.

Для упрощения процесса настройки интересуюсь КАК ЗАПИСАТЬ FLASH-ПАМЯТЬ ДАННЫХ ИЗ ПРОГРАММАТОРА.
Это возможно. В командах работы с USB-адаптером есть описание. Нужно лишь приложение, которое это может делать, в KEIL таких настроек не нашел.


--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
Go to the top of the page
 
+Quote Post
kosyak©
сообщение May 18 2009, 05:11
Сообщение #5


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

Группа: Свой
Сообщений: 179
Регистрация: 1-10-07
Из: НЧ
Пользователь №: 30 966



На сайте силабса есть такое приложение
https://www.silabs.com/Support%20Documents/...nProgrammer.zip
Оно идет с исходниками - можно поправить его под собственные нужды.
А вообще - что Вам мешает прошивать девайс с помощью собственного загрузчика? Т.е. записываете в контроллер только загрузчик а саму программу шьете уже с помощью своих средств загрузки.
Go to the top of the page
 
+Quote Post
barabek
сообщение May 18 2009, 10:55
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



Цитата(редактор @ May 18 2009, 15:00) *
В большинстве МК от SiLabs имеется два вида flash-памяти память программ и память данных.

Я не работал конкретно с 121. Но судя по описанию он не отличается от остальных. Но в них НЕТ отдельной flash памяти данных! Есть память программ с возможностью записи из самой программы. Хотя это к делу не относится, скорее к терминологии ;-)
. А по делу Вам уже kosyak подсказал. Если бы Вы на этапе программирования знали контрольную сумму, было бы проще. Из родной IDE silab можно сразу ячейки кода менять в соответствующем окне code и нажатием кнопки "туды-сюды"
Go to the top of the page
 
+Quote Post
kosyak©
сообщение May 18 2009, 13:51
Сообщение #7


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

Группа: Свой
Сообщений: 179
Регистрация: 1-10-07
Из: НЧ
Пользователь №: 30 966



Цитата(barabek @ May 18 2009, 14:55) *
Я не работал конкретно с 121. Но судя по описанию он не отличается от остальных. Но в них НЕТ отдельной flash памяти данных!


Видимо имеется ввиду разделение 128 килобайт flash памяти на 4 банка...
Go to the top of the page
 
+Quote Post
barabek
сообщение May 18 2009, 22:05
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



Цитата(kosyak© @ May 19 2009, 00:51) *
Видимо имеется ввиду разделение 128 килобайт flash памяти на 4 банка...

Возможно топикстартер это имел ввиду, но все-таки это не память данных. Тем более он сказал, что "в большинстве МК". В большинстве МК память данных ТОЛЬКО RAM.
Да, кстати, я подумал. Ведь при компиляции программы выдается контрольная сумма. Правда я не знаю как она вычисляется. Но главное что при программировании она уже известна, следовательно можно делать как я сказал: записать в CODE в нужные ячейки и нажать "Refresh Values" (alt+R).
Go to the top of the page
 
+Quote Post
редактор
сообщение May 19 2009, 03:40
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315



Цитата(barabek @ May 18 2009, 14:55) *
Я не работал конкретно с 121. Но судя по описанию он не отличается от остальных. Но в них НЕТ отдельной flash памяти данных! Есть память программ с возможностью записи из самой программы. Хотя это к делу не относится, скорее к терминологии ;-)
. А по делу Вам уже kosyak подсказал. Если бы Вы на этапе программирования знали контрольную сумму, было бы проще. Из родной IDE silab можно сразу ячейки кода менять в соответствующем окне code и нажатием кнопки "туды-сюды"


В большинстве MK от SiLabs (за все не берусь но работал с сериями 12X, 04x) кроме памяти программ имеется от 128 до 256 бай FLASH-памяти для долговременного хранения данных.

Цитата(kosyak© @ May 18 2009, 09:11) *
На сайте силабса есть такое приложение
https://www.silabs.com/Support%20Documents/...nProgrammer.zip
Оно идет с исходниками - можно поправить его под собственные нужды.
А вообще - что Вам мешает прошивать девайс с помощью собственного загрузчика? Т.е. записываете в контроллер только загрузчик а саму программу шьете уже с помощью своих средств загрузки.


Когда делаешь сам, то можно и через загрузчик и из IDE. Но необходимо отдать конечные файлы и методику программирования на производство.
И чем меньше там кнопок и действий тем надежнее. Отсюда и желание зашивать сразу все и везде.


--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
Go to the top of the page
 
+Quote Post
barabek
сообщение May 19 2009, 05:22
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



Цитата(редактор @ May 19 2009, 14:40) *
В большинстве MK от SiLabs (за все не берусь но работал с сериями 12X, 04x) кроме памяти программ имеется от 128 до 256 бай FLASH-памяти для долговременного хранения данных.

Понял наконец, Вы имеете ввиду scratchpad-memory smile.gif.
Go to the top of the page
 
+Quote Post
AndreyS
сообщение May 27 2009, 14:01
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276



Цитата(редактор @ May 19 2009, 07:40) *
В большинстве MK от SiLabs (за все не берусь но работал с сериями 12X, 04x) кроме памяти программ имеется от 128 до 256 бай FLASH-памяти для долговременного хранения данных.


Добрый день.
Для начала выставьте тип выходного файла hex HEX-386 (для кейла в настройках проекта, для других наверное опциями).
Попробуйте осуществить запись по адресам начиная с 0x020000.
Когда я использовал в проекте все 128 кбайт, то код валялся в HEX файле в адресном пространстве от 0x000000 до 0x01FFFF
Возможно что за основным кодом начинается скратчь.

И самое интересное, я сам такой HEX утилитой Силабовой не заливал (все время из кейла), но наткнулся на сообщения, что у народа такой хек залить силабовой утилитой не получилось (видно не различет формат). Т.е. программа после такой заливки не работала, хотя залитая из кейла работает.

Вот тут есть по поводу программирования таких хеков на производстве.

Удачи


--------------------
Удачи.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 27th July 2025 - 17:35
Рейтинг@Mail.ru


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